JP2007200180A - プロセッサシステム - Google Patents

プロセッサシステム Download PDF

Info

Publication number
JP2007200180A
JP2007200180A JP2006020332A JP2006020332A JP2007200180A JP 2007200180 A JP2007200180 A JP 2007200180A JP 2006020332 A JP2006020332 A JP 2006020332A JP 2006020332 A JP2006020332 A JP 2006020332A JP 2007200180 A JP2007200180 A JP 2007200180A
Authority
JP
Japan
Prior art keywords
instruction
coprocessor
main processor
processor
extension
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.)
Pending
Application number
JP2006020332A
Other languages
English (en)
Inventor
Shinji Kashiwagi
伸次 柏木
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.)
NEC Electronics Corp
Original Assignee
NEC 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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2006020332A priority Critical patent/JP2007200180A/ja
Priority to US11/625,639 priority patent/US7539847B2/en
Publication of JP2007200180A publication Critical patent/JP2007200180A/ja
Pending 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

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)

Abstract

【課題】コプロセッサの命令実行サイクル数に合わせて主プロセッサの命令実行サイクル数を増加することに起因する分岐ペナルティの悪化を抑制する。
【解決手段】プロセッサシステム1は、コプロセッサ20で実行される拡張命令の命令実行サイクル数が主プロセッサ10で実行される基本命令の命令実行サイクル数より大きい場合、コプロセッサ20による拡張命令の実行時に、少なくとも拡張命令の命令実行サイクル数と基本命令の命令実行サイクル数の差に相当する期間だけ、拡張命令より後に取得する後続命令に対するパイプライン処理を停止する。
【選択図】図1

Description

本発明は、主プロセッサにコプロセッサが接続されたプロセッサシステムに関する。
マイクロプロセッサの性能を強化するために、特定の処理に特化したコプロセッサを利用する技術が知られている。コプロセッサを用いたプロセッサシステムにおける主プロセッサとコプロセッサの間でのデータの受け渡しは、主プロセッサとコプロセッサが共にアクセス可能な記憶領域を介して行われるのが一般的である。例えば、主プロセッサが備える汎用レジスタが、主プロセッサとコプロセッサの間でのデータの授受を行うための記憶領域として使用される。
また、コプロセッサを用いたプロセッサシステムでは、コプロセッサにおいて実行される命令(以下、拡張命令と呼ぶ)は、主プロセッサからコプロセッサに対して発行されるのが一般的である。コプロセッサは、主プロセッサが備える汎用レジスタからデータを取得して拡張命令を実行し、拡張命令の実行結果を汎用レジスタに格納する。
主プロセッサがコプロセッサによる拡張命令の実行結果を利用するためには、主プロセッサは、コプロセッサによる実行結果の書き出しが終了した後に、実行結果が格納された記憶領域にアクセスする必要がある。このため、コプロセッサを備えるプロセッサシステムでは、汎用レジスタ等の記憶領域にコプロセッサによる実行結果の書き出しが行われるタイミングと、コプロセッサの実行結果が格納された記憶領域に主プロセッサがアクセスするタイミングとを調整する機構が必要となる。
このような調整機構の1つに、主プロセッサとコプロセッサのパイプラインステージ数を揃える構成がある(例えば特許文献1を参照)。具体的には、フェッチした命令が主プロセッサで実行される命令(以下、基本命令と呼ぶ)であるかコプロセッサで実行される拡張命令であるかに依らず、命令をフェッチしてから命令が完了するまでの過程に必要なクロックサイクル数を一定とすることが行われている。このような構成であれば、フェッチした命令が基本命令であるか拡張命令であるかに依らずにインターロック制御等のパイプライン制御を行えば良いため、パイプライン制御が容易となる。
主プロセッサとコプロセッサのパイプラインステージ数を揃えることによって、主プロセッサとコプロセッサの同期を確保したプロセッサシステムの一例を図7に示す。図7のプロセッサシステム7は、主プロセッサ70にコプロセッサ80が接続されている。以下、プロセッサシステム7の構成要素について説明する。
命令フェッチ部72は、プログラムカウンタ721に格納されたアドレス情報を用いて、命令メモリ71から命令を順次取り出す。PC更新部722は、命令の取得後、次の命令取得のためにプログラムカウンタ721の値を更新する。
命令デコード部73は、命令フェッチ部72が取得した命令のデコードを行う。命令デコード部73は、デコードした命令が基本命令である場合は、主プロセッサ70が有する演算器に対して命令を発行する。他方、デコードした命令が拡張命令である場合は、コプロセッサI/F78を介してコプロセッサ80に命令を転送する。コプロセッサI/F78からは、拡張命令の実行を要求する要求信号(CPRQ)、命令コード(CPOP)、及び即値(CPIMM)がコプロセッサ80に対して転送される。
命令デコード部73が有するパイプライン制御部731は、主プロセッサ70のパイプライン処理のインターロック制御を行う。
主プロセッサ70は、乗算・積和演算器(MAC)741、算術・論理演算器(ALU)742、及びバレルシフタ(BSFT)743を備えている。基本命令によって規定される処理の種別に応じて、MAC741、ALU742、及びBSFT743の中から演算器が選択され、汎用レジスタ74から入力値のフェッチが行われて命令が実行される。基本命令の実行結果は、デスティネーションバスを介して汎用レジスタ74に格納される。なお、MUX751は、ALU742のオペランドを即値(IMM)と汎用レジスタ74の間で選択する回路である。また、セレクタ77は、MAC741、ALU742、及びBSFT743の出力を選択してデスティネーションバスに出力する回路である。
コプロセッサ80が有する制御部81は、コプロI/F78を介して入力されるCPRQ、CPOP、CPIMMを受信する。命令デコード部811は、拡張命令をデコードし、コプロセッサ80が備える演算器において拡張命令を実行するために必要となる制御信号を出力する。この制御信号には、演算器に対する処理要求、オペランドレジスタの指定、即値が含まれる。
コプロセッサ80は、乗算器(MUL)821並びに822、及びユーザ定義演算器823を有している。拡張命令によって規定される処理の種別に応じて、MUL821及び822、又はユーザ定義演算器823が選択され、汎用レジスタ74から入力値のフェッチが行われて命令が実行される。拡張命令の実行結果は、デスティネーションバスを介して汎用レジスタ74に格納される。なお、MUL821は、32ビット×16ビットの乗算器の前半部であり、Boothアルゴリズムによる部分積生成等を行う。MUL822は32ビット×16ビットの後半部であり、部分積の加算を行う。MUL821及び822の2段によって32ビット×16ビット乗算命令が実行される。
周波数フラグ79は、プロセッサシステム7のクロック周波数が高速であるか低速であるかを示すフラグであり、主プロセッサ70及びコプロセッサ80のEXステージを分割すべきクロック周波数の境界を定めるものである。例えば、クロック周波数が200MHzを超えるとEXステージの分割が必要となる場合は、クロック周波数が200MHzより高い場合にフラグがセットされ、200MHz以下の場合にフラグが解除される。
主プロセッサ70においては、周波数フラグ79がセットされている場合、つまりクロック周波数が高速である場合は、マルチプレクサ752乃至754がフリップフロップ(FF)761乃至763からの入力信号を出力する。他方、周波数フラグ79が解除され、クロック周波数が低速である場合は、マルチプレクサ752乃至754がMAC741、ALU742、又はBSFT743からの入力信号を出力する。
同様に、コプロセッサ80においては、周波数フラグ79がセットされている場合、つまりクロック周波数が高速である場合は、マルチプレクサ841乃至843が、フリップフロップ(FF)831乃至833からの入力信号を出力する。他方、周波数フラグ79が解除され、クロック周波数が低速である場合は、マルチプレクサ841乃至843が、MUL821又はユーザ定義演算器823からの入力信号を出力する。
また、主プロセッサ70が有するパイプライン制御部731は、周波数フラグ79をモニタして主プロセッサ70のEXステージに要するクロックサイクル数を把握し、周波数フラグ79がセットされている場合は、EXステージをEX1ステージ及びEX2ステージの2ステージに分割して2クロックサイクルで動作させる。
同様に、コプロセッサ80が有する制御部81は、周波数フラグ79をモニタしてコプロセッサ80のEXステージに要するクロックサイクル数を把握し、周波数フラグ79がセットされている場合は、EXステージをEX1ステージ及びEX2ステージの2ステージに分割して2クロックサイクルで動作させる。
プロセッサシステム7のパイプライン処理の概念を図8のタイムチャートを用いて説明する。図8(a)は、クロック周波数が低速であり、IFステージ、DECステージ、EXステージの各ステージがそれぞれ1クロックサイクルで実行される場合を示している。IFステージでは命令フェッチ部72の処理が行われ、DECステージでは命令デコード部73の処理が行われる。EXステージでは、基本命令の場合は、主プロセッサ70の演算器(MAC741、ALU742、又はBSFT743)による演算、及び汎用レジスタ74への実行結果の書き出しが行われる。また、拡張命令の場合は、EXステージでは、命令デコード部811での拡張命令のデコード、コプロセッサ80の演算器(MUL821、822、又はユーザ定義演算器823)による演算、及び汎用レジスタ74への実行結果の書き出しが行われる。
他方、図8(b)は、クロック周波数が高速であり、EXステージがEX1ステージ及びEX2ステージに分割され、2クロックサイクルで実行される場合を示している。基本命令の場合は、主プロセッサ70の演算器(MAC741、ALU742、又はBSFT743)による演算がEX1ステージにおいて行われ、汎用レジスタ74への実行結果の書き出しがEX2ステージで行われる。拡張命令の場合は、MUL821又はユーザ定義演算器823による演算がEX1ステージにおいて行われ、MUL822による演算、及び汎用レジスタ74への実行結果の書き出しがEX2ステージで行われる。
このように、プロセッサシステム7は、クロック周波数が高速である場合にコプロセッサ80のEXステージを2ステージに分割し、これに合わせて主プロセッサ70のEXステージも2ステージに分割するものである。これによって、主プロセッサ70で実行される基本命令のデコードから実行完了までに要するクロックサイクル数を、コプロセッサ80で実行される拡張命令のデコードから実行完了までに要するクロックサイクル数に合わせて変更することができる。なお、本明細書では、命令のデコードから実行完了までに要するクロックサイクル数のことを命令実行サイクル数と呼ぶこととする。
このため、プロセッサシステム7は、主プロセッサ70とコプロセッサ80のパイプラインステージ数及び命令実行サイクル数を揃えることができ、主プロセッサとコプロセッサの同期確保が可能となる。
特開平9−319578号公報
上述したプロセッサシステム7のように、主プロセッサとコプロセッサの命令実行サイクル数を揃えることによって主プロセッサとコプロセッサの同期を確保するプロセッサシステムにおいては、コプロセッサの命令実行に要するクロックサイクル数が増加する場合には、主プロセッサの処理能力に関わらず、主プロセッサの命令実行サイクル数をコプロセッサの命令実行サイクル数に合わせて増加する必要がある。
命令実行サイクル数の増加、つまりパイプラインステージ数の増加は、分岐ペナルティの悪化の原因となる。このため、上述した従来のプロセッサシステムでは、高速動作時などのようにコプロセッサの命令実行サイクル数が増加すると、コプロセッサだけでなく主プロセッサでも分岐ペナルティが悪化するという課題がある。
本発明にかかるプロセッサシステムは、主プロセッサと、前記主プロセッサに接続されるコプロセッサとを備えるプロセッサシステムであって、前記コプロセッサで実行される拡張命令の命令実行サイクル数が前記主プロセッサで実行される基本命令の命令実行サイクル数より大きい場合、前記コプロセッサによる拡張命令の実行時に、少なくとも前記拡張命令の命令実行サイクル数と前記基本命令の命令実行サイクル数の差に相当する期間だけ、前記拡張命令より後に取得する後続命令に対するパイプライン処理を停止するものである。
このような構成により、基本命令の命令実行サイクル数と拡張命令の命令実行サイクル数とが異なる場合に、主プロセッサがコプロセッサによる拡張命令の実行完了を待ち合わせることができる。したがって、コプロセッサの命令実行サイクル数に合わせて、主プロセッサの命令実行サイクル数を変更する必要がなくなる。このため、本発明にかかるプロセッサシステムは、コプロセッサの命令実行サイクル数に合わせて主プロセッサの命令実行サイクル数を増加することに起因する分岐ペナルティの悪化を抑制することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
発明の実施の形態1.
本実施の形態にかかるプロセッサシステム1の構成を図1に示す。プロセッサシステム1は、主プロセッサ10にコプロセッサ20が接続された構成を有する。以下では、プロセッサシステム1が有する各構成要素について説明する。
命令フェッチ部12は、プログラムカウンタ121に格納されたアドレス情報を用いて、命令メモリ71から命令を順次取り出す。PC更新部122は、命令の取得後に、次の命令取得のためにプログラムカウンタ721の値を更新する。
命令デコード部13は、命令フェッチ部12が取得した命令のデコードを行う。命令デコード部13は、デコードした命令が基本命令である場合は、主プロセッサ10が有する演算器に対して命令を発行する。他方、デコードした命令が拡張命令である場合は、コプロセッサI/F78を介してコプロセッサ20に命令を転送する。コプロセッサI/F78からは、拡張命令の実行を要求する要求信号(CPRQ)、命令コード(CPOP)、及び即値(CPIMM)がコプロセッサ20に対して転送される。
パイプライン制御部131は、パイプライン処理のインターロック制御を行う。なお、パイプライン制御部131は、コプロセッサ20から入力されるCPWAIT信号に基づいて、パイプラインのインターロック制御を行う点が特徴である。CPWAIT信号を用いたインターロック制御の詳細については後述する。
汎用レジスタ74、演算器(MAC741、ALU742、BSFT743)、MUX751、セレクタ77は、上述した従来のプロセッサシステム7が有するものと同一である。
ただし、主プロセッサ10では、コプロセッサ20の命令実行サイクル数の変更に応じて、主プロセッサの命令実行サイクル数の変更を行う必要はない。このため、EXステージの分割によって命令実行サイクル数を変更するために従来のプロセッサシステム7が有していたFF761乃至763、MUX752乃至754は、本実施の形態の主プロセッサ1では省略されている。
次にコプロセッサ20の構成要素について説明する。制御部21は、コプロI/F78を介して入力されるCPRQ、CPOP、CPIMMを受信する。命令デコード部811は、拡張命令をデコードし、コプロセッサ80が備える演算器における拡張命令の実行に必要な制御信号を出力する。この制御信号には、演算器に対する処理要求、オペランドレジスタの指定、及び即値が含まれる。また、制御部21は、周波数フラグ79をモニタしてコプロセッサ20のEXステージに要するクロックサイクル数を把握し、周波数フラグ79がセットされている場合は、EXステージをEX1ステージ及びEX2ステージの2ステージに分割して2クロックサイクルで動作させる。
さらに、EXステージを分割して2クロックサイクルで動作させる場合には、制御部21から主プロセッサ10に対して出力されるCPWAIT信号が有効に設定される。ここで、CPWAIT信号は、主プロセッサ10に対してパイプラインをインターロックすべき期間を指示するための信号である。
コプロセッサ20のEXステージに相当するMUL821、822、ユーザ定義演算器823等の構成は、従来のコプロセッサ80と同一である。
上述したように、図1に示したプロセッサシステム1において、主プロセッサ1が基本命令を実行する場合のEXステージ数は一定である。IFステージ、DECステージ、EXステージが全て1クロックサイクルで行われると仮定すると、基本命令を実行する際のIFステージからEXステージまでを合計したパイプラインステージ数は3である。なお、基本命令実行時の命令実行サイクル数に相当するDECステージからEXステージまでの所要クロックサイクル数は2である。
他方、コプロセッサ20のパイプラインステージ数及び命令実行サイクル数は、クロック周波数に応じて変更される。クロック周波数が低速である場合は、図8(a)に示した従来のプロセッサシステム7のパイプラインと同様に、拡張命令を実行する際のIFステージからEXステージまでを合計したパイプラインステージ数は3であり、命令実行サイクル数は2である。また、クロック周波数が高速である場合は、図8(b)に示した従来のプロセッサシステム7のパイプラインと同様に、拡張命令を実行する際のIFステージからEX2ステージまでを合計したパイプラインステージ数は4であり、命令実行サイクル数は3である。
次に、コプロセッサ20におけるCPWAIT信号の出力タイミング、及び拡張命令の実行結果が汎用レジスタ74に書き出されるタイミングについて図2を用いて説明する。図2(a)は、プロセッサシステム1のクロック周波数が低速であって、拡張命令実行時と基本命令実行時とでパイプラインステージ数及び命令実行サイクル数が同一である場合を示している。この場合は、CPWAIT信号が有効な状態に設定されることはない。演算器(MUL822)の出力は、1クロックサイクルのEXステージの終了時刻T1までに有効となる。
図2(b)は、プロセッサシステム1のクロック周波数が高速であって、拡張命令実行時のパイプラインステージ数及び命令実行サイクル数が基本命令実行時より1クロックサイクルだけ長い場合を示している。この場合は、制御部21によって、EX1ステージに相当する1クロックサイクルの間、CPWAIT信号が有効な状態に設定される。図2(b)では、CPWAIT信号を示す矩形波のhighレベルが、CPWAIT信号が有効な状態に対応する。演算器(MUL822)の出力は、EX2ステージの終了時刻T2までに有効となる。
次に、パイプライン制御部131によるCPWAIT信号を利用したインターロック制御について説明する。図3(a)は、クロック周波数が高速であって、コプロセッサ20において拡張命令1を実行した後に、後続の基本命令1によって拡張命令1の実行結果が利用される場合を示している。なお、本実施の形態では、EXステージの最初に汎用レジスタ74からレジスタオペランドのフェッチを行うものとする。
拡張命令1を実行する際は、EX1ステージの最初に制御部21によってCPWAIT信号がセットされる。本実施の形態では、拡張命令の命令実行サイクル数が3であり、基本命令の命令実行サイクル数が2であるため、少なくとも1クロックサイクルの間だけCPWAIT信号を有効とする。CPWAIT信号を受けた主プロセッサ10は、インターロック制御を行って、後続の命令に対する命令フェッチ部12による命令フェッチ、及び命令デコード部13による命令デコードを停止する。このようなインターロック制御によって、基本命令1を実行する主プロセッサのパイプラインは1クロック分だけストールすることになる。これにより、ストール後に実行される基本命令1のEXステージおいて、拡張命令1のEX2ステージでの実行結果を参照することができる。
つまり、本実施の形態にかかるプロセッサシステム1は、コプロセッサ20の命令実行サイクル数が主プロセッサ10の命令実行サイクル数より大きい場合は、コプロセッサ20から出力するCPWAIT信号によって、少なくともその差分に対応する期間だけ主プロセッサ10のパイプラインをストールさせることができる。これにより、コプロセッサの命令実行サイクル数に合わせて、主プロセッサの命令実行サイクル数を変更することなく、拡張命令と基本命令との間のデータ依存関係に対処することができる。
続いて以下では、主プロセッサ10にける分岐ペナルティが改善されることについて図4を用いて説明する。図4(a)は、本実施の形態のプロセッサシステム1において分岐命令を実行する場合のタイムチャートを示している。上述したようにプロセッサシステム1は、コプロセッサ20の命令実行サイクル数に合わせて主プロセッサ10の命令実行サイクル数を変更する必要がない。このため、クロック周波数が高速である場合にも、分岐命令のフェッチからEXステージにおいて分岐条件が確定するまでに要するクロックサイクル数は3クロックサイクルである。したがって、分岐命令に起因するパイプラインストール期間、つまり分岐ペナルティは2クロックサイクルである。
他方、図4(b)は、従来のプロセッサシステム7の高速動作時において、分岐命令を実行する場合のタイムチャートを示している。プロセッサシステム7では、コプロセッサ80のEXステージの分割に合わせて、主プロセッサ70のEXステージを分割する。このため、分岐命令のフェッチからEX2ステージにおいて分岐条件が確定するまでは4クロックサイクルを要する。したがって、分岐ペナルティは3クロックサイクルである。
このように本実施の形態のプロセッサシステム1は、高速動作時のようにコプロセッサ20における拡張命令の命令実行サイクル数が増加する場合であっても、主プロセッサ10における基本命令の命令実行サイクル数を増加する必要がない。このため、分岐ペナルティの悪化を抑制することができる。また、主プロセッサ10の命令実行サイクル数を変更するための冗長な回路を必要としないため、主プロセッサ10の構成を簡素化できる。またさらに、主プロセッサ10に接続するコプロセッサの命令実行サイクル数に合わせて主プロセッサ10のハードウェア構成を変更する必要がないため、主プロセッサ10の汎用性を向上することができる。
なお、本実施の形態では、クロック周波数が高速である場合に、コプロセッサ20で実行される拡張命令の命令実行サイクル数を主プロセッサ10で実行される基本命令の命令実行サイクル数と比較して1クロックサイクルだけ増加させる場合を説明した。しかしこのような構成は一例である。本発明は、コプロセッサで実行される拡張命令の命令実行サイクル数が、主プロセッサで実行される基本命令の命令実行サイクル数と比較して長いプロセッサシステムに対して広く適用可能である。
また、本実施の形態では、コプロセッサ20が主プロセッサ10に設けられた周波数フラグ79を参照することによってEXステージの分割を行うものとして説明した。しかしながら、周波数フラグ79はコプロセッサ20に設けることとしてもよい。また、制御部21が、コプロセッサ20に入力されるクロック周波数を閾値と比較して、EXステージの分割を行うか否かを判定することとしてもよい。
発明の実施の形態2.
上述した発明の実施の形態1にかかるプロセッサシステム1は、コプロセッサ20が主プロセッサ10のパイプラインをインターロックすべきか否かを判定し、コプロセッサ20が出力するCPWAIT信号に応じて主プロセッサ10がインターロック制御を行うものであった。これに対して、本実施形態にかかるプロセッサシステム3は、主プロセッサ30が、拡張命令を識別することによってパイプラインをインターロックすべきか否かを判定し、コプロセッサ20の出力するCPWAIT信号に依拠することなくインターロック制御を行う点が特徴である。
本実施の形態にかかるプロセッサシステム3の構成を図5に示す。プロセッサシステム3は、主プロセッサ30にコプロセッサ80が接続された構成を有する。なお、コプロセッサ80は上述した従来のプロセッサシステム7が備えるものと同一であるため、詳細な説明を省略する。
主プロセッサ30が備える命令デコード部33は、命令フェッチ部12が取得した命令のデコードを行う。命令デコード部33は、デコードした命令が基本命令である場合は、主プロセッサ30が有する演算器に対して命令を発行する。他方、デコードした命令が拡張命令である場合は、コプロセッサI/F78を介してコプロセッサ80に命令を転送する。コプロセッサI/F78からは、拡張命令の実行を要求する要求信号(CPRQ)、命令コード(CPOP)、及び即値(CPIMM)がコプロセッサ20に対して転送される。また、パイプライン制御部331は、主プロセッサ10のパイプライン処理のインターロック制御を行う。
命令デコード部33は周波数フラグ79を参照し、周波数フラグ79がセットさせている状態において拡張命令をデコードした場合には、後続の命令に対する命令フェッチ部12による命令フェッチ、及び命令デコード部33による命令デコードを停止するインターロック制御を実行する。つまり、主プロセッサ30は、コプロセッサ80における拡張命令の命令実行サイクル数が主プロセッサ30における基本命令の命令実行サイクル数より大きいことを、周波数フラグ79の状態を参照することによって判定し、命令デコード部33において拡張命令をデコードしたことに応じてインターロック制御を行うものである。
なお、拡張命令をデコードした場合にインターロックする期間は、コプロセッサ80における拡張命令の命令実行サイクル数に基づいて予め定めておけばよい。
主プロセッサ30が有する命令デコード部33以外の構成要素は、発明の実施の形態1の主プロセッサ10が有するものと同一であるため、同一の符号を付して詳細な説明を省略する。
このような構成により、プロセッサシステム3においては、命令デコード部33が拡張命令をデコードした時点でインターロック制御の実行判定が可能となる。このため、発明の実施の形態1にかかるプロセッサシステム1に比べてより早い時点において、インターロック制御の実行判定を行うことができる。また、主プロセッサ30とコプロセッサ80の間でCPWAIT信号の転送が不要であるため、主プロセッサ30とコプロセッサ80の間のインタフェースを簡素化することができる。
発明の実施の形態3.
本実施の形態にかかるプロセッサシステム5の構成を図6に示す。プロセッサシステム5は、主プロセッサ50にコプロセッサ60が接続された構成を有する。主プロセッサ50は、周波数フラグ79を有していない点が発明の実施の形態1の主プロセッサ10と異なる。主プロセッサ50が有するその他の構成要素は、主プロセッサ10が有するものと同一である。
コプロセッサ60は、実行する拡張命令の種類によって命令実行サイクル数が異なるものである。MUL821及び822によって実行される32ビット×16ビット乗算命令は、EX1ステージ及びEX2ステージの2ステージにおいて、2クロックサイクルで実行される。一方、ユーザ定義演算器823によって実行されるユーザ定義命令に対してEXステージが分割されることはなく、ユーザ定義命令は1クロックサイクルで実行される。
つまり、コプロセッサ60で実行される32ビット×16ビット乗算命令の命令実行サイクル数は3であり、ユーザ定義命令の命令実行サイクル数は2である。なお、主プロセッサ50で実行される基本命令の命令実行サイクル数は2である。
制御部61は、コプロI/F78を介して入力されるCPRQ、CPOP、CPIMMを受信する。命令デコード部611は、拡張命令をデコードし、コプロセッサ60が備える演算器において拡張命令を実行するために必要となる制御信号を出力する。この制御信号には、演算器に対する処理要求、オペランドレジスタの指定、即値が含まれる。また、制御部61は、命令デコード部611がデコードした拡張命令の種別によってEXステージに要するクロックサイクル数を判定する。
具体的には、デコードした命令が32ビット×16ビット乗算命令である場合、制御部61は、EXステージを分割して2クロックサイクルで動作させるとともに、主プロセッサ50に対して出力するCPWAIT信号を有効に設定する。他方、デコードした命令がユーザ定義命令である場合、ユーザ定義命令の命令実行サイクル数が主プロセッサ50で実行される基本命令の命令実行サイクル数と同じであるから、CPWAIT信号は出力されない。
上述したように、本実施形態にかかるプロセッサシステム5は、コプロセッサ60が拡張命令の種別を識別し、基本命令の命令実行サイクル数より拡張命令の命令実行サイクル数が大きい場合に、CPWAIT信号を有効に設定するものである。また、主プロセッサ50は、発明の実施の形態1の主プロセッサ10と同様に、CPWAIT信号に応じてインターロック制御を行うものである。
このような構成によって、コプロセッサ60における拡張命令の命令実行サイクル数が拡張命令の種別によって変わる場合でも、主プロセッサ50における基本命令の命令実行サイクル数を変更する必要がない。このため、分岐ペナルティの悪化を抑制することができる。また、主プロセッサ50の命令実行サイクル数を変更するための冗長な回路を必要としないため、主プロセッサ50の構成を簡素化できる。
その他の実施の形態.
発明の実施の形態3では、コプロセッサ60が備える制御部61において拡張命令の種別を判定することとした。しかしながら、主プロセッサ50が備える命令デコード部13において拡張命令の種別を判定し、その種別が命令実行サイクル数の長い拡張命令を示す場合に、インターロック制御を行うこととしてもよい。
このような構成により、命令デコード部13が拡張命令をデコードした時点でインターロック制御の実行判定が可能となる。このため、発明の実施の形態3にかかるプロセッサシステム5に比べてより早い時点において、インターロック制御の実行判定を行うことができる。また、主プロセッサ50とコプロセッサ60の間でCPWAIT信号の転送が不要であるため、主プロセッサ50とコプロセッサ60の間のインタフェースを簡素化することができる。
発明の実施の形態1乃至3の主プロセッサ及びコプロセッサが有する演算器の構成は一例であり、プロセッサシステムの処理内容に応じて適宜選択されるものである。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
発明の実施の形態1にかかるプロセッサシステムの構成を示すブロック図である。 発明の実施の形態1にかかるプロセッサシステムが備えるコプロセッサの動作を説明するためのタイミング図である。 CPWAIT信号の出力タイミングを説明するためのタイミング図である。 本発明の効果を説明するためのタイミング図である。 発明の実施の形態2にかかるプロセッサシステムの構成を示すブロック図である。 発明の実施の形態3にかかるプロセッサシステムの構成を示すブロック図である。 従来のプロセッサシステムの構成を示すブロック図である。 従来のプロセッサシステムのパイプラインを示す図である。
符号の説明
1、3、5 プロセッサシステム
10、30、50 主プロセッサ
20、60、80 コプロセッサ
12 命令フェッチ部
13、33 命令デコード部
21、61、81 制御部
71 命令メモリ
74 汎用レジスタ
77 セレクタ
78 コプロセッサインタフェース(コプロセッサI/F)
79 周波数フラグ
85 セレクタ
121 プログラムカウンタ
122 PC更新部
131 パイプライン制御回路
331 パイプライン制御回路
611 命令デコード部
741 乗算・積和演算器(MAC)
742 算術・論理演算器(ALU)
743 バレルシフタ(BSFT)
751 マルチプレクサ(MUX)
811 命令デコード部
821、822 乗算器(MUL)
823 ユーザ定義演算器
831〜833 フリップフロップ(FF)
841〜843 マルチプレクサ(MUX)

Claims (17)

  1. 主プロセッサと、前記主プロセッサに接続されるコプロセッサとを備えるプロセッサシステムであって、
    前記コプロセッサで実行される拡張命令の命令実行サイクル数が前記主プロセッサで実行される基本命令の命令実行サイクル数より大きい場合、前記コプロセッサによる拡張命令の実行時に、少なくとも前記拡張命令の命令実行サイクル数と前記基本命令の命令実行サイクル数の差に相当する期間だけ、前記拡張命令より後に取得する後続命令に対するパイプライン処理を停止するプロセッサシステム。
  2. 前記後続命令に対するパイプライン処理の停止を指示する制御信号を前記コプロセッサから前記主プロセッサに対して出力し、
    前記制御信号に応じて、前記主プロセッサが前記後続命令に対するパイプライン処理を停止する請求項1に記載のプロセッサシステム。
  3. 前記コプロセッサは、前記拡張命令の種別に基づいて、前記制御信号を有効とするか否かを決定する請求項2に記載のプロセッサシステム。
  4. 前記コプロセッサは、前記拡張命令の種別に基づいて、前記制御信号を有効とする期間を決定する請求項2に記載のプロセッサシステム。
  5. 前記主プロセッサは、デコードした命令が前記拡張命令であることに応じて、所定の期間だけ前記後続命令に対するパイプライン処理を停止する請求項1に記載のプロセッサシステム。
  6. 前記主プロセッサは、前記拡張命令の種別に基づいて、前記後続命令に対するパイプライン処理を停止する期間を決定する請求項5に記載のプロセッサシステム。
  7. 前記コプロセッサにおける前記拡張命令の命令実行サイクル数が可変である請求項1に記載のプロセッサシステム。
  8. 前記コプロセッサにおける前記拡張命令の命令実行サイクル数を、前記基本プロセッサにおける前記基本命令の命令実行サイクル数と同一の第1のサイクル数と、前記第1のサイクル数より大きい第2のサイクル数との間で変更可能であり、
    前記コプロセッサが前記第2のサイクル数で前記拡張命令を実行する場合に、後続の命令に対するパイプライン処理を停止する請求項1に記載のプロセッサシステム。
  9. 前記後続命令に対するパイプライン処理の停止を指示する制御信号を前記コプロセッサから前記主プロセッサに対して出力し、
    前記制御信号に応じて、前記主プロセッサが前記後続命令に対するパイプライン処理を停止する請求項8に記載のプロセッサシステム。
  10. 前記拡張命令の命令実行サイクル数が第2のサイクル数である場合に、前記主プロセッサは、前記拡張命令をデコードしたことに応じて、少なくとも前記第2のサイクル数と前記第1のサイクル数の差に相当する期間だけ、後続の命令に対するパイプライン処理を停止する請求項8に記載のプロセッサシステム。
  11. 前記拡張命令の命令実行サイクル数の変更は、前記プロセッサシステムに供給される動作クロックの周波数の変更に応じて行われる請求項8に記載のプロセッサシステム。
  12. 前記主プロセッサは、
    命令メモリから命令を取得する命令フェッチ部と、
    前記命令フェッチ部によって取得された命令をデコードする命令デコード部と、
    前記基本命令によって規定される処理を実行する演算器とを備えており、
    前記パイプライン処理の停止は、前記命令フェッチ部による後続命令の取得、及び前記命令デコード部による命令のデコードを停止することによって行われる請求項1に記載のプロセッサシステム。
  13. 主プロセッサと、前記主プロセッサに接続されるコプロセッサとを備えるプロセッサシステムであって、
    前記コプロセッサで実行される拡張命令の命令実行サイクル数が前記基本プロセッサで実行される基本命令の命令実行サイクル数より大きい状態に設定されても、前記主プロセッサで実行される基本プロセッサの命令実行サイクル数を変更しないプロセッサシステム。
  14. 前記コプロセッサにおける前記拡張命令の命令実行サイクル数が可変である請求項13に記載のプロセッサシステム。
  15. 前記コプロセッサにおける前記拡張命令の命令実行サイクル数を、前記基本プロセッサにおける前記基本命令の命令実行サイクル数と同一の第1のサイクル数と、前記第1のサイクル数より大きい第2のサイクル数との間で変更可能であり、
    前記コプロセッサが前記第2のサイクル数で前記拡張命令を実行する場合に、前記拡張命令より後に取得する後続命令に対するパイプライン処理を停止する請求項13に記載のプロセッサシステム。
  16. 前記コプロセッサによる前記拡張命令の実行時に、前記主プロセッサは、少なくとも前記拡張命令の命令実行サイクル数と前記基本命令の命令実行サイクル数の差に相当する期間だけ、後続の命令に対するパイプライン処理を停止する請求項13に記載のプロセッサシステム。
  17. 前記後続命令に対するパイプライン処理の停止を指示する制御信号を前記コプロセッサから前記主プロセッサに対して出力し、
    前記制御信号に応じて、前記主プロセッサが前記後続命令に対するパイプライン処理を停止する請求項16に記載のプロセッサシステム。
JP2006020332A 2006-01-30 2006-01-30 プロセッサシステム Pending JP2007200180A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006020332A JP2007200180A (ja) 2006-01-30 2006-01-30 プロセッサシステム
US11/625,639 US7539847B2 (en) 2006-01-30 2007-01-22 Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006020332A JP2007200180A (ja) 2006-01-30 2006-01-30 プロセッサシステム

Publications (1)

Publication Number Publication Date
JP2007200180A true JP2007200180A (ja) 2007-08-09

Family

ID=38323510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006020332A Pending JP2007200180A (ja) 2006-01-30 2006-01-30 プロセッサシステム

Country Status (2)

Country Link
US (1) US7539847B2 (ja)
JP (1) JP2007200180A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI414994B (zh) * 2009-09-24 2013-11-11 Ind Tech Res Inst 可重組態處理裝置及其系統
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
AU2016373563A1 (en) 2015-12-18 2018-06-14 Gbt Travel Services Uk Ltd Generating consolidated travel records from distinct formats
GB2570729B (en) * 2018-02-06 2022-04-06 Xmos Ltd Processing system
CN109144572B (zh) * 2018-08-06 2021-03-30 龙芯中科技术股份有限公司 指令执行方法和处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319578A (ja) * 1996-03-29 1997-12-12 Matsushita Electric Ind Co Ltd 可変パイプライン段数のデータ処理装置
JP2001092662A (ja) * 1999-09-22 2001-04-06 Toshiba Corp プロセッサコア及びこれを用いたプロセッサ
JP2004362215A (ja) * 2003-06-04 2004-12-24 Toshiba Corp プロセッサ及び半導体集積回路

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4943915A (en) * 1987-09-29 1990-07-24 Digital Equipment Corporation Apparatus and method for synchronization of a coprocessor unit in a pipelined central processing unit
US6434689B2 (en) * 1998-11-09 2002-08-13 Infineon Technologies North America Corp. Data processing unit with interface for sharing registers by a processor and a coprocessor
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319578A (ja) * 1996-03-29 1997-12-12 Matsushita Electric Ind Co Ltd 可変パイプライン段数のデータ処理装置
JP2001092662A (ja) * 1999-09-22 2001-04-06 Toshiba Corp プロセッサコア及びこれを用いたプロセッサ
JP2004362215A (ja) * 2003-06-04 2004-12-24 Toshiba Corp プロセッサ及び半導体集積回路

Also Published As

Publication number Publication date
US20070180220A1 (en) 2007-08-02
US7539847B2 (en) 2009-05-26

Similar Documents

Publication Publication Date Title
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US10628155B2 (en) Complex multiply instruction
GB2464292A (en) SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
KR101624786B1 (ko) 기입마스크 레지스터의 트레일링 최하위 마스킹 비트를 결정하는 시스템, 장치, 및 방법
JP2018504667A (ja) ベクトルパックドタプル相互比較機能を提供する方法、装置、命令、およびロジック
JP2010271818A (ja) 命令融合演算装置および命令融合演算方法
US9354893B2 (en) Device for offloading instructions and data from primary to secondary data path
JP2007200180A (ja) プロセッサシステム
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US20200326940A1 (en) Data loading and storage instruction processing method and device
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
EP1122688A1 (en) Data processing apparatus and method
US11327761B2 (en) Processing device with vector transformation execution
US9619228B2 (en) Data processor with a load instruction that branches based on a control register value and a bit or bits read from memory
US20140365751A1 (en) Operand generation in at least one processing pipeline
JP2014164659A (ja) プロセッサ
CN112579168B (zh) 指令执行单元、处理器以及信号处理方法
TWI493450B (zh) 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統
JP7384374B2 (ja) 中央演算処理装置
JP3461887B2 (ja) 可変長パイプライン制御装置
Lozano et al. A deeply embedded processor for smart devices
JP5598114B2 (ja) 演算ユニット

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110329