JP3841967B2 - マイクロプロセッサ - Google Patents
マイクロプロセッサ Download PDFInfo
- Publication number
- JP3841967B2 JP3841967B2 JP01120299A JP1120299A JP3841967B2 JP 3841967 B2 JP3841967 B2 JP 3841967B2 JP 01120299 A JP01120299 A JP 01120299A JP 1120299 A JP1120299 A JP 1120299A JP 3841967 B2 JP3841967 B2 JP 3841967B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sub
- executed
- instructions
- control
- 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
Links
- 238000010586 diagram Methods 0.000 description 16
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Description
【発明の属する技術分野】
この発明は、1つの命令中に複数のサブ命令を有する命令を含む命令群を実行するマイクロプロセッサに関するものである。
【0002】
【従来の技術】
演算速度等の性能向上のためパイプライン等の並列処理機能を有するマイクロプロセッサが広く用いられているが、命令の並列実行の一手法としてVLIW(Very Long Instruction Word)アーキテクチャが提案され実行されている。
【0003】
このVLIWアーキテクチャでは、メモリアクセスユニットや整数演算ユニット等の複数の独立した演算ユニットを備えたマイクロプロセッサにおいて、1つの命令中に、演算操作用の複数のサブ命令を記載して、このサブ命令を複数の独立した演算ユニットで並列に実行することで、演算スピードを向上させてマイクロプロセッサの性能を向上させるようにしている。
【0004】
【発明が解決しようとする課題】
従来のVLIWアーキテクチャのマイクロプロセッサは以上のように構成されているので、例えば、演算ユニット間でデータの干渉が発生し、サブ命令を同時に実行できない場合、演算を実行できない演算ユニットへは、何も演算しない命令であるNOP(No Operation)命令をセットしてデータの干渉が無くなるまでサブ命令の実行を待機させなければならず、命令のデコード効率や命令の実行効率が悪くなるという課題があった。
【0005】
この発明は上記のような課題を解決するためになされたもので、複数のサブ命令からなるVLIWアーキテクチャの命令の処理において、各演算ユニット毎の逐次処理(シーケンシャル処理)を実行する場合、例えば、後続のサブ命令を実行する演算ユニットが後続サブ命令を実行できない場合、先行するサブ命令を実行する演算ユニットに、後続のサブ命令を実行させるように制御して演算効率を向上させる機能を備えたマイクロプロセッサを得ることを目的とする。
【0006】
【課題を解決するための手段】
この発明に係るマイクロプロセッサは、1つの演算操作のための命令、複数の演算操作のための複数のサブ命令を含む命令、およびデータを格納するメモリ手段と、前記メモリ手段から読み出した前記命令をデコードする命令デコード手段と、前記命令の実行を制御する制御データを格納する複数個のレジスタと、前記命令デコード手段に接続され前記命令デコード手段から出力された前記命令のデコード結果および前記複数個のレジスタ内の制御データに基づいて、前記複数のサブ命令を逐次に実行し、また並列に独立して実行する複数の命令実行手段とを備え、前記命令デコード手段は、前記複数のサブ命令を前記複数の命令実行手段で逐次実行する場合、前記複数の命令実行手段の中で、第1のサブ命令を先行して実行した第1の命令実行手段に、後続して実行する第2番目以降のサブ命令を実行させるように制御する制御手段を備えていることを特徴とするものである。
【0007】
この発明に係るマイクロプロセッサは、制御手段が、第2の命令実行手段が後続して実行される第2のサブ命令を実行できないと判断した場合、前記第2のサブ命令を第1の命令実行手段で実行させるように制御することを特徴とするものである。
【0008】
この発明に係るマイクロプロセッサは、制御手段が、第1の命令実行手段が後続して実行される第2のサブ命令を実行できないと判断した場合、前記第2のサブ命令を第2の命令実行手段で実行させるように制御することを特徴とするものである。
【0009】
この発明に係るマイクロプロセッサは、制御手段が、メモリ手段から出力された複数のサブ命令を含む命令を入力して解析し、前記複数のサブ命令のいずれが前記複数の命令実行手段のいずれかで実行可能であるかを判定する判定手段と、前記判定手段の制御のもとで、前記複数のサブ命令のビット列を入れ替える入替回路と、前記判定手段の制御のもとで、前記複数のサブ命令のいずれかを選択し、選択された選択サブ命令を出力する第1のセレクタと、前記第1のセレクタに接続され、かつそれぞれが前記複数の命令実行手段のそれぞれに接続され、前記判定手段の制御のもとで、前記第1のセレクタから出力された前記選択サブ命令かあるいは何も実行しない命令であるNOP命令のいずれかを選択して出力する複数のセレクタとを有していることを特徴とするものである。
【0010】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1は、この発明の実施の形態に係わるマイクロプロセッサの全体構成を示すブロック図であり、図において、1は32ビットの内部データバスを備えた32ビットマイクロプロセッサ(以下、マイクロプロセッサと呼ぶ)であるが、64ビットの内部データバスを備えた64ビットマイクロプロセッサ、その他でもよい。2は命令デコードユニット(命令デコード手段)、3は命令を実行するメモリアクセスユニット(命令実行手段)、4は命令を実行する整数演算ユニット(命令実行手段)、5は32ビット×64ワードの汎用レジスタ、6は命令を格納する命令RAM(メモリ手段)、7はデータを格納するデータRAM(メモリ手段)である。
【0011】
そして、8はメモリアクセスユニット3用デコーダ、9は整数演算ユニット4用デコーダ、10はPSW(プロセッサ状態語)およびその他の制御レジスタ、21は制御回路(制御手段)である。このように、命令デコードユニット2は、メモリアクセスユニット3用デコーダ8、整数演算ユニット4用デコーダ9、PSW(プロセッサ状態語)およびその他の制御レジスタ10、および制御回路21から構成されている。命令デコードユニット2内の制御回路21の構成および動作に関しては、図7乃至図11を用いて詳細に後述する。
【0012】
このように、この発明のマイクロプロセッサ1は、命令デコードユニット2、メモリアクセスユニット3、整数演算ユニット4、汎用レジスタ5、命令RAM6、データRAM7等から構成されている。
【0013】
命令デコードユニット2は、命令RAM6から、例えば64ビット幅のIDバスを介して転送されてくる命令コードを、メモリアクセスユニット3用デコーダ8、整数演算ユニット4用デコーダ9を用いてデコードする。メモリアクセスユニット3用デコーダ8のデコード結果とPSW(プロセッサ状態語)およびその他の制御レジスタ10の内容とにより、メモリアクセスユニット3の動作を制御する制御信号11を生成し、また、整数演算ユニット4用デコーダ9のデコード結果とPSW(プロセッサ状態語)およびその他の制御レジスタ10の内容により、整数演算ユニット4の動作を制御する制御信号12を生成する。
【0014】
メモリアクセスユニット3は、PC(Program Counter)制御部13、メモリ制御部14、ALU15、シフタ16から構成される。PC制御部13は、有効なジャンプ演算や分岐演算を含まない命令では、例えば、実行した命令のPC値に8を加えて次に実行する命令のPC値を計算し、ジャンプ演算や分岐演算では実行した命令のPC値に分岐変位を加算し、また演算で指定されたアドレッシングモードに従う計算をしてジャンプ先命令のPC値を計算する。
【0015】
メモリ制御部14は、PC制御部13で計算されたPC値をもとに、32ビット幅のIAバスを用いて命令RAM6を起動し、また命令RAM6から命令コードを出力させる。また、データRAM7のアドレスを転送するDAバスおよびデータを転送するDDバスを通じてデータRAM7をアクセスし、あるいは命令実行に必要なデータRAM7内のデータをアクセスして、64ビット幅のDDバスを介して汎用レジスタ5へ転送する。
【0016】
ALU15およびシフタ16では、汎用レジスタ5から32ビット幅のS1バス、S2バス、S3バスを通じて転送された最大3ワードのデータを用いて算術論理演算もしくはシフト演算を行い、演算結果を32ビット幅のD1バスを介して、汎用レジスタ5へ転送する。
【0017】
また、S1,S2,S3,S4の各バスを通じて、汎用レジスタ5から読み出された最大4ワードの32ビット長のデータが、メモリアクセスユニット3へ転送される。従って、例えば第1のレジスタの内容と第2のレジスタの内容とのワードでアドレッシングされるメモリ領域に第3のレジスタの内容をストアし、第3のレジスタの内容をストアしたアドレスに所定値を加算して得られる値でアドレッシングされるメモリの領域に第4のレジスタの内容をストアする2ワードストア命令を実現できる。従って、2ワードストア命令では、2つのオペランドを使用し、メモリアドレスを計算し、データRAM7へ2ワードデータを転送する。
【0018】
また、メモリアクセスユニット3は、D1,D2の各バスを通じて、メモリアクセスユニット3内での2ワードの演算結果またはデータRAM7から転送された2ワードのデータを、汎用レジスタ5へ転送する。
【0019】
整数演算ユニット4は、乗算器17、アキュムレータ18、ALU19、シフタ20等から構成される。乗算器17、ALU19、シフタ20では、汎用レジスタ5から32ビット幅のS4,S5,S6の各バスを介して転送された最大3ワードのデータを用いて算術論理演算を行い、演算結果をD2,D3の各バスを介して汎用レジスタ5へ転送する。また、アキュムレータ18は、乗算結果を累積加算または累積減算してその演算結果を保持する。図1に示すマイクロプロセッサ1では、アキュムレータ18として、64ビットのアキュムレータが2本組み込まれている。
【0020】
ALU19は、汎用レジスタ5から32ビット幅のS4,S5,S6の各バスを介して転送された最大3ワードのデータを用いて算術論理演算を行い、演算結果をD2,D3の各バスを介して汎用レジスタ5へ転送する。シフタ20は、汎用レジスタ5から32ビット幅のS4,S5,S6の各バスを通じて転送されたデータを用いて演算を行い、演算結果をD2,D3の各バスを介して汎用レジスタ5へ転送する。
【0021】
図1に示すマイクロプロセッサ1は、汎用レジスタ5から、最大6種類のレジスタ値を読み出すことが可能で、読み出されたデータは、それぞれS1,S2,S3,S4,S5,S6の各バスに出力される。また、マイクロプロセッサ1は、D1,D2,D3の各バスを介して、最大3種類のレジスタ値を同時に、汎用レジスタ5へ書き込むことが可能である。
【0022】
命令RAM6は、32ビット幅のIAバスと64ビット幅のIDバスに接続されており、IAバスの示すアドレスに対応する64ビット長の命令データを読み出す。データRAM7は、32ビット幅のOAバスと64ビット幅のODバスに接続されており、OAバスの示すアドレスに対応する、64ビット長のデータを読み書きする。
【0023】
図2は、図1に示したこの発明のマイクロプロセッサ1で用いられる命令フォーマットを示す説明図である。マイクロプロセッサ1の命令フォーマットには、図2の(a)に示すように、1つの命令コードで2つの演算(operation)を指示する2演算命令のフォーマット101と、図2の(b)に示すように、1つの命令コードで1つの演算を指示する1演算命令のフォーマット102とがある。
【0024】
2演算命令のフォーマット101には、フィールド103およびフィールド104からなるフォーマットフィールド、2つの演算フィールド106,107および各演算フィールド106,107の各々に付属する実行条件フィールド105がある。1演算命令のフォーマット102には、フィールド103とフィールド104からなるフォーマットフィールドと、フィールド108、フィールド109およびフィールド110からなる演算フィールドと、この演算フィールドに付属する実行条件フィールド105がある。
【0025】
次に、図2に示した各命令フォーマット101,102における各フォーマットフィールド103,104の詳細を説明する。尚、以下では、各フォーマットフィールド103,104をFMと標記し、各フォーマットフィールド103,104のそれぞれの値を2ビットで示す。
【0026】
上記したフォーマットフィールドFMにおいて、FM=00の場合、この命令は2演算命令であり、図2に示した命令フォーマット内の演算フィールド106で指示されたoperation_0の演算と、演算フィールド107で指示されたoperation_1の演算が、デコード直後のクロックサイクルで並列に実行される。operation_0の演算は、メモリアクセスユニット3で実行され、operation_1の演算は、整数演算ユニット4で実行される。
【0027】
次に、フォーマットフィールドの値FM=01の場合、この命令は2演算命令であり、演算フィールド106で指示されたoperation_0の演算がデコード直後のクロックサイクルで実行され、演算フィールド107で指示されたoperation_1の演算がoperation_0の演算に対して1クロックサイクル遅延して実行される。
【0028】
FM=10の場合、この命令は2演算命令であり、演算フィールド107で指示されたoperation_1の演算が、デコード直後のクロックサイクルで実行され、演算フィールド106で指示されたoperation_0の演算がoperation_1の演算に対して1クロックサイクル遅延して実行される。
【0029】
FM=11の場合、この命令は1演算命令であり、108と109と110からなる演算フィールドで指示された1つの演算がデコード直後のクロックサイクルで実行される。
【0030】
次に、図2に示した命令フォーマットにおける、実行条件フィールド(CC)105の説明を行う。
実行条件フィールド(CC)105は、以下の意味を持つ。
【0031】
実行条件フィールド(CC)105は、マイクロプロセッサ1の状態フラグF0およびF1の値に依存して、各演算フィールド106,107でそれぞれ示されたoperation_0の演算やoperation_1の演算および演算フィールド108と109と110で示された演算が、有効であるか無効であるかを定める。演算が有効であるときは、演算結果がレジスタ、メモリ、フラグに反映され、その演算により定義された動作結果が残ることを意味し、演算が無効であるときは、演算結果がレジスタ、メモリ、フラグに反映されず、定められた演算の種類には関わらず、その演算により無効演算(NOP:No Operation)が実行された場合と同じ結果が、レジスタやフラグに残ることを意味する。
【0032】
実行条件フィールド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のときの動作は未定義であり、ユーザはこの値がCC=111となる命令を用いることはできない。
【0033】
図3は、28ビット長で表現される短型の演算フィールド106および107と、54ビット長で表現される長型の演算フィールド(図2に示した演算フィールド108,109,110で構成される)の詳細を示す説明図である。短型の演算フィールドには、7つのフォーマット111,112,113,114,115,116,117があり、長型の演算フィールドには2つのフォーマット118,119がある。
【0034】
フォーマット111(Short_M)は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121,122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド124から構成される。図3に示すように、フィールド124の値Xが、00,01あるいは11である場合、フィールド123がレジスタ番号を示しており、値Xが10である場合、既値であることを示している。このフォーマット111はレジスタ間接アドレッシングのメモリアクセス演算に使用される。
【0035】
フォーマット112(Short_A)は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121,122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド125から構成される。図3に示すように、フィールド125の値X’が0である場合、フィールド123がレジスタ番号を示し、値X’が1である場合は、既知であることを示す。このフォーマット112は算術演算、論理演算、シフト演算、ビット演算に使用される。
【0036】
フォーマット113(Short_B1)は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド126から構成される。このフォーマット113は、レジスタ指定によるジャンプ、分岐命令に使用される。
【0037】
フォーマット114(Short_B2)は、演算内容を指定するフィールド120、18ビット長のディスプレイスメントのフィールド127から構成される。このフォーマット113は、ジャンプ、分岐命令に使用される。
【0038】
フォーマット115(Short_B3)は、演算内容を指定するフィールド120、レジスタ番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、フィールド121がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド130から構成される。このフォーマット115は、条件ジャンプ、条件分岐命令に使用される。
【0039】
フォーマット116(Short_D1)は、演算内容を指定するフィールド120、レジスタ番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129から構成される。このフォーマット116は、条件ジャンプ、条件分岐命令、リピート命令に使用される。
【0040】
フォーマット117(Short_D2)は、演算内容を指定するフィールド120、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、遅延命令(ディレイド命令)のディレイ値を指定するフィールド131から構成される。このフォーマット117は、ディレイドジャンプ、ディレイド分岐命令、およびリピート命令に使用される。
【0041】
フォーマット118(Long1)は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121,122、32ビット長の即値を指定するフィールド132から構成される。このフォーマット118の演算には、複雑な算術演算、大きな即値を用いる算術演算、大きなディスプレースメント付きレジスタ間接アドレッシングのメモリアクセス演算や大きな分岐変位の分岐演算、絶対番地へのジャンプ演算などがある。
【0042】
フォーマット119(Long2)は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121,122、32ビット長の即値を指定するフィールド132、フィールド132がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド133から構成される。このフォーマット119は、大きな分岐変位をもつ条件ジャンプ、条件分岐命令に使用される。
【0043】
図4は、図1に示したマイクロプロセッサ1のレジスタ構成を示す説明図である。マイクロプロセッサ1には、(a)に示す64本の32ビット長の汎用レジスタ5、(b)に示す12本の制御レジスタ150、および(c)に示す2本のアキュムレータ18がある。
【0044】
汎用レジスタ(R0)140は、読み出した場合常に0で書き込みは無視される。汎用レジスタ(R62)は、サブルーチンからの戻り先アドレスが設定されるリンクレジスタである。汎用レジスタ(R63)はスタックポインタであり、PSW(プロセッサ状態語)およびその他の制御レジスタ10のSMフィールドの値に依存してユーザスタックポインタ(SPU)141または割り込みスタックポインタ(SPI)142が動作する。
【0045】
制御レジスタ150には、プログラムカウンタ151、PSW(プロセッサ状態語)およびその他の制御レジスタ10や各種の専用レジスタが含まれる。
【0046】
図3に示したフォーマット112の演算では、64本の汎用レジスタ5のそれぞれを上位16ビットと下位16ビットに分けて別々にアクセスできる。また、2本のアキュムレータ18は、それぞれ上位32ビットと下位32ビットを別々にアクセスできる。
【0047】
図5は、PSW(プロセッサ状態語)およびその他の制御レジスタ10の詳細を示す説明図である。PSW(プロセッサ状態語)およびその他の制御レジスタ10の上位16ビット170には、スタックポインタを切り替えるSMフィールド171、SDBT(ソフトウェアデバッガトラップ)の検出を示すEAフィールド172、SDBTの許可を指定するDBフィールド173、割り込み許可を指定するIEフィールド174、リピート動作の許可を指定するRPフィールド175、モジュロアドレッシングの許可を指定するMDフィールド176がある。
【0048】
下位16ビットは、フラグフィールド180である。フラグフィールド180には8個のフラグがあり、その中のF0フラグ181とF1フラグ182は演算の有効/無効を制御する。各フラグの値は、比較演算や算術演算の結果に依存して変化するほか、フラグ初期化演算で初期化したり、フラグ値書き込み演算で任意の値をフラグフィールド180に書き込むことで変化する。また、フラグ値読み出し演算で、フラグフィールド180の値を読み出すことも可能である。
【0049】
各フラグは、以下の意味を持つ。
SM=0 :スタックモード0――>SPUを使用
SM=1 :スタックモード1――>SPUを使用
EA=0 :SDBTを未検出
EA=1 :SDBTを検出
DB=0 :SDBTを非許可
DB=1 :SDBTを許可
IE=0 :割り込み非許可
IE=1 :割り込み許可
RP=0 :リピートブロック無効
RP=1 :リピートブロック有効
MD=0 :モジュロアドレッシング無効
MD=1 :モジュロアドレッシング有効
F0 :汎用フラグ(実行コントロールフラグ)
F1 :汎用フラグ(実行コントロールフラグ)
F2 :汎用フラグ
F3 :汎用フラグ
F4(S) :飽和演算フラグ
F5(V) :オーバーフローフラグ
F6(VA) :累積オーバーフローフラグ
F7(C) :キャリー/ボローフラグ
【0050】
以下に、図1に示したこの発明のマイクロプロセッサ1で用いられる命令一覧を示す。
【0051】
【0052】
【0053】
【0054】
【0055】
【0056】
【0057】
【0058】
【0059】
【0060】
【0061】
【0062】
【0063】
図6は、図1に示したこの発明のマイクロプロセッサ1の並列2命令実行時(FM=00)のパイプライン動作を示す説明図である。各パイプライン190,195は、命令フェッチ(IF)ステージ191、デコード/アドレス演算(D/A)ステージ192、実行/メモリアクセス(E/M)ステージ193、ライトバック(W)ステージ194から構成される。
【0064】
2命令を並列に実行する場合、メモリアクセスユニット3でのパイプライン190の実行と整数演算ユニット4でのパイプライン195の実行(斜線の部分)とが並列に行われる。
【0065】
図7は、図1に示したマイクロプロセッサ1のシーケンシャル命令実行時のパイプライン動作を制御するために命令デコードユニット2内に設けられた制御回路21を示す構成図であり、図において、217は命令RAM6から出力された命令コードを、64ビットのIDバスを介して入力し、後述する各セレクタ211,214,215,および上位と下位の入替回路216の動作を制御する制御信号を生成し、出力する判定回路(判定手段)である。
【0066】
211は第1のセレクタ、214は第2のセレクタ、215は第3のセレクタ、213は第1のラッチ、212は第2のラッチ、そして216は、第1のラッチ213の出力の上位ビットと下位ビットを、判定回路217からの制御信号に基づいて入れ替えする上位と下位の入替回路(以下、入替回路と略称する。)である。
【0067】
第1のセレクタ211は、IDバスおよび判定回路217を介して命令RAM6から読み出した命令コードと、ラッチ212から出力された出力データを、判定回路217からの制御信号に基づいて選択する。第2のセレクタ214は、ラッチ213からの出力データとNOP命令コードとのいずれかを、判定回路217からの制御信号に基づいて選択するセレクタであり、その出力データはメモリアクセスユニット3へ出力される。
【0068】
第3のセレクタ215は、ラッチ213の出力データとNOP命令コードとのいずれかを、判定回路217からの制御信号に基づいて選択するセレクタであり、その出力データは整数演算ユニット4へ出力される。尚、その他の構成要素は、図1に示したマイクロプロセッサの構成要素と同様なので、同一の参照番号を用いて、ここではその説明を省略する。
【0069】
次に動作について説明する。
図8は、図1に示したマイクロプロセッサ1のシーケンシャル命令実行時のパイプライン動作を示す説明図であり、図において、200はパイプラインの各ステージを示している。パイプライン200は、命令フェッチ(IF)ステージ、デコード/アドレス演算(D/A)ステージ、実行/メモリアクセス(E/M)ステージ、およびライトバック(WB)ステージで構成されている。
【0070】
図8に示すパイプライン動作では、図2の(a)に示した命令フォーマット101において、命令フォーマットの値FM=01の場合、サブ命令AがADD命令、サブ命令Bがメモリアクセスユニット3で実行可能なSUB命令の例を示している。FM=01の場合に、最初に実行されるサブ命令Aは、メモリアクセスユニット3で実行される。次に実行されるサブ命令Bは、メモリアクセスユニット3で実行可能な命令なので、制御回路21の制御のもとで、整数演算ユニット4で実行が可能か否かに係わらず、先行サブ命令Aを実行した演算実行ユニットであるメモリアクセスユニット3で必ず実行される。
【0071】
図9は、図8に示したパイプライン動作を示すタイミングチャートである。このタイミングチャートは、図8に示したパイプラインにおけるシーケンシャル命令実行に対応したものである。
【0072】
まず、制御回路21の制御に基づいて実行されるサブ命令Aのデコードステージの動作を説明する。
64ビットのIDバスを介して、命令RAM6から送信されてきた命令コードの上位ビット(32ビット)および下位ビット(32ビット)はそれぞれ、ADD命令とSUB命令に対応したコードとなっている。制御回路21内の判定回路217から出力された制御信号に基づいて、第1のセレクタ211から出力されるデータをラッチする第1のラッチ213の上位ビットおよび下位ビットは、それぞれADD命令とSUB命令に対応したコードとなる。
【0073】
次に、判定回路217からの制御信号に基づいて、入替回路216により、第1のラッチ213の出力データの上位ビット(32ビット)と下位ビット(32ビット)とが入れ替えられるため、判定回路217からの制御信号に基づいて第2のラッチ212から出力されるデータは、上位ビットがSUB命令、下位ビットがADD命令にそれぞれ対応したコードとなっている。従って、第1のラッチ213の上位ビットはSUB命令、下位ビットはADD命令に対応したコードとなる。
【0074】
次に、セレクタ214は、判定回路217からの制御信号に基づいて第1のラッチ213の出力を選択しメモリアクセスユニット3用デコーダ8へ出力する。従って、メモリアクセスユニット3用デコーダ8は、第2のセレクタ214から出力されたADD命令コードをデコードする。
【0075】
一方、第3のセレクタ215は、判定回路217からの制御信号に基づいてNOP命令コードを選択し整数演算ユニット4用デコーダ9へ出力する。従って、整数演算ユニット4用デコーダ9は、NOP命令コードをデコードする。
【0076】
次に、サブ命令Bのデコードステージの動作に関して説明する。
判定回路217からの制御信号に基づいて、第1のセレクタ211は、第2のラッチ212の値を選択するように制御され、第1のラッチ213の上位ビット、下位ビットは、それぞれSUB命令とADD命令に対応したコードとなる。次に、第2のセレクタ214は、判定回路217からの制御信号に基づいて第1のラッチ213の出力データであるSUB命令コードを選択し、選択したデータをメモリアクセスユニット3用デコーダ8へ出力する。メモリアクセスユニット3用デコーダ8は、第2のセレクタ214から出力されたSUB命令コードをデコードする。
【0077】
一方、第3のセレクタ215は、判定回路217からの制御信号に基づいてNOP命令コードを選択し、選択したデータを整数演算ユニット4用デコーダ9へ出力する。整数演算ユニット4用デコーダ9は、第3のセレクタ215から出力されたNOP命令コードを入力しデコードする。
【0078】
図10は、図1に示したマイクロプロセッサ1のシーケンシャル命令実行時の他のパイプライン動作を示す説明図であり、図において、205はパイプラインの各ステージを示している。パイプライン205は、パイプライン200と同様に、命令フェッチ(IF)ステージ、デコード/アドレス演算(D/A)ステージ、実行/メモリアクセス(E/M)ステージ、およびライトバック(WB)ステージで構成されている。
【0079】
図10に示すマイクロプロセッサ1のパイプライン動作は、図2の(a)に示した命令フォーマット101において、命令フォーマットの値FM=01の場合、サブ命令AがADD命令、サブ命令Bが整数演算ユニット4のみで実行可能なMUL命令の例を示している。FM=01の場合に、最初に実行されるサブ命令Aは、メモリアクセスユニット3で実行される。次に実行されるサブ命令Bは、メモリアクセスユニット3で実行不可能な命令なので、制御回路21の制御のもとで整数演算ユニット4が実行する。
【0080】
図11は、図10に示したパイプライン動作を示すタイミングチャートである。このタイミングチャートは、図10に示したパイプラインにおけるシーケンシャル命令実行に対応したものである。
【0081】
まず、制御回路21によるサブ命令Aのデコードステージの動作を説明する。IDバスを介して送られてきた命令コードの上位ビット(32ビット)および下位ビット(32ビット)はそれぞれ、ADD命令とMUL命令に対応したコードとなっている。第1のセレクタ211から出力されるデータをラッチする第1のラッチ213の上位ビットおよび下位ビットは、それぞれADD命令とMUL命令に対応したコードとなる。
【0082】
次に、図10に示すパイプラインの場合では、判定回路217からの制御信号に基づいて入替回路216により第1のラッチ213の出力データの上位ビットと下位ビットが入れ替えられないため、第2のラッチ212から出力されるデータは、上位ビットがADD命令、下位ビットがMUL命令にそれぞれ対応したコードとなっている。従って、第1のラッチ213の上位ビットはADD命令、下位ビットはMUL命令に対応したコードとなる。
【0083】
次に、第2のセレクタ214は、判定回路217からの制御信号に基づいて第1のラッチ213の出力を選択し出力する。メモリアクセスユニット3用デコーダ8は、第2のセレクタ214から出力されたADD命令コードをデコードする。
【0084】
一方、第3のセレクタ215は、判定回路217からの制御信号に基づいてNOP命令コードを選択し出力する。従って、整数演算ユニット4用デコーダ9はNOP命令コードをデコードする。
【0085】
次に、サブ命令Bのデコードステージの動作に関して説明する。
第1のセレクタ211は、判定回路217からの制御信号に基づいて第2のラッチ212の値を選択するように制御され、第1のラッチ213の上位ビット、下位ビットは、それぞれADD命令とMUL命令に対応したコードとなる。次に、第2のセレクタ214は、判定回路217からの制御信号に基づいてNOP命令コードを選択し、選択したNOP命令コードをメモリアクセスユニット3用デコーダ8へ出力する。メモリアクセスユニット3用デコーダ8は、第2のセレクタ214から出力されたNOP命令コードをデコードする。
【0086】
一方、第3のセレクタ215は、判定回路217からの制御信号に基づいて第1のラッチ213から出力されたMUL命令コードを選択し、選択したMUL命令コードを整数演算ユニット4用デコーダ9へ出力する。整数演算ユニット4用デコーダ9は、第3のセレクタ215から出力されたMUL命令コードをデコードする。
【0087】
この発明のマイクロプロセッサ1において、判定回路217を持つ制御回路21の制御のもとで、命令コードにおける命令フォーマットフィールドの値が、FM=10の場合では、先に実行されるサブ命令が整数演算ユニット4で実行され、次に実行されるサブ命令が整数演算ユニット4で実行可能である場合は、同一の整数演算ユニット4で実行される。また、後続のサブ命令が整数演算ユニット4で実行できない場合は、先行のサブ命令が実行された整数演算ユニット4とは異なる演算ユニットである、例えばメモリアクセスユニット3で実行される。
【0088】
従来のマイクロプロセッサでは、メモリアクセスユニット3や整数演算ユニット4等の各演算ユニットでの演算結果は、後続のサイクルで、例えば、汎用レジスタ5等のレジスタファイルへ格納される。同じ演算ユニットにおいて、連続する演算での演算結果が互いに干渉する場合は、レジスタファイルに格納した値を使用しないで、直前に実行された演算での演算結果を、次に実行されるサブ命令で直接使用可能なように、専用のバイパス経路を設ける手法が一般的に使用されている。しかしながら、異なる演算ユニット間でデータ干渉が発生する場合においては、バイパス経路でのデータ転送における遅延値が大きくなるため、専用のバイパス経路を設ける手法は使用されない。しかしながら、この発明のマイクロプロセッサ1では、制御回路21の制御に基づいて、可能な限り、同一の演算ユニットで後続のサブ命令を実行することが可能なので、専用のバイパス経路は、他のパイプライン等で利用可能であり、演算性能が向上することができる。
【0089】
以上のように、この実施の形態によれば、命令デコードユニット2内に設けられた制御回路21内の判定回路217が、例えば、整数演算ユニット4が後続で実行される後続のサブ命令を実行できないと判断した場合、後続のサブ命令を整数演算ユニット4以外の演算ユニットであるメモリアクセスユニット3で実行させるように構成したので、複数の命令実行手段の各々がバイパス経路を有効に利用することが可能となり、命令の処理速度を向上することができ、従って、マイクロプロセッサ全体の演算効率を向上することができる。
尚、上記では演算ユニットとして整数演算ユニット4,メモリアクセスユニット3の2個で構成した例について示したが、演算ユニットの個数は、2個に限らず、3個以上であってもよい。
また、上述の実施の形態では演算ユニットの個数が2個の場合について示したが、演算ユニットの個数が3個以上の場合についても同様の効果が得られる。
【0090】
【発明の効果】
以上のように、この発明によれば、命令デコード手段である命令デコードユニットは、複数のサブ命令を複数の命令実行手段、例えば、メモリアクセスユニットや整数演算ユニットの演算ユニットで実行させる場合、複数の命令実行手段の中で、第1のサブ命令を先行して実行した第1の命令実行手段に、後続して実行する第2番目以降のサブ命令を実行させるように制御する制御手段としての制御回路を備え、特に、制御回路内の判定手段である判定回路が、整数演算ユニットが後続で実行される後続のサブ命令を実行できないと判断した場合、後続のサブ命令を整数演算ユニット以外のメモリアクセスユニットで実行させるように制御するように構成したので、複数の命令実行手段の各々がバイパス経路を有効に利用することが可能となり、マイクロプロセッサ全体の演算効率を向上できるので演算性能が向上するという効果がある。
【図面の簡単な説明】
【図1】 この発明のマイクロプロセッサの全体構成を示すブロック図である。
【図2】 図1に示したマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図3】 短型の演算フィールドと長型の演算フィールドの詳細を示す説明図である。
【図4】 図1に示したマイクロプロセッサのレジスタ構成を示す説明図である。
【図5】 プロセッサ状態語(PSW)の詳細を示す説明図である。
【図6】 図1に示したマイクロプロセッサのパイプライン動作を示す説明図である。
【図7】 図1に示したマイクロプロセッサのシーケンシャル命令実行時のパイプライン動作を制御するための命令デコードユニット内に設けられた制御回路を示す構成図である。
【図8】 図1に示したマイクロプロセッサのシーケンシャル命令実行時のパイプライン動作を示す説明図である。
【図9】 図8に示したパイプライン動作を示すタイミングチャートである。
【図10】 図1に示したマイクロプロセッサのシーケンシャル命令実行時の他のパイプライン動作を示す説明図である。
【図11】 図10に示したパイプライン動作を示すタイミングチャートである。
【符号の説明】
1 マイクロプロセッサ、2 命令デコードユニット(命令デコード手段)、3 メモリアクセスユニット(命令実行手段)、4 整数演算ユニット(命令実行手段)、5 汎用レジスタ(レジスタ)、6 命令RAM(メモリ手段)、7データRAM(メモリ手段)、10 PSW(プロセッサ状態語)およびその他の制御レジスタ(レジスタ)、21 制御回路(制御手段)、211 第1のセレクタ(セレクタ)、214 第2のセレクタ(セレクタ)、215 第3のセレクタ(セレクタ)、216 上位と下位の入替回路(入替回路)、217 判定回路(判定手段)。
Claims (4)
- 1つの演算操作のための命令、複数の演算操作のための複数のサブ命令を含む命令、およびデータを格納するメモリ手段と、前記メモリ手段から読み出した前記命令をデコードする命令デコード手段と、前記命令の実行を制御する制御データを格納する複数個のレジスタと、前記命令デコード手段に接続され前記命令デコード手段から出力された前記命令のデコード結果および前記複数個のレジスタ内の制御データに基づいて、前記複数のサブ命令を逐次に実行し、また並列に独立して実行する複数の命令実行手段とを備え、前記命令デコード手段は、前記複数のサブ命令を前記複数の命令実行手段で逐次実行する場合、前記複数の命令実行手段の中で、第1のサブ命令を先行して実行した第1の命令実行手段に、後続して実行する第2番目以降のサブ命令を実行させるように制御する制御手段を備えていることを特徴とするマイクロプロセッサ。
- 制御手段は、第2の命令実行手段が後続して実行される第2のサブ命令を実行できないと判断した場合、前記第2のサブ命令を第1の命令実行手段で実行させるように制御することを特徴とする請求項1記載のマイクロプロセッサ。
- 制御手段は、第1の命令実行手段が後続して実行される第2のサブ命令を実行できないと判断した場合、前記第2のサブ命令を第2の命令実行手段で実行させるように制御することを特徴とする請求項1記載のマイクロプロセッサ。
- 制御手段は、メモリ手段から出力された複数のサブ命令を含む命令を入力して解析し、前記複数のサブ命令のいずれが前記複数の命令実行手段のいずれかで実行可能であるかを判定する判定手段と、前記判定手段の制御のもとで、前記複数のサブ命令のビット列を入れ替える入替回路と、前記判定手段の制御のもとで、前記複数のサブ命令のいずれかを選択し、選択された選択サブ命令を出力する第1のセレクタと、前記第1のセレクタに接続され、かつそれぞれが前記複数の命令実行手段のそれぞれに接続され、前記判定手段の制御のもとで、前記第1のセレクタから出力された前記選択サブ命令かあるいは何も実行しない命令であるNOP命令のいずれかを選択して出力する複数のセレクタとを有していることを特徴とする請求項1から請求項3記載のうちのいずれか1項記載のマイクロプロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01120299A JP3841967B2 (ja) | 1999-01-19 | 1999-01-19 | マイクロプロセッサ |
US09/324,831 US6438680B1 (en) | 1999-01-19 | 1999-06-03 | Microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01120299A JP3841967B2 (ja) | 1999-01-19 | 1999-01-19 | マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000207210A JP2000207210A (ja) | 2000-07-28 |
JP3841967B2 true JP3841967B2 (ja) | 2006-11-08 |
Family
ID=11771453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01120299A Expired - Fee Related JP3841967B2 (ja) | 1999-01-19 | 1999-01-19 | マイクロプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6438680B1 (ja) |
JP (1) | JP3841967B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3790607B2 (ja) * | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US6654870B1 (en) * | 1999-06-21 | 2003-11-25 | Pts Corporation | Methods and apparatus for establishing port priority functions in a VLIW processor |
JP3705022B2 (ja) * | 1999-07-09 | 2005-10-12 | 株式会社日立製作所 | 低消費電力マイクロプロセッサおよびマイクロプロセッサシステム |
US7376811B2 (en) * | 2001-11-06 | 2008-05-20 | Netxen, Inc. | Method and apparatus for performing computations and operations on data using data steering |
US7200738B2 (en) * | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
US6996785B1 (en) | 2003-04-25 | 2006-02-07 | Universal Network Machines, Inc . | On-chip packet-based interconnections using repeaters/routers |
US7793072B2 (en) * | 2003-10-31 | 2010-09-07 | International Business Machines Corporation | Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands |
RU2010145507A (ru) * | 2010-11-10 | 2012-05-20 | ЭлЭсАй Корпорейшн (US) | Устройство и способ управления микрокомандами без задержки |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3983539A (en) * | 1969-05-19 | 1976-09-28 | Burroughs Corporation | Polymorphic programmable units employing plural levels of sub-instruction sets |
GB9027853D0 (en) | 1990-12-21 | 1991-02-13 | Inmos Ltd | Multiple instruction issue |
JP3180175B2 (ja) * | 1995-02-13 | 2001-06-25 | 株式会社日立製作所 | 命令レベルの並列処理制御方法およびプロセッサ |
JPH09212363A (ja) | 1996-02-06 | 1997-08-15 | Fujitsu Ltd | 情報処理装置 |
-
1999
- 1999-01-19 JP JP01120299A patent/JP3841967B2/ja not_active Expired - Fee Related
- 1999-06-03 US US09/324,831 patent/US6438680B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6438680B1 (en) | 2002-08-20 |
JP2000207210A (ja) | 2000-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3741551B2 (ja) | データ処理装置 | |
JP3842474B2 (ja) | データ処理装置 | |
EP2524303B1 (en) | Mapping between registers used by multiple instruction sets | |
EP0996057B1 (en) | Data processor with an instruction unit having a cache and a ROM | |
US6061780A (en) | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units | |
EP0380849B1 (en) | Method and data processing unit for preprocessing implied specifiers in a pipelined processor | |
US6016543A (en) | Microprocessor for controlling the conditional execution of instructions | |
JP3881763B2 (ja) | データ処理装置 | |
AU635016B2 (en) | Decoding multiple specifiers in a variable length instruction architecture | |
JP3745039B2 (ja) | 遅延命令を有するマイクロプロセッサ | |
JPH09311786A (ja) | データ処理装置 | |
KR19980069855A (ko) | 넓은 데이터 폭의 프로세서에서 다기능 데이타 정렬기 | |
JPH03218523A (ja) | データプロセッサ | |
EP0855648A2 (en) | Data processing with parallel or sequential execution of program instructions | |
US6615339B1 (en) | VLIW processor accepting branching to any instruction in an instruction word set to be executed consecutively | |
JP3578883B2 (ja) | データ処理装置 | |
JP3841967B2 (ja) | マイクロプロセッサ | |
JPH1165839A (ja) | プロセッサの命令制御機構 | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
JP3182591B2 (ja) | マイクロプロセッサ | |
JP3547585B2 (ja) | 条件実行命令を有するマイクロプロセッサ | |
JPH11119998A (ja) | 情報処理装置 | |
EP1050800A1 (en) | A pipelined execution unit | |
JP2636821B2 (ja) | 並列処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060104 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060801 |
|
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: 20060808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060809 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |