JP3957948B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP3957948B2
JP3957948B2 JP2000111340A JP2000111340A JP3957948B2 JP 3957948 B2 JP3957948 B2 JP 3957948B2 JP 2000111340 A JP2000111340 A JP 2000111340A JP 2000111340 A JP2000111340 A JP 2000111340A JP 3957948 B2 JP3957948 B2 JP 3957948B2
Authority
JP
Japan
Prior art keywords
instruction
existing
extended
result data
calculation
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
JP2000111340A
Other languages
English (en)
Other versions
JP2001296999A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000111340A priority Critical patent/JP3957948B2/ja
Priority to US09/693,920 priority patent/US6763449B1/en
Publication of JP2001296999A publication Critical patent/JP2001296999A/ja
Application granted granted Critical
Publication of JP3957948B2 publication Critical patent/JP3957948B2/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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

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)

Description

【0001】
【発明の属する技術分野】
本発明は、演算処理装置に関するものであり、特に、既存命令に対して拡張命令(新命令)を追加するカスタム対応に用いて好適な演算処理装置に関するものである。
【0002】
近時、コンピュータの高性能化の要請を受けて、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の演算処理装置の開発競争に拍車がかかっている。従って、開発メーカでは、新機能を搭載した演算処理装置を次々と市場に投入しなければならない状況にあり、いかに低コストでしかも短期間で演算処理装置を開発できるかが市場を征するための鍵となっている。
【0003】
【従来の技術】
演算処理装置は、パーソナルコンピュータからスーパコンピュータまでのあらゆるコンピュータに組み込まれており、コンピュータの中核をなす装置である。一般的に演算処理装置は、演算命令をデコードする命令デコーダと、該命令デコーダによりデコードされた演算命令(オペコード)に基づいて算術演算や論理演算等の各種演算を実行する演算器と、該演算器により演算された結果(演算結果データ)を一時的に格納するレジスタと、演算器の制御やレジスタ(例えば、整数レジスタ、浮動小数点レジスタ)への演算結果データの格納制御等を実行する制御回路(例えば、パイプライン制御回路、ステートマシン)とから概略構成されている。上記演算処理装置では、命令に応じた各種演算、演算結果データの格納が超高速で行われる。
【0004】
【発明が解決しようとする課題】
ところで、前述したように、従来の演算処理装置では、既存の演算命令(以下、既存命令という)に対して、新たな演算命令(以下、拡張命令という)を追加するというカスタマイズが行われる。このカスタマイズでは、既存命令に対応する演算内容と拡張命令に対応する演算内容とが異なる場合や、既存命令を応用して拡張命令を実行できない場合、拡張命令に対応する制御回路を付加しなければならないため、既存の機構に対する設計変更箇所が多くなってしまうという問題があった。
【0005】
また、従来の演算処理装置では、整数の演算結果データが整数レジスタに格納され、一方、浮動小数点の演算結果データが浮動小数点レジスタに格納されるようになっており、演算結果データの型(整数または浮動小数点)とレジスタの型とは同型であることが一般的である。ここで、カスタマイズの要求によっては、異型の演算結果データをレジスタに格納するという特別な拡張命令が追加される場合がある。この種のカスタマイズでは、演算結果データをレジスタへと導く既存のパスを再設計しなければならず、大がかりな設計変更を要するという問題があった。
【0006】
本発明は、上記に鑑みてなされたもので、既存の機構に対して最小限の設計変更で拡張命令を追加することができる演算処理装置を提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するために、本発明は、既存命令、拡張命令を、少なくとも前記既存命令と前記拡張命令とを判定するための命令種別判定情報を含む同一のオペコードにデコードする命令デコード手段(後述する実施の形態1の命令デコーダ10に相当)と、前記オペコードに基づいて既存演算を実行し、演算終了通知信号を出力する既存演算手段(後述する実施の形態1の既存演算器12Aに相当)と、前記既存演算手段と同期して動作し、前記オペコードに基づいて拡張演算を実行する拡張演算手段(後述する実施の形態1の拡張演算器12Bに相当)と、前記命令種別判定情報に基づいて命令種別を判定する命令種別判定手段(後述する実施の形態1の制御回路11に相当)と、前記命令種別が前記拡張命令と判定されかつ前記演算終了通知信号が入力された場合に、前記拡張演算手段の演算結果データを選択する選択手段(後述する実施の形態1のマルチプレクサ13に相当)とを備えることを特徴とする。
【0008】
この発明によれば、拡張命令が発行されると、命令デコード手段により拡張命令がオペコードにデコードされる。このオペコードは、既存演算手段および拡張演算手段の双方に通知され、既存演算手段および拡張演算手段は、それぞれ演算を同期的に実行する。そして、演算が終了すると既存演算手段からは、演算終了通知信号が出力される。このとき、命令種別が拡張命令と判定されているものとすると、選択手段により、拡張演算手段の演算結果データを選択する。
【0009】
このように、この発明によれば、オペコードに命令種別判定情報を含ませ、拡張命令が発行された場合であっても、既存演算手段からの演算終了通知信号を利用して、拡張演算手段の演算終了を認識し、この拡張演算手段の演算結果データを選択するようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができる。
【0010】
また、本発明は、前記選択手段は、前記命令種別が前記既存命令と判定されかつ前記演算終了通知信号が入力された場合に、前記既存演算手段の演算結果データを選択することを特徴とする。
【0011】
この発明によれば、命令種別が既存命令と判定された場合に既存演算手段の演算結果データを選択するようにしたので、既存演算手段に変更を加えることなく、拡張命令を追加することができる。
【0012】
また、本発明は、既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含む同一のオペコードにデコードする命令デコード手段(後述する実施の形態2の命令デコーダ20に相当)と、前記オペコードに基づいて第1の型に関する既存演算を実行し、演算終了通知信号を出力する既存演算手段(後述する実施の形態2の既存演算器22Aに相当)と、前記既存演算手段に対応して設けられた第1保持手段(後述する実施の形態2のレジスタ24Aに相当)と、前記既存演算手段と同期して動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段(後述する実施の形態2の拡張演算器22Bに相当)と、前記拡張演算手段に対応して設けられた第2保持手段(後述する実施の形態2のレジスタ24Bに相当)と、前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段(後述する実施の形態2の制御回路21A、マルチプレクサ23に相当)とを備えることを特徴とする。
【0013】
この発明によれば、拡張命令が発行されると、命令デコード手段により拡張命令がオペコードにデコードされる。このオペコードは、既存演算手段および拡張演算手段の双方に通知され、既存演算手段および拡張演算手段は、それぞれ演算を同期的に実行する。そして、演算が終了すると既存演算手段からは、演算終了通知信号が出力される。このとき、拡張演算手段の演算結果データの型がフォワード先の第1保持手段のデータの型と異なるものとすると、上記演算結果データは、フォワード手段により、第1保持手段にフォワードされる。
【0014】
このように、この発明によれば、オペコードに含まれる型判定情報に基づいて、拡張演算手段の演算結果データを第1保持手段にフォワードさせるようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができる。
【0015】
また、本発明は、既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含むオペコードにデコードする命令デコード手段(後述する実施の形態3の命令デコーダ30A、命令デコーダ30Bに相当)と、前記オペコードに基づいて第1の型に関する既存演算を実行する既存演算手段(後述する実施の形態3の既存演算器32Aに相当)と、前記既存演算手段に対応して設けられた第1保持手段(後述する実施の形態3のレジスタ36Aに相当)と、前記既存演算手段と非同期で動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段(後述する実施の形態3の拡張演算器32Bに相当)と、前記拡張演算手段の演算が終了した旨を表す演算終了通知信号を出力する出力手段(後述する実施の形態3の制御回路31Bに相当)と、前記拡張演算手段に対応して設けられた第2保持手段(後述する実施の形態3のレジスタ36Bに相当)と、前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段(後述する実施の形態3の制御回路31A、マルチプレクサ35に相当)とを備えることを特徴とする。
【0016】
この発明によれば、拡張命令、既存命令が発行されると、命令デコード手段により拡張命令、既存命令がオペコードにそれぞれデコードされる。これらのオペコードは、既存演算手段および拡張演算手段のそれぞれに通知され、既存演算手段および拡張演算手段は、それぞれ演算を非同期で実行する。そして、拡張演算手段の演算が終了すると出力手段からは、演算終了通知信号が出力される。このとき、拡張演算手段の演算結果データの型がフォワード先の第1保持手段のデータの型と異なるものとすると、上記演算結果データは、フォワード手段により、第1保持手段にフォワードされる。
【0017】
このように、この発明によれば、拡張演算手段に関する演算終了通知信号を出力し、オペコードに含まれる型判定情報に基づいて、拡張演算手段の演算結果データを第1保持手段にフォワードさせるようにしたので、拡張演算手段と既存演算手段とが非同期で動作する場合であっても、既存の機構に対して最小限の設計変更で拡張命令を追加することができる。
【0018】
また、本発明は、前記演算終了通知信号が入力された場合、前記第1保持手段に対する前記既存演算手段の演算結果データの出力タイミングと、前記拡張演算手段の演算結果データのフォワードタイミングとを調停するタイミング調停手段(後述する実施の形態3の制御回路31Aに相当)を備えることを特徴とする。
【0019】
この発明によれば、タイミング調停手段により、第1保守手段に対する既存演算手段の演算結果データの出力タイミングと、拡張演算手段の演算結果データのフォワードタイミングとを調停するようにしたので、同一タイミングに発生するバッティングを防止することができる。
【0020】
また、後述する付記3記載の発明は、付記1または2に記載の演算処理装置において、前記選択手段により選択された演算結果データを保持する保持手段を備えることを特徴とする。
【0021】
この発明によれば、選択手段を設けて、命令種別の判定結果に応じて保持手段に保持させる演算結果データを選択するようにしたので、拡張命令用に保持手段を追加する必要がなく、コストを低減させることができる。
【0022】
【発明の実施の形態】
以下、図面を参照して本発明にかかる演算処理装置の実施の形態1〜5について詳細に説明する。
【0023】
(実施の形態1)
図1は、本発明にかかる実施の形態1の構成を示すブロック図である。この図には、カスタマイズの要請により、既存命令に対して拡張命令を追加した後の演算処理装置の主要部の構成が図示されている。ここで既存命令は、例えば、整数加算命令であり、拡張命令は、例えば、整数乗算命令である。これらの既存命令および拡張命令は、32bitの命令コードからなり16進数表現でつぎのようにそれぞれ表される。
既存命令:0x8a8a8a8a
拡張命令:0x5c5c5c5c
【0024】
命令デコーダ10は、32bitの既存命令、拡張命令をデコードし、12bitのオペコード(既存命令CA1 、拡張命令CB1 )に変換する。これらの既存命令CA1 および拡張命令CB1 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA1:0x1ff(000111111111)
拡張命令CB1:0x3ff(001111111111)
【0025】
これらの既存命令CA1 および拡張命令CB1 で実際に命令として有効なビットは、[11:10.8:0]ビットである。このことから、既存命令CA1 および拡張命令CB1 は、それぞれの[11:10.8:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA1 および拡張命令CB1 のそれぞれの[9]ビットは、命令用のビットとしては用いられない空ビットである。ただし、実施の形態1では、上記[9]ビットは、既存命令CA1 と拡張命令CB1 とを判定するための命令種別用ビットである。すなわち、[9]ビットが「0」である場合には、命令種別が既存命令であり、[9]ビットが「1」である場合には、命令種別が拡張命令である。
【0026】
制御回路11は、既存演算器12Aおよび拡張演算器12Bへ既存命令CA1 および拡張命令CB1 を通知する制御や、レジスタ14への演算結果データの格納制御を行う。既存演算器12Aは、既存の演算器であり、既存命令CA1 に従って整数加算を行い、演算を終了した旨を表す演算終了通知信号DN1 を制御回路11へ出力する。また、既存演算器12Aは、演算結果を既存命令演算結果データEA1 として出力する。
【0027】
拡張演算器12Bは、カスタマイズの要請により既存の機構に付加されたものであり、拡張命令CB1 に従って整数乗算を行う。この拡張演算器12Bは、演算結果を拡張命令演算結果データEB1 として出力する。ここで、既存演算器12Aの演算終了サイクル数と拡張演算器12Bの演算終了サイクル数とは、同値とされている。ここで注意すべきは、拡張演算器12Bからは、演算終了通知信号DN1 に相当する信号が出力されない点である。また、既存命令演算結果データEA1 の型(この場合、整数)と拡張命令演算結果データEB1(この場合、整数)とは同型とされている。
【0028】
マルチプレクサ13は、制御回路11の制御により、既存命令演算結果データEA1 または拡張命令演算結果データEB1 のいずれか一方を選択し、これをレジスタ14へ出力する。具体的には、制御回路11より選択信号SELA1 が入力された場合、マルチプレクサ13は、既存命令演算結果データEA1 をレジスタ14へ出力する。一方、制御回路11より選択信号SELB1 が入力された場合、マルチプレクサ13は、拡張命令演算結果データEB1 をレジスタ14へ出力する。レジスタ14は、例えば、整数レジスタであり、既存命令演算結果データEA1 または拡張命令演算結果データEB1 を一時的に格納する。
【0029】
つぎに、上述した実施の形態1の動作について図2に示したフローチャートを参照しつつ説明する。同図に示したステップSA1で、32bitの既存命令(0x8a8a8a8a)が発行されると、ステップSA2では、命令デコーダ10は、既存命令(0x8a8a8a8a)を12bitのオペコード(0x1ff(000111111111))に変換した後、これを制御回路11へ通知する。これにより、ステップSA3およびステップSA5では、制御回路11は、命令として同値ビットからなる拡張命令CB1 (この場合、0x1ff(000111111111))および既存命令CA1 (この場合、0x1ff(000111111111))を拡張演算器12Bおよび既存演算器12Aへ通知する。
【0030】
これにより、拡張演算器12Bでは、拡張命令CB1 に従って演算(整数乗算)が実行される。これに並行して、既存演算器12Aでは、既存命令CA1 に従って演算(整数加算)が実行される。これらの処理に並行して、ステップSA10では、制御回路11は、命令デコーダ10により変換されたオペコード(0x1ff(000111111111))の[9]ビット(この場合、「0」)に基づいて、命令種別を判定する。この場合、上記[9]ビットが「0」であるため、制御回路11は、命令種別を既存命令として判定する。
【0031】
ステップSA6では、既存演算器12Aは、演算が終了したか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、既存演算器12Aは、ステップSA6の判断結果を「Yes」とし、ステップSA7で演算終了通知信号DN1 を制御回路11へ出力する。つぎのステップSA8では、既存演算器12Aは、既存命令演算結果データEA1 をマルチプレクサ13へ出力する。一方、既存演算器12Aの演算が終了すると同時に、拡張演算器12Bの演算も終了するため、ステップSA4では、拡張演算器12Bは、拡張命令演算結果データEB1 をマルチプレクサ13へ出力する。
【0032】
上記演算終了通知信号DN1 が入力されると、制御回路11は、既存演算器12Aおよび拡張演算器12Bのそれぞれの演算が終了したことを認識し、ステップSA9の処理を実行する。すなわち、ステップSA9では、制御回路11は、ステップSA10の命令種別の判定結果を受けて、選択信号SELA1 または選択信号SELB1 のいずれかをマルチプレクサ13へ出力する。この場合、オペコード[9]=「0」、すなわち、命令種別が既存命令であるため、制御回路11は、選択信号SELA1 をマルチプレクサ13へ出力する。これにより、マルチプレクサ13で既存命令演算結果データEA1 が選択され、この既存命令演算結果データEA1 は、レジスタ14に格納される。
【0033】
一方、ステップSA1で32bitの拡張命令(0x5c5c5c5c)が発行されると、ステップSA2では、命令デコーダ10は、拡張命令(0x5c5c5c5c)を12bitのオペコード(0x3ff(001111111111))に変換した後、これを制御回路11へ通知する。これにより、ステップSA3およびステップSA5では、制御回路11は、命令として同値ビットからなる拡張命令CB1 (この場合、0x3ff(001111111111))および既存命令CA1 (この場合、0x3ff(001111111111))を拡張演算器12Bおよび既存演算器12Aへ通知する。
【0034】
これにより、拡張演算器12Bでは、拡張命令CB1 に従って演算(整数乗算)が実行されるとともに、既存演算器12Aでは、既存命令CA1 に従って演算(整数加算)が実行される。これらの処理に並行して、ステップSA10では、制御回路11は、命令デコーダ10により変換されたオペコード(0x3ff(001111111111))の[9]ビット(この場合、「1」)に基づいて、命令種別を判定する。この場合、上記[9]ビットが「1」であるため、制御回路11は、命令種別を拡張命令として判定する。
【0035】
ステップSA6では、既存演算器12Aは、演算が終了したか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、既存演算器12Aは、ステップSA6の判断結果を「Yes」とし、ステップSA7で演算終了通知信号DN1 を制御回路11へ出力する。つぎのステップSA8では、既存演算器12Aは、既存命令演算結果データEA1 をマルチプレクサ13へ出力する。これに並行して、ステップSA4では、拡張演算器12Bは、拡張命令演算結果データEB1 をマルチプレクサ13へ出力する。
【0036】
上記演算終了通知信号DN1 が入力されると、ステップSA9では、制御回路11は、オペコード[9]=「1」、すなわち、命令種別が拡張命令であるため、選択信号SELB1 をマルチプレクサ13へ出力する。これにより、マルチプレクサ13で拡張命令演算結果データEB1 が選択され、この拡張命令演算結果データEB1 は、レジスタ14に格納される。
【0037】
以上説明したように、実施の形態1によれば、オペコードに命令種別判定ビットを含ませ、拡張命令が発行された場合であっても、既存演算器12Aからの演算終了通知信号DN1 を利用して、拡張演算器12Bの演算終了を認識し、この拡張演算器12Bの拡張命令演算結果データEB1 を選択するようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができるとともに、コストを低減することができる。
【0038】
(実施の形態2)
図3は、本発明にかかる実施の形態2の構成を示すブロック図である。この図には、カスタマイズの要請により、既存命令に対して拡張命令を追加した後の演算処理装置の主要部の構成が図示されている。ここで既存命令は、例えば、整数加算命令であり、拡張命令は、例えば、浮動小数点乗算命令である。この拡張命令は、異型の演算結果データ(この場合、拡張命令演算結果データEB2 )をレジスタ24Aに格納するという特別な命令である。
【0039】
これらの既存命令および拡張命令は、実施の形態1の場合と同様にして、32bitの命令コードからなり16進数表現でつぎのようにそれぞれ表される。
既存命令:0x8a8a8a8a
拡張命令:0x5c5c5c5c
【0040】
命令デコーダ20は、命令デコーダ10(図1参照)と同様にして、32bitの既存命令、拡張命令をデコードし、12bitのオペコード(既存命令CA2 、拡張命令CB2 )に変換する。これらの既存命令CA2 および拡張命令CB2 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA2:0x1ff(000111111111)
拡張命令CB2:0x3ff(001111111111)
【0041】
これらの既存命令CA2 および拡張命令CB2 で実際に命令として有効なビットは、実施の形態1の場合と同様にして、[11:10.8:0]ビットである。このことから、既存命令CA2 および拡張命令CB2 は、それぞれの[11:10.8:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA2 および拡張命令CB2 のそれぞれの[9]ビットは、命令用のビットとしては用いられない空ビットである。
【0042】
ただし、実施の形態2では、上記[9]ビットは、レジスタ24A(この場合、整数レジスタ)に格納すべき演算結果データ(既存命令演算結果データEA2 または拡張命令演算結果データEB2 )の型(この場合、整数または浮動小数点)を判定するための演算結果データ型判定用ビットである。すなわち、[9]ビットが「0」である場合には、レジスタ24Aに格納すべき演算結果データ(この場合、既存命令演算結果データEA2 )の型が整数であることを意味している。一方、[9]ビットが「1」である場合には、レジスタ24Aに格納すべき演算結果データ(この場合、拡張命令演算結果データEB2 )の型が浮動小数点であることを意味している。
【0043】
制御回路21Aは、既存演算器22Aへ既存命令CA2 を通知する制御や、レジスタ24Aへの演算結果データの格納制御を行う。既存演算器22Aは、既存の演算器であり、既存命令CA2 に従って整数加算を行い、演算を終了した旨を表す演算終了通知信号DN2 を制御回路21Aへ出力する。また、既存演算器22Aは、演算結果を既存命令演算結果データEA2 として出力する。
【0044】
マルチプレクサ23は、制御回路21Aの制御により、既存命令演算結果データEA2 または拡張命令演算結果データEB2 のいずれか一方を選択し、これをレジスタ24Aへ出力する。具体的には、制御回路21Aより選択信号SELA2 が入力された場合、マルチプレクサ23は、既存命令演算結果データEA2 をレジスタ24Aへ出力する。
【0045】
一方、制御回路21Aより選択信号SELB2 が入力された場合、マルチプレクサ23は、拡張命令演算結果データEB2 をレジスタ24Aへ出力する。レジスタ24Aは、整数レジスタであり、既存命令演算結果データEA2 または拡張命令演算結果データEB2 を一時的に格納する。ここで注意すべきは、型が整数の既存命令演算結果データEA2 または型が浮動小数点の拡張命令演算結果データEB2 がレジスタ24Aに格納される点である。
【0046】
制御回路21Bは、拡張演算器22Bへ拡張命令CB2 を通知する制御や、レジスタ24Bに対する拡張命令演算結果データEB2 の出力を制御を行う。拡張演算器22Bは、カスタマイズの要請により、拡張命令CB2 に従って浮動小数点乗算を行う。この拡張演算器22Bは、演算結果を拡張命令演算結果データEB2 として出力する。ここで、既存演算器22Aの演算終了サイクル数と拡張演算器22Bの演算終了サイクル数とは、同値とされている。
【0047】
ここで注意すべきは、拡張演算器22Bからは、演算終了通知信号DN2 に相当する信号が出力されない点である。また、既存命令演算結果データEA2 の型(この場合、整数)と拡張命令演算結果データEB2(この場合、浮動小数点)とは異なる。レジスタ24Bは、浮動小数点レジスタであり、拡張命令演算結果データEB2 を一時的に格納する。ただし、後述する条件によっては、レジスタ24Bには、拡張命令演算結果データEB2 が格納されない。
【0048】
つぎに、上述した実施の形態2の動作について図4に示したフローチャートを参照しつつ説明する。同図に示したステップSB1で、32bitの既存命令(0x8a8a8a8a)が発行されると、ステップSB2では、命令デコーダ20は、既存命令(0x8a8a8a8a)を12bitのオペコード(0x1ff(000111111111))に変換した後、これを制御回路21Aおよび制御回路21Bへ通知する。
【0049】
これにより、ステップSB3では、制御回路21Aは、既存命令CA2 (この場合、0x1ff(000111111111))を既存演算器22Aへ通知する。この動作に並行して、ステップSB9では、制御回路21Bは、拡張命令CB2 (この場合、0x1ff(000111111111))を拡張演算器22Bへ通知する。
【0050】
これにより、既存演算器22Aでは、既存命令CA2 に従って演算(整数加算)が実行される。これに並行して、拡張演算器22Bでは、拡張命令CB2 に従って演算(浮動小数点乗算)が実行される。これらの処理に並行して、ステップSB8では、制御回路21Aは、命令デコーダ20により変換されたオペコード(0x1ff(000111111111))の[9]ビット(この場合、「0」)に基づいて、レジスタ24Aに格納すべき演算結果データの型を判定する。この場合、上記[9]ビットが「0」であるため、制御回路21Aは、型を整数として判定する。
【0051】
ステップSB4では、既存演算器22Aは、演算が終了したか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、既存演算器22Aは、ステップSB4の判断結果を「Yes」とし、ステップSB5で演算終了通知信号DN2 を制御回路21Aへ出力する。つぎのステップSB6では、既存演算器22Aは、既存命令演算結果データEA2 をマルチプレクサ23へ出力する。
【0052】
一方、ステップSB10では、制御回路21Bは、命令デコーダ20により変換されたオペコード(0x1ff(000111111111))の[9]ビットが「1」であるか否かを判断する。この場合、制御回路21Bは、[9]ビットが「0」であるため、ステップSB10の判断結果を「No」とする。また、既存演算器22Aの演算が終了すると同時に、拡張演算器22Bの演算も終了するため、ステップSB12では、拡張演算器22Bは、拡張命令演算結果データEB2 をレジスタ24Bへ出力する。
【0053】
上記演算終了通知信号DN2 が入力されると、制御回路21Aは、既存演算器22Aおよび拡張演算器22Bのそれぞれの演算が終了したことを認識し、ステップSB7の処理を実行する。すなわち、ステップSB7では、制御回路21Aは、ステップSB8における型の判定結果を受けて、選択信号SELA2 または選択信号SELB2 のいずれかをマルチプレクサ23へ出力する。この場合、オペコード[9]=「0」、すなわち、レジスタ24Aに格納すべき演算結果データの型が整数であるため、制御回路21Aは、選択信号SELA2 をマルチプレクサ23へ出力する。これにより、マルチプレクサ23で既存命令演算結果データEA2 が選択され、この既存命令演算結果データEA2 は、レジスタ24Aに格納される。
【0054】
一方、ステップSB1で32bitの拡張命令(0x5c5c5c5c)が発行されると、ステップSB2では、命令デコーダ20は、拡張命令(0x5c5c5c5c)を12bitのオペコード(0x3ff(001111111111))に変換した後、これを制御回路21Aおよび制御回路21Bへ通知する。
【0055】
これにより、ステップSB3では、制御回路21Aは、既存命令CA2 (この場合、0x3ff(001111111111))を既存演算器22Aへ通知する。この動作に並行して、ステップSB9では、制御回路21Bは、拡張命令CB2 (この場合、0x3ff(001111111111))を拡張演算器22Bへ通知する。
【0056】
これにより、既存演算器22Aでは、上述した動作と同様にして、既存命令CA2 に従って演算(整数加算)が実行される。これに並行して、拡張演算器22Bでは、拡張命令CB2 に従って演算(浮動小数点乗算)が実行される。これらの処理に並行して、ステップSB8では、制御回路21Aは、命令デコーダ20により変換されたオペコード(0x3ff(001111111111))の[9]ビット(この場合、「1」)に基づいて、レジスタ24Aに格納すべき演算結果データの型を判定する。この場合、上記[9]ビットが「1」であるため、制御回路21Aは、型を浮動小数点として判定する。
【0057】
ステップSB4では、既存演算器22Aは、演算が終了したか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、既存演算器22Aは、ステップSB4の判断結果を「Yes」とし、ステップSB5で演算終了通知信号DN2 を制御回路21Aへ出力する。つぎのステップSB6では、既存演算器22Aは、既存命令演算結果データEA2 をマルチプレクサ23へ出力する。
【0058】
一方、ステップSB10では、制御回路21Bは、命令デコーダ20により変換されたオペコード(0x3ff(001111111111))の[9]ビットが「1」であるか否かを判断する。この場合、制御回路21Bは、[9]ビットが「1」であるため、ステップSB10の判断結果を「Yes」とする。また、既存演算器22Aの演算が終了すると同時に、拡張演算器22Bの演算も終了するため、ステップSB11では、拡張演算器22Bは、拡張命令演算結果データEB2 をマルチプレクサ23へ出力する。ここで拡張演算器22Bは、制御回路21Bの制御により、レジスタ24Bへの拡張命令演算結果データEB2 の出力を抑止する。
【0059】
上記演算終了通知信号DN2 が入力されると、制御回路21Aは、既存演算器22Aおよび拡張演算器22Bのそれぞれの演算が終了したことを認識し、ステップSB7の処理を実行する。すなわち、ステップSB7では、制御回路21Aは、ステップSB8における型の判定結果を受けて、選択信号SELA2 または選択信号SELB2 のいずれかをマルチプレクサ23へ出力する。
【0060】
この場合、オペコード[9]=「1」、すなわち、レジスタ24Aに格納すべき演算結果データの型が浮動小数点であるため、制御回路21Aは、選択信号SELB2 をマルチプレクサ23へ出力する。これにより、マルチプレクサ23で拡張命令演算結果データEB2 が選択され、この拡張命令演算結果データEB2 は、レジスタ24Aに格納される。
【0061】
以上説明したように、実施の形態2によれば、オペコードに含まれる型判定ビットに基づいて、拡張演算器22Bの拡張命令演算結果データEB2 をレジスタ24Aにフォワードさせるようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができる。
【0062】
(実施の形態3)
さて、上述した実施の形態2では、図3に示した既存演算器22Aの演算終了サイクル数と拡張演算器22Bの演算終了サイクル数とが同値、すなわち既存演算器22Aと拡張演算器22Bとの同期が取られている例について説明したが、非同期の場合であってもよい。以下では、この場合を実施の形態3として説明する。
【0063】
図5は、本発明にかかる実施の形態3の構成を示すブロック図である。この図には、カスタマイズの要請により、既存命令に対して拡張命令を追加した後の演算処理装置の主要部の構成が図示されている。ここで既存命令は、例えば、整数加算命令であり、拡張命令は、例えば、浮動小数点乗算命令である。この拡張命令は、実施の形態2の場合と同様にして、異型の演算結果データ(この場合、拡張命令演算結果データEB3 )をレジスタ36Aに格納するという特別な命令である。
【0064】
これらの既存命令および拡張命令は、実施の形態2の場合と同様にして、32bitの命令コードからなり16進数表現でつぎのようにそれぞれ表される。
既存命令:0x8a8a8a8a
拡張命令:0x5c5c5c5c
【0065】
命令デコーダ30Aは、32bitの既存命令をデコードし、12bitのオペコード(既存命令CA3 )に変換する。一方、命令デコーダ30Bは、32bitの拡張命令をデコードし、12bitのオペコード(拡張命令CB3 )に変換する。これらの既存命令CA3 および拡張命令CB3 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA3:0x1ff(000111111111)
拡張命令CB3:0x3ff(001111111111)
【0066】
上記既存命令CA3 および拡張命令CB3 で実際に命令として有効なビットは、[11:10.8:0]ビットである。既存命令CA3 および拡張命令CB3 の[9]ビットは、命令用のビットとしては用いられない空ビットである。ただし、実施の形態3では、上記[9]ビットは、レジスタ36A(この場合、整数レジスタ)に格納すべき演算結果データ(既存命令演算結果データEA3 または拡張命令演算結果データEB3 )の型(この場合、整数または浮動小数点)を判定するための演算結果データ型判定用ビットである。すなわち、[9]ビットが「0」である場合には、レジスタ36Aに格納すべき演算結果データ(この場合、既存命令演算結果データEA3 )の型が整数であることを意味している。一方、[9]ビットが「1」である場合には、レジスタ36Aに格納すべき演算結果データ(この場合、拡張命令演算結果データEB3 )の型が浮動小数点であることを意味している。
【0067】
制御回路31Aは、既存演算器32Aへ既存命令CA3 を通知する制御や、レジスタ36Aへの演算結果データの格納制御を行う。既存演算器32Aは、既存の演算器であり、既存命令CA3 に従って整数加算を行い、演算結果を既存命令演算結果データEA3 として出力する。
【0068】
FF(フリップフロップ)回路33は、既存命令演算結果データEA3 を一時的に格納する。マルチプレクサ34は、制御回路31Aの制御により、既存演算器32Aから直接出力された既存命令演算結果データEA3 またはFF回路33に格納された既存命令演算結果データEA3 のいずれか一方を選択し、これをマルチプレクサ35へ出力する。
【0069】
具体的には、マルチプレクサ34は、制御回路31Aより選択信号SELD3 が入力された場合、既存演算器32Aから直接出力された既存命令演算結果データEA3 を選択する。一方、制御回路31Aより選択信号SELC3 が出力された場合、マルチプレクサ34は、FF回路33に格納された既存命令演算結果データEA3 を選択する。
【0070】
マルチプレクサ35は、制御回路31Aの制御により、既存命令演算結果データEA3 または拡張命令演算結果データEB3 のいずれか一方を選択し、これをレジスタ36Aへ出力する。具体的には、制御回路31Aより選択信号SELA4 が入力された場合、マルチプレクサ35は、既存命令演算結果データEA3 をレジスタ36Aへ出力する。
【0071】
一方、制御回路31Aより選択信号SELB4 が入力された場合、マルチプレクサ35は、拡張命令演算結果データEB3 をレジスタ36Aへ出力する。レジスタ36Aは、整数レジスタであり、既存命令演算結果データEA3 または拡張命令演算結果データEB3 を一時的に格納する。ここで注意すべきは、型が整数の既存命令演算結果データEA3 または型が浮動小数点の拡張命令演算結果データEB3 がレジスタ36Aに格納される点である。
【0072】
制御回路31Bは、拡張演算器32Bへ拡張命令CB3 を通知する制御や、レジスタ36Bへの拡張命令演算結果データEB3 の格納制御を行う。この制御回路31Bは、拡張演算器32Bの演算が終了した旨を表す演算終了通知信号DN3 を制御回路31Aへ出力する。拡張演算器32Bは、カスタマイズの要請により、拡張命令CB3 に従って浮動小数点乗算を行う。この拡張演算器32Bは、演算結果を拡張命令演算結果データEB3 として出力する。
【0073】
ここで、既存演算器32Aの演算終了サイクル数と拡張演算器32Bの演算終了サイクル数とは、異なる。すなわち、既存演算器32Aと拡張演算器32Bとは非同期とされている。レジスタ36Bは、浮動小数点レジスタであり、拡張命令演算結果データEB3 を一時的に格納する。ただし、後述する条件によっては、レジスタ36Bには、拡張命令演算結果データEB3 が格納されない。
【0074】
つぎに、上述した実施の形態3の動作について図6(a)および(b)ならびに図7にそれぞれ示したフローチャートを参照しつつ説明する。図6(a)は、図5に示した制御回路31B側の動作を説明するフローチャートであり、図6(b)は、制御回路31A側の動作を説明するフローチャートである。また、図7は、図5に示した制御回路31Aの動作を説明するフローチャートである。
【0075】
図6(b)に示したステップSD1で、32bitの既存命令(0x8a8a8a8a)が発行されると、ステップSD2では、命令デコーダ30Aは、既存命令(0x8a8a8a8a)を12bitのオペコード(0x1ff(000111111111))に変換した後、これを制御回路31Aへ通知する。
【0076】
これにより、ステップSD3では、制御回路31Aは、既存命令CA3 を既存演算器32Aへ通知する。これにより、既存演算器32Aでは、既存命令CA3 に従って演算(整数加算)が実行される。ステップSD4では、既存演算器32Aは、演算が終了したか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、既存演算器32Aは、ステップSD4の判断結果を「Yes」とし、ステップSD5で既存命令演算結果データEA3を出力する。これにより、既存命令演算結果データEA3は、マルチプレクサ34へ直接出力されるとともに、FF回路33に格納される。
【0077】
一方、図7に示したステップSE1では、制御回路31Aは、制御回路31Bより演算終了通知信号DN3 が入力されたか否かを判断し、この場合、判断結果を「No」とする。ステップSE6では、制御回路31Aは、選択信号SELD3 をマルチプレクサ34へ出力するとともに、選択信号SELA4 をマルチプレクサ35へ出力する。これにより、マルチプレクサ34では、既存演算器32Aから直接出力された既存命令演算結果データEA3 が選択され、マルチプレクサ35では、マルチプレクサ34からの既存命令演算結果データEA3 が選択される。この既存命令演算結果データEA3 は、レジスタ36Aに格納される。
【0078】
また、図6(a)に示したステップSC1で32bitの拡張命令(0x5c5c5c5c)が発行されると、ステップSC2では、命令デコーダ30Bは、拡張命令(0x5c5c5c5c)を12bitのオペコード(0x3ff(001111111111)に変換した後、これを制御回路31Bへ通知する。ステップSC3では、制御回路31Bは、拡張命令CB3 (この場合、0x3ff(001111111111))を拡張演算器32Bへ通知する。これにより、拡張演算器32Bでは、拡張命令CB3 に従って演算(浮動小数点乗算)が実行される。
【0079】
ステップSC4では、制御回路31Bは、拡張命令CB3 に基づいて、拡張演算器32Bにおける演算終了サイクル数を判定する。ステップSC5では、制御回路31Bは、上記演算終了サイクル数に基づいて、拡張演算器32Bの演算が終了したか否かを判断し、この場合、判断結果を「No」とし同判断を繰り返す。そして、拡張演算器32Bの演算が終了すると、制御回路31Bは、ステップSC5の判断結果を「Yes」とし、ステップSC6で演算終了通知信号DN3 を制御回路31Aへ出力する。
【0080】
ステップSC7では、制御回路31Bは、命令デコーダ30Bにより変換されたオペコード(0x3ff(001111111111))の[9]ビットが「1」であるか否かを判断する。すなわち、制御回路31Bは、[9]ビット(この場合、「1」)に基づいて、レジスタ36Aに格納すべき演算結果データの型を判定する。
【0081】
この場合、上記[9]ビットが「1」であるため、制御回路31Bは、型を整数として判定し、ステップSC7の判断結果を「Yes」とする。ステップSC8では、拡張演算器32Bは、拡張命令演算結果データEB3 をマルチプレクサ35へ出力する。この場合、拡張演算器32Bは、制御回路31Bの制御により、レジスタ36Bへの拡張命令演算結果データEB3 の出力を抑止する。
【0082】
また、上述した演算終了通知信号DN3 が制御回路31Aに入力されると、制御回路31Aは、図7に示したステップSE1の判断結果を「Yes」とする。ステップSE2では、制御回路31Aは、既存命令演算結果データEA3 を出力するか否か、言い換えれば、既存演算器32Aの演算が終了するか否かを判断する。ここで、既存演算器32Aで演算が実行されていない場合、または既存演算器32Aで演算が実行中であっても演算終了タイミングでない場合、制御回路31Aは、ステップSE2の判断結果を「No」として、ステップSE5で選択信号SELB4 をマルチプレクサ35へ出力する。これにより、マルチプレクサ35により拡張命令演算結果データEB3 が選択され、この拡張命令演算結果データEB3 は、レジスタ36Aに格納される。
【0083】
一方、ステップSE2の判断結果が「Yes」である場合、すなわち、既存演算器32Aの演算が終了する場合、ステップSE3では、制御回路31Aは、所定時間待機する。演算が終了すると、既存演算器32Aからの既存命令演算結果データEA3は、マルチプレクサ34へ直接出力されるとともに、FF回路33に格納される。
【0084】
そして、所定時間が経過すると、ステップSE4では、制御回路31Aは、選択信号SELC3 をマルチプレクサ34へ出力するとともに、選択信号SELA4 をマルチプレクサ35へ出力する。これにより、マルチプレクサ34では、FF回路33に格納された既存命令演算結果データEA3 が選択され、マルチプレクサ35では、マルチプレクサ34からの既存命令演算結果データEA3 が選択される。この既存命令演算結果データEA3 は、レジスタ36Aに格納される。このように、制御回路31Aは、レジスタ36Aに対する既存命令演算結果データEA3 の格納タイミングと拡張命令演算結果データEB3 の格納タイミングとの調停を行っているのである。
【0085】
また、図6(a)に示したステップSC7で[9]ビットが「0」である場合、制御回路31Bは、判断結果を「No」とする。ステップSC9では、拡張演算器32Bは、拡張命令演算結果データEB3 をレジスタ36Bへ出力する。これにより、拡張命令演算結果データEB3 は、レジスタ36Bに格納される。
【0086】
以上説明したように、実施の形態3によれば、拡張演算器32Bに関する演算終了通知信号DN3 を出力し、オペコードに含まれる型判定ビットに基づいて、拡張演算器32Bの拡張命令演算結果データEB3 をレジスタ36Aにフォワードさせるようにしたので、拡張演算器32Bと既存演算器32Aとが非同期で動作する場合であっても、既存の機構に対して最小限の設計変更で拡張命令を追加することができる。
【0087】
また、実施の形態3によれば、レジスタ36Aに対する既存命令演算結果データEA3 の出力タイミングと、拡張命令演算結果データEB3 のフォワードタイミングとを調停するようにしたので、同一タイミングに発生するバッティングを防止することができる。
【0088】
(実施の形態4)
図8は、本発明にかかる実施の形態4の構成を示すブロック図である。この図には、カスタマイズの要請により、第1および第2既存命令に対して第1および第2拡張命令を追加した後の演算処理装置の主要部の構成が図示されている。ここで第1既存命令は、整数乗算/除算命令であり、第1拡張命令は、整数演算命令である。また、第2既存命令は、浮動小数点加算命令であり、第2拡張命令は、浮動小数点演算命令である。この第2拡張命令は、実施の形態2の場合と同様にして、異型の演算結果データ(この場合、拡張命令演算結果データEB5 )を整数レジスタ44に格納するという特別な命令である。
【0089】
これらの第1および第2既存命令ならびに第1および第2拡張命令は、実施の形態1の場合と同様にして、32bitの命令コードからなり16進数表現でつぎのようにそれぞれ表される。
第1既存命令:0x12121212
第1拡張命令:0x87878787
第2既存命令:0x8a8a8a8a
第2拡張命令:0x5c5c5c5c
【0090】
命令デコーダ40は、32bitの第1既存命令、第1拡張命令をデコードし、12bitのオペコード(既存命令CA4 、拡張命令CB4 )に変換する。これらの既存命令CA4 および拡張命令CB4 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA4:0x0aa(000010101010)
拡張命令CB4:0x8aa(100010101010)
【0091】
これらの既存命令CA4 および拡張命令CB4 で実際に命令として有効なビットは、[10:0]ビットである。このことから、既存命令CA4 および拡張命令CB4 は、それぞれの[10:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA4 および拡張命令CB4 のそれぞれの[11]ビットは、命令用のビットとしては用いられない空ビットである。
【0092】
ただし、実施の形態4では、上記[11]ビットは、既存命令CA4 と拡張命令CB4 とを判定するための命令種別用ビットである。すなわち、[11]ビットが「0」である場合には、命令種別が第1既存命令であり、[11]ビットが「1」である場合には、命令種別が第1拡張命令である。さらに、命令デコーダ40は、第2拡張命令をデコードする。
【0093】
ステートマシン41は、既存整数乗算/除算器42Aおよび拡張整数演算器42Bへ既存命令CA4 および拡張命令CB4 を通知する制御や、整数レジスタ44への演算結果データの格納制御を行う。既存整数乗算/除算器42Aは、既存の演算器であり、既存命令CA4 に従って整数乗算/除算を行い、演算を終了した旨を表す演算終了通知信号DN3 をステートマシン41へ出力する。また、既存整数乗算/除算器42Aは、演算結果を既存命令演算結果データEA4 として出力する。
【0094】
拡張整数演算器42Bは、カスタマイズの要請により既存の機構に付加されたものであり、拡張命令CB4 に従って整数演算を行う。この拡張整数演算器42Bは、演算結果を拡張命令演算結果データEB4 として出力する。ここで、既存整数乗算/除算器42Aの演算終了サイクル数と拡張整数演算器42Bの演算終了サイクル数とは、同値とされている。ここで注意すべきは、拡張整数演算器42Bからは、演算終了通知信号DN3 に相当する信号が出力されない点である。また、既存命令演算結果データEA4 の型(この場合、整数)と拡張命令演算結果データEB4の型(この場合、整数)とは同型とされている。
【0095】
マルチプレクサ43は、ステートマシン41の制御により、既存命令演算結果データEA4 、拡張命令演算結果データEB4 または拡張命令演算結果データEB5 のいずれか一つを選択し、これを整数レジスタ44へ出力する。具体的には、ステートマシン41より選択信号SELA5 が入力された場合、マルチプレクサ43は、既存命令演算結果データEA4 を整数レジスタ44へ出力する。
【0096】
また、ステートマシン41より選択信号SELB5 が入力された場合、マルチプレクサ43は、拡張命令演算結果データEB4 を整数レジスタ44へ出力する。さらに、ステートマシン41より選択信号SELC5 が入力された場合、マルチプレクサ43は、拡張命令演算結果データEB5 を整数レジスタ44へ出力する。ここで注意すべきは、型が整数の既存命令演算結果データEA4 (拡張命令演算結果データEB4)または型が浮動小数点の拡張命令演算結果データEB5 が整数レジスタ44に格納される点である。
【0097】
一方、命令デコーダ50は、32bitの第2既存命令、第2拡張命令をデコードし、12bitのオペコード(既存命令CA5 、拡張命令CB5 )に変換する。これらの既存命令CA5 および拡張命令CB5 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA5:0x1ff(000111111111)
拡張命令CB5:0x3ff(001111111111)
【0098】
これらの既存命令CA5 および拡張命令CB5 で実際に命令として有効なビットは、実施の形態1の場合と同様にして、[11:10.8:0]ビットである。このことから、既存命令CA5 および拡張命令CB5 は、それぞれの[11:10.8:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA5 および拡張命令CB5 のそれぞれの[9]ビットは、命令用のビットとしては用いられない空ビットである。
【0099】
ただし、実施の形態4では、上記[9]ビットは、整数レジスタ44に格納すべき演算結果データの型(この場合、整数または浮動小数点)を判定するための演算結果データ型判定用ビットである。すなわち、[9]ビットが「0」である場合には、整数レジスタ44に格納すべき演算結果データの型が整数であることを意味している。一方、[9]ビットが「1」である場合には、整数レジスタ44に格納すべき演算結果データの型が浮動小数点であることを意味している。
【0100】
パイプライン制御回路51は、既存浮動小数点加算器52Aまたは拡張浮動小数点演算器52Bへ既存命令CA5 または拡張命令CB5 を通知する制御や、浮動小数点レジスタ54および整数レジスタ44への演算結果データの格納制御を行う。また、パイプライン制御回路51は、既存浮動小数点加算器52Aおよび拡張浮動小数点演算器52Bで実行されるパイプライン制御を行う。ここで、既存浮動小数点加算器52Aのパイプラインの段数と拡張浮動小数点演算器52Bのパイプラインの段数とは異なる。
【0101】
既存浮動小数点加算器52Aは、既存の演算器であり、既存命令CA5 に従って浮動小数点加算を行い、演算結果を既存命令演算結果データEA5 として出力する。拡張浮動小数点演算器52Bは、カスタマイズの要請に対応する拡張命令CB5 に従って浮動小数点演算を行い、演算結果を拡張命令演算結果データEB5 として出力する。マルチプレクサ53は、パイプライン制御回路51の制御により、既存命令演算結果データEA5 または拡張命令演算結果データEB5 のいずれか一方を選択し、これを浮動小数点レジスタ54へ出力する。具体的には、パイプライン制御回路51より選択信号SELA6 が入力された場合、マルチプレクサ53は、既存命令演算結果データEA5 を浮動小数点レジスタ54へ出力する。
【0102】
一方、パイプライン制御回路51より選択信号SELB6 が入力された場合、マルチプレクサ53は、拡張命令演算結果データEB5 を浮動小数点レジスタ54へ出力する。浮動小数点レジスタ54は、既存命令演算結果データEA5 または拡張命令演算結果データEB5 を一時的に格納する。
【0103】
つぎに、上述した実施の形態4の動作について図9および図10に示したフローチャートを参照しつつ説明する。図9に示したステップSF1で、32bitの第1既存命令(0x12121212)が発行されると、ステップSF2では、命令デコーダ40は、第1既存命令(0x12121212)を12bitのオペコード(0x0aa(000010101010)に変換した後、これをステートマシン41へ通知する。
【0104】
ステップSF3では、ステートマシン41は、第2拡張命令が命令デコーダ40によりデコードされたか否かを判断し、この場合、判断結果を「No」とする。ステップSF4では、ステートマシン41は、命令として同値ビットからなる拡張命令CB4 (この場合、0x0aa(000010101010))および既存命令CA4 (この場合、0x0aa(000010101010))を拡張整数演算器42Bおよび既存整数乗算/除算器42Aへ通知する。
【0105】
これにより、拡張整数演算器42Bでは、拡張命令CB4 に従って演算が実行されるとともに、既存整数乗算/除算器42Aでは、既存命令CA4 に従って演算が実行される。これらの処理に並行して、ステップSF5では、ステートマシン41は、既存整数乗算/除算器42Aより演算終了通知信号DN3 が入力されたか否かを判断し、この場合、判断結果を「No」とし同判断を繰り返す。
【0106】
そして、ステップSF5の判断結果が「Yes」になると、ステップSF6では、ステートマシン41は、命令デコーダ40により変換されたオペコード(0x0aa(000010101010))の[11]ビット(この場合、「0」)に基づいて、命令種別を判定する。この場合、上記[11]ビットが「0」であるため、ステートマシン41は、命令種別を第1既存命令として判定する。
【0107】
つぎにステートマシン41は、オペコード[11]=「0」であるため、選択信号SELA5 をマルチプレクサ43へ出力する。これにより、マルチプレクサ43で既存命令演算結果データEA4 が選択され、この既存命令演算結果データEA4 は、整数レジスタ44に格納される。
【0108】
一方、ステップSF1で32bitの第1拡張命令(0x87878787)が発行されると、ステップSF2では、命令デコーダ40は、第1拡張命令(0x87878787)を12bitのオペコード(0x8aa(100010101010)に変換した後、これをステートマシン41へ通知する。
【0109】
ステップSF3では、ステートマシン41は、第2拡張命令が命令デコーダ40によりデコードされたか否かを判断し、この場合、判断結果を「No」とする。ステップSF4では、ステートマシン41は、命令として同値ビットからなる拡張命令CB4 (この場合、0x8aa(100010101010))および既存命令CA4 (この場合、0x8aa(100010101010))を拡張整数演算器42Bおよび既存整数乗算/除算器42Aへ通知する。
【0110】
これにより、拡張整数演算器42Bでは、拡張命令CB4 に従って演算が実行されるとともに、既存整数乗算/除算器42Aでは、既存命令CA4 に従って演算が実行される。これらの処理に並行して、ステップSF5では、ステートマシン41は、既存整数乗算/除算器42Aより演算終了通知信号DN3 が入力されたか否かを判断し、この場合、判断結果を「No」とし同判断を繰り返す。
【0111】
そして、ステップSF5の判断結果が「Yes」になると、ステップSF6では、ステートマシン41は、命令デコーダ40により変換されたオペコード(0x8aa(100010101010))の[11]ビット(この場合、「1」)に基づいて、命令種別を判定する。この場合、上記[11]ビットが「1」であるため、ステートマシン41は、命令種別を第1拡張命令として判定する。
【0112】
つぎにステートマシン41は、オペコード[11]=「1」であるため、選択信号SELB5 をマルチプレクサ43へ出力する。これにより、マルチプレクサ43で拡張命令演算結果データEB4 が選択され、この拡張命令演算結果データEB4 は、整数レジスタ44に格納される。
【0113】
図10に示したステップSG1で、32bitの第2既存命令(0x8a8a8a8a)が発行されると、ステップSG2では、命令デコーダ50は、第2既存命令(0x8a8a8a8a)を12bitのオペコード(0x1ff(000111111111)に変換した後、これをパイプライン制御回路51へ通知する。
【0114】
ステップSG3では、パイプライン制御回路51は、命令として同値ビットからなる拡張命令CB5 (この場合、0x1ff(000111111111))および既存命令CA5 (この場合、0x1ff(000111111111))を拡張浮動小数点演算器52Bおよび既存浮動小数点加算器52Aへ通知する。
【0115】
ステップSG4では、パイプライン制御回路51は、拡張命令CB5 および既存命令CA5 に基づいて、既存浮動小数点加算器52Aおよび拡張浮動小数点演算器52Bに対してパイプライン制御を実行する。ステップSG5では、パイプライン制御回路51は、整数レジスタ44に格納すべき演算結果データの型を命令デコーダ50からの命令に基づいて判定する。
【0116】
ステップSG6では、パイプライン制御回路51は、演算結果データ(既存命令演算結果データEA5 、拡張命令演算結果データEB5 )の出力タイミングであるか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、パイプライン制御回路51は、ステップSG6の判断結果を「Yes」とする。ステップSG7では、パイプライン制御回路51は、ステップSG5の判定結果に基づいて、演算結果データの型が異なるか否かを判断し、この場合、判断結果を「No」とする。
【0117】
ステップSG8では、パイプライン制御回路51は、オペコード(0x1ff(000111111111))の[9]ビットが「0」であるため、選択信号SELA6 をマルチプレクサ53へ出力する。これにより、既存命令演算結果データEA5 が選択され、この既存命令演算結果データEA5 は、浮動小数点レジスタ54に格納される。なお、オペコードの[9]ビットが「1」である場合には、パイプライン制御回路51は、選択信号SELB6 をマルチプレクサ53へ出力する。この場合、拡張命令演算結果データEB5 が選択され、この拡張命令演算結果データEB5 は、浮動小数点レジスタ54に格納される。
【0118】
また、ステップSG1で32bitの第2拡張命令(0x5c5c5c5c)が発行されると、ステップSG2では、命令デコーダ50は、第2拡張命令(0x5c5c5c5c)を12bitのオペコード(0x3ff(001111111111)に変換した後、これをパイプライン制御回路51へ通知する。
【0119】
ステップSG3では、パイプライン制御回路51は、命令として同値ビットからなる拡張命令CB5 (この場合、0x3ff(001111111111))および既存命令CA5 (この場合、0x3ff(001111111111))を拡張浮動小数点演算器52Bおよび既存浮動小数点加算器52Aへ通知する。
【0120】
ステップSG4では、パイプライン制御回路51は、拡張命令CB5 および既存命令CA5 に基づいて、既存浮動小数点加算器52Aおよび拡張浮動小数点演算器52Bに対してパイプライン制御を実行する。ステップSG5では、パイプライン制御回路51は、整数レジスタ44に格納すべき演算データの型を命令デコーダ50からの命令に基づいて判定する。
【0121】
ステップSG6では、パイプライン制御回路51は、演算結果データ(既存命令演算結果データEA5 、拡張命令演算結果データEB5 )の出力タイミングであるか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、パイプライン制御回路51は、ステップSG6の判断結果を「Yes」とする。ステップSG7では、パイプライン制御回路51は、ステップSG5の判定結果に基づいて、演算結果データの型が異なるか否かを判断し、この場合、判断結果を「Yes」とする。
【0122】
ステップSG9では、パイプライン制御回路51は、浮動小数点レジスタ54への書き込みを抑止する。従って、浮動小数点レジスタ54には、いずれの演算結果データも保持されない。また、拡張命令演算結果データEB5 は、マルチプレクサ43に入力される。ここで、命令デコーダ40に対して第2拡張命令が発行されると、ステートマシン41は、図9に示したステップSF3の判断結果を「Yes」とする。
【0123】
ステップSF7では、ステートマシン41は、演算結果データの型が異なるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSF8では、ステートマシン41は、選択信号SELC5 をマルチプレクサ43へ出力する。これにより、マルチプレクサ43は、拡張命令演算結果データEB5 を選択し、この拡張命令演算結果データEB5 は、整数レジスタ44に格納される。
【0124】
(実施の形態5)
図11は、本発明にかかる実施の形態5の構成を示すブロック図である。この図には、カスタマイズの要請により、第1および第2既存命令に対して第1および第2拡張命令を追加した後の演算処理装置の主要部の構成が図示されている。ここで第1既存命令は、整数乗算/除算命令であり、第1拡張命令は、整数演算命令である。また、第2既存命令は、浮動小数点加算命令であり、第2拡張命令は、浮動小数点演算命令である。この第2拡張命令は、実施の形態2の場合と同様にして、異型の演算結果データ(この場合、拡張命令演算結果データEB7 )を整数レジスタ66に格納するという特別な命令である。
【0125】
これらの第1および第2既存命令ならびに第1および第2拡張命令は、実施の形態4の場合と同様にして、32bitの命令コードからなり16進数表現でつぎのようにそれぞれ表される。
第1既存命令:0x12121212
第1拡張命令:0x87878787
第2既存命令:0x4b4b4b4b
第2拡張命令:0x9a9a9a9a
【0126】
命令デコーダ60は、32bitの第1既存命令、第1拡張命令をデコードし、12bitのオペコード(既存命令CA6 、拡張命令CB6 )に変換する。これらの既存命令CA6 および拡張命令CB6 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA6:0x0aa(000010101010)
拡張命令CB6:0x8aa(100010101010)
【0127】
これらの既存命令CA6 および拡張命令CB6 で実際に命令として有効なビットは、[10:0]ビットである。このことから、既存命令CA6 および拡張命令CB6 は、それぞれの[10:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA6 および拡張命令CB6 のそれぞれの[11]ビットは、命令用のビットとしては用いられない空ビットである。
【0128】
ただし、実施の形態5では、上記[11]ビットは、既存命令CA6 と拡張命令CB6 とを判定するための命令種別用ビットである。すなわち、[11]ビットが「0」である場合には、命令種別が第1既存命令であり、[11]ビットが「1」である場合には、命令種別が第1拡張命令である。
【0129】
ステートマシン61は、既存整数乗算/除算器62Aおよび拡張整数演算器62Bへ既存命令CA6 および拡張命令CB6 を通知する制御や、整数レジスタ66への演算結果データの格納制御を行う。既存整数乗算/除算器62Aは、既存の演算器であり、既存命令CA6 に従って整数乗算/除算を行い、演算を終了した旨を表す演算終了通知信号DN4 をステートマシン61へ出力する。また、既存整数乗算/除算器62Aは、演算結果を既存命令演算結果データEA6 として出力する。
【0130】
拡張整数演算器62Bは、カスタマイズの要請により既存の機構に付加されたものであり、拡張命令CB6 に従って整数演算を行う。この拡張整数演算器62Bは、演算結果を拡張命令演算結果データEB6 として出力する。ここで、既存整数乗算/除算器62Aの演算終了サイクル数と拡張整数演算器62Bの演算終了サイクル数とは、同値とされている。ここで注意すべきは、拡張整数演算器62Bからは、演算終了通知信号DN4 に相当する信号が出力されない点である。また、既存命令演算結果データEA6 の型(この場合、整数)と拡張命令演算結果データEB6(この場合、整数)とは同型とされている。
【0131】
マルチプレクサ63は、ステートマシン61の制御により、既存命令演算結果データEA6 または拡張命令演算結果データEB6 のいずれか一方を選択する。具体的には、マルチプレクサ63は、ステートマシン61より選択信号SELA7 が入力された場合、既存命令演算結果データEA6 を選択する。また、ステートマシン61より選択信号SELB7 が入力された場合、マルチプレクサ63は、拡張命令演算結果データEB6 を選択する。
【0132】
FF回路64は、マルチプレクサ63により選択された既存命令演算結果データEA6 (または拡張命令演算結果データEB6 )を保持する。マルチプレクサ65は、拡張命令演算結果データEB7 、マルチプレクサ63から直接出力された演算結果データまたはFF回路64に格納された演算結果データのいずれか一つを選択し、これを整数レジスタ66へ出力する。
【0133】
具体的には、マルチプレクサ65は、ステートマシン61より選択信号SELC8 が入力された場合、拡張命令演算結果データEB7 を選択する。また、ステートマシン61より選択信号SELD8 が入力された場合、マルチプレクサ65は、マルチプレクサ63から直接出力された演算結果データを選択する。さらに、ステートマシン61より選択信号SELE8 が入力された場合、マルチプレクサ65は、FF回路33に格納された演算結果データを選択する。
【0134】
一方、 命令デコーダ70は、32bitの第2既存命令、第2拡張命令をデコードし、12bitのオペコード(既存命令CA7 、拡張命令CB7 )に変換する。これらの既存命令CA7 および拡張命令CB7 は、16進数表現(2進数表現)でつぎのようにそれぞれ表される。
既存命令CA7:0x0ff(000011111111)
拡張命令CB7:0x8ff(100011111111)
【0135】
これらの既存命令CA7 および拡張命令CB7 で実際に命令として有効なビットは、[10:0]ビットである。このことから、既存命令CA7 および拡張命令CB7 は、それぞれの[10:0]ビットが同値であるため、同一ビット構成の命令である。また、既存命令CA7 および拡張命令CB7 のそれぞれの[11]ビットは、命令用のビットとしては用いられない空ビットである。
【0136】
ただし、実施の形態5では、上記[11]ビットは、整数レジスタ66に格納すべき演算結果データの型(この場合、整数または浮動小数点)を判定するための演算結果データ型判定用ビットである。すなわち、[11]ビットが「0」である場合には、整数レジスタ66に格納すべき演算結果データの型が整数であることを意味している。一方、[11]ビットが「1」である場合には、整数レジスタ66に格納すべき演算結果データの型が浮動小数点であることを意味している。
【0137】
パイプライン制御回路71は、既存浮動小数点加算器72Aへ既存命令CA7 を通知する制御や、浮動小数点レジスタ74への演算結果データの格納制御を行う。また、パイプライン制御回路71は、既存浮動小数点加算器72Aおよび拡張浮動小数点演算器72Bで実行されるパイプライン制御を行うとともに、フォワード信号Fをステートマシン61へ出力する。このフォワード信号Fは、拡張命令演算結果データEB7 を整数レジスタ66へフォワードすべきことを指示する信号である。また、既存浮動小数点加算器72Aのパイプラインの段数と拡張浮動小数点演算器72Bのパイプラインの段数とは異なる。
【0138】
既存浮動小数点加算器72Aは、既存の演算器であり、既存命令CA7 に従って浮動小数点加算を行い、演算結果を既存命令演算結果データEA7 として出力する。拡張浮動小数点演算器72Bは、カスタマイズの要請に対応する拡張命令CB7 に従って浮動小数点演算を行い、演算結果を拡張命令演算結果データEB7 として出力する。
【0139】
マルチプレクサ73は、パイプライン制御回路71の制御により、既存命令演算結果データEA7 または拡張命令演算結果データEB7 のいずれか一方を選択し、これを浮動小数点レジスタ74へ出力する。具体的には、パイプライン制御回路71より選択信号SELA9 が入力された場合、マルチプレクサ73は、既存命令演算結果データEA7 を浮動小数点レジスタ74へ出力する。
【0140】
一方、パイプライン制御回路71より選択信号SELB9 が入力された場合、マルチプレクサ73は、拡張命令演算結果データEB7 を浮動小数点レジスタ74へ出力する。浮動小数点レジスタ74は、既存命令演算結果データEA7 または拡張命令演算結果データEB7 を一時的に格納する。
【0141】
つぎに、上述した実施の形態5の動作について図12〜図14に示したフローチャートを参照しつつ説明する。図12に示したステップSH1で、32bitの第1既存命令(0x12121212)が発行されると、ステップSH2では、命令デコーダ60は、第1既存命令(0x12121212)を12bitのオペコード(0x0aa(000010101010)に変換した後、これをステートマシン61へ通知する。
【0142】
ステップSH3では、ステートマシン61は、命令として同値ビットからなる拡張命令CB6 (この場合、0x0aa(000010101010))および既存命令CA6 (この場合、0x0aa(000010101010))を拡張整数演算器62Bおよび既存整数乗算/除算器62Aへ通知する。
【0143】
これにより、拡張整数演算器62Bでは、拡張命令CB6 に従って演算が実行されるとともに、既存整数乗算/除算器62Aでは、既存命令CA6 に従って演算が実行される。これらの処理に並行して、ステップSH4では、ステートマシン61は、既存整数乗算/除算器62Aより演算終了通知信号DN4 が入力されたか否かを判断し、この場合、判断結果を「No」とし同判断を繰り返す。
【0144】
そして、ステップSH4の判断結果が「Yes」になると、ステップSH5では、ステートマシン61は、命令デコーダ60により変換されたオペコード(0x0aa(000010101010))の[11]ビット(この場合、「0」)に基づいて、命令種別を判定する。この場合、上記[11]ビットが「0」であるため、ステートマシン61は、命令種別を第1既存命令として判定する。
【0145】
つぎにステートマシン61は、オペコード[11]=「0」であるため、選択信号SELA7 をマルチプレクサ63へ出力する。これにより、マルチプレクサ63で既存命令演算結果データEA6 が選択され、この既存命令演算結果データEA6 は、マルチプレクサ65へ出力されるとともに、FF回路64に保持される。
【0146】
一方、図13に示したステップSI1では、ステートマシン61は、パイプライン制御回路71よりフォワード信号Fが入力されたか否かを判断し、この場合、判断結果を「No」とする。ステップSI5では、ステートマシン61は、選択信号SELD8 をマルチプレクサ65へ出力する。これにより、マルチプレクサ65では、マルチプレクサ63から直接出力された既存命令演算結果データEA6 が選択される。この既存命令演算結果データEA6 は、整数レジスタ66に格納される。
【0147】
一方、32bitの第1拡張命令(0x87878787)が発行されると、ステップSH2では、命令デコーダ60は、第1拡張命令(0x87878787)を12bitのオペコード(0x8aa(100010101010)に変換した後、これをステートマシン61へ通知する。
【0148】
ステップSH3では、ステートマシン61は、命令として同値ビットからなる拡張命令CB6 (この場合、0x8aa(100010101010))および既存命令CA6 (この場合、0x8aa(100010101010))を拡張整数演算器62Bおよび既存整数乗算/除算器62Aへ通知する。
【0149】
これにより、拡張整数演算器62Bでは、拡張命令CB6 に従って演算が実行されるとともに、既存整数乗算/除算器62Aでは、既存命令CA6 に従って演算が実行される。これらの処理に並行して、ステップSH4では、ステートマシン61は、既存整数乗算/除算器62Aより演算終了通知信号DN4 が入力されたか否かを判断し、この場合、判断結果を「No」とし同判断を繰り返す。
【0150】
そして、ステップSH4の判断結果が「Yes」になると、ステップSH5では、ステートマシン61は、命令デコーダ60により変換されたオペコード(0x8aa(100010101010))の[11]ビット(この場合、「1」)に基づいて、命令種別を判定する。この場合、上記[11]ビットが「1」であるため、ステートマシン61は、命令種別を第1拡張命令として判定する。
【0151】
つぎにステートマシン61は、オペコード[11]=「1」であるため、選択信号SELB7 をマルチプレクサ63へ出力する。これにより、マルチプレクサ63で拡張命令演算結果データEB6 が選択される。また、図13に示したステップSI5では、ステートマシン61は、選択信号SELD8 をマルチプレクサ65へ出力する。これにより、マルチプレクサ65では、拡張命令演算結果データEB6 が選択され、この拡張命令演算結果データEB6 は、マルチプレクサ65を介して整数レジスタ66に保持される。
【0152】
図14に示したステップSJ1で、32bitの第2既存命令(0x4b4b4b4b)が発行されると、ステップSJ2では、 命令デコーダ70は、第2既存命令(0x4b4b4b4b)を12bitのオペコード(0x0ff(000011111111)に変換した後、これをパイプライン制御回路71へ通知する。
【0153】
ステップSJ3では、パイプライン制御回路71は、命令として同値ビットからなる拡張命令CB7 (この場合、0x0ff(000011111111))および既存命令CA7 (この場合、0x0ff(000011111111))を拡張浮動小数点演算器72Bおよび既存浮動小数点加算器72Aへ通知する。
【0154】
ステップSJ4では、パイプライン制御回路71は、拡張命令CB7 および既存命令CA7 に基づいて、拡張浮動小数点演算器72Bおよび既存浮動小数点加算器72Aに対してパイプライン制御を実行する。ステップSJ5では、パイプライン制御回路71は、整数レジスタ66に格納すべき演算データの型を命令デコーダ70からの命令に基づいて判定する。
【0155】
ステップSJ6では、パイプライン制御回路71は、演算結果データ(既存命令演算結果データEA7 、拡張命令演算結果データEB7 )の出力タイミングであるか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、パイプライン制御回路71は、ステップSJ6の判断結果を「Yes」とする。ステップSJ7では、パイプライン制御回路71は、ステップSJ5の判定結果に基づいて、演算結果データの型が異なるか否かを判断し、この場合、判断結果を「No」とする。
【0156】
ステップSJ8では、パイプライン制御回路71は、オペコード(0x0ff(000011111111))の[11]ビットが「0」であるため、選択信号SELA9 をマルチプレクサ73へ出力する。これにより、既存命令演算結果データEA7 が選択され、この既存命令演算結果データEA7 は、浮動小数点レジスタ74に格納される。なお、オペコードの[11]ビットが「1」である場合には、パイプライン制御回路71は、選択信号SELB9 をマルチプレクサ73へ出力する。この場合、拡張命令演算結果データEB7 が選択され、この拡張命令演算結果データEB7 は、浮動小数点レジスタ74に格納される。
【0157】
また、32bitの第2拡張命令(0x9a9a9a9a)が発行されると、ステップSJ2では、 命令デコーダ70は、第2拡張命令(0x9a9a9a9a)を12bitのオペコード(0x8ff(100011111111)に変換した後、これをパイプライン制御回路71へ通知する。
【0158】
ステップSJ3では、パイプライン制御回路71は、命令として同値ビットからなる拡張命令CB7 (この場合、0x8ff(100011111111))および既存命令CA7 (この場合、0x8ff(100011111111))を拡張浮動小数点演算器72Bおよび既存浮動小数点加算器72Aへ通知する。
【0159】
ステップSJ4では、パイプライン制御回路71は、拡張命令CB7 および既存命令CA7 に基づいて、拡張浮動小数点演算器72Bおよび既存浮動小数点加算器72Aに対してパイプライン制御を実行する。ステップSJ5では、パイプライン制御回路71は、整数レジスタ66に格納すべき演算データの型を 命令デコーダ70からの命令に基づいて判定する。
【0160】
ステップSJ6では、パイプライン制御回路71は、演算結果データ(既存命令演算結果データEA7 、拡張命令演算結果データEB7 )の出力タイミングであるか否かを判断し、この場合、判断結果を「No」として同判断を繰り返す。そして、演算が終了すると、パイプライン制御回路71は、ステップSJ6の判断結果を「Yes」とする。ステップSJ7では、パイプライン制御回路71は、ステップSJ5の判定結果に基づいて、演算結果データの型が異なるか否かを判断し、この場合、判断結果を「Yes」とする。
【0161】
ステップSJ9では、パイプライン制御回路71は、フォワード信号Fをステートマシン61へ出力する。ステップSJ10では、パイプライン制御回路71は、浮動小数点レジスタ74への書き込みを抑止する。従って、浮動小数点レジスタ74には、いずれの演算結果データも保持されない。また、拡張命令演算結果データEB7 は、マルチプレクサ65に入力される。
【0162】
また、フォワード信号Fがステートマシン61に入力されると、ステートマシン61は、図13に示したステップSI1の判断結果を「Yes」とする。ステップSI2では、ステートマシン61は、選択信号SELC8 をマルチプレクサ65へ出力する。これにより、マルチプレクサ65では、拡張命令演算結果データEB7 が選択され、この拡張命令演算結果データEB7 は、整数レジスタ66に格納される。
【0163】
ステップSI3では、ステートマシン61は、所定時間待機する。演算が終了すると、既存命令演算結果データEA6 または拡張命令演算結果データEB6 は、マルチプレクサ65へ直接出力されるとともに、FF回路64に格納される。そして、所定時間が経過すると、ステップSI4では、ステートマシン61は、選択信号SELE8 をマルチプレクサ65へ出力する。
【0164】
これにより、マルチプレクサ65では、FF回路64に格納された既存命令演算結果データEA6 (または拡張命令演算結果データEB6 )が選択される。この既存命令演算結果データEA6 (または拡張命令演算結果データEB6 )は、整数レジスタ66に格納される。このように、ステートマシン61は、整数レジスタ66に対する拡張命令演算結果データEB7 の格納タイミングと既存命令演算結果データEA6 (または拡張命令演算結果データEB6)の格納タイミングとの調停を行っているのである。
【0165】
(付記1) 既存命令、拡張命令を、少なくとも前記既存命令と前記拡張命令とを判定するための命令種別判定情報を含む同一のオペコードにデコードする命令デコード手段と、
前記オペコードに基づいて既存演算を実行し、演算終了通知信号を出力する既存演算手段と、
前記既存演算手段と同期して動作し、前記オペコードに基づいて拡張演算を実行する拡張演算手段と、
前記命令種別判定情報に基づいて命令種別を判定する命令種別判定手段と、
前記命令種別が前記拡張命令と判定されかつ前記演算終了通知信号が入力された場合に、前記拡張演算手段の演算結果データを選択する選択手段と、
を備えることを特徴とする演算処理装置。
(付記2) 前記選択手段は、前記命令種別が前記既存命令と判定されかつ前記演算終了通知信号が入力された場合に、前記既存演算手段の演算結果データを選択することを特徴とする付記1に記載の演算処理装置。
(付記3) 前記選択手段により選択された演算結果データを保持する保持手段を備えることを特徴とする付記1または2に記載の演算処理装置。
(付記4) 既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含むオペコードにデコードする命令デコード手段と、
前記オペコードに基づいて第1の型に関する既存演算を実行し、演算終了通知信号を出力する既存演算手段と、
前記既存演算手段に対応して設けられた第1保持手段と、
前記既存演算手段と同期して動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段と、
前記拡張演算手段に対応して設けられた第2保持手段と、
前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段と、
を備えることを特徴とする演算処理装置。
(付記5) 既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含む同一のオペコードにデコードする命令デコード手段と、
前記オペコードに基づいて第1の型に関する既存演算を実行する既存演算手段と、
前記既存演算手段に対応して設けられた第1保持手段と、
前記既存演算手段と非同期で動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段と、
前記拡張演算手段の演算が終了した旨を表す演算終了通知信号を出力する出力手段と、
前記拡張演算手段に対応して設けられた第2保持手段と、
前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段と、
を備えることを特徴とする演算処理装置。
(付記6) 前記演算終了通知信号が入力された場合、前記第1保持手段に対する前記既存演算手段の演算結果データの出力タイミングと、前記拡張演算手段の演算結果データのフォワードタイミングとを調停するタイミング調停手段を備えることを特徴とする付記5に記載の演算処理装置。
【0166】
【発明の効果】
以上説明したように、本発明によれば、オペコードに命令種別判定情報を含ませ、拡張命令が発行された場合であっても、既存演算手段からの演算終了通知信号を利用して、拡張演算手段の演算終了を認識し、この拡張演算手段の演算結果データを選択するようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができるという効果を奏する。
【0167】
また、本発明によれば、命令種別が既存命令と判定された場合に既存演算手段の演算結果データを選択するようにしたので、既存演算手段に変更を加えることなく、拡張命令を追加することができるという効果を奏する。
【0168】
また、本発明によれば、オペコードに含まれる型判定情報に基づいて、拡張演算手段の演算結果データを第1保持手段にフォワードさせるようにしたので、既存の機構に対して最小限の設計変更で拡張命令を追加することができるという効果を奏する。
【0169】
また、本発明によれば、拡張演算手段に関する演算終了通知信号を出力し、オペコードに含まれる型判定情報に基づいて、拡張演算手段の演算結果データを第1保持手段にフォワードさせるようにしたので、拡張演算手段と既存演算手段とが非同期で動作する場合であっても、既存の機構に対して最小限の設計変更で拡張命令を追加することができるという効果を奏する。
【0170】
また、本発明によれば、タイミング調停手段により、第1保守手段に対する既存演算手段の演算結果データの出力タイミングと、拡張演算手段の演算結果データのフォワードタイミングとを調停するようにしたので、同一タイミングに発生するバッティングを防止することができるという効果を奏する。
【0171】
また、付記3にかかる発明によれば、選択手段を設けて、命令種別の判定結果に応じて保持手段に保持させる演算結果データを選択するようにしたので、拡張命令用に保持手段を追加する必要がなく、コストを低減させることができるという効果を奏する。
【図面の簡単な説明】
【図1】本発明にかかる実施の形態1の構成を示すブロック図である。
【図2】同実施の形態1の動作を説明するフローチャートである。
【図3】本発明にかかる実施の形態2の構成を示すブロック図である。
【図4】同実施の形態2の動作を説明するフローチャートである。
【図5】本発明にかかる実施の形態3の構成を示すブロック図である。
【図6】同実施の形態3の動作を説明するフローチャートである。
【図7】図5に示した制御回路31Aの動作を説明するフローチャートである。
【図8】本発明にかかる実施の形態4の構成を示すブロック図である。
【図9】図8に示したステートマシン41側の動作を説明するフローチャートである。
【図10】図8に示したパイプライン制御回路51側の動作を説明するフローチャートである。
【図11】本発明にかかる実施の形態5の構成を示すブロック図である。
【図12】図11に示したステートマシン61側の動作を説明するフローチャートである。
【図13】図11に示したステートマシン61の動作を説明するフローチャートである。
【図14】図11に示したパイプライン制御回路71側の動作を説明するフローチャートである。
【符号の説明】
10 命令デコーダ
11 制御回路
12A 既存演算器
12B 拡張演算器
13 マルチプレクサ
14 レジスタ
20 命令デコーダ
21A 制御回路
21B 制御回路
22A 既存演算器
22B 拡張演算器
23 マルチプレクサ
24A レジスタ
24B レジスタ
30A 命令デコーダ
30B 命令デコーダ
31A 制御回路
31B 制御回路
32A 既存演算器
32B 拡張演算器
33 FF回路
34 マルチプレクサ
35 マルチプレクサ
36A レジスタ
36B レジスタ

Claims (3)

  1. 既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含むオペコードにデコードする命令デコード手段と、
    前記オペコードに基づいて第1の型に関する既存演算を実行し、演算終了通知信号を出力する既存演算手段と、
    前記既存演算手段に対応して設けられた第1保持手段と、
    前記既存演算手段と同期して動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段と、
    前記拡張演算手段に対応して設けられた第2保持手段と、
    前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段と、
    を備えることを特徴とする演算処理装置。
  2. 既存命令、拡張命令を、少なくともフォワード先に関する演算結果データの型を判定するための型判定情報を含む同一のオペコードにデコードする命令デコード手段と、
    前記オペコードに基づいて第1の型に関する既存演算を実行する既存演算手段と、
    前記既存演算手段に対応して設けられた第1保持手段と、
    前記既存演算手段と非同期で動作し、前記オペコードに基づいて第2の型に関する拡張演算を実行する拡張演算手段と、
    前記拡張演算手段の演算が終了した旨を表す演算終了通知信号を出力する出力手段と、
    前記拡張演算手段に対応して設けられた第2保持手段と、
    前記型判定情報に基づいて、前記拡張演算手段の演算結果データの型がフォワード先の前記第1保持手段のデータの型と異なりかつ前記演算終了通知信号が入力された場合、前記拡張演算手段の演算結果データを前記第1保持手段へフォワードするフォワード手段と、
    を備えることを特徴とする演算処理装置。
  3. 前記演算終了通知信号が入力された場合、前記第1保持手段に対する前記既存演算手段の演算結果データの出力タイミングと、前記拡張演算手段の演算結果データのフォワードタイミングとを調停するタイミング調停手段を備えることを特徴とする請求項2に記載の演算処理装置。
JP2000111340A 2000-04-12 2000-04-12 演算処理装置 Expired - Fee Related JP3957948B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000111340A JP3957948B2 (ja) 2000-04-12 2000-04-12 演算処理装置
US09/693,920 US6763449B1 (en) 2000-04-12 2000-10-23 Operation-processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000111340A JP3957948B2 (ja) 2000-04-12 2000-04-12 演算処理装置

Publications (2)

Publication Number Publication Date
JP2001296999A JP2001296999A (ja) 2001-10-26
JP3957948B2 true JP3957948B2 (ja) 2007-08-15

Family

ID=18623687

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000111340A Expired - Fee Related JP3957948B2 (ja) 2000-04-12 2000-04-12 演算処理装置

Country Status (2)

Country Link
US (1) US6763449B1 (ja)
JP (1) JP3957948B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757224B2 (en) * 2006-02-02 2010-07-13 Microsoft Corporation Software support for dynamically extensible processors
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
JP5414057B2 (ja) * 2009-05-22 2014-02-12 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
JP5471082B2 (ja) 2009-06-30 2014-04-16 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5038318A (en) * 1987-12-17 1991-08-06 Square D Company Device for communicating real time data between a programmable logic controller and a program operating in a central controller
US5848289A (en) 1992-11-27 1998-12-08 Motorola, Inc. Extensible central processing unit
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
JP2987308B2 (ja) 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5889947A (en) * 1996-12-16 1999-03-30 International Business Machines Corporation Apparatus and method for executing instructions that select a storage location for output values in response to an operation count

Also Published As

Publication number Publication date
US6763449B1 (en) 2004-07-13
JP2001296999A (ja) 2001-10-26

Similar Documents

Publication Publication Date Title
EP0368332B1 (en) Pipeline data processor
US9672033B2 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US7421566B2 (en) Implementing instruction set architectures with non-contiguous register file specifiers
JP5471082B2 (ja) 演算処理装置および演算処理装置の制御方法
KR0175115B1 (ko) 프로세서 시스템 및 디버그모드 실현방법
JP3811427B2 (ja) ループバッファを利用したループ命令の処理方法を備えるデータ処理装置。
US20120265967A1 (en) Implementing instruction set architectures with non-contiguous register file specifiers
JP5126226B2 (ja) 演算ユニット、プロセッサ及びプロセッサアーキテクチャ
KR100254007B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타프로세서
JP2013522749A (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
JP3957948B2 (ja) 演算処理装置
KR100272622B1 (ko) 데이타 처리장치
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
TW586072B (en) Data processor and method of operation
CN100356318C (zh) 用于指令对准的方法和设备
JP2556182B2 (ja) デ−タ処理装置
JP2006072961A (ja) 演算処理装置のメモリ回路
KR100732426B1 (ko) 고속 컨텍스트 전환을 갖는 컴퓨터
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2000003279A (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP2003248670A (ja) プロセッサ
JPH01271842A (ja) 情報処理装置
JP5657760B2 (ja) データプロセッサ
WO2008020271A1 (en) Method for performing plurality of bit operations and a device having plurality of bit operations capabilities
JPH05241825A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061120

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070509

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees