JPWO2012144374A1 - データプロセッサ - Google Patents

データプロセッサ Download PDF

Info

Publication number
JPWO2012144374A1
JPWO2012144374A1 JP2013510955A JP2013510955A JPWO2012144374A1 JP WO2012144374 A1 JPWO2012144374 A1 JP WO2012144374A1 JP 2013510955 A JP2013510955 A JP 2013510955A JP 2013510955 A JP2013510955 A JP 2013510955A JP WO2012144374 A1 JPWO2012144374 A1 JP WO2012144374A1
Authority
JP
Japan
Prior art keywords
instruction
code
pattern
instruction code
branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013510955A
Other languages
English (en)
Other versions
JP5658358B2 (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2013510955A priority Critical patent/JP5658358B2/ja
Publication of JPWO2012144374A1 publication Critical patent/JPWO2012144374A1/ja
Application granted granted Critical
Publication of JP5658358B2 publication Critical patent/JP5658358B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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)
  • Executing Machine-Instructions (AREA)

Abstract

16ビット固定長命令セットなどの既存の命令セットとの互換性を維持して、命令コード空間が拡張されたデータプロセッサを提供する。特定の複数命令の組合せを禁止しているデータプロセッサにおいて、その禁止組合せパターンを別の命令として追加定義した命令セットを採用する。別の命令として追加定義した前記禁止組合せパターンの命令に対して、例えば、追加定義前の命令セット用の命令ディスパッチ機構をそのまま使えるように定義するために、追加定義前の命令セットがプレフィックスコードを含む命令セットの場合に、前記禁止組合せパターンによって追加定義する命令を、その命令の後半コードのみで定義される命令と同じ命令タイプに限定する。

Description

本発明は、命令コードの基本長に対して多倍長の新たな命令コードを命令セットに追加するための技術に関し、例えば、16ビット固定長命令セットまたは16/32ビット長混在命令セットのプロセッサのうち、ディレイスロット命令を持ち、スロット不当例外の発生するプロセッサに適用して有効な技術に関するものである。
高効率が求められる機器組み込み用途のデータプロセッサ(組込プロセッサ)では、高コード効率の実現可能な16ビット固定長命令セットのRISC(Reduced Instruction Set Computer)型の組込プロセッサが普及している。高コード効率は、メモリの大容量化が進んだ現在においても、オンチップのキャッシュ、RAMやROMの有効活用には欠かせないものである。しかしながら、16ビット固定長命令セットでは、プログラムサイズを小さく出来る反面、命令数が増加する。特に、オペランド指定の制約から、レジスタ間転送、即値転送命令の命令数が増加する。命令数の増加は、性能低下や電力増加の原因となる。
こうした問題は16ビット固定長命令セットの命令コード空間が216=64kパターンと、32ビット固定長命令セットの命令コード空間232=4Gパターンに比べて非常に小さいことに起因する。このため、例えば、16ビット固定長命令と32ビット固定長命令を混在させて命令コード空間を広げたデータプロセッサが提供されている。一方、特許文献1および特許文献2のプロセッサでは、16ビット固定長命令セットに16ビットプレフィックスを追加することにより命令コード空間を広げている。特許文献3では更に16ビットプレフィックスを含む命令セットにおけるスーパースカラ実行方式の実現方法を開示している。
特開2000−284962号公報 特開2004−030015号公報 特開2010−66893号公報
前述のように、16ビット固定長命令コードの命令コード空間の小ささを補うための命令コード空間拡張方式として、16/32ビット長混在命令セット方式と、16ビットプレフィックス追加方式とがある。しかしながら、既存の16ビット固定長命令セットとの互換性を維持したまま命令を追加するには十分な空き命令コード空間を必要とするが、通例、そのような余裕は少ない。
従来16ビット固定長命令セットと32ビット固定長命令セットという2つの命令セットがモード切替えによって使い分けられていたてものを、16/32ビット長混在命令セットに統合した命令セットとするために、例えば16ビット長命令セットの空きパターンのうち、先頭5ビットが11101, 11110, および11111の場合を32ビット長命令に割り当てることによって、3x2(32−5)=384M(メガ)パターンを確保することができるようになる。しかしながら、32ビットコード空間で定義されていた従来の32ビット固定長命令セットを、バイナリ互換を維持したまま、上記空間に割り当てることはできず、更に、バイナリ互換を維持しなくてもよいとしても、全ての命令を上記空間に収めることもできない。
また、16/32ビット長混在命令セットとして、16ビットコード空間のパターンのうち、8ビットオペランドの4コードを32ビット長命令に割り当てることによって互換性を維持しようとするものがある。この混在命令セットにおいて、その4コードの内の2コードは、32ビット化によって加えた16ビットを全てオペランドフィールドにして、24ビットオペランドフィールドの2命令に割り当て、残りの2コードは、加えた16ビットのうち4ビットをコードフィールドに、12ビットをオペランドフィールドにして、20ビットオペランドフィールドの32命令に割り当てることにより、拡張可能なコード空間は、2x224+32x220=226=64Mパターンとされる。しかしながら命令の拡張規模は小さくなる。
特許文献1,2に記載のプレフィックスを用いる場合も同様にプレフィックスコードに割り当て可能なパターンが限定されると、上記同様に命令の拡張規模を大きくすることは難しい。
また、拡張された命令コード空間で定義された命令に対しても高速な命令発行を保証できなければ逆に性能低下を引き起こすことになる。スーパースカラによる命令実行に対しては命令コードタイプを高速かつ並列に判定して、各命令パイプラインに効率的に命令を発行できるようにすることの重要性が本発明者によって見出された。
この点に関し、16/32ビット長混在命令セット方式において、32ビット長命令の後半16ビットを拡張部と呼ぶことにすると、命令コードか拡張部かどうかでコードの解釈が変わる。そして、拡張部かどうかは先行する命令コードに依存するため、逐次デコードが必要になり、このままでは命令コードタイプを高速かつ並列に判定することは困難である。
一方、プレフィックスコードを用いた拡張方式では、16ビットコード単位の並列デコードが可能であり、命令コードタイプを高速かつ並列に判定できる。例えば、特許文献3ではプレフィックス方式における効率的なスーパースカラ命令発行方式を開示している。しかしながら、特許文献3などに代表されるプレフィックス方式であっても、割り当て可能なプレフィックスコードそれ自体が少なければ、更なる優位性を獲得することはできない。
本発明の目的は、16ビット固定長命令セットなどの既存の命令セットとの互換性を維持して、命令コード空間が拡張されたデータプロセッサを提供することにある。
本発明の別の目的は、拡張された命令コード空間の命令に対しても複数の命令パイプラインに対する命令供給を効率的に行うことができるデータプロセッサを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、特定の複数命令の組合せを禁止しているデータプロセッサにおいて、その禁止組合せパターンを別の命令として追加定義した命令セットを採用する。
別の命令として追加定義した前記禁止組合せパターンの命令に対して、例えば、追加定義前の命令セット用の命令ディスパッチ機構をそのまま使えるように、定義する。例えば、追加定義前の命令セットがプレフィックスコードを含む命令セットの場合に、前記禁止組合せパターンによって追加定義する命令を、その命令の後半コードのみで定義される命令と同じ命令タイプに限定する。
また、追加定義前の命令セットがプレフィックスコードを含む命令セットであるとき、前記禁止組合せパターンを分岐命令専用とし、その後半パターンとして分岐命令を使用する。
また、追加定義前の命令セットがプレフィックスコードを含む命令セットであるとき、前記禁止組合せパターンの後半に、前半に使用しないパターンのみ使用し、隣接コード間で命令コードタイプ情報を交換することにより、前記禁止組合せパターンの命令タイプを確定させる。
また、追加定義前の命令セットが基本長と2倍長の混在命令コードである場合に、前記禁止組合せパターンを2倍長命令コードとして処理するようにする。
一方、禁止されていないが意味のない2命令の組み合わせを禁止して、その禁止組合せパターンを別の命令として追加定義する命令セットを採用してデータプロセッサを構成することも可能である。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、16ビット固定長命令セットなどの既存の命令セットとの互換性を維持して、命令コード空間が拡張されたデータプロセッサを実現することができる。また、拡張された命令コード空間の命令に対しても複数の命令パイプラインに対する命令供給を効率的に行うことができる。
図1は「スロット不当例外パターン」を構成する「遅延スロット付分岐命令」を例示する説明図である。 図2は図1の命令の他に「遅延スロットに置けない命令」として利用される命令を更に例示する説明図である。 図1と図2の命令の組み合わせによる「スロット不当例外パターン」をオペランドフィールドのビット数に応じて分類して例示した説明図である。 図4は命令の種類TYPEに対する命令コードの上位4ビットCODEの割当を分類した説明図である。 図5には本実施の形態に係るデータプロセッサを例示するブロック図である。 図6はプロセッサコアの構成を例示するブロック図である。 図7はロセッサコアのパイプライン構成を例示する説明図である。 図8は本実施の形態に係るデータプロセッサのグローバル命令キューGIQの構成を例示するブロック図である。 図9は図8のグローバル命令キューGIQの分岐命令探索ディスパッチ回路BR−ISDの構成を例示するブロック図である。 図10は実施の形態3におけるプリデコーダの構成を提示するブロック図である。 図11は同一レジスタへの連続ロードのような無意味な2命令の組み合わせによってコード空間を拡張する実施の形態5で着目する命令として挙げたオペランドを12ビット持つ命令で実行結果をレジスタに格納する命令を例示する説明図である。 図12は実施の形態1においてグローバル命令キューGIQの作用を説明するためのフローチャートである。 図13は実施の形態2においてグローバル命令キューGIQの作用を説明するための図12に対応されるフローチャートである。 図14Aは分岐命令バッファを1段有する分岐制御部BRCのデコーダ構成を例示するブロック図である。 図14Bは分岐命令バッファを複数段有する分岐制御部BRCのデコーダ構成を例示するブロック図である。 図15Aは実施の形態4において最大32ビットの命令コードを供給し、16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行を可能とするデコーダの構成を例示するブロック図である。 図15Bは実施の形態4において最大48ビットの命令コードを供給し、先行命令が16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行を可能とするデコーダの構成を例示するブロック図である。 図16はスロット不当例外パターンを全て新規32ビット命令定義に使用している実施の形態4を、実施の形態3の方式に近い形で実装した場合に、実施の形態3における図10の命令プリデコーダを実施の形態に対応させたときの構成を例示するブロック図である。 図17は実施の形態5を実施の形態3の方式に近い形で実装した場合に実施の形態3では図10のとおりであった命令プリデコーダを実施の形態5向けに構成した例を示すブロック図である。 図18は実施の形態5を実施の形態4の図16の方式に近い形で実装した場合に実施の形態4では図16のとおりであった命令プリデコーダを実施の形態5向けに構成した例を示すブロック図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<特定の複数の命令コードの禁止組合せパターンを別命令として追加定義>
本発明の代表的な実施の形態に係るデータプロセッサ(MPU)は、複数の命令パイプライン(EXPL,LSPL,BRPL)と、並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キュー(GIQ)と、前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路(EX−ISD,LS−ISD,BR−ISD)とを有する。このデータプロセッサは、個々の命令コードの本来の処理が禁止されることになる特定の複数の命令コードの組合せによる禁止組合せパターンを別の命令として追加定義した命令セットを有する。
16ビット固定長命令セットに含まれるような遅延スロットは、分岐命令の後続命令を入れるスロットであり、このスロットにある命令(遅延スロット命令)は、分岐先の命令の前に実行される。通常このスロットは1命令分である。また、分岐命令と遅延スロット命令の間で例外や割込が起きると、遅延スロット命令から処理を再開することになり、分岐命令が正しく処理されないため、両者を不可分に実行する方式が一般的である。更に、分岐命令がPC(プログラムカウンタ)を変更するため、遅延スロット命令はPCを参照したり変更したりする命令を禁止することが一般的である。この結果、分岐命令と遅延スロット命令のペアは32ビット長命令のように扱われ、禁止された組み合わせパターンは、スロット不当例外として扱われ活用されていない。この実施の形態では、「遅延スロット付分岐命令と遅延スロットに置けない命令のペアによる32ピットパターン」のような禁止パターンを活用して、新たな命令を命令セットに追加定義する。これにより、16ビット固定長命令セットなどの既存の命令セットとの互換性を維持して、命令コード空間が拡張されたデータプロセッサを実現することができる。
ここで、本明細書において禁止された組み合わせパターンとは次のような意義を有するものとしても把握することができる。即ち、第1の処理を実行する第1命令コードと第2の処理を実行する第2命令コードとを組み合わせることによって第1処理及び/又は第2処理に例えばエラー又は誤動作を生ずる虞のある当該第1命令コードと第2命令コードとの組み合わせパターンを意味する。従って、禁止された組み合わせパターンか否かは命令セットの組み合わせに対して組み合わせ禁止が明示されていることを要せず、例えば事実上エラー又は誤動作を生ずる虞がある組み合わせパターンであれば良い。
〔2〕<追加定義の命令コードタイプは禁止組み合わせパターンの後の命令コードタイプに一致(実施の形態1)>
項1のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は、当該組み合わせパターンの後半の命令コードパターンのみで定義される命令コードと同じ命令タイプに限定される。
これにより、前記禁止組み合わせパターンの前半を後半のプレフィックスとして扱うことが可能になる。
〔3〕<前後異なる命令コードによる禁止組み合わせパターン>
項2のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンにおける前半及び後半のそれぞれの命令コードパターンは異なる命令コードである。
前記禁止組み合わせパターンとしての「スロット不当例外パターン」において、遅延スロット付分岐命令が遅延スロットに置けない命令でもあるため、遅延スロット付分岐命令はパターンの前半にも後半にもなり得る。そうすると、遅延スロット付分岐命令が連続すると奇数番目が前半、偶数番目が後半なので、その区別には逐次デコードが必要であり、複数の命令パイプラインへの命令割り振り処理の効率が低下する虞がある。上記手段によれば、遅延スロットに置けない命令には遅延スロット付分岐命令が除外されることになり、複数の命令パイプラインへの命令割り振り処理の効率化に資することができる。
〔4〕<ディスパッチ回路によるプレフィックス候補の振り分け>
項3のデータプロセッサにおいて、前記ディスパッチ回路は、探索対象とする複数の命令コードの探索単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードを有効として出力すると共にその直前の命令コードをプレフィックスコード候補として出力し、前記探索単位の先頭で目的とする命令コードタイプの命令コードを検出したときは当該先頭の命令コードを有効として出力し、前記探索単位の後端まで目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力する。
上記より、ディスパッチ回路は、入力した命令がサーチスコープ内にあれば、その命令を対応する命令パイプラインに発行すると共に、その命令の直前のコードをプレフィックスとみなして、その命令に付加して当該命令パイプライン(実行パイプライン)にディスパッチし、各実行パイプラインのデコーダが命令に付加されたコードがプレフィックスかどうかをチェックして、プレフィックスならばそれも使用して命令デコードすることにより、プレフィックス付き命令に対してもスーパースカラ発行することができる。例えば、遅延スロット付分岐命令がある場合でも、遅延スロット命令をその命令用の命令パイプラインにディスパッチし、遅延スロット付分岐命令を当該命令パイプラインにディスパッチすればよい。これにより、拡張された命令コード空間の命令に対しても複数の命令パイプラインに対する命令供給を効率的に行うことができる。
〔5〕<命令パイプラインによるプレフィックスコード候補の扱い>
項4のデータプロセッサにおいて、前記命令パイプラインは、プレフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するときは当該特定の複数の命令コードの組み合わせを、追加定義された命令として処理し、プレフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するものでないときないときはこれを無視する。
上記より、命令パイプラインはディスパッチされた命令コードの解読に際して特別に複雑な処理を行わずに、禁止組み合わせパターンの新たな命令に対する実行処理を行うことができる。
〔6〕<後の探索による命令コードに対する前の探索によるプレフィックスコード候補の扱い>
項5のデータプロセッサにおいて、前記命令パイプラインは、プレフィックスコード候補として供給された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された命令コードに対して前記特定の複数の命令コードの組み合わせを構成するためのプレフィックスコード候補として用いる。
単独で供給されたプレフィックスコードに対して容易に対処することができる。
〔7〕<追加定義の命令コードタイプ及びを禁止組み合わせパターンの命令コードを全てが分岐命令(実施の形態2)>
項2のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は分岐命令に専用化され、当該禁止組み合わせパターンの後半の命令コードパターンには分岐命令の命令コードが使用される。
項2のデータプロセッサは、第1に、命令コードが「スロット不当例外パターン」の場合、パターン前半の遅延スロット付分岐命令が分岐命令として分岐パイプラインにディスパッチされたとき、パターン後半が付いて来ないため、実行できない場合があり、無駄なディスパッチが発生することになる。第2に、パターン後半が命令と見なされてディスパッチされ、パターン前半がそのプレフィックス候補として付加されるため、パターン後半と「スロット不当例外パターン」が同じ実行パイプラインで実行される命令のコードでなければならないという制約を受ける。項7の技術的手段はその解消に寄与する。
〔8〕<遅延スロット付き分岐命令と遅延スロットに置けない他の分岐命令>
項7のデータプロセッサにおいて、前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける前半の命令コードパターンは遅延スロット付き分岐命令であり、後半の命令コードパターンは遅延スロットに置けない遅延スロット付き分岐命令以外の分岐命令である。
遅延スロット付き分岐命令とその遅延スロットに配置される分岐命令とを用いることによって前記禁止組み合わせパターンに対するパターン種を容易に制限する事ができる。
〔9〕<ディスパッチ回路によるポストフィックス候補の振り分け>
項7のデータプロセッサにおいて、前記ディスパッチ回路は、探索対象とする複数の命令コードの探索単位の中の最後以外で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードを有効として出力すると共にその直後の命令コードをポストフィックスコード候補として出力し、前記探索単位の中の最後で目的とする命令コードタイプの命令コードを検出したときは当該最後の命令コードを有効として出力する。
項7では「スロット不当例外パターン」を分岐命令専用とし、その後半パターンとして分岐命令を使用し、プレフィックスは分岐命令には使用しないものとしたが、このとき項8では更に、分岐命令をディスパッチする際はその命令の直前のコードではなく直後のコードを付加し、分岐パイプラインのデコーダが、命令が「スロット不当例外パターン」であれば付加したコードも使用することにより、「スロット不当例外パターン」の適切なデコードが可能となり、項7で説明した前記第1の点を回避できる。このとき、「スロット不当例外パターン」の後半パターンが分岐命令であるため、第2の点についても発生しない。
〔10〕<命令パイプラインによるポストフィックスコード候補の扱い>
項9のデータプロセッサにおいて、前記命令パイプラインは、ポストフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するときは当該特定の複数の命令コードの組み合わせを追加定義された命令として処理し、ポストフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するものでないときないときはこれを無視する。
上記より、命令パイプラインはディスパッチされた命令コードの解読に際して特別に複雑な処理を行わずに、禁止組み合わせパターンの新たな命令に対する実行処理を行うことができる。
〔11〕<後の探索による命令コードに対する前の探索によるポストフィックスコード候補の扱い>
項10のデータプロセッサにおいて、前記命令パイプラインは、前記ディスパッチ回路から供給された前記最後の命令コードに対して、その直後の命令コード探索において先頭で検出されて供給された命令コードを前記特定の複数の命令コードの組み合わせを構成するためのポストフィックスコード候補として用いる。
単独で供給された命令コードとその直後の探索で供給されたプレフィックスコードに対して容易に対処することができる。
〔12〕<禁止組み合わせパターンの隣接コード間で命令コードタイプ情報を交換して当該禁止組合せパターンの命令タイプを予め確定(実施の形態3)>
項1のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンにおける後半の命令コードパターンには前半の命令コードパターンとは異なる命令コードパターンが使用され、前記ディスパッチ回路はその前段にプリデコーダを有する。前記プリデコーダは、命令コードの命令コードタイプを判別すると共に、隣接する命令コード間で命令コードタイプの情報を交換して、命令コードが前記禁止組み合わせパターンを構成する命令タイプであるかを確定するための情報を前記ディスパッチ回路に供給する。前記ディスパッチ回路は、前記確定するための情報を用いることにより(前記禁止組み合わせパターンによる別定義された命令の命令タイプが当該禁止組み合わせパターンの後半の命令コードパターンによる命令タイプと異なる場合にも)前記禁止組み合わせパターンによる命令を供給する命令パイプラインを決定する。
禁止組み合わせパターンを分岐命令専用とせず、任意の命令タイプの命令として活用するにはそのための命令コード判定機構が必要である。16ビット単位のような命令コードの基本長単位で命令コードを判定するだけでは、任意に命令タイプの禁止組み合わせパターンを検出することができないが、命令コードの基本長単位の命令コード判定結果を隣接コード間で情報交換することによって、禁止組み合わせパターンを検出する事ができる。そして、パターン前半をプレフィックスと同様に扱い、パターン後半を分岐命令、ロードストア命令、および演算命令などの何れかの命令と同様に扱うことにより、禁止組み合わせパターンに対して命令タイプ若しくは命令による処理機能を自由に割り当てることが可能となる。
〔13〕<基本長と2倍長の混在命令コードを命令セットに持つ場合に禁止組合せパターンを2倍長命令コードとする(実施の形態4)>
項1のデータプロセッサにおいて、前記命令セットに含まれる命令コードは基本長とそれに対する2倍長の命令コードが混在する混在命令コードである。前記ディスパッチ回路は基本長の命令コードに対しては基本長単位で対応する命令パイプラインに供給し、2倍長の命令コードに対しては2倍長単位で対応する命令パイプラインに供給する。このとき、前記禁止組合せパターンの命令コードは2倍長命令コードとして定義される。
基本長と2倍長の混在命令コード体系の命令セットを持つ場合に、禁止組み合わせパターンを32ビット命令として扱うことにより、混在命令コードに対して逐次デコードするプリデコード機能などを有効に利用して、禁止組み合わせパターンを用いた命令の拡張を容易に行うことができる。この場合には、全ての禁止組み合わせパターンに対して何れの命令パターンであっても割り当て可能に活用することが得策である。
〔14〕<禁止されていないが意味のない複数命令の組み合わせパターンを別命令として追加定義(実施の形態5)>
本発明のさらに別の実施の形態に係るデータプロセッサ(MPU)は、複数の命令パイプライン(EXPL,LSPL,BRPL)と、並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キュー(GIQ)と、前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路(EX−ISD,LS−ISD,BR−ISD)とを有する。このデータプロセッサは、本来組み合わせが禁止されていないが意味のない複数の命令コードの組み合わせによる禁止組合せパターンを別の命令として追加定義した命令セットを有する。
前記禁止組み合わせパターンのように例外を発生するパターン以外に、プログラム上で意味のない複数命令の組み合わせにも本発明の概念を適用することができる。例えば、同一レジスタへの連続ロードの場合、1回目のロードのロード先のレジスタが2回目のロードのソースオペランドでなければ、1回目のロードは実行する必要がない。このような同一レジスタへの連続ロードは禁止されていないが、このような2命令の組み合わせを禁止して本発明を適用すればコード空間を拡張することができる。
〔15〕<特定の複数の命令コードの禁止組合せパターンを別命令として追加定義>
本発明のさらに別の実施の形態に係るデータプロセッサ(MPU)は、複数の命令パイプライン(EXPL,LSPL,BRPL)と、並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キュー(GIQ)と、前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路(EX−ISD,LS−ISD,BR−ISD)とを有する。前記命令パイプラインは更に、個々の命令コードの本来の処理が禁止されることになる特定の複数の命令コードの組み合わせに対して、単一の別の命令コードとして処理を行う。前記ディスパッチ回路は、前記特定の複数の命令コードの組み合わせを探索して対応する命令パイプラインに供給する。
項1と同様に作用する。
〔16〕<追加定義の命令コードタイプは禁止組み合わせパターンの後の命令コードタイプに一致(実施の形態1)>
項15のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は、当該組み合わせパターンの後半の命令コードパターンのみで定義される命令コードと同じ命令タイプに限定される。
項2と同様に作用する。
〔17〕<前後異なる命令コードによる禁止組み合わせパターン>
項16のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンにおける前半及び後半のそれぞれの命令コードパターンは異なる命令コードである。
項3と同様に作用する。
〔18〕<追加定義の命令コードタイプ及びを禁止組み合わせパターンの命令コードを全てが分岐命令(実施の形態2)>
項16のデータプロセッサにおいて、前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は分岐命令に専用化され、当該禁止組み合わせパターンの後半の命令コードパターンには分岐命令の命令コードが使用される。
項7と同様に作用する。
〔19〕<遅延スロット付き分岐命令と遅延スロットに置けない他の分岐命令>
項18のデータプロセッサにおいて、前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける前半の命令コードパターンは遅延スロット付き分岐命令であり、後半の命令コードパターンは遅延スロットに置けない遅延スロット付き分岐命令以外の分岐命令である。
項8と同様に作用する。
〔20〕<禁止組み合わせパターンの隣接コード間で命令コードタイプ情報を交換して当該禁止組合せパターンの命令タイプを予め確定(実施の形態3)>
項15のデータプロセッサにおいて、前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける後半の命令コードパターンには前半の命令コードパターンとは異なる命令コードパターンが使用される。前記ディスパッチ回路はその前段にプリデコーダを有する。前記プリデコーダは、命令コードの命令コードタイプを判別すると共に、隣接する命令コード間で命令コードタイプの情報を交換して、命令コードが前記禁止組み合わせパターンを構成する命令タイプであるかを確定するための情報を前記ディスパッチ回路に供給する。前記ディスパッチ回路は、確定するための情報を用いることにより(前記禁止組み合わせパターンによる別定義された命令の命令タイプが当該禁止組み合わせパターンの後半の命令コードパターンによる命令タイプと異なる場合にも)前記禁止組み合わせパターンによる命令を供給する命令パイプラインを決定する。
項12と同様に作用する。
〔21〕<基本長と2倍長の混在命令コードを命令セットに持つ場合に禁止組合せパターンを2倍長命令コードとする(実施の形態4)>
項15のデータプロセッサにおいて、前記命令セットに含まれる命令コードは基本長とそれに対する2倍長の命令コードが混在する混在命令コードである。前記ディスパッチ回路は基本長の命令コードに対しては基本長単位で対応する命令パイプラインに供給し、2倍長の命令コードに対しては2倍長単位で対応する命令パイプラインに供給する。前記禁止組合せパターンの命令コードは2倍長命令コードとして定義される。
項13と同様に作用する。
〔22〕<禁止されていないが意味のない複数命令の組み合わせを別命令として追加定義する(実施の形態5)>
本発明の更に別の実施の形態に係るデータプロセッサ(MPU)は、複数の命令パイプライン(EXPL,LSPL,BRPL)と、並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キュー(GIQ)と、前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路(EX−ISD,LS−ISD,BR−ISD)とを有する。前記命令パイプラインは更に、本来組み合わせが禁止されていないが意味のない特定の複数の命令コードの組み合わせに対して、単一の別の命令コードとして処理を行い、前記ディスパッチ回路は、前記特定の複数の命令コードの組み合わせを探索して対応する命令パイプラインに供給する。
項14と同様に作用する。
2.実施の形態の詳細
実施の形態について更に詳述する。
《実施の形態1》
「スロット不当例外パターン」を構成する「遅延スロット付分岐命令」として図1の4命令を、「遅延スロットに置けない命令」として図1および図2の8命令を含む例を考える。図1の命令(1)はディレイスロット付プログラムカウンタ(以下PCとする)相対無条件分岐命令、命令(2)はディレイスロット付PC相対サブルーチンコール命令、そして命令(3)(4)はディレイスロット付PC相対条件分岐命令で、それぞれ条件フラグが成立および不成立の場合に分岐する。また、図2の命令(5)(6)はPC相対ロード命令で、それぞれ16ビットおよび32ビットデータをロードする。そして、命令(7)(8)はPC相対条件分岐命令で、それぞれ条件フラグが成立および不成立の場合に分岐する。オペランドフィールドは命令(1)(2)(5)(6)が12ビット、命令(3)(4)(7)(8)が8ビットである。図1及び図2において「disp8」は8ビットのディスプレースメント、「disp12」は12ビットのディスプレースメント、PCはプログラムカウンタ値、Rnは番号#nの汎用レジスタ、をそれぞれ意味する。
これらの命令の組み合わせによる「スロット不当例外パターン」はオペランドフィールドのビット数に応じて図3のように4パターンがある。そして、組み合わせる命令のオペランドフィールドが新たに定義する命令のコードまたはオペランドフィールドとなる。そこで、12ビットのフィールドをcode12、8ビットのフィールドをcode8と呼ぶことにする。
パターン(9)はパターン前半および後半に共にcode12がある。パターン前半のコードA1には命令(1)(2)のコードである1010または1011が入る。パターン後半のコードB1には命令(5)(6)のコードである1010または1011が入り、コードC1には命令(1)(2)のコードである1010または1011が入る。
パターン(10)はパターン前半にcode12、パターン後半にcode8がある。コードA1はパターン(9)と同一、パターン後半のコードB2には命令(7)(8)のコードである10001001または10001011が入り、コードC2には命令(3)(4)のコードである10001101または10001111が入る。
パターン(11)はパターン前半にcode8、パターン後半にcode12がある。パターン前半のコードA2には命令(3)(4)のコードである10001101または10001111が入り、コードB1およびC1はパターン(9)と同一である。
パターン(12)はパターン前半および後半に共にcode8がある。そして、コードA2はパターン(11)と同一、コードB2およびC2はパターン(10)と同一である。
コードC1またはC2を使用する場合、即ち、前半にコードA1を使用する場合に後半にコードC1を使用し、又は前半にコードA2を使用する場合に広範にコードC2を使用する場合、パターンのバリエーションが増える反面、パターンの前半と後半に同じコードを使うため、命令ディスパッチの際に逐次デコードが必要となる。本実施の形態は、コードC1またはC2を使用しない逐次デコードが不要な場合を想定するから、この場合、パターン前半、後半それぞれが2×212+2×2=約8.5kパターンなので、「スロット不当例外パターン」として約72.25Mパターンが得られる。
次に、図3の4パターンを効率的に発行するための、命令発行部について説明する。本実施の形態のスーパースカラプロセッサは、命令コードを、プレフィックスPX、遅延スロット付分岐命令BRD、分岐命令BR、ロードストア命令LS、遅延スロットに置けないロードストア命令LSX、および演算命令EXに分類し、その命令セットを実行するパイプラインとして、分岐パイプラインBRP、ロードストアパイプラインLSP、および演算パイプラインEXPの3種類を持つ。命令の種類TYPEに対する命令コードの上位4ビットCODEの割当は図4とする。尚、図中の命令の種類TYPE−DSは後述する実施の形態4で用いるので、ここでは説明しない。図1および図2で挙げた8命令以外の命令も、命令コードの上位4ビットのコード(CODE)によって分類している。本発明はどんな命令エンコーディングにも対応可能であるが、具体例を使えば説明が容易である。CODE1000は遅延スロット付分岐命令BRD、分岐命令BR、及びプレフィックスPXで兼用している。図1のパターン(3)(4)が遅延スロット付分岐命令BRD、図2のパターン(7)(8)が分岐命令BR、それ以外がプレフィックスPXである。
次に、図3で代表的に説明した「スロット不当例外パターン」を用いて空き命令コード空間を作ったプロセッサの構成について説明する。ここでは特許文献3のプロセッサ構成をベースにこれに改良を施したものとする。
図5には本実施の形態に係るデータプロセッサMPUが例示される。データプロセッサMPUはプロセッサコアCPUを中心に、これに内部バスIBUSで接続されたメモリMEM、外部インタフェース回路EIF、および内蔵周辺モジュールPER等を一個または複数個備える。データプロセッサMPUは、特に制限されないが、CMOS集積回路製造技術などによって単結晶シリコンのような1個の半導体基板に形成される。
図6にはプロセッサコアCPUのブロック構成が例示される。命令キャッシュIC近傍には、命令フェッチユニットIFUが配置され、その中には、プリデコーダPD、グローバル命令キューGIQ、および分岐制御部BRCが含まれる。また、データキャッシュDC近傍には、ロードストアユニットLSUが配置され、その中には、ロードストア命令を保持するロードストア命令キューLSIQ、ロードストア命令デコーダLSID、およびロードストア命令実行部LSEが含まれる。更に、演算命令実行ユニットEXUには、演算命令を保持する実行命令キューEXIQ、演算命令デコーダEXID、および演算命令実行部EXEが含まれる。バスインタフェースユニットBIUはプロセッサコアCPUとコア外のバスIBUSとのインタフェース回路である。
図7にはプロセッサコアCPUのパイプライン構成が例示される。まず、全命令共通の命令キャッシュアクセスIC1およびIC2、並びに、グローバル命令バッファGIBステージがあり、演算命令用パイプラインEXPLには、ローカル命令バッファEXIB、ローカルレジスタリードEXRR、演算EX、並びにレジスタライトバックWBの各ステージがある。また、ロードストア命令用パイプラインLSPLには、ローカル命令バッファLSIB、ローカルレジスタリードLSRR、アドレス計算LSA、データキャッシュアクセスDC1およびDC2、並びにレジスタライトバックWBの各ステージがある。更に、分岐命令用パイプラインBRPLには分岐BRステージがある。
命令キャッシュアクセスIC1およびIC2ステージでは、命令フェッチユニットIFUが命令キャッシュICから命令コードをフェッチしてプリデコーダPDでプリデコードした後、続くグローバル命令バッファGIBステージのグローバル命令キューGIQに格納する。グローバル命令バッファGIBステージでは、ロードストア、演算、並びに、分岐の各カテゴリの命令を埔里でコード結果などを用いて1命令ずつ抽出してディスパッチし、それぞれローカル命令バッファLSIBおよびEXIB、並びに、分岐BRステージで、それぞれロードストアユニットLSUの命令キューLSIQ、演算命令実行ユニットEXUの命令キューEXIQ、並びに、命令フェッチユニットIFUの分岐制御部BRCに格納する。そして、分岐BRステージでは、分岐命令を受取った場合には直ちに分岐処理が開始される。
演算命令用パイプラインEXPLでは、演算命令実行ユニットEXUがローカル命令バッファEXIBステージで演算命令を1サイクルに最大1命令ずつ命令キューEXIQに受け取って、演算命令デコーダEXIDで最大1命令ずつデコードし、次のローカルレジスタリードEXRRステージでレジスタリードを行い、演算EXステージで演算命令実行部EXEを用いて演算を行い、レジスタライトバックWBステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
ロードストア命令用パイプラインLSPLでは、ロードストアユニットLSUがローカル命令バッファLSIBステージでロードストア命令を1サイクルに最大1命令ずつ命令キューLSIQに受け取って、ロードストア命令デコーダLSIDで最大1命令ずつデコードし、次のローカルレジスタリードLSRRステージでレジスタリードを行い、アドレス計算LSAステージでロードストアアドレスを計算し、データキャッシュアクセスDC1およびDC2ステージでロードストア処理を行い、レジスタライトバックWBステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
図8には本実施の形態に係るデータプロセッサMPUのグローバル命令キューGIQの構成が例示される。図8の例では、グローバル命令キューGIQは、16命令分の命令キューエントリGIQ0〜GIQ15、書込み位置を指定するグローバル命令キューポインタGIQP、グローバル命令キューポインタGIQPをデコードするグローバル命令キューポインタデコーダGIQP−DEC、演算、ロードストア、および分岐の各カテゴリの命令の進捗に合せて進められ、読出し位置を指定する演算命令ポインタEXP、ロードストア命令ポインタLSP、分岐命令ポインタBRP、およびそれぞれのポインタに従って、それぞれ演算命令、ロードストア命令、分岐命令を探索してディスパッチする演算命令探索ディスパッチ回路EX−ISD、ロードストア命令探索ディスパッチ回路LS−ISD、分岐命令探索ディスパッチ回路BR−ISD、命令フェッチ要求生成部IREQ−GENから成る。
次に、図12のフローチャートを用いてグローバル命令キューGIQの作用を説明する。(a)命令キャッシュ出力有効信号ICOVがアサートされると、(b)グローバル命令キューポインタデコーダGIQP−DECは、グローバル命令キュー更新信号GIQU0〜3のうち、グローバル命令キューポインタGIQPの指している命令キューエントリグループの更新信号をアサートする。(c)そして、グローバル命令キューGIQは、グローバル命令キューエントリグループGIQ0〜GIQ3、GIQ4〜GIQ7、GIQ8〜GIQ11、またはGIQ12〜GIQ15のうち、対応するグローバル命令キュー更新信号GIQU0〜GIQ3がアサートされているグループに、命令フェッチユニットIFUで命令キャッシュICからフェッチしてプリデコーダPDでプリデコードした4命令コードICPDO0〜ICPD3をラッチし、ラッチしたグループを有効にする。特に制限されないが、命令コードICPDO0〜ICPD3にはプリデコード結果として命令タイプを示す情報が付加される。更に、(d)あらかじめグローバル命令キューポインタGIQPに1を加算した値を新グローバル命令キューポインタGIQP−NEWとして出力しておき、この値でグローバル命令キューポインタGIQPを更新する。
分岐命令探索ディスパッチ回路BR−ISDは、(e)グローバル命令キューエントリGIQ0〜GIQ15のそれぞれから出力されるグローバル命令キュー出力GIQO0〜GIQ15から、分岐命令ポインタBRPの指す命令コードを先頭とする4命令コードを探索し、(f)分岐命令コードがあった場合は分岐命令コード有効信号BR−IVをアサートし、最初の分岐命令コードおよびその直前の命令コードを分岐命令BR−INSTとして出力する。直前の命令コードを選択すると、それがプレフィックスであった時にプレフィックスが修飾する命令コードと共に出力することができる。また、(g)出力した命令コードの次の命令コードを分岐命令ポインタBRPが指すように新分岐命令ポインタBRP−NEWを出力する。(h)先頭以外で分岐命令コードが発見された場合は分岐プレフィックス候補有効信号BR−PVをアサートし、(o)これによって分岐制御部BRCは分岐命令コードと共に分岐プレフィックス候補としての直前命令コードの双方を有効な入力として判定する。(i)先頭で分岐命令コードが発見された場合は分岐プレフィックス候補有効信号BR−PVをネゲートし、(p)これによって分岐制御部BRCは分岐命令コードのみ有効な入力として判定する。
(j)探索範囲に有効な分岐命令コードがなかった場合は分岐命令コード有効信号BR−IVをネゲートし、次回の分岐命令探索時に先頭で分岐命令コードが発見された際の分岐プレフィックス候補である、今回の探索範囲の最後の有効な命令コードが、分岐命令コードの直前の命令コードとして選択されるように、最後の有効な命令コードの次のコードを分岐命令コードとみなしてその直前の命令コードと共に分岐命令BR−INSTとして出力する。分岐命令コードとみなしたコードは出力しても分岐制御部BRCでは実質的に無意味となるが、有効な分岐命令コードがあった場合の出力制御の制御内容と整合させて制御ロジックを簡素化し易くするためである。また、(k)最後の有効な命令コードの次のコードを分岐命令ポインタBRPが指すように新分岐命令ポインタBRP−NEWを出力する。(l)探索対象に有効な命令がある場合は分岐プレフィックス候補有効信号BR−PVをアサートし、(n)これによって分岐制御部BRCは分岐プレフィックス候補としての直前命令のみ有効な入力として判定する。(m)探索対象に有効な命令がない場合は、分岐プレフィックス候補有効信号BR−PVをネゲートし、これによって、分岐制御部BRCは命令コード及び分岐プレフィックス候補直前命令の双方を無効と判定する。尚、探索対象の4命令に無効な命令が含まれるのは、グローバル命令キューエントリグループGIQ0〜3、GIQ4〜7、GIQ8〜11、またはGIQ12〜15のうち、無効な命令コードのグループを含む範囲が探索対象となった場合である。探索動作の詳細は後で図9を用いて説明する。
以上の制御の結果、分岐命令コード有効信号BR−IVおよび分岐プレフィックス候補有効信号BR−PVが、(o)共にアサートされれば分岐プレフィックス候補は分岐命令コードと同時に出力され、(n)それぞれネゲートおよびアサートであれば分岐プレフィックス候補のみが先行的に出力され、(p)それぞれアサートおよびネゲートであれば分岐命令コードだけが出力されて先行的に出力された分岐プレフィックス候補と共に使用され、(q)共にネゲートされれば有効なコードは何も出力されない。尚、分岐プレフィックス候補としてデコードされたコードが分岐プレフィックスではない場合は、分岐命令コードのみを使用して命令が実行される。
同様に、ロードストア命令探索ディスパッチ回路LS−ISDも、グローバル命令キュー出力GIQO0〜15から、ロードストア命令ポインタLSPに従って、ロードストア命令コード有効信号LS−IV、ロードストア命令LS−INST、ロードストアプレフィックス候補有効信号LS−PV、及び新ロードストア命令ポインタLSP−NEWを出力する。また、演算命令探索ディスパッチ回路EX−ISDも、グローバル命令キュー出力GIQO0〜15から、演算命令ポインタEXPに従って、演算命令コード有効信号EX−IV、演算命令EX−INST、演算プレフィックス候補有効信号EX−PV、及び新演算命令ポインタEXP−NEWを出力する。
命令フェッチ要求生成部IREQ−GENは、各ポインタGIQP、EXP、LSP、およびBRPの値から、グローバル命令キューエントリグループGIQ0〜3、GIQ4〜7、GIQ8〜11、またはGIQ12〜15のいずれかに1エントリグループ以上の空きがあるかどうかを判断し、空きがあれば命令フェッチ要求信号IREQをアサートする。空きがない状態は、グローバル命令キューポインタGIQPの指している、次にフェッチした命令コードICO0〜3をラッチするグローバル命令キューエントリグループを、各ポインタEXP、LSP、およびBRPの何れも指していない状態である。尚、各ポインタの代わりに各新ポインタGIQP−NEW、EXP−NEW、LSP−NEW、およびBRP−NEW、グローバル命令キューポインタGIQPの更新信号でもある命令キャッシュ出力有効信号ICOV、および各ポインタの更新制御信号EX−OK、LS−OK、およびBR−OKとから命令フェッチ要求信号IREQを生成すれば、1サイクル早く命令フェッチ要求信号IREQを生成することが可能である。尚、命令フェッチ要求信号IREQを受ける命令キャッシュICとの信号タイミング次第で、ポインタから作る方式、新ポインタから作る方式、作った後にラッチしてから命令キャッシュICに送る方式等、種々のタイミングの方式が考えられる。
図9には図8のグローバル命令キューGIQの分岐命令探索ディスパッチ回路BR−ISDの構成が例示される。ポインタデコーダP−DEC、命令コードマルチプレクサM0〜M3、プライオリティエンコーダPE、出力命令コードマルチプレクサMOUT、ポインタ更新回路P−ADVから成る。ポインタデコーダP−DECは、分岐命令ポインタBRPをデコードし、分岐命令ポインタBRPの指す命令コードを先頭とする4命令コードが選択されるように、命令コードマルチプレクサM0〜M3の制御信号M0−CNTL〜M3−CNTLを生成する。命令コードマルチプレクサM0〜M3はそれぞれ制御信号M0−CNTL〜M3−CNTLに従い、それぞれGIQO0、4、8、および12、GIQO1、5、9、および13、GIQO2、6、10、および14、GIQO3、7、11、および15から1命令コードを選択し、それぞれ探索対象命令コードC0〜C3として出力する。この結果、探索対象命令コードC0〜C3には固定の順序が与えられず、先頭命令コードからサイクリックに命令順序が付く。プライオリティエンコーダPEは、プライオリティエンコーディングによって探索対象命令コードC0〜C3を分岐命令ポインタBRPの指す先頭命令コードから探索を開始し、最初の分岐命令コードを探索する。そして、分岐命令を発見した場合はその命令コードを、発見しなかった場合に無効な命令コードがあればその最初の命令コードを、発見しなかった場合に無効な命令コードがなければ先頭の命令コードを選択すると共に、選択した命令コードの直前の命令コードを選択するように、出力命令コードマルチプレクサ制御信号MOUT−CNTLを出力する。尚、分岐命令コードとして先頭の命令コードを選択場合にはその直前の命令コードは今回の探索対象ではないため選択できず、探索対象命令コードC0〜C3の順序はサイクリックであるため、直前の命令コードとして探索対象の最後のコードが選択される。その後、1、2、3、4番目の命令コードで発見した場合には命令ポインタBRPにそれぞれ1、2、3、4を加算し、発見されなかった場合には探索した有効命令コード数を加算した値を新分岐命令ポインタBRP−NEWとして出力する。
探索対象命令コードC0〜C3の順序はサイクリックであるため、分岐命令コードを発見しなかった場合、次回の分岐命令探索時に先頭で分岐命令コードが発見された際の、直前の命令コードとして、最後の有効な命令コードが選択され、これが分岐命令のプレフィックスであっても適切に選択されて出力される。即ち、新たに分岐命令の探索を行ったとき、探索対象の先頭命令コードが分岐命令であった場合は、分岐プレフィックス候補有効信号BR−PVをネゲートし、分岐命令コードBR−INSTの一部として同時に出力される分岐プレフィックス候補は使用せずに、分分岐制御部BRCが既に保持している分岐プレフィックス候補を使用するように指示する。更に、分岐命令コードを発見した場合と発見しなかった場合の何れにおいても分岐命令コードBR−INSTとして出力されるコードは命令コードとその直前の命令コードのペアとされ、何れの場合においても、分岐命令コードBR−INSTの出力制御論理に部分的な共通性を持たせることが容易になり、その論理規模の簡素化に資することができる。
ロードストア命令探索ディスパッチ回路LS−ISDおよび演算命令探索ディスパッチ回路EX−ISDも上記分岐命令探索ディスパッチ回路BR−ISDと同様な構造である。
以上の制御により、命令タイプ毎に、プレフィクス付の命令もプレフィックスなしの命令も毎サイクル発行することが可能となり、プレフィックス付の命令を含む命令セットにおける効率的なスーパースカラ命令発行が可能となる。また、発見した命令コードに付加する直前の命令コードを1個から複数に変えれば、複数個のプレフィックスコードを許す命令セットアーキテクチャに対しても、上記制御方式を適用することが可能となり、効率的なスーパースカラ命令に発行に資することができる。
ここまでの構成は本発明者による特許文献3のプロセッサ構成に準拠するものであるここまでの構成を基本として、遅延スロット付分岐命令と遅延スロット命令のペアを処理しようとする場合について説明する。この場合、パターン前半の遅延スロット付分岐命令は図8の分岐命令探索ディスパッチ回路BR−ISDによって選択されて、分岐命令BR−INSTとして出力される。しかし、遅延スロット付分岐命令とペアをなすパターンの後半が付いて来ないため、例え分岐命令であっても実行しないようにデコーダが構成される。すなわち、その場合の分岐命令探索ディスパッチ回路BR−ISDによるディスパッチは無駄なディスパッチとなるが、スロット不当例外は発生させず、それを単にキャンセルするだけとする。要するに、そのような機能が命令デコーダに付加される。
一方、パターン後半の遅延スロット命令は命令タイプに応じて演算命令探索ディスパッチ回路EX−ISD、ロードストア命令探索ディスパッチ回路LS−ISDまたは分岐命令探索ディスパッチ回路BR−ISDによって選択されて、遅延スロット付分岐命令がプレフィックスとして付加され、演算命令EX−INST、ロードストア命令LS−INSTまたは分岐命令BR−INSTとして出力される。即ち、遅延スロット付分岐命令と遅延スロット命令のペアが出力される。そして、このペアが「スロット不当例外パターン」であった場合は例外処理に移行する。
本実施の形態では「スロット不当例外パターン」のうち、図3で定義したパターン(9)(10)(11)(12)を32ビット命令として実行し、スロット不当例外は発生させない。図3で定義したパターンの後半16ビットは図1および図2の(1)〜(8)のいずれかであり、前述の図8の命令ディスパッチ方式により、(5)(6)であればロードストア命令LS−INSTとして、それ以外は分岐命令BR−INSTとして扱われる。したがって、命令定義には、上記パターン後半と同じ実行パイプラインで実行される命令の定義が含まれることになる。
図6の分岐制御部BRCは、分岐命令分岐命令コードおよびその直前の命令コードから成る分岐命令BR−INSTをデコードして、命令フェッチユニットIFUを制御して、命令フローを管理する。図12のフローチャートを用いて説明したように、分岐命令コード有効信号BR−IVおよび分岐プレフィックス候補有効信号BR−PVの値に応じて、分岐命令BR−INSTには4通りの状態(o),(p),(n),(q)がある。それぞれの場合について、分岐制御部BRCのデコード動作を図14A及び図14Bに基づいて説明する。
図14Aは分岐命令バッファが1段の例で、分岐プレフィックスラッチBR−PXおよび分岐命令ラッチBR−Iから成る。一方、図14Bは分岐命令バッファが複数段の例で、1段以上の分岐命令バッファBR−BUFを持ち、分岐プレフィックスマルチプレクサBR−MPXおよび分岐命令マルチプレクサBR−MPIを制御して、適宜、分岐プレフィックスラッチBR−PXおよび分岐命令ラッチBR−Iにラッチする命令コードを選択する。本発明に限らずバッファを複数段持つと命令発行がストールした場合などに命令供給側を止めに行く際にタイミングに余裕が持てる。また、アウトオブオーダ発行の際の他のパイプラインとの命令フロー実行のサイクルずれを吸収するのにも役立つ。以下の説明は、図14Aに基づいて行うが、図14Bの分岐命令バッファが複数段の場合への拡張は、本技術分野の通常のスキルを有する技術者であれば容易に可能であるから、ここでは図14Bに基づく説明は省略する。また、図示していないが、バッファ容量の制約で供給された分岐命令BR−INSTをラッチ出来ない場合、バッファが満杯であることを示す信号を命令供給側に送り、命令供給を止めることが行われる。
まず、図12の(o)の分岐プレフィックス候補が分岐命令コードと同時に有効されている場合、分岐命令入力制御回路BRI−CTLは、分岐命令コード有効信号BR−IVおよび分岐プレフィックス候補有効信号BR−PVから、この状態であると判断し、分岐プレフィックスラッチBR−PXおよび分岐命令ラッチBR−Iを制御して、分岐命令BR−INSTを分岐プレフィックス候補および分岐命令として分岐命令デコーダBR−DECに供給する。分岐命令デコーダBR−DECは分岐プレフィックス候補が実際にプレフィックスであった場合はプレフィックス付分岐命令として、プレフィックスではなかった場合は通常の分岐命令としてデコードし、制御信号BR−DECOを生成して分岐処理を進める。
次に、図12の(n)の分岐プレフィックス候補のみが先行的に有効にされている場合は、(o)の場合と同様に、この状態であると判断し、分岐プレフィックスラッチBR−PXを制御して、分岐命令BR−INSTの前半部分を分岐プレフィックス候補として分岐命令デコーダBR−DECに供給する。そして、分岐命令コードが到着するのを待つ。
また、図12の(p)の分岐命令コードだけが有効にさた場合は、(o)の場合と同様に、この状態であると判断し、分岐命令ラッチBR−Iを制御して、分岐命令BR−INSTの後半部分を分岐命令として分岐命令デコーダBR−DECに供給する。そして、先行的に供給された分岐プレフィックス候補が有効ならば、共に使用して前記(o)と同様に処理する。一方、分岐直後等で先行的に分岐プレフィックス候補が供給されていなければ、通常の分岐命令として処理する。
そして、図12の(q)の有効なコードが何もない場合は、有効なコードが来るのを待つ。
実施の形態1によれば以下の作用効果を得る。16ビット固定長命令セットには遅延スロット付分岐命令を含んでいるものがある。遅延スロットは、分岐命令の後続命令を入れるスロットであり、このスロットにある命令(遅延スロット命令)は、分岐先の命令の前に実行される。通常このスロットは1命令分である。また、分岐命令と遅延スロット命令の間で例外や割込が起きると、遅延スロット命令から処理を再開することになり、分岐命令が正しく処理されないため、両者を不可分に実行する方式が一般的である。更に、分岐命令がPCを変更するため、遅延スロット命令はPCを参照したり変更したりする命令を禁止することが一般的である。この結果、分岐命令と遅延スロット命令のペアは32ビット長命令のように扱われ、禁止された組み合わせパターンは、スロット不当例外として扱われ活用されていなかった。実施の形態では、この禁止パターン、即ち「遅延スロット付分岐命令と遅延スロットに置けない命令のペアによる32ピットパターン」を活用して、32ビット命令セットを定義することにより、命令コード空間を拡張することができる。以下、このパターンを「スロット不当例外パターン」と呼ぶ。例えば、代表的な遅延スロット付分岐命令4命令のコード空間は213+2=8.5kパターンである。一方、遅延スロットに置けない代表的な8命令のコード空間は214+210=17kパターンである。従って、例外として扱われる代表的な組み合わせパターンは、これらの積となり約144.5Mパターンである。
前記「スロット不当例外パターン」では、遅延スロット付分岐命令が遅延スロットに置けない命令でもあるため、遅延スロット付分岐命令はパターンの前半にも後半にもなり得る。そして、遅延スロット付分岐命令が連続すると奇数番目が前半、偶数番目が後半なので、その区別には逐次デコードが必要であり、高速化が困難である。この問題を回避するには、別の実施の形態で説明するように、遅延スロットに置けない代表的な8命令のうち、遅延スロット付分岐命令以外の命令を活用すればよい。代表的な遅延スロット付分岐命令4命令も残りの4命令も、そのコード空間は213+2=8.5kパターンである。したがって、効率的なスーパースカラ命令発行可能なパターンは、「スロット不当例外パターン」の半分の約72.25Mパターンである。
命令コードを、プレフィックス、遅延スロット付分岐命令、分岐命令、ロードストア命令、および演算命令に分類し、実行パイプラインとして、分岐、ロードストア、および演算パイプラインの3種類を持つスーパースカラプロセッサを考える。このプロセッサを、例えば、更に浮動小数点演算命令を別分類として持ち、実行パイプラインとして更に浮動小数点演算用を持つプロセッサなどに拡張することは、通常のスキルを持つ技術者であれば可能である。
まず、遅延スロット付分岐命令がない場合は、分岐命令、ロードストア命令、および演算命令の各命令を毎サイクルサーチして、各命令がサーチスコープ内にあれば、その命令を発行すると共に、その命令の直前のコードをプレフィックスとみなして、その命令に付加して各実行パイプラインにディスパッチし、各実行パイプラインのデコーダが命令に付加されたコードがプレフィックスかどうかをチェックして、プレフィックスならばそれも使用して命令デコードすることにより、プレフィックス付き命令もスーパースカラ発行することができる。遅延スロット付分岐命令がある場合でも、ディスパッチ以降は特別な処理は不要で、遅延スロット付分岐命令を分岐パイプライン、遅延スロット命令をその命令用の実行パイプラインにディスパッチすれば良い。そして、命令フェッチおよびディスパッチのフローの切り替えを通常の分岐命令より1命令遅らせる。スロット不当例外等が発生する場合には高速処理は不要であるため、適宜例外処理に移行すれば良い。
実施の形態1で説明したように、「スロット不当例外パターン」を活用することにより、約144.5Mパターンの新規32ビット命令を定義することが可能となり、命令拡張による性能や効率の向上が可能となる。また、「スロット不当例外パターン」を活用しない方式に比べて命令フェッチ及び命令デコード制御形態が最も変化の少ない方式である。
《実施の形態2》
実施の形態1で説明した「スロット不当例外パターン」を活用する命令制御形態はディスパッチ機構を変えずに済むが、考慮すべき点がある。すなわち、命令コードが「スロット不当例外パターン」の場合、パターン前半の遅延スロット付分岐命令は分岐命令として分岐パイプラインにディスパッチされるが、パターン後半が付いて来ないため、例え分岐命令であっても実行できず、無駄なディスパッチが発生することである。すなわち、パターン後半が命令と見なされてディスパッチされ、パターン前半がそのプレフィックス候補として付加されるため、パターン後半と「スロット不当例外パターン」が同じ実行パイプラインで実行される命令のコードでなければならないという制約が必要なことである。
実施の形態2ではそれを回避するために、「スロット不当例外パターン」による命令定義を分岐命令専用とし、その後半パターンとして分岐命令を使用する。即ち、図3で定義したパターンの後半16ビットとして、図1および図2の(1)〜(4)と(7)(8)の6パターンのみを使用する。そして、プレフィックスは分岐命令には使用しないものとする。
本実施の形態2では、図8のグローバル命令キューGIQの分岐命令探索ディスパッチ回路BR−ISDで、選択した命令コードと共に、「スロット不当例外パターン」によって定義された分岐命令である場合に備えて、選択した命令コードの直後の命令コードも出力する。実施の形態1ではプレフィックスがある場合に備えて選択した命令コードの直前の命令コードを同時に出力したが、本実施の形態2ではプレフィックスは分岐命令には使用しないので、直前の命令コードは不要である。要するに、実施の形態1では禁止パターンの前半をプレフィックスして把握することにより、選択した命令コードの直前の命令コードも一緒に出力するようにしたが、実施の形態2では禁止パターンの後半をポストフィックスとして把握することにより、選択した命令コードの直後の命令コードも一緒に出力するようにする。したがって、本実施の形態2では、図8のBR−PVはポストフィックス候補有効信号とする。そして、図9の探索対象命令コードC0〜C3の最後の有効な命令コードで発見した場合はポストフィックス候補有効信号BR−PVをネゲートする。そして、ポストフィックス候補有効信号BR−PVがアサートされた場合は実施の形態1と同様に出力した命令コードの次の命令コードを分岐命令ポインタBRPが指すように新分岐命令ポインタBRP−NEWを出力し、ネゲートされた場合は実施の形態1より1少なく進める。また、プレフィックスがないため、実施の形態1で考慮した探索対象の有効な命令コードの最後のコードがプレフィックスである場合の考慮は不要になる。
実施の形態1からの以上の変更により、図12のフローチャートは図13のようになる。以下、図13に基づいて図12との違いを説明する。図13において図12との主な変更箇所には下線を付している。
まず、(a)〜(e)は同一である。(f)では直前の命令コードではなく直後の命令コードを出力するように変更する。(f)の後、無条件に(g)に進んでいたものを「最後の有効な命令以外で発見」したら(g)に進むように変更し、(g)に進まなかった場合は(k)に進むように変更する。(g)から「先頭で発見」の場合に進んでいた(i)は削除して、無条件で(h)に進むように変更し、(h)の分岐プレフィックスをポストフィックスに変更する。次に、探索対象の有効な命令コードの最後のコードがプレフィックスである場合の考慮が不要となったので、(j)では任意の命令コードおよびその直後の命令コードを出力するように変更し、(k)から「有効命令コードあり」の場合に進んでいた(l)(o)は削除して、無条件で(m)に進むように変更し、(m)の分岐プレフィックスをポストフィックスに変更する。
分岐命令BR−INSTの前半部分が「遅延スロット付分岐命令」である図1の4命令(1)〜(4)であって、ポストフィックス候補有効信号BR−PVがネゲートされていた場合、後半部分がないため、通常の「遅延スロット付分岐命令」か「スロット不当例外パターン」かの区別ができず、図6の命令フェッチユニットIFUの分岐制御部BRCは受け取った命令を処理できない。しかし、「スロット不当例外パターン」の後半部分として分岐命令のみを使用しているので、次に分岐命令の探索に成功した際に、当該「スロット不当例外パターン」の後半部分が、当該次に探索が成功された分岐命令BR−INSTの前半部分として出力される。これを、その「スロット不当例外パターン」の後半部分として用いることによって処理が可能となる。
また、分岐命令BR−INSTの後半部分が、前半部分と同時に使用されず、かつ、分岐命令であった場合は、先行する分岐命令の処理に続いて処理するように、次の前半部分として使用する。このとき、更に次の分岐命令BR−INSTの前半部分が到着していれば、「遅延スロット付分岐命令」であっても、前述のポストフィックス候補有効信号BR−PVがネゲートされていた場合と同様に処理することが出来る。到着していない場合は、到着を待って処理を開始する。
また、「遅延スロット付分岐命令」でなければ、到着の有無に関係なく処理を開始する。このとき、次の分岐命令BR−INSTの前半部分が到着していると、分岐命令BR−INSTの供給に対して、分岐制御部BRCの処理が遅れることになるため、分岐命令BR−INSTをバッファリングすると共にグローバル命令キューGIQに供給のストールを要求する。処理の下流側から、処理が間に合わない際にストール要求を出すことは、プロセッサにおいては一般的な方式である。
実施の形態2によれば以下の作用効果を得る。
「スロット不当例外パターン」を分岐命令専用とし、その後半パターンとして分岐命令を使用し、プレフィックスは分岐命令には使用しないものとし、この場合、分岐命令をディスパッチする際はその命令の直前のコードではなく直後のコードを付加し、分岐パイプラインのデコーダが、命令が「スロット不当例外パターン」であれば付加したコードも使用することにより、「スロット不当例外パターン」の適切なデコードが可能となる。したがって、無駄なディスパッチの発生を回避することができる。そして、実施の形態1よりも少なくなるが、約76.5Mパターンの新規32ビット分岐命令を定義することが可能となり、命令拡張による性能や効率の向上に資することができる。
《実施の形態3》
実施の形態2では「スロット不当例外パターン」による命令定義は分岐命令専用という制限があった。本実施の形態では「スロット不当例外パターン」を分岐命令以外にも活用するために、命令コードタイプ判定機構を変更し、命令コードタイプ判定時に16ビット単位の命令コードタイプ判定結果と隣接コード間での情報交換によって「スロット不当例外パターン」を検出できるようにする。即ち、「スロット不当例外パターン」の前半部分と後半部分に同じコードを使用しないようにする。具体的には、前半部分には遅延スロット付分岐命令、後半部分には遅延スロット付分岐命令以外の遅延スロットに置けない命令を使用する。そして、パターン前半をプレフィックスと同様に扱い、パターン後半を分岐命令、ロードストア命令、および演算命令のいずれかの命令と同様に扱う。図4の分類において、「スロット不当例外パターン」の後半部分としての命令タイプTYPE−DSで分類する。この結果、「スロット不当例外パターン」に命令を自由に割り当て、プレフィックス付命令と同様に扱うことが可能となる。このときのディスパッチ回路EX−ISD,LS−ISD,BR−ISDによる命令コードの分配機能は図12と同様でよい。
具体的な実装は、実施の形態1で図5乃至図9を用いて説明したプロセッサ構成において、図6の命令フェッチユニットIFUのプリデコーダPDにおける命令コードタイプ判定を変更することにより可能となる。尚、命令コードタイプ判定はプリデコーダPD以外に、図9の分岐命令探索ディスパッチ回路BR−ISDの探索対象命令コードC0〜C3に対して行うなど、命令フェッチから命令探索までのどこかで行えばよい。但し、探索対象命令コードC0〜C3に対して行う場合は、順序関係が一定でないため回路は複雑になる。
図10は本実施の形態における図6のプリデコーダPDの一例である。まず、命令フェッチユニットIFUで命令キャッシュICからフェッチした4命令の命令コードICO0〜ICO3を各命令コードのプリデコーダPD0〜PD3によってプリデコードし、図4の通常の6種類の命令タイプTYPEのうち、遅延スロット付分岐命令BRDであるかどうかと、遅延スロット付分岐命令BRD以外の遅延スロットに置けない命令、即ち、分岐命令BR、遅延スロットに置けないロードストア命令LSX、またはプレフィックスPXであるかどうかを判定し、それぞれの判定結果に従って遅延スロット付分岐信号BRD−PD0〜BRD−PD3及び遅延スロット不可信号DSNG−PD0〜DSNG−PD3を出力する。尚、遅延スロットに32ビット命令があると命令発行機構が複雑になるためプレフィックスPXも遅延スロットに置けない命令コードに分類し、後半部分として使用する。また、命令タイプTYPE判定結果TYP−PD0〜TYP−PD3を出力する。
そして、命令タイプ調整回路TYP0〜TYP3は、隣接する先行命令からの遅延スロット付分岐信号BRD−PD0〜BRD−PD3がアサートされた場合は、命令タイプとして「スロット不当例外パターン」の場合の命令タイプTYPE−DSを、ネゲートされた場合はTYP−PD0〜TYP−PD3をそのまま出力する。尚、命令タイプ調整回路TYP0は隣接する先行命令が、前回のプリデコード結果の遅延スロット付分岐信号BRD−PD3であるか、分岐先の先頭命令コードであるために存在しないかのいずれかであるため、前者であればラッチBRDLにラッチしておき、後者であればラッチBRDLの値をクリアしておき、いずれの場合もラッチBRDL出力を使用する。また、命令タイプ調整回路TYP0〜TYP2は、命令タイプが遅延スロット付分岐命令BRDである場合に、それぞれ隣接する後行命令からの遅延スロット不可信号DSNG−PD1〜DSNG−PD3がアサートされた場合は、命令タイプをプレフィックスPXに変更する。そして、命令タイプ調整回路TYP0〜TYP3出力を命令コードICO0〜ICO3に付加して、プリデコーダ出力ICPDO0〜ICPDO3とする。
命令タイプ調整回路TYP3は、隣接する後行命令からの信号がないため、命令タイプが遅延スロット付分岐命令BRDであると命令タイプを確定できない。このため、遅延スロット付分岐命令BRDであると見なして命令タイプとし、命令コードICO3に付加して、プリデコーダ出力ICPDO3とする。後で「スロット不当例外パターン」と判明した場合は、後述するプレフィックス化信号PX−PD3によって、命令タイプをプレフィックスPXに変更する。尚、プリデコーダ出力ICPDO3は、図8のグローバル命令キューGIQにラッチされているので、プレフィックス化信号PX−PD3によって、ラッチした値を更新できるようにしておく。
プレフィックス化信号PX−PD3は、命令タイプ調整回路TYPXで生成され、ラッチBRDLにラッチしておいた遅延スロット付分岐信号BRD−PD3とプリデコーダPD0からの遅延スロット不可信号DSNG−PD0が共にアサートされたときにアサートする。
実施の形態3によれば以下の作用効果をえる。
「スロット不当例外パターン」を分岐命令専用とせずに活用するには、命令コード判定機構の変更が必要である。16ビット単位の命令コード判定では、「スロット不当例外パターン」を検出できないため、16ビット単位の命令コード判定結果を隣接コード間で情報交換し、「スロット不当例外パターン」を検出できるようにする。そして、パターン前半をプレフィックスと同様に扱い、パターン後半を分岐命令、ロードストア命令、および演算命令のいずれかの命令と同様に扱う。この結果、「スロット不当例外パターン」に命令を自由に割り当てることが可能となる。要するに、プリデコーダPDの出力を隣接コード間の情報交換によって変更することにより、「スロット不当例外パターン」をプレフィックス付命令と同様に扱うことが可能となる。そして、実施の形態2よりも多い、約80.75Mパターンの新規32ビット命令を定義することが可能となり、命令拡張による性能や効率の向上に資することができる。
《実施の形態4》
実施例3では実装の容易さを優先して16ビット単位の命令コードタイプ判定結果と隣接コード間での情報交換によって「スロット不当例外パターン」を検出できるように命令のエンコーディングを制限した。しかし、既に16/32ビット長混在命令セットを実装しているプロセッサでは、上記制限をしてもメリットがない。したがって、制限を設けずに「スロット不当例外パターン」約144.5Mパターンを全て新規32ビット命令定義に使用すべきである。
16/32ビット長混在命令セットでは、32ビット長命令の後半部分が16又は32ビット長命令の前半部分と同一コードである場合があり、あるコードが32ビット長命令の後半部分かどうかは、そのコードに先行する全ての命令の命令タイプを逐次解析して、初めて判定することが出来る。このため、命令フェッチ後のプリデコード時に判定する場合は、一度にフェッチする命令コード数分の逐次解析を命令フェッチサイクル以内に行う必要がある。毎サイクルフェッチする場合は1サイクル以内が最低条件であり、プリデコードに1サイクルかけない場合はその時間以内に逐次解析を終える必要がある。したがって、命令フェッチ幅が広い場合は逐次解析がネックとなる可能性が高くなる反面、命令フェッチ幅が狭ければ、重大な問題は発生しない。また、プリデコードは命令探索や命令発行前に行う方式もあり、それぞれ命令探索や命令発行の幅が狭ければ問題は少ない。
通常の32ビット長命令と「スロット不当例外パターン」の違いは、前者が前半部分で16又は32ビット長のいずれであるかが判明するのに対し、後者は後半部分も見ないとどちらであるかが判明しない点である。そして、「スロット不当例外パターン」を活用しない場合は、遅延スロット命令がフェッチされていなくても遅延スロット付分岐命令が処理可能であるのに対し、活用する場合は、フェッチされてから処理するか、「スロット不当例外パターン」ではないと仮定して実行開始し、違っていたらキャンセルするかのいずれかの処理が必要である。しかし、遅延スロット命令がフェッチされていなくて、かつ、遅延スロット付分岐命令が処理可能であるという状況は確率的に低いため、フェッチされてから処理しても性能への影響は軽微である。また、遅延スロット付分岐命令処理も遅延スロット命令フェッチもどちらも命令フェッチであるため、同時進行を許すと、競合が発生したり、フェッチ順序が逆転したり、命令キューで分岐前と分岐後のフローの同時管理が必要になったりと、論理が複雑になる割に性能に貢献しないということになる。したがって、遅延スロット命令の到着を待って処理する方式は、分岐性能にほとんど影響を与えることなく「スロット不当例外パターン」の命令発行を可能にする。
図15A及び図15Bに、本実施の形態の命令発行部の構成例を示す。通常の16/32ビット混在命令セットの命令発行部と特に違う部分はなく、新規に定義した「スロット不当例外パターン」を活用する命令を新たな32ビット命令とみなしてデコードする機能を追加したものになる。図15Aは最大32ビットの命令コードを供給し、16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行が可能である。図15Bは最大48ビットの命令コードを供給し、先行命令が16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行が可能である。
図15Aの例では、命令キャッシュ出力ICOを命令キューアライナIQ−ALNがバッファリングして先頭の32ビットコードを出力し、命令コードラッチOP0およびOP1にラッチする。命令コードラッチOP0出力は先行16ビットコードまたは32ビットコードの前半16ビットであり、命令コードラッチOP1出力は後行16ビットコードまたは32ビットコードの後半16ビットである。
命令デコーダDEC0は、命令コードラッチOP0およびOP1の出力を入力とし、先行16ビットコードまたは32ビットコードをデコードし、制御信号DECO0および命令デコーダDEC1の出力の無効化信号INV−DECO1を出力する。無効化は命令デコーダDEC0がデコードした命令が32ビットコードの場合に行う。
一方、命令デコーダDEC1は、命令コードラッチOP1の出力を入力とし、後行16ビットをデコードする。命令コードラッチOP1の出力が32ビットコードの前半であった場合はデコードせず、次のサイクルで命令デコーダDEC0に命令コードラッチOP0の出力として供給されるように、命令キューアライナIQ−ALNを制御する。
命令キューアライナIQ−ALNは、命令デコーダDEC0およびDEC1がデコードに成功しかつ発行した命令分だけ、0、16、または32ビットポインタを進め、次の命令コードを出力する。
図15Bの例では、命令キャッシュ出力ICOを命令キューアライナIQ−ALNがバッファリングして先頭の48ビットコードを出力し、命令コードラッチOP0、OP1、およびOPXにラッチする。命令コードラッチOP0出力は先行16ビットコードまたは先行32ビットコードの前半16ビットであり、命令コードラッチOP1出力は後行16ビットコード、後行32ビットコードの前半または先行32ビットコードの後半16ビット、命令コードラッチOPX出力は後行32ビットコードの後半16ビットである。
命令デコーダDEC0は、図15Aの例と同じである。一方、命令デコーダDEC1は、命令コードラッチOP1およびOPXの出力を入力とし、後行16ビットまたは後行32ビットをデコードする。
命令キューアライナIQ−ALNは、命令デコーダDEC0およびDEC1がデコードに成功しかつ発行した命令分だけ、0、16、32または48ビットポインタを進め、次の命令コードを出力する。
図16は制限を設けずに「スロット不当例外パターン」を全て新規32ビット命令定義に使用している本実施の形態を、実施の形態3の方式に近い形で実装した場合に、実施の形態3では図10のとおりであった命令プリデコーダが本実施の形態4の場合にどうなるかを例示する。
まず、命令フェッチユニットIFUで命令キャッシュICからフェッチした4命令コードICO0〜ICO3を各命令コードのプリデコーダPD0〜PD3によってプリデコードし、図4の通常の6種類の命令タイプTYPEのうち、遅延スロットに置けない命令、即ち、分岐命令BR、遅延スロット付分岐命令BRD、遅延スロットに置けないロードストア命令LSX、またはプレフィックスPXであるかどうかを判定し、遅延スロット不可信号DSNG−PD0〜DSNG−PD3を出力する。
また、命令タイプTYPE判定結果TYP−PD0〜TYP−PD3を出力する。本実施の形態では図4にはない32ビットコードの前半16ビットというタイプを追加する必要があるため、32ビット演算命令前半EXFH、32ビットロードストア命令前半LSFH、32ビット分岐命令前半BRFHを追加し、上記命令タイプTYPE判定結果TYP−PD0〜TYP−PD3として出力する。
命令タイプ前半TYP−FH0〜TYP−FH3、Xとしては、32ビット演算命令前半EXFH、32ビットロードストア命令前半LSFH、32ビット分岐命令前半BRFH、遅延スロット付分岐命令BRD、およびその他ETCを定義する。その他ETCとしては、32ビットコード後半、遅延スロットに置けない命令、および16ビット単独コードがある。
まず、命令タイプ調整回路TYP0〜TYP2は、上記命令タイプTYPE判定結果TYP−PD0〜TYP−PD2、隣接する先行命令コードの命令タイプ調整回路TYP0〜TYP1、Xからの命令タイプ前半TYP−FH0〜TYP−FH1、X、および遅延スロット不可信号DSNG−PD1〜DSNG−PD3から、隣接する後続命令コードの命令タイプ調整回路TYP1〜TYP3に送る命令タイプ前半TYP−FH1〜TYP−FH3および命令コードICO0〜ICO2に付加する命令タイプを生成する。
隣接する先行命令コードの命令タイプ調整回路TYP0〜TYP1、Xからの出力がその他ETCで、命令タイプTYPE判定結果TYP−PD0〜TYP−PD2が32ビット演算命令前半EXFH、32ビットロードストア命令前半LSFH、32ビット分岐命令前半BRFH、または遅延スロット付分岐命令BRDであれば、命令タイプTYPE判定結果TYP−PD0〜TYP−PD3をそのまま使用し、他の場合はその他ETCを命令タイプ前半TYP−FH0〜TYP−FH2として生成する。
一方、命令コードICO0〜ICO2に付加する命令タイプとしては、隣接する先行命令コードの命令タイプ調整回路からの命令タイプ前半TYP−FH0〜TYP−FH1、Xが32ビット演算命令前半EXFHであれば演算命令EXを出力し、32ビットロードストア命令前半LSFHであればロードストア命令LSを出力し、32ビット分岐命令前半BRFHであれば分岐命令BRを出力し、遅延スロット付分岐命令BRDであれば命令タイプTYPE判定結果TYP−PD0〜TYP−PD2を図4に従ってTYPをTYP−DSに変換して出力し、その他ETCの場合は以下を出力する。命令タイプTYPE判定結果TYP−PD0〜TYP−PD2が遅延スロット付分岐命令BRDならば、さらに隣接後続命令からの遅延スロット不可信号DSNG−PD1〜DSNG−PD3がアサートされば「スロット不当例外パターン」なので、プレフィックスコードPXを、アサートされなければ分岐命令BRを出力し、遅延スロットに置けないロードストア命令LSXならばロードストア命令LSを出力し、他の場合はそのまま命令タイプTYPE判定結果TYP−PD0〜TYP−PD2を出力する。
一方、命令タイプ調整回路TYP3の場合は、上記命令タイプ調整回路TYP0〜TYP2に対して、隣接後続命令からの遅延スロット不可信号DSNG−PD1〜DSNG−PD3に相当する信号を受けない点が異なるため、命令コードICO3に付加する命令タイプとして、隣接する先行命令コードの命令タイプ調整回路からの命令タイプ前半TYP−FH2がその他ETCで命令タイプTYPE判定結果TYP−PD0〜TYP−PD2が遅延スロット付分岐命令BRDの場合は常に分岐命令BRを出力する。他の場合は、上記命令タイプ調整回路TYP0〜TYP2と同様な動作をする。
更に、命令タイプ調整回路TYP3が出力した命令タイプ前半TYP−FH3をラッチTYPLがラッチして出力し、命令タイプ調整回路TYPXがこれを受けて、まず、命令タイプ前半TYP−FHXとしてはラッチTYPL出力をそのまま出力する。そして、上記命令タイプ調整回路TYP3が隣接後続命令からの遅延スロット不可信号DSNG−PD1〜DSNG−PD3に相当する信号を受けないためにできなかった処理を引き継いで行う。ラッチTYPL出力が遅延スロット付分岐命令BRDかつ隣接後続命令からの遅延スロット不可信号DSNG−PD0がアサートさればプレフィックス化信号コードPX−PD3をアサートし、他の場合はネゲートする。
以上のように、本実施例では、命令タイプ調整回路TYP0〜TYP3、Xはシリアルに接続されるため、実施例3に比べると低速な反面、「スロット不当例外パターン」を全て使用することができる。なお、一般に段数を最適化すればシリアルなN段接続はLogN段まで段数のオーダーを下げることができる。
実施の形態4によれば以下の作用効果を得る。
「スロット不当例外パターン」を32ビット命令として扱う場合は、前記方式で「スロット不当例外パターン」検出して、16/32ビット長混在命令セット方式と同様にディスパッチすれば良い。既に16/32ビット長混在命令セット方式に命令セットを拡張していて、命令の逐次デコードが必要になっている場合はこの方式が適している。この場合、「スロット不当例外パターン」を前述の効率的なスーパースカラ命令発行可能なパターンに制限するメリットはないため、「スロット不当例外パターン」を全て有効活用すべきである。したがって、この実施の形態によれば、既に16/32ビット長混在命令セットを実装しているプロセッサにおいて、分岐性能にほとんど影響を与えることなく「スロット不当例外パターン」約144.5Mパターンを全て新規32ビット命令定義に使用することができる。
《実施の形態5》
以上の実施の各実施の形態で活用した「スロット不当例外パターン」のような例外を発生するパターンだけでなく、その他に、プログラム上で意味のない2命令の組み合わせ(特定組み合わせパターン)にも本発明の概念を適用することができる。例えば、同一レジスタへの連続ロードの場合、1回目のロードのロード先のレジスタが2回目のロードのソースオペランドでなければ、1回目のロードは実行する必要がない。このような同一レジスタへの連続ロードは禁止されていないが、このような2命令の組み合わせを禁止して本発明を適用すればコード空間を拡張することができる。
例えば図11に例示されるように、オペランドを12ビット持つ命令で実行結果をレジスタに格納する命令が5命令あるとする。これらの任意の2命令を組み合わせて実行結果を格納するレジスタが同一となるパターンを作る。このとき、ADD命令は後行命令の場合には意味があり、MOV.L @(Rm,disp4),Rn命令は後行命令の場合で先行命令が実行結果を格納するレジスタがRmの場合には意味がある。パターンの検出を容易にするために、これら2命令を先行命令専用にすると、先行命令に5命令、後行命令に3命令使用して32ビットパターンを作ることができる。この結果、先行命令が5x212=20kパターン、後行命令が3x212=12kパターンあり、レジスタ番号が一致する確率が1/16なので、活用可能な32ビットパターンは15Mパターンとなる。「スロット不当例外パターン」に比べて実行結果を格納するレジスタが同一であることをチェックする手間が増えるが、新たに得られるパターンは多い。こうして得られたパターンは、実施の形態4と同様に逐次デコードすれば検出可能である。
一方、実施の形態3のように先行命令と後行命令が異なる必要がある実現方式に合わせるには、5命令を2命令と3命令に分ければよい。例えば、後行の3命令は変えずに、先行命令を後行に使用しない2命令に限定すればよい。この結果得られるパターンは、6Mパターンとなる。
図17は、本実施の形態を実施の形態3の方式に近い形で実装した場合に、実施の形態3では図10のとおりであった命令プリデコーダを本実施の形態向けに構成した例である。
実施の形態3では「スロット不当例外パターン」を使用し、前半が遅延スロット付分岐命令、後半が遅延スロットに置けない命令であったが、本実施の形態では「プログラム上で意味のない2命令の組み合わせ」を使用するので、これに対応して、遅延スロット付分岐信号BRD−PD0〜BRD−PD3及び遅延スロット不可信号DSNG−PD0〜DSNG−PD3の代わりに、前半部分候補信号FH−PD0〜FH−PD3および後半部分候補信号LH−PD0〜LH−PD3を使用する。また、比較回路CMP01、CMP12、CMP23、CMP30によって、隣接コード間で結果格納先レジスタ番号の一致検出をしている。この結果を、先行命令コードから後行命令コードへは前半部分候補信号FH−PD0〜FH−PD3に付加し、後行命令コードから先行命令コードへは後半部分候補信号LH−PD0〜LH−PD3に付加して送る。そして、命令タイプ調整回路TYP0〜TYP3、Xはこれらの信号から、本実施例の2命令の組み合わせを検出し、命令コードタイプを前半部分であればプレフィックスPXに、後半部分であれば「プログラム上で意味のない2命令の組み合わせ」としてのタイプに変換して、命令コードICO0〜ICO3に付加する。
図18は、本実施の形態を実施の形態4の図16の方式に近い形で実装した場合に、実施の形態4では図16のとおりであった命令プリデコーダを本実施の形態向けに構成した例である。
図17と同様に遅延スロット不可信号DSNG−PD0〜DSNG−PD3の代わりに、後半部分候補信号LH−PD0〜LH−PD3を使用し、比較回路CMP01、CMP12、CMP23、CMP30、によって、隣接コード間で結果格納先レジスタ番号の一致検出をし、この結果を後半部分候補信号LH−PD0〜LH−PD3に付加して送る。そして、命令タイプ調整回路TYP0〜TYP3、Xはこれらの信号から、実施例4と同様に、命令タイプ前半TYP−FH0〜TYP−FH3、Xを生成し、命令コードタイプを命令コードICO0〜ICO3に付加する。特に、本実施の形態の2命令の組み合わせを検出した場合に、命令コードタイプを前半部分であればプレフィックスPXに、後半部分であれば「プログラム上で意味のない2命令の組み合わせ」としてのタイプに変換して、命令コードICO0〜ICO3に付加する。このときのディスパッチ回路EX−ISD,LS−ISD,BR−ISDによる明レコードの分配機能は図12と同様でよい。
更に、本実施の形態を、例えば、同一レジスタへの3連続ロードのような意味のない3命令以上の組み合わせにも拡張することは、本技術分野の通常のスキルを有するエンジニアであれば容易であるから、其の詳細な説明は省略する。
実施の形態5によれば以下能作用効果を得る。
上記「スロット不当例外パターン」のように例外を発生するパターン以外に、プログラム上で意味のない2命令などの複数命令の組み合わせにも本発明の概念を適用することができる。例えば、同一レジスタへの連続ロードの場合、1回目のロードのロード先のレジスタが2回目のロードのソースオペランドでなければ、1回目のロードは実行する必要がない。このような同一レジスタへの連続ロードは禁止されていないが、このような2命令の組み合わせを禁止して本発明を適用すればコード空間を拡張することができる。更に、例えば、同一レジスタへの3連続ロードのような意味のない3命令以上の組み合わせにも拡張することができる。これにより、既に16/32ビット長混在命令セットを実装しているプロセッサにおいて、逐次でコードが必要な実施の形態4と同様な実装によって15Mパターン、並列デコード可能な実施の形態3と同様な実装で6Mパターンを全て新規32ビット命令定義に使用することができるようになり、命令拡張による性能や効率の向上に資することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、16ビット固定長命令セットまたは16/32ビット長混在命令セットのプロセッサのうち、ディレイスロット命令を持ち、スロット不当例外の発生するプロセッサに適用した場合について説明したが、本発明はそれに限定されず、32ビット固定長命令セットまたは32/64ビット長混在命令セットのプロセッサなどにも適用可能である。
本発明は、命令コードの基本長に対して多倍長の新たな命令コードを命令セットに追加するための技術に関し、例えば、16ビット固定長命令セットまたは16/32ビット長混在命令セットのプロセッサのうち、ディレイスロット命令を持ち、スロット不当例外の発生するプロセッサに広く適用することができる。
MPU データプロセッサ
CPU プロセッサコア
IBUS 内部バス
EIF 外部インタフェース回路
PER 内蔵周辺モジュール
IC 命令キャッシュ
IFU 命令フェッチユニット
PD プリデコーダ
GIQ グローバル命令キュー
BRC 分岐制御部
DC データキャッシュ
LSU ロードストアユニット
LSIQ ロードストア命令キュー
LSID ロードストア命令デコーダ
LSE ロードストア命令実行部
EXIQ 実行命令キュー
EXID 演算命令デコーダ
EXE 演算命令実行部
BIU バスインタフェースユニット
IC1、IC2 命令キャッシュアクセス
GIB グローバル命令バッファGIB
EXPL 演算命令用パイプライン
EXIB ローカル命令バッファ
EXRR ローカルレジスタリード
EX 演算
WB レジスタライトバック
LSPL ロードストア命令用パイプライン
LSIB ローカル命令バッファ
LSRR ローカルレジスタリード
LSA アドレス計算
DC1、DC2 データキャッシュアクセス
BRPL 分岐命令用パイプライン
BR 分岐
IFU 命令フェッチユニット
GIQ0〜15 16命令分の命令キューエントリ
GIQP グローバル命令キューポインタ
GIQP−DEC グローバル命令キューポインタデコーダ
EXP 演算命令ポインタ
LSP ロードストア命令ポインタ
BRP 分岐命令ポインタ
EX−ISD 演算命令探索ディスパッチ回路
LS−ISD ロードストア命令探索ディスパッチ回路
BR−ISD 分岐命令探索ディスパッチ回路
IREQ−GEN 命令フェッチ要求生成部
ICOV 命令キャッシュ出力有効信号
GIQU0〜3 グローバル命令キュー更新信号
GIQ0〜3、GIQ4〜7、GIQ8〜11、GIQ12〜15 グローバル命令キューエントリグループ
GIQO0〜15 グローバル命令キュー出力
BR−IV 分岐命令コード有効信号
BR−INST 分岐命令
BR−PV 分岐プレフィックス候補有効信号
BR−IV 分岐命令コード有効信号
図1は「スロット不当例外パターン」を構成する「遅延スロット付分岐命令」を例示する説明図である。 図2は図1の命令の他に「遅延スロットに置けない命令」として利用される命令を更に例示する説明図である。 図1と図2の命令の組み合わせによる「スロット不当例外パターン」をオペランドフィールドのビット数に応じて分類して例示した説明図である。 図4は命令の種類TYPEに対する命令コードの上位4ビットCODEの割当を分類した説明図である。 図5には本実施の形態に係るデータプロセッサを例示するブロック図である。 図6はプロセッサコアの構成を例示するブロック図である。 図7はプロセッサコアのパイプライン構成を例示する説明図である。 図8は本実施の形態に係るデータプロセッサのグローバル命令キューGIQの構成を例示するブロック図である。 図9は図8のグローバル命令キューGIQの分岐命令探索ディスパッチ回路BR−ISDの構成を例示するブロック図である。 図10は実施の形態3におけるプリデコーダの構成を例示するブロック図である。 図11は同一レジスタへの連続ロードのような無意味な2命令の組み合わせによってコード空間を拡張する実施の形態5で着目する命令として挙げたオペランドを12ビット持つ命令で実行結果をレジスタに格納する命令を例示する説明図である。 図12は実施の形態1においてグローバル命令キューGIQの作用を説明するためのフローチャートである。 図13は実施の形態2においてグローバル命令キューGIQの作用を説明するための図12に対応されるフローチャートである。 図14Aは分岐命令バッファを1段有する分岐制御部BRCのデコーダ構成を例示するブロック図である。 図14Bは分岐命令バッファを複数段有する分岐制御部BRCのデコーダ構成を例示するブロック図である。 図15Aは実施の形態4において最大32ビットの命令コードを供給し、16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行を可能とするデコーダの構成を例示するブロック図である。 図15Bは実施の形態4において最大48ビットの命令コードを供給し、先行命令が16ビットコードの2命令スーパースカラ実行と、32ビットコードのスカラ実行を可能とするデコーダの構成を例示するブロック図である。 図16はスロット不当例外パターンを全て新規32ビット命令定義に使用している実施の形態4を、実施の形態3の方式に近い形で実装した場合に、実施の形態3における図10の命令プリデコーダを実施の形態に対応させたときの構成を例示するブロック図である。 図17は実施の形態5を実施の形態3の方式に近い形で実装した場合に実施の形態3では図10のとおりであった命令プリデコーダを実施の形態5向けに構成した例を示すブロック図である。 図18は実施の形態5を実施の形態4の図16の方式に近い形で実装した場合に実施の形態4では図16のとおりであった命令プリデコーダを実施の形態5向けに構成した例を示すブロック図である。
命令キャッシュアクセスIC1およびIC2ステージでは、命令フェッチユニットIFUが命令キャッシュICから命令コードをフェッチしてプリデコーダPDでプリデコードした後、続くグローバル命令バッファGIBステージのグローバル命令キューGIQに格納する。グローバル命令バッファGIBステージでは、ロードストア、演算、並びに、分岐の各カテゴリの命令をプリデコード結果などを用いて1命令ずつ抽出してディスパッチし、それぞれローカル命令バッファLSIBおよびEXIB、並びに、分岐BRステージで、それぞれロードストアユニットLSUの命令キューLSIQ、演算命令実行ユニットEXUの命令キューEXIQ、並びに、命令フェッチユニットIFUの分岐制御部BRCに格納する。そして、分岐BRステージでは、分岐命令を受取った場合には直ちに分岐処理が開始される。
次に、図12のフローチャートを用いてグローバル命令キューGIQの作用を説明する。(a)命令キャッシュ出力有効信号ICOVがアサートされると、(b)グローバル命令キューポインタデコーダGIQP−DECは、グローバル命令キュー更新信号GIQU0〜3のうち、グローバル命令キューポインタGIQPの指している命令キューエントリグループの更新信号をアサートする。(c)そして、グローバル命令キューGIQは、グローバル命令キューエントリグループGIQ0〜GIQ3、GIQ4〜GIQ7、GIQ8〜GIQ11、またはGIQ12〜GIQ15のうち、対応するグローバル命令キュー更新信号GIQU0〜GIQ3がアサートされているグループに、命令フェッチユニットIFUで命令キャッシュICからフェッチしてプリデコーダPDでプリデコードした4命令コードICPDO0〜ICPD3をラッチし、ラッチしたグループを有効にする。特に制限されないが、命令コードICPDO0〜ICPD3にはプリデコード結果として命令タイプを示す情報が付加される。更に、(d)あらかじめグローバル命令キューポインタGIQPに1を加算した値を新グローバル命令キューポインタGIQP−NEWとして出力しておき、この値でグローバル命令キューポインタGIQPを更新する。
図6の分岐制御部BRCは、分岐命令コードおよびその直前の命令コードから成る分岐命令BR−INSTをデコードして、命令フェッチユニットIFUを制御して、命令フローを管理する。図12のフローチャートを用いて説明したように、分岐命令コード有効信号BR−IVおよび分岐プレフィックス候補有効信号BR−PVの値に応じて、分岐命令BR−INSTには4通りの状態(o),(p),(n),(q)がある。それぞれの場合について、分岐制御部BRCのデコード動作を図14A及び図14Bに基づいて説明する。
また、図12の(p)の分岐命令コードだけが有効にさた場合は、(o)の場合と同様に、この状態であると判断し、分岐命令ラッチBR−Iを制御して、分岐命令BR−INSTの後半部分を分岐命令として分岐命令デコーダBR−DECに供給する。そして、先行的に供給された分岐プレフィックス候補が有効ならば、共に使用して前記(o)と同様に処理する。一方、分岐直後等で先行的に分岐プレフィックス候補が供給されていなければ、通常の分岐命令として処理する。
まず、(a)〜(e)は同一である。(f)では直前の命令コードではなく直後の命令コードを出力するように変更する。(f)の後、無条件に(g)に進んでいたものを「最後の有効な命令以外で発見」したら(g)に進むように変更し、(g)に進まなかった場合は(k)に進むように変更する。(g)から「先頭で発見」の場合に進んでいた(i)は削除して、無条件で(h)に進むように変更し、(h)の分岐プレフィックスをポストフィックスに変更する。次に、探索対象の有効な命令コードの最後のコードがプレフィックスである場合の考慮が不要となったので、(j)では任意の命令コードおよびその直後の命令コードを出力するように変更し、(k)から「有効命令コードあり」の場合に進んでいた(l)は削除して、無条件で(m)に進むように変更し、(m)の分岐プレフィックスをポストフィックスに変更する。
図17と同様に遅延スロット不可信号DSNG−PD0〜DSNG−PD3の代わりに、後半部分候補信号LH−PD0〜LH−PD3を使用し、比較回路CMP01、CMP12、CMP23、CMP30、によって、隣接コード間で結果格納先レジスタ番号の一致検出をし、この結果を後半部分候補信号LH−PD0〜LH−PD3に付加して送る。そして、命令タイプ調整回路TYP0〜TYP3、Xはこれらの信号から、実施例4と同様に、命令タイプ前半TYP−FH0〜TYP−FH3、Xを生成し、命令コードタイプを命令コードICO0〜ICO3に付加する。特に、本実施の形態の2命令の組み合わせを検出した場合に、命令コードタイプを前半部分であればプレフィックスPXに、後半部分であれば「プログラム上で意味のない2命令の組み合わせ」としてのタイプに変換して、命令コードICO0〜ICO3に付加する。このときのディスパッチ回路EX−ISD,LS−ISD,BR−ISDによる命令コードの分配機能は図12と同様でよい。

Claims (22)

  1. 複数の命令パイプラインを有するデータプロセッサであって、
    並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キューと、
    前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路とを有し、
    個々の命令コードの本来の処理が禁止されることになる特定の複数の命令コードの組合せによる禁止組合せパターンを別の命令として追加定義した命令セットを有する、データプロセッサ。
  2. 前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は、当該組み合わせパターンの後半の命令コードパターンのみで定義される命令コードと同じ命令タイプに限定される、請求項1記載のデータプロセッサ。
  3. 前記特定の複数の命令コードの禁止組み合わせパターンにおける前半及び後半のそれぞれの命令コードパターンは異なる命令コードである、請求項2記載のデータプロセッサ。
  4. 前記ディスパッチ回路は、探索対象とする複数の命令コードの探索単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードを有効として出力すると共にその直前の命令コードをプレフィックスコード候補として出力し、前記探索単位の先頭で目的とする命令コードタイプの命令コードを検出したときは当該先頭の命令コードを有効として出力し、前記探索単位の後端まで目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力する、請求項3記載のデータプロセッサ。
  5. 前記命令パイプラインは、プレフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するときは当該特定の複数の命令コードの組み合わせを、追加定義された命令として処理し、プレフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するものでないときないときはこれを無視する、請求項4記載のデータプロセッサ。
  6. 前記命令パイプラインは、プレフィックスコード候補として供給された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された命令コードに対して前記特定の複数の命令コードの組み合わせを構成するためのプレフィックスコード候補として用いる、請求項5記載のデータプロセッサ。
  7. 前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は分岐命令に専用化され、当該禁止組み合わせパターンの後半の命令コードパターンには分岐命令の命令コードが使用される、請求項2記載のデータプロセッサ。
  8. 前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける前半の命令コードパターンは遅延スロット付き分岐命令であり、後半の命令コードパターンは遅延スロットに置けない遅延スロット付き分岐命令以外の分岐命令である、請求項7記載のデータプロセッサ。
  9. 前記ディスパッチ回路は、探索対象とする複数の命令コードの探索単位の中の最後以外で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードを有効として出力すると共にその直後の命令コードをポストフィックスコード候補として出力し、前記探索単位の中の最後で目的とする命令コードタイプの命令コードを検出したときは当該最後の命令コードを有効として出力する、請求項7記載のデータプロセッサ。
  10. 前記命令パイプラインは、ポストフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するときは当該特定の複数の命令コードの組み合わせを追加定義された命令として処理し、ポストフィックスコード候補として供給された命令コードが前記特定の複数の命令コードの組み合わせを構成するものでないときないときはこれを無視する、請求項9記載のデータプロセッサ。
  11. 前記命令パイプラインは、前記ディスパッチ回路から供給された前記最後の命令コードに対して、その直後の命令コード探索において先頭で検出されて供給された命令コードを前記特定の複数の命令コードの組み合わせを構成するためのポストフィックスコード候補として用いる、請求項10記載のデータプロセッサ。
  12. 前記特定の複数の命令コードの禁止組み合わせパターンにおける後半の命令コードパターンには前半の命令コードパターンとは異なる命令コードパターンが使用され、
    前記ディスパッチ回路はその前段にプリデコーダを有し、
    前記プリデコーダは、命令コードの命令コードタイプを判別すると共に、隣接する命令コード間で命令コードタイプの情報を交換して、命令コードが前記禁止組み合わせパターンを構成する命令タイプであるかを確定するための情報を前記ディスパッチ回路に供給し、
    前記ディスパッチ回路は、前記確定するための情報を用いることにより(前記禁止組み合わせパターンによる別定義された命令の命令タイプが当該禁止組み合わせパターンの後半の命令コードパターンによる命令タイプと異なる場合にも)前記禁止組み合わせパターンによる命令を供給する命令パイプラインを決定する、請求項1記載のデータプロセッサ。
  13. 前記命令セットに含まれる命令コードは基本長とそれに対する2倍長の命令コードが混在する混在命令コードであり、
    前記ディスパッチ回路は基本長の命令コードに対しては基本長単位で対応する命令パイプラインに供給し、2倍長の命令コードに対しては2倍長単位で対応する命令パイプラインに供給し、
    前記禁止組合せパターンの命令コードは2倍長命令コードとして定義される、請求項1記載のデータプロセッサ。
  14. 複数の命令パイプラインを有するデータプロセッサであって、
    並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キューと、
    前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路とを有し、
    本来組み合わせが禁止されていないが意味のない複数の命令コードの組み合わせによる禁止組合せパターンを別の命令として追加定義した命令セットを有する、データプロセッサ。
  15. 複数の命令パイプラインを有するデータプロセッサであって、
    並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キューと、
    前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路とを有し、
    前記命令パイプラインは更に、個々の命令コードの本来の処理が禁止されることになる特定の複数の命令コードの組み合わせに対して、単一の別の命令コードとして処理を行い、
    前記ディスパッチ回路は、前記特定の複数の命令コードの組み合わせを探索して対応する命令パイプラインに供給する、データプロセッサ。
  16. 前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は、当該組み合わせパターンの後半の命令コードパターンのみで定義される命令コードと同じ命令タイプに限定される、請求項15記載のデータプロセッサ。
  17. 前記特定の複数の命令コードの禁止組み合わせパターンにおける前半及び後半のそれぞれの命令コードパターンは異なる命令コードである、請求項16記載のデータプロセッサ。
  18. 前記特定の複数の命令コードの禁止組み合わせパターンによって追加定義される命令は分岐命令に専用化され、当該禁止組み合わせパターンの後半の命令コードパターンには分岐命令の命令コードが使用される、請求項16記載のデータプロセッサ。
  19. 前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける前半の命令コードパターンは遅延スロット付き分岐命令であり、後半の命令コードパターンは遅延スロットに置けない遅延スロット付き分岐命令以外の分岐命令である、請求項18記載のデータプロセッサ。
  20. 前記組み合わせによって別定義される前記特定の複数の命令コードの禁止組み合わせパターンにおける後半の命令コードパターンには前半の命令コードパターンとは異なる命令コードパターンが使用され、
    前記ディスパッチ回路はその前段にプリデコーダを有し、
    前記プリデコーダは、命令コードの命令コードタイプを判別すると共に、隣接する命令コード間で命令コードタイプの情報を交換して、命令コードが前記禁止組み合わせパターンを構成する命令タイプであるかを確定するための情報を前記ディスパッチ回路に供給し、
    前記ディスパッチ回路は、確定するための情報を用いることにより(前記禁止組み合わせパターンによる別定義された命令の命令タイプが当該禁止組み合わせパターンの後半の命令コードパターンによる命令タイプと異なる場合にも)前記禁止組み合わせパターンによる命令を供給する命令パイプラインを決定する、請求項15記載のデータプロセッサ。
  21. 前記命令セットに含まれる命令コードは基本長とそれに対する2倍長の命令コードが混在する混在命令コードであり、
    前記ディスパッチ回路は基本長の命令コードに対しては基本長単位で対応する命令パイプラインに供給し、2倍長の命令コードに対しては2倍長単位で対応する命令パイプラインに供給し、
    前記禁止組合せパターンの命令コードは2倍長命令コードとして定義される、請求項15記載のデータプロセッサ。
  22. 複数の命令パイプラインを有するデータプロセッサであって、
    並列的にフェッチされた複数の命令コードを順次蓄積するグローバル命令キューと、
    前記グローバル命令キューから出力された複数の命令コードに対して命令コードタイプ毎に探索を行い、探索結果に基づいて命令コードを命令パイプライン毎に振り分けるディスパッチ回路とを有し、
    前記命令パイプラインは更に、本来組み合わせが禁止されていないが意味のない特定の複数の命令コードの組み合わせに対して、単一の別の命令コードとして処理を行い、
    前記ディスパッチ回路は、前記特定の複数の命令コードの組み合わせを探索して対応する命令パイプラインに供給する、データプロセッサ。
JP2013510955A 2011-04-21 2012-04-10 データプロセッサ Active JP5658358B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013510955A JP5658358B2 (ja) 2011-04-21 2012-04-10 データプロセッサ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011094800 2011-04-21
JP2011094800 2011-04-21
PCT/JP2012/059757 WO2012144374A1 (ja) 2011-04-21 2012-04-10 データプロセッサ
JP2013510955A JP5658358B2 (ja) 2011-04-21 2012-04-10 データプロセッサ

Publications (2)

Publication Number Publication Date
JPWO2012144374A1 true JPWO2012144374A1 (ja) 2014-07-28
JP5658358B2 JP5658358B2 (ja) 2015-01-21

Family

ID=47041486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013510955A Active JP5658358B2 (ja) 2011-04-21 2012-04-10 データプロセッサ

Country Status (3)

Country Link
US (1) US9910674B2 (ja)
JP (1) JP5658358B2 (ja)
WO (1) WO2012144374A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US9372695B2 (en) * 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US20180211046A1 (en) * 2017-01-26 2018-07-26 Intel Corporation Analysis and control of code flow and data flow
US11119777B1 (en) * 2020-04-22 2021-09-14 International Business Machines Corporation Extended prefix including routing bit for extended instruction format
CN112199158B (zh) * 2020-10-16 2021-11-23 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JP2682469B2 (ja) * 1994-09-20 1997-11-26 日本電気株式会社 命令コード符号化方式
JP3570287B2 (ja) 1999-03-31 2004-09-29 セイコーエプソン株式会社 マイクロコンピュータ
JP3627725B2 (ja) 2002-06-24 2005-03-09 セイコーエプソン株式会社 情報処理装置及び電子機器
JP5357475B2 (ja) 2008-09-09 2013-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ

Also Published As

Publication number Publication date
JP5658358B2 (ja) 2015-01-21
WO2012144374A1 (ja) 2012-10-26
US20140040600A1 (en) 2014-02-06
US9910674B2 (en) 2018-03-06

Similar Documents

Publication Publication Date Title
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
JP5357475B2 (ja) データプロセッサ
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
US6892293B2 (en) VLIW processor and method therefor
US20030079114A1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
JP3714999B2 (ja) 命令キューをスキャンするための装置およびその方法
US20030154358A1 (en) Apparatus and method for dispatching very long instruction word having variable length
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
JP4230504B2 (ja) データプロセッサ
JP5209933B2 (ja) データ処理装置
JP5658358B2 (ja) データプロセッサ
US20060259742A1 (en) Controlling out of order execution pipelines using pipeline skew parameters
US11200059B2 (en) Processor with a program counter increment based on decoding of predecode bits
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US7725690B2 (en) Distributed dispatch with concurrent, out-of-order dispatch
US9170638B2 (en) Method and apparatus for providing early bypass detection to reduce power consumption while reading register files of a processor
US7836282B2 (en) Method and apparatus for performing out of order instruction folding and retirement
JP2815236B2 (ja) スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
JP7409208B2 (ja) 演算処理装置
JP5657760B2 (ja) データプロセッサ
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache
JP2004152049A (ja) データ処理装置
WO1999015958A1 (fr) Calculateur a tres long mot d'instruction pourvu d'une fonction de preexecution partielle
JPH0667882A (ja) データ処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141015

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350