JP3566841B2 - Information processing equipment - Google Patents
Information processing equipment Download PDFInfo
- Publication number
- JP3566841B2 JP3566841B2 JP30402897A JP30402897A JP3566841B2 JP 3566841 B2 JP3566841 B2 JP 3566841B2 JP 30402897 A JP30402897 A JP 30402897A JP 30402897 A JP30402897 A JP 30402897A JP 3566841 B2 JP3566841 B2 JP 3566841B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution unit
- instructions
- decoded
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、同時に動作可能な複数の実行ユニットを備え、複数命令の同時解読及び実行を行う情報処理装置に係り、特に同時解読する複数命令の実行ユニットへの給送(以下「ディスパッチ」という)を制御する命令制御方式の改良に関する。
複数命令の同時解読及び実行を行う情報処理装置では、RISC(Reduced In−struction Set Computer)方式の計算機を用いるものと、CISC(Complex In−struction Set Computer)方式の計算機を用いるものとがある。
CISC方式は、互換性や機能の拡張に柔軟に対応すべく複雑な命令セットを備えるもので、進歩の激しいハードウェア技術を柔軟に取り入れることを可能にする。一方、RISC方式は、プログラムは高級言語で書かれることを前提としこれを効率よく実行することのできるアーキテクチュアとして提案されたものであり、その命令セットはもっとも頻繁に使用される命令だけに限定して実現し、他の機能はこの限定された命令を組合せて実行することで高速処理を実現する。これらの相違は、RISC方式とCISC方式とで実現される命令処理サイクルがそれぞれ異なることを示している。
【0002】
【従来の技術】
図15は、RISC方式の命令セットを備える情報処理装置の構成例である。RISC方式の命令セット・アーキテクチュアでは、実行ユニットのオペランドは、通常レジスタ同士であり、メモリアクセスが生ずるのは、ロード/ストア命令に限られる。
【0003】
したがって、このRISC方式の命令セットを実施する構成は、例えば図15に示すように、複数の命令レジスタ200と、命令格納手段201と、制御部202と、同時に動作可能な複数の実行ユニット203とを備え、制御部202は図15に示すように、解読サイクルD1とディスパッチサイクルD2と命令実行サイクルEとからなる3つのサイクルのそれぞれにおいて対応する制御動作を行うことになる。
【0004】
解読サイクルD1では、複数の命令レジスタ200にそれぞれ取り込んだ複数命令を同時に解読する。ディスパッチサイクルD2では、解読した命令それぞれを命令格納手段201に格納し、また命令格納手段201から解読済みの複数命令を取り出し複数の実行ユニット203へディスパッチする。命令実行サイクルEでは、複数の実行ユニットにおいて命令の同時実行が行われる。
【0005】
次に、図16は、CISC方式の命令セットを備える情報処理装置の構成例である。CISC方式の命令セット・アーキテクチュアでは、実行ユニットのオペランドは、通常レジスタとメモリオペランドであり、メモリアクセスは、一般的な命令で高頻度に現れる。メモリオペランドを求めるためには、アドレス計算及びメモリアクセスが必要となり、レジスタオペランドを求めるよりも多くのクロック数を必要とする。
【0006】
したがって、このCISC方式の命令セットを実施する構成は、例えば図16に示すように、複数の命令レジスタ300と、命令格納手段301と、2つの制御部302,303と、性格が異なる実行ユニット304,305とを備える。因みに、実行ユニット304は、アドレス加算器とキャッシュメモリとで構成され、実行ユニット305は、演算器で構成される。
【0007】
命令処理サイクルは、図16に示すように、解読サイクルD1とディスパッチサイクルD2と2つの命令実行サイクルE1,E2とからなり、制御部302,303は、解読サイクルD1とディスパッチサイクルD2では同時並行して動作するが、命令実行サイクルE1とE2では、それぞれ異なる動作を行うことになる。
【0008】
即ち、命令実行サイクルE1では、制御部303は、実行ユニット304を制御する。具体的には、制御部303は、ソースレジスタオペランドをアドレス加算器に与えてアドレス計算を実行させ、その結果でキャッシュメモリをアクセスしてメモリオペランドを取り出す。そして、その後の命令実行サイクルE2で制御部302は、実行ユニット305を制御する。具体的には、制御部302は、実行ユニット305にソースオペランド(レジスタオペランド)を与え、それと実行ユニット304のフェッチデータ(メモリオペランド)との間での演算を実行させる。
【0009】
【発明が解決しようとする課題】
CISC方式の命令セットは、拡張性に富むので、有用であるが、以上のように、CISC方式での命令処理サイクルは、RISC方式での命令処理サイクルよりも1サイクル多いので、それだけ高速性に欠けることになる。
本発明の目的は、複数命令の同時解読及び実行を行うことにより命令処理を高速に実行する情報処理装置において、CISC方式の命令セットのように複雑な命令セットを実現する命令処理サイクルを、RISC方式での命令処理サイクルと同数のサイクル数とすることができる命令制御方式を提供することにある。
【0010】
【課題を解決するための手段】
図1は、請求項1に記載の発明の原理ブロック図である。
請求項1に記載の発明は、同時に動作可能な複数の実行ユニット1を備える情報処理装置において、同時に解読した複数の命令2を複数の実行ユニット1へ給送するのを制御する構成として、同時解読中の複数個の命令2の中から実行ユニット1を必要とする命令を検出する必要命令検出手段3と、解読済み命令を一時記憶する命令格納手段4と、命令格納手段4における有効命令を検出する有効命令検出手段5と、有効命令検出手段5が検出した有効命令数と空いている実行ユニット数の大小関係に応じて、必要命令検出手段が検出した実行ユニットを必要とする解読中命令の一部を空いている実行ユニット1へ給送し、実行ユニット1が割り当てられないため給送できなかった解読中命令を命令格納手段4へ給送して格納させることを行う給送制御手段6とを備えることを特徴とする。
【0011】
即ち、請求項1に記載の発明では、解読サイクルにおいて、必要命令検出手段3が、同時解読中の複数個の命令2の中から実行ユニット1を必要とする命令を検出すると共に、有効命令検出手段5が、前回の命令処理サイクルで命令格納手段4に格納した解読済み命令の中で有効な命令を検出する。
そして、給送制御手段6が、空いている必要実行ユニット数と有効命令検出手段5が検出した有効命令数との大小関係を判断し、空いている実行ユニット数よりも有効命令が多いときは、即ち実行ユニット1が空いていないときは、解読中命令の全てを命令格納手段4に給送して格納させる。一方、空いている必要実行ユニット1の数よりも有効命令が少ないときは、即ち実行ユニット1に空きがあるときは、解読中命令の一部を空いている実行ユニット1へ給送し、実行ユニット1が割り当てられないため給送できなかった解読中命令を命令格納手段4へ給送して格納させる。
【0012】
これにより、解読中命令を、命令格納手段へ給送する同じサイクル(ディスパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となる。
図2は、請求項2に記載の発明の原理ブロック図である。
請求項2に記載の発明は、同時に動作可能な複数の実行ユニット1を備える情報処理装置において、同時に解読した複数の命令2を複数の実行ユニット1へ給送するのを制御する構成として、同時解読中の複数個の命令2の中から実行ユニット1を必要とする命令を検出する必要命令検出手段3と、解読済み命令を一時記憶する命令格納手段4と、解読処理する複数個の命令2のそれぞれについての処理状況が設定される処理状況テーブル7と、処理状況テーブル7を参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出する参照可能命令検出手段8と、必要命令検出手段3が検出した実行ユニット1を必要とする解読中命令のうちで、参照可能命令検出手段8が検出したオペランドが参照可能な命令を空いている実行ユニット1へ給送し、オペランドが参照可能でないため実行ユニット1へ給送できなかった命令を命令格納手段4へ給送して格納させる給送制御手段9とを備えることを特徴とする。
【0013】
即ち、請求項2に記載の発明では、解読サイクルにおいて、必要命令検出手段3が、同時解読中の複数個の命令2の中から実行ユニット1を必要とする命令を検出すると共に、参照可能命令検出手段8が、処理状況テーブル7を参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出すると、給送制御手段9が、必要命令検出手段3が検出した実行ユニット1を必要とする解読中命令のうちで、参照可能命令検出手段8が検出したオペランドが参照可能な命令を空いている実行ユニット1へ給送し、オペランドが参照可能でないため実行ユニット1へ給送できなかった命令を命令格納手段4へ給送して格納させる。
【0014】
これにより、解読中命令を、命令格納手段へ給送する同じサイクル(ディパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となる。このとき、給送制御を解読中命令のオペランドの参照可否に基づき行うので、格納する解読済み命令の増加による処理の停滞が生ずる可能性を回避できる。
【0015】
図3は、請求項3に記載の発明の原理ブロック図である。
請求項3に記載の発明は、同時に動作可能な複数の実行ユニット1を備える情報処理装置において、同時に解読した複数の命令2を複数の実行ユニット1へ給送するのを制御する構成として、同時解読中の複数個の命令の中から実行ユニットを必要とする命令を検出する必要命令検出手段3と、解読処理する複数個の命令のそれぞれについての処理状況が設定される処理状況テーブル7と、処理状況テーブル7を参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出する参照可能命令検出手段8と、解読済み命令を一時記憶する命令格納手段4と、必要命令検出手段3が検出した実行ユニットを必要とする解読中命令のうちで、参照可能命令検出手段8が検出したオペランドが参照可能な命令を空いている実行ユニット1へ給送し、オペランドが参照可能でないため実行ユニットへ給送できなかった命令を命令格納手段4へ給送して格納させる給送手段する第1給送制御手段10と、第1給送制御手段10が解読済み命令を命令格納手段4へ給送する際にその解読済み命令のオペランドの参照可否を命令格納手段4に登録する登録手段11と、命令格納手段4における解読済み命令のうちでオペランドが参照可能な命令を実行ユニットへ給送する第2給送制御手段12と、命令格納手段4における解読済み命令のうちで有効かつオペランドが参照可能な命令を検出する命令検出手段13と、命令格納手段13における解読済み命令のうちで命令検出手段13が検出した命令数と空いている前記実行ユニット数との大小関係に応じて、命令格納手段4における有効かつ参照可能命令の全てを実行ユニットへ給送すること、有効かつ参照可能命令の一部を空いている実行ユニットへ給送することを行う第3給送制御手段14とを備えることを特徴とする。
【0016】
即ち、請求項3に記載の発明では、解読サイクルにおいて、必要命令検出手段3が、同時解読中の複数個の命令2の中から実行ユニット1を必要とする命令を検出すると共に、参照可能命令検出手段8が、処理状況テーブル7を参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出すると、第1給送制御手段10が、必要命令検出手段3が検出した実行ユニット1を必要とする解読中命令のうちで、参照可能命令検出手段8が検出したオペランドが参照可能な命令を空いている実行ユニット1へ給送し、オペランドが参照可能でないため実行ユニット1へ給送できなかった命令を命令格納手段4へ給送して格納させる。
【0017】
その際に、登録手段11が、第1給送制御手段10が命令格納手段4へ給送する解読済み命令のオペランドの参照可否を命令格納手段4に登録する。これにより、第2給送制御手段12が、命令格納手段4における解読済み命令のうちでオペランドが参照可能な命令を実行ユニットへ給送する。
そして、第3給送制御手段14が、命令検出手段13が検出した命令数と空いている実行ユニット1の数とに応じて、命令格納手段4における有効かつ参照可能命令の全てを実行ユニットへ給送すること、有効かつ参照可能命令の一部を空いている実行ユニットへ給送することを行う。
【0018】
これにより、解読中命令を、処理の停滞を招くことなく命令格納手段へ給送する同じサイクル(ディスパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となる。このとき、命令格納手段中の解読済み命令の給送制御をその解読済み命令の有効性とオペランドの参照可否に基づき行うので、給送制御を一層円滑かつ確実に行うことができる。
【0019】
請求項4に記載の発明は、請求項1乃至請求項3の何れか1項に記載の情報処理装置において、複数の実行ユニット1は、異なった処理を行う複数種類の実行ユニットグループからなり、必要命令検出手段3は、実行ユニットを必要とする命令を実行ユニットグループ毎に検出することを特徴とする。
即ち、請求項4に記載の発明では、異なった処理を行う複数種類の実行ユニットグループについての給送制御を、請求項1乃至請求項3の何れか1項に記載の発明によって実現できる。
【0020】
これにより、CISC方式の命令セットが対象とする演算を、{(解読)のサイクル}と{(ディスパッチ)+(実行)のサイクル}と{(実行)のサイクル}との3つのサイクルで処理でき、複雑な命令セットの高速処理が可能となる。
【0021】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
【0022】
図4は、請求項1乃至請求項4に対応する実施形態の構成である。この実施形態の命令制御方式は、複数の命令レジスタ40−1〜40−nと、制御部41と、格納レジスタ群42と、複数の実行ユニット43−1〜43−mとを備える。制御部41は、ある命令処理サイクルにおいて、複数の命令レジスタ40−1〜40−nから命令を受け取り、同時に解読すること(解読サイクルD1)、一定条件下に、解読した複数の命令を複数の実行ユニット43−1〜43−mと格納レジスタ群42とに並行してディスパッチすること、そして、格納レジスタ群42に格納される解読済みの命令を次の処理サイクルで実行ユニット43−1〜43−mと格納レジスタ群42とに並行してディスパッチすること、を各サイクルで繰り返し行う。
【0023】
即ち、制御部41は、CISC方式での命令処理サイクルにおけるディスパッチサイクルD2と命令実行サイクルE1とを並行して行い、命令実行サイクルE2をRISC方式における命令実行サイクルEと同じタイミングで実行できるように命令のディスパッチを制御する。
これにより、ディスパッチサイクルD2において、そのディスパッチと並行してアドレス計算及びメモリアクセスが可能となり(命令実行サイクルE1)、その後RISC方式における命令実行サイクルEにおいて、レジスタオペランドとメモリオペランドとの演算を実行させ得ることになる(命令実行サイクルE2)。
【0024】
つまり、この実施形態の命令制御方式では、CICS方式で組まれた命令セットの処理を、RISC方式で組まれた命令セットの処理と同じサイクル数で実現できることになる。
この実施形態は、「複数の実行ユニットを区別せずに扱う」第1実施形態と、「複数の実行ユニットを性格に応じてグループ化して扱う」第2実施形態とからなる。但し、説明の便宜から、実行ユニット数は、第1実施形態では2とし、第2実施形態では3としてある。また、同時解読命令数は、何れも3である。
【0025】
〔第1実施形態・・請求項1に対応〕
図5は、第1実施形態の制御部41の構成例である。この第1実施形態の制御部41は、デコーダ51と選択制御回路52と選択回路53とで構成される。なお、格納レジスタ群42は、格納レジスタ群42aと表記する。
IWR0,IWR1,IWR2は、それぞれ命令レジスタに設定された命令であるが、それぞれ、デコーダ51と選択回路53とに入力する。デコーダ51は解読中の命令をデコードして実行ユニットを使用するか(つまり必要とするか)を検出し、その情報(実行ユニット必要有無)を選択制御回路52に与える。
【0026】
格納レジスタ群42aの2つの出力は、一方(格納済み命令の情報)が選択回路53に与えられ、他方(有効性フラグ)が選択制御回路52に与えられる。選択回路53は、4つの入力を選択制御回路52の出力に従って選択し、2つの実行ユニットEU0,EU1と格納レジスタ群42aとに分配(ディスパッチ)する。
【0027】
図6は、第1実施形態の格納レジスタ群42aの構成例である。図6に示すように、格納レジスタ群42aの各レジスタには、解読済みの命令(命令1、命令2・・)が格納されるが、格納の際に、命令のシーケンス番号(IID)と有効性ビット(Valid bit)が設定される。
有効性ビットは、命令がレジスタに格納されている間は、“1”である(有効)が、実行ユニットへ取り出されると“0”となる。即ち、図6では、命令1〜3が格納中の命令(有効命令)で、命令4が取り出された命令であることを示している。なお、シーケンス番号(IID)は、ここでは、特に関係しないので、説明を省略する。
【0028】
この実施形態では、格納レジスタ群42aの各レジスタにおいて、第0レジスタをRES0,第1レジスタをRES1,第2レジスタをRES2,第3レジスタをRES3・・と表記する。また、有効性ビットをVと表記し、V=“1”を「+」と表記し、V=“0”を「−」と表記する。これが、この格納レジスタ群42aから選択制御回路52に対して出力される有効性フラグの内容である。
【0029】
具体的には、例えば、第0レジスタについての有効性フラグは、「+RES0・V,−RES0・V」であり、第1レジスタについての有効性フラグは、「+RES1・V,−RES1・V」であり、第2レジスタについての有効性フラグは、「+RES2・V,−RES2・V」である。それぞれの場合に、高レベルとなる。
【0030】
また、格納レジスタ群42aの各レジスタから選択回路53へは、解読済み命令の他に、各解読済み命令の各種情報が与えられる。これは、実行ユニットにおいて命令の演算等に必要となるものである。この実施形態では、その一例として「OPECODE」を取り上げる。具体的には、選択回路53に対しては、例えば、第0レジスタの命令ついては「+RES0・OPECODE」が出力され、第1レジスタの命令については「+RES1・OPECODE」が出力される。
【0031】
図7は、選択制御回路52におけるENTRY信号生成回路例である。このENTRY信号生成回路は、格納レジスタ群42aに格納される有効な命令数を検出する回路である。
この実施形態では、図6に示したように、第0〜第3までの4つのレジスタを対象に考えている。したがって、格納レジスタ群42aからの入力(有効性フラグ)は、「+RES0・Vまたは−RES0・V」、「+RES1・Vまたは−RES1・V」、「+RES2・Vまたは−RES2・V」、「+RES3・Vまたは−RES3・V」の4種である。
【0032】
NAND71には、−RES0・Vと−RES1・Vと−RES2・Vと−RES3・Vが入力する。即ち、NAND71は、第0〜第3までの4つのレジスタの何れにも有効命令が存在しない場合に出力を低レベルにする。これが、「−0 ENTRY」の内容である。つまり、NAND71では、4つのレジスタの何れか1つにでも有効命令があれば、出力を高レベルにする。これは、図8のAND81の一方の入力となる。
【0033】
AND72には、+RES0・Vと−RES1・Vと−RES2・Vと−RES3・Vが入力する。即ち、AND72は、第0〜第3までの4つのレジスタのうち第0レジスタに有効命令が存在する場合に出力を高レベルにする。これは、NOR76の第1入力となる。AND73には、−RES0・Vと+RES1・Vと−RES2・Vと−RES3・Vが入力する。即ち、AND72は、第0〜第3までの4つのレジスタのうち第1レジスタに有効命令が存在する場合に出力を高レベルにする。これは、NOR76の第1入力となる。
【0034】
AND74には、−RES0・Vと−RES1・Vと+RES2・Vと−RES3・Vが入力する。即ち、AND74は、第0〜第3までの4つのレジスタのうち第2レジスタに有効命令が存在する場合に出力を高レベルにする。これは、NOR76の第3入力となる。
AND75には、−RES0・Vと−RES1・Vと−RES2・Vと+RES3・Vが入力する。即ち、AND75は、第0〜第3までの4つのレジスタのうち第3レジスタに有効命令が存在する場合に出力を高レベルにする。これは、NOR66の第4入力となる。
【0035】
そして、これらのAND72,73,74,75では、有効命令が2以上の存在する場合には、出力を低レベルにする。したがって、NOR76では、第0〜第3までの4つのレジスタのうち何れか1つのレジスタに有効命令が存在する場合に出力を低レベルにする。これが、「−1 ENTRY」の内容である。一方、有効命令が2以上の存在する場合には、NOR76は、出力を高レベルにする。これは、図8のAND81の他方の入力となる。
【0036】
図8は、選択制御回路52における選択信号発生回路例である。この選択信号発生回路の出力(選択信号)は、選択回路53へ出力される。図8において、AND81は、一方の入力が「−0 ENTRY」で、他方の入力が「−1 ENTRY」で、出力がAND84,87の一方の入力に接続される。インバータ82は、入力が「−0 ENTRY」で、出力が、AND85の一方の入力とAND90の第1入力とAND91の第2入力とに接続される。インバータ83は、入力が「−1 ENTRY」で、出力がAND86の一方の入力とAND88,AND92の第1入力とに接続される。
【0037】
信号「+D0 EX」「+D1 EX」「−D0 EX」は、それぞれデコーダ51から入力する。これらは、デーコーダ51が解読中の命令(IWR0,IWR1)から取得したものである。「+D0 EX」は、IWR0の命令が実行ユニットを使用することを示す信号である。「+D1 EX」は、IWR1の命令が実行ユニットを使用することを示す信号である。「−D0 EX」は、IWR0の命令が実行ユニットを使用しないことを示す信号である。これらは、それぞれの場合に高レベルとなる。図8では、デコーダ51がIWR0とIWR1の命令について、実行ユニットを必要とするか否かを検出することを示している。
【0038】
入力信号「+D0 EX」は、AND84,85,86の他方の入力とAND88の第2入力とAND91の第1入力とに印加される。入力信号「+D1 EX」は、AND77の他方の入力とAND88,90,91の第3入力とAND92の第2入力とに印加される。また、入力信号「−D0 EX」は、AND90の第2入力とAND92の第3入力とに印加される。
【0039】
次に、AND84は、信号「+D0 TO RS」を出力する。この信号「+D0TO RS」は、IWR0の命令を格納レジスタ群42aへディスパッチさせる選択信号である。AND85は、信号「+D0 TO EU0」を出力する。この信号「+D0 TO EU0」は、IWR0の命令を実行ユニットEU0へディスパッチさせる選択信号である。
【0040】
AND87,88の出力は、それぞれOR89の入力に接続される。OR89は、信号「+D1 TO RS」を出力する。この信号「+D1 TO RS」は、IWR0の命令を格納レジスタ群42aへディスパッチさせる選択信号である。AND90は、信号「+D1 TO EU0」を出力する。この信号「+D1 TOEU0」は、IWR1の命令を実行ユニットEU0へディスパッチさせる選択信号である。
【0041】
AND91,92の出力は、OR93の入力に接続される。OR93は、信号「+D1 TO EU1」を出力する。この信号「+D1 TO EU1」は、IWR1の命令を実行ユニットEU1へディスパッチさせる選択信号である。
次に、図9は、選択制御回路52における実行ユニット選択信号生成回路例である。実行ユニット選択信号生成回路は、格納レジスタ群42aの各レジスタからの有効性フラグに基づき実行ユニット選択信号を生成し、選択回路4に出力する。
【0042】
図9において、信号「+RES0・V」は、バッファ94の入力に印加されると共に、AND97の一方の入力とAND98の第1入力とに印加される。信号「−RES0・V」は、AND95の一方の入力とAND96,99の第1入力とに印加される。
信号「+RES1・V」は、AND95,97の他方の入力とAND99の第2入力とに印加される。信号「−RES1・V」は、AND96,98の第2入力に印加される。「+RES2・V」は、AND96,98,99の第3入力に印加される。そして、AND98,99の出力は、それぞれ、OR100の入力に接続される。
【0043】
バッファ94は、信号「+SEL・RES0・EU0」を出力する。この信号「+SEL・RES0・EU0」は、第0レジスタの有効命令を実行ユニットEU0へディスパッチさせる選択信号である。AND95は、信号「+SEL・RES1・EU0」を出力する。信号「+SEL・RES1・EU0」は、第0レジスタの命令が有効でなく第1レジスタの命令が有効である場合に第1レジスタの有効命令を実行ユニットEU0へディスパッチさせる選択信号である。
【0044】
AND96は、信号「+SEL・RES2・EU0」を出力する。この信号「+SEL・RES2・EU0」は、第0レジスタと第1レジスタの命令が命令が有効でなく第2レジスタの命令が有効である場合に第2レジスタの有効命令を実行ユニットEU0へディスパッチさせる選択信号である。
AND97は、信号「+SEL・RES1・EU1」を出力する。この信号「+SEL・RES1・EU1」は、第0レジスタの命令と第1レジスタの命令が共に有効である場合に第1レジスタの有効命令を実行ユニットEU1へディスパッチさせる選択信号である。
【0045】
OR100は、信号「+SEL・RES2・EU1」を出力する。この信号「+SEL・RES2・EU1」は、第0レジスタの命令と第1レジスタの命令と第2レジスタの命令が共に有効であるとき(AND98の出力)、または、第0レジスタの命令と第1レジスタの命令が共に有効でなく第2レジスタの命令が有効であるとき(AND99の出力)、第2レジスタの有効命令を実行ユニットEU1へディスパッチさせる選択信号である。
【0046】
図10は、選択回路53における命令コード選択回路例である。図10において、選択回路53では、選択制御回路52から、選択信号「+SEL・RES0・EU0」、「+SEL・RES1・EU0」、「+SEL・RES2・EU0」、「+SEL・RES1・EU1」、「+SEL・RES2・EU1」がそれぞれ入力する。また、格納レジスタ群42aから、信号「+RES0・OPECODE」、「+RES1・OPECODE」、「+RES2・OPECODE」がそれぞれ入力する。
【0047】
そこで、AND101は、一方の入力に信号「+SEL・RES0・EU0」が、他方の入力に信号「+RES0・OPECODE」がそれぞれ入力し、出力をOR103の第1入力に与える。AND102は、一方の入力に信号「+SEL・RES1・EU0」が、他方の入力に信号「+RES1・OPECODE」がそれぞれ入力し、出力をOR103の第2入力に与える。
【0048】
AND104は、一方の入力に信号「+SEL・RES2・EU0」が、他方の入力に信号「+RES2・OPECODE」がそれぞれ入力し、出力をOR103の第3入力に与える。OR103は、実行ユニットEU0に信号「+EU0 OPECODE」を出力する。
また、AND105は、一方の入力に信号「+SEL・RES1・EU1」が、他方の入力に信号「+RES1・OPECODE」がそれぞれ入力し、出力をOR107の一方の入力に与える。AND106は、一方の入力に信号「+SEL・RES2・EU1」が、他方の入力に信号「+RES2・OPECODE」がそれぞれ入力し、出力をOR107の他方の入力に与える。OR107は、実行ユニットEU1に信号「+EU1 OPECODE」を出力する。
【0049】
この選択回路53では、図8で示した選択信号に従ってIWR0,IWR1の情報を実行ユニットEU0,EU1へディスパッチし、また格納レジスタ群12へディスパッチし、更に格納レジスタ群12の命令を実行ユニットEU0,EU1へディスパッチする。その際に図10に示す手順で各有効命令の「OPECODE」が対応する実行ユニットへディスパッチされる。
【0050】
以上の構成と請求項1との対応関係は、次のようになっている。実行ユニット1には、実行ユニット43−1〜43−m(EU0、EU1)が対応する。必要命令検出手段3には、デコーダ51が対応する。命令格納手段4には、格納レジスタ群42(42a)が対応する。有効命令検出手段5には、選択制御回路52が対応する。給送制御手段6には、主として選択制御回路52が対応する。
【0051】
以下、図5〜図10を参照して第1実施形態の動作を説明する。
まず、格納レジスタ群42aに解読済み命令が格納されていない状態、即ち、有効命令が存在しない状態では、図7において、「−0・ENTRY」信号が低レベル、「−1・ENTRY」信号が高レベルである。その結果図8において、インバータ82が出力を高レベルにするので、AND85,90,91の入力状態が問題となる。次の(1)(2)(3)の動作となる。
【0052】
(1)デコーダ51が、IWR0の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」を高レベル、「+D1 EX」を低レベルにしているので、AND85が出力を高レベルにし、AND90,91は出力を低レベルにしている。したがって、選択回路51は、AND85の出力「+D0 TO EU0」に基づき、IWR0の命令を実行ユニットEU0へ送出(ディスパッチ)する。
【0053】
(2)デコーダ41が、IWR1の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D1 EX」と「−D0 EX」を高レベルにしているので、AND90が出力を高レベルにし、AND85,91は出力を低レベルにしている。したがって、選択回路51は、AND90の出力「+D1 TO EU0」に基づき、IWR1の命令を実行ユニットEU0へディスパッチする。
【0054】
(3)デコーダ51が、IWR1、IWR2の命令が共に実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」と「+D1 EX」を高レベルにしているので、AND85,91がそれぞれ出力を高レベルにし、AND90は出力を低レベルにしている。したがって、選択回路51は、AND85の出力「+D0 TO EU0」に基づき、IWR0の命令を実行ユニットEU0へディスパッチし、同時に、OR93の出力「+D1 TO EU1」に基づき、IWR1の命令を実行ユニットEU1へディスパッチする。
【0055】
次に、格納レジスタ群42aに1つの有効命令が格納されている状態では、図7において、「−0・ENTRY」信号が高レベル、「−1・ENTRY」信号が低レベルである。その結果、図8において、インバータ83が出力を高レベルにするので、AND86,88,92の入力状態が問題となる。次の(4)(5)(6)の動作となる。
【0056】
(4)デコーダ51が、IWR0の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」を高レベル、「+D1 EX」を低レベルにしているので、AND86が出力を高レベルにし、AND88,92は出力を低レベルにしている。したがって、選択回路51は、AND86の出力「+D0 TO EU1」に基づき、IWR0の命令を実行ユニットEU1へディスパッチする。
【0057】
(5)デコーダ51が、IWR1の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D1 EX」と「−D0 EX」を高レベルにしているので、AND92が出力を高レベルにし、AND86,88は出力を低レベルにしている。したがって、選択回路51は、OR93の出力「+D1 TO EU1」に基づき、IWR1の命令を実行ユニットEU1へディスパッチする。
【0058】
(6)デコーダ51が、IWR1、IWR2の命令が共に実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」と「+D1 EX」を高レベルにしているので、AND86,88がそれぞれ出力を高レベルにし、AND92は出力を低レベルにしている。したがって、選択回路51は、AND86の出力「+D0 TO EU1」に基づき、IWR0の命令を実行ユニットEU1へディスパッチし、同時に、OR89の出力「+D1 TO RS」に基づき、IWR1の命令を格納レジスタ群42aへディスパッチする。
【0059】
次に、格納レジスタ群42aに2つ以上の有効命令が格納されている状態では、図7において、「−0・ENTRY」信号と「−1・ENTRY」信号が共に高レベルである。その結果、図8において、インバータ81が出力を高レベルにするので、AND84,87の入力状態が問題となる。次の(7)(8)(9)の動作となる。
【0060】
(7)デコーダ51が、IWR0の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」を高レベル、「+D1 EX」を低レベルにしているので、AND84が出力を高レベルにし、AND87は出力を低レベルにしている。したがって、選択回路51は、AND84の出力「+D0 TO RS」に基づき、IWR0の命令を格納レジスタ群42aへディスパッチする。
【0061】
(8)デコーダ51が、IWR1の命令のみが実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D1 EX」を高レベルにしているので、AND87が出力を高レベルにし、AND84は出力を低レベルにしている。したがって、選択回路51は、OR89の出力「+D1 TO RS」に基づき、IWR1の命令を格納レジスタ群42aへディスパッチする。
【0062】
(9)デコーダ51が、IWR1、IWR2の命令が共に実行ユニットを必要とすることを検出した場合。この場合には、デコーダ51は、「+D0 EX」と「+D1 EX」を高レベルにしているので、AND84,87がそれぞれ出力を高レベルにしている。したがって、選択回路51は、AND84の出力「+D0 TO RS」に基づき、IWR0の命令を格納レジスタ群42aへディスパッチし、同時に、OR89の出力「+D1 TO RS」に基づき、IWR1の命令を格納レジスタ群42aへディスパッチする。
【0063】
この図8に示す選択制御回路は、以上のように動作するが、ディスパッチの内容を整理すると、次のようになる。
(イ)IWR0の命令を格納レジスタ群42aへディスパッチする信号「+D0 TO RS」は、IWR0の命令が実行ユニットを使用する場合で、格納レジスタ群42aに2以上の有効な命令があるときに発生する。未処理の命令数が実行ユニット数を超えている場合である。
【0064】
(ロ)IWR0の命令を実行ユニットEU0へディスパッチする信号「+D0TO EU0」は、IWR0の命令が実行ユニットEU0を使用する場合で、格納レジスタ群42aに有効な命令がないときに発生する。(イ)とは逆の場合である。
(ハ)IWR0の命令を実行ユニットEU1へディスパッチする信号「+D0TO EU1」は、IWR0の命令が実行ユニットEU1を使用する場合で、格納レジスタ群42aに有効な命令が1つあるときに発生する。(ロ)と同様のケースである。
【0065】
(ニ)IWR1の命令を格納レジスタ42aへディスパッチする信号「+D1TO RS」は、IWR1の命令が実行ユニットを使用する場合において、格納レジスタ群42aに有効な命令が2つ以上あるとき、または、格納レジスタ群42bに有効な命令が1つあり、かつIWR0の命令が実行ユニットを使用するときに発生する。
【0066】
前者は(イ)と同様のケースである。後者は未処理の命令数が実行ユニット数よりも少ないが、空いている1つの実行ユニットを競合する他の命令に割り当てた場合である。
(ホ)IWR1の命令を実行ユニットEU0へディスパッチする信号「+D1TO EU0」は、IWR1の命令が実行ユニットを使用する場合において、格納レジスタ群42aに有効な命令がなく、かつIWR0の命令が実行ユニットを使用しないときに発生する。未処理の命令がなく実行ユニットが空いており、かつ競合する他の命令がない場合である。
【0067】
(ヘ)IWR1の命令を実行ユニットEU1へディスパッチする信号「+D1TO EU1」は、IWR1の命令が実行ユニットを使用する場合において、格納レジスタ群42aに有効な命令がなく、かつIWR0の命令が実行ユニットを使用するとき、または、格納レジスタ群42aに有効な命令が1つあり、しかもIWR0の命令が実行ユニットを使用しないときに発生する。
【0068】
前者は、未処理の命令がなく実行ユニットが空いており、競合する他の命令と一緒に実行ユニットの割り当てができる場合である。後者は、未処理の命令があり空いている実行ユニットは少ないが、競合する他の命令がない場合である。
以上のように、格納レジスタ群42aに前サイクルでの解読済み命令が格納されていない場合は、解読中命令を直接実行ユニットへディスパッチする一方、格納レジスタ群42aに前サイクルでの解読済み命令が格納されている場合には、解読中命令を空いている実行ユニットへディスパッチするとともに、実行ユニットへディスパッチできなかった解読中命令は格納レジスタ群42aへディスパッチする。
【0069】
そして、次の処理サイクルにおいて、選択制御回路52がこの格納命令を有効フラグの存在から検出して選択回路53に対し格納レジス群42aの各レジスタの内容の取り出しを指示する。そうすると、選択回路53は、図7に示した選択信号に従って命令を取り出し該当する実行ユニットへディスパッチすることになる。
【0070】
〔第2実施形態・・請求項2乃至請求項4に対応〕
図11は、第2実施形態の制御部41の構成例である。この第2実施形態の制御部は、デコーダ111と選択制御回路112と更新保留状態テーブル113と選択回路114とで構成される。なお、格納レジスタ群42は、格納レジスタ群42bと表記する。
【0071】
IWR0,IWR1,IWR2は、それぞれ命令レジスタに設定された命令であるが、それぞれデコーダ111と選択回路114とに入力する。デコーダ111の2つの出力は、一方の出力(実行ユニット必要)が選択制御回路112に与えられ、他方の出力(参照アドレス)が更新保留状態テーブル113に与えられる。
【0072】
格納レジスタ群42bの2つの出力は、一方の出力(解読済み命令)が選択回路114に与えられ、他方の出力(有効性フラグ)が選択制御回路112に与えられる。更新保留状態デーブル113は、格納レジスタ群42bの各レジスタ毎に更新保留状態を示すフラグ(P1,P2)が設定されるテーブルであり、選択制御回路112が指定したアドレスの保留状態フラグ(P1,P2)を選択制御回路112と選択回路114に出力する。
【0073】
なお、更新保留状態とは、当該レジスタの命令について処理中である、ないしは、当該レジスタが使用中であることを意味する。この更新保留状態デーブル113から選択制御回路112に与える保留状態フラグは、「D0 READY」「D1 READY」と表記される(図14)。
選択制御回路112は、デコーダ111、格納レジスタ群42b、更新保留状態テーブル113の各出力を受けて、選択回路114へ選択信号を出力する。選択回路114は、5つの入力を選択制御回路112の出力に従って選択し、3つの実行ユニットEU0,EU1,EU3と格納レジスタ群42bとに分配(ディスパッチ)する。
【0074】
3つの実行ユニットEU0,EU1,EU3は、実行ユニットEU0とEU1が同じ動作を行う実行ユニットグループであり、実行ユニットEU3が別の動作を行う実行ユニットグループである。例えば、実行ユニットEU0とEU1は、オペランドアドレス計算を行い、実行ユニットEU3は、命令アドレス計算を行う等である。
【0075】
図12は、第2実施形態の格納レジスタ群42bの構成例である。この第2実施形態では、格納レジスタ群42bには、図6に示した命令、有効性ビットの他に、図12に示すように、アドレス(ADRS1,ADRS2)、保留状態フラグ(P1、P2)、実行ユニットグループ(EU)が設定される。
【0076】
アドレス(ADRS1,ADRS2)は、命令を供給(ディスパッチ)する実行ユニットのレジスタをアクセスするためのレジスタアドレスである。保留状態フラグ(P1、P2)は、アドレス(ADRS1,ADRS2)で指示されるレジスタが使用可能か否かを示す情報である。実行ユニットのレジスタが使用可能であれば、つまりディスパッチ可能であれば、当該レジスタにディスパッチされる命令のオペランドが参照可能であることを意味する。
【0077】
この保留状態フラグ(P1、P2)は、解読サイクルにおいて、デコーダ111の参照アドレスに従って更新保留状態テーブル113から読み出され、選択制御回路112に上述した「D0 READY」「D1 READY」として出力される。
また、保留状態フラグ(P1、P2)は、ディスパッチサイクルにおいて、デコーダ111の参照アドレスに従って更新保留状態テーブル113から読み出され、選択回路114が選択制御回路112の指示に従って格納レジスタ群42bに取り込ませる。これらは、オペランドが参照可能か否かを検出し、登録する操作である。
【0078】
実行ユニットグループ(EU)は、格納レジスタ群42bの各レジスタに格納される命令がどの実行ユニットグループを使用するかを示す情報である。
この第2実施形態の格納レジスタ群42bは、例えば、「−RES0・V」「−RES0・P1」「−RES0・P2」「−RES0・EU」等の信号を選択制御回路112へ出力する。
【0079】
図13は、選択制御回路111におけるRES・READY発生回路例(a)及びREADY・EU発生回路例(b)である。
図13(a)において、RES・READY発生回路は、4入力のAND131,133と4入力のNAND132,134とを備える。
「+RES0・V」は、AND131,NAND132,AND133,NAND134の第1入力に接続される。「+RES0・P1」は、AND131,NAND132,AND133,NAND134の第2入力に接続される。「+RES0・P2」は、AND131,NAND132,AND133,NAND134の第3入力に接続される。「−RES0・EU」は、AND131,NAND132の第4入力に接続される。「+RES0・EU」は、AND133,NAND134の第4入力に接続される。
【0080】
AND131は、「+RES0・READY 0/1」を出力する。NAND132は、「−RES0・READY 0/1」を出力する。AND133は、「+RES0・READY 2」を出力する。NAND134は、「−RES0・READY 2」を出力する。
ここに、「+RES0・V」は、第0レジスタに格納される命令が有効であることを示している。「+RES0・P1」は、保留状態フラグP1が保留状態ではない、つまり、第0レジスタのうちADRES1で指定されるレジスタが参照可であることを示している。
【0081】
「+RES0・P2」は、保留状態フラグP2が保留状態ではない、つまり、第0レジスタのうちADRES2で指定されるレジスタが参照可であることを示している。「−RES0・EU」は、第0レジスタに格納の命令は、実行ユニットEU0,EU1の何れも不使用であることを示している。また、「+RES0・EU」は、第0レジスタに格納の命令は、実行ユニットEU2を使用することを示している。
【0082】
したがって、「+RES0・READY 0/1」は、第0レジスタのADRES1,ADRES2で指定されるレジスタが共に参照可能で、かつ実行ユニットEU0,EU1を使用することを示す。逆に「−RES0・READY 0/1」は、第0レジスタのADRES1,ADRES2で指定されるレジスタが共に参照可能であるが、実行ユニットEU0,EU1を使用するものがないことを示す。
【0083】
また、「+RES0・READY 2」は、第0レジスタのADRES1,ADRES2で指定されるレジスタが共に参照可能で、かつ実行ユニットEU2を使用することを示す。逆に「−RES0・READY 2」は、第0レジスタのADRES1,ADRES2で指定されるレジスタが共に参照可能であるが、実行ユニットEU2を使用するものがないことを示す。
【0084】
そして、図示省略したが、RES1,RES2,RES3についても同様の回路を用意してある。これにより「−RES0・READY 0/1、−RES1・READY 0/1、−RES2・READY 0/1、−RES3・READY0/1」、「−RES0・READY 2、−RES1・READY 2、−RES2・READY 2、−RES3・READY 2」及び「+RES0・READY 0/1、+RES1・READY 0/1、+RES2・READY 0/1、+RES3・READY 0/1」が得られる。これらは、図13(b)のRES・EU発生回路に与えられる。
【0085】
図13(b)において、RES・EU発生回路は、4入力のNAND135,136,NAND137を備える。
NAND135は、「−RES0・READY 0/1、−RES1・READY 0/1、−RES2・READY 0/1、−RES3・READY 0/1」が入力し、「−0 READY・EU 0/1」を出力する。この出力「−0 READY・EU 0/1」は、第0〜第3の各レジスタに格納の命令は全て有効であり、ADRES1,ADRES2で指定されるレジスタが共に参照可能であるが、実行ユニットEU0,EU1を使用する命令がないことを示す。この出力「−0READY・EU 0/1」は、図14に示す選択制御回路のAND141の一方の入力とインバータ142の入力とに与えられる。
【0086】
NAND136は、「−RES0・READY 2、−RES1・READY 2、−RES2・READY 2、−RES3・READY 2」が入力し、「−0 READY・EU2」を出力する。この出力「−0 READY・EU2」は、第0〜第3の各レジスタに格納の命令は全て有効であり、ADRES1,ADRES2で指定されるレジスタが共に参照可能であるが、実行ユニットEU2を使用する命令がないことを示す。この出力「−0 READY・EU2」は、図14に示す選択制御回路のバッファ144とインバータ145とに与えられる。
【0087】
NAND137は、「+RES0・READY 0/1、+RES1・READY 0/1、+RES2・READY 0/1、+RES3・READY 0/1」が入力し、「−1 READY・EU 0/1」を出力する。この出力「−1 READY・EU 0/1」は、第0〜第3の各レジスタに格納の命令は全て有効であり、ADRES1,ADRES2で指定されるレジスタが共に参照可能であり、実行ユニットEU0,EU1を使用する命令が1つあることを示す。この出力「−1 READY・EU 0/1」は、図14に示す選択制御回路のAND141の他方の入力とインバータ143の入力とに与えられる。
【0088】
図14は、選択制御回路112における選択信号発生回路例である。この選択信号発生回路の出力(選択信号)は、選択回路114へ出力される。
図14において、AND141では、一方の入力が信号「−0 READY EU 0/1」で、他方の入力が信号「+1 READY EU 0/1」で、出力がAND156,163の一方の入力に接続される。インバータ142は、入力が信号「−0 READY EU 0/1」で、出力がAND150,158の第1入力とAND159の第2入力に接続される。インバータ143は、入力が信号「+1 READY EU 0/1」で、出力がAND151,160の第1入力とAND154の第2入力に接続される。
【0089】
AND144は、入力が信号「−0 READY EU 2」で、出力がAND147,155の一方の入力に接続される。インバータ145は、入力が信号「−0 READY EU 2」で、出力がAND152,162の第1入力に接続される。
信号「+D0 EX 0/1」「+D0 EX 2」「+D1 EX 0/1」「+D1 EX 2」「−D0 EX」「−D0 EX 2」は、それぞれデコーダ111から入力する。これらは、デコーダ111が解読中の命令(IWR0,IWR1)から取得したものである。また、信号「−D0 READY」「−D1 READY」は、解読サイクルにおいて、更新保留状態テーブル113からデコーダ111の参照アドレスに従って読み出され入力する。
【0090】
信号「+D0 EX 0/1」は、IWR0の命令が実行ユニットEU0,EU1を使用することを示す信号である。この信号「+D0 EX 0/1」は、AND146の他方の入力とAND148の一方の入力とAND150,151の第3入力とAND154,159の第1入力とに接続される。
信号「+D0 EX 2」は、IWR0の命令が実行ユニットEU2を使用することを示す信号である。この信号「+D0 EX 2」は、AND147の他方の入力とAND152の第2入力とに接続される。
【0091】
信号「−D0 READY」は、IWR0の命令のレジスタオペランドで参照可能でないことを示す信号である。この信号「−D0 READY」は、AND148の他方の入力とAND150,151の第2入力とAND152の第3入力とに接続される。
信号「+D1 EX 0/1」は、IWR1の命令が実行ユニットEU0,EU1を使用することを示す信号である。この信号「+D1 EX 0/1」は、AND153の他方の入力とAND154の第3入力とAND156の一方の入力と158,159の第4入力とAND160の第2入力とに接続される。
【0092】
信号「+D1 EX 2」は、IWR1の命令が実行ユニットEU2を使用することを示す信号である。この信号「+D1 EX 2」は、AND155他方の入力とAND162の第2入力とに接続される。
信号「−D1 READY」は、IWR1の命令のレジスタオペランドで参照可能でないことを示す信号である。この信号「−D1 READY」は、AND156の他方の入力とAND158の第2入力とAND159の第3入力とAND160の第4入力とAND162の第3入力とに接続される。
【0093】
信号「−D0 EX」は、IWR0の命令が実行ユニットを使用しないことを示す信号である。この信号「−D0 EX」は、AND158の第2入力とAND160の第3入力とに接続される。
信号「−D0 EX 2」は、IWR0の命令が実行ユニットEU2を使用しないことを示す信号である。この信号「−D0 EX 2」は、AND162の第4入力に接続される。
【0094】
次に、AND146,147,148の出力は、それぞれOR149の入力に接続される。OR149は、信号「+D0 TO RS」を出力する。この信号「+D0 TO RS」は、IWR0の命令を格納レジスタ群42bへディスパッチさせる選択信号である。
AND150は、信号「+D0 TO EU0」を出力する。この信号「+D0 TO EU0」は、IWR0の命令を実行ユニットEU0へディスパッチさせる選択信号である。AND151は、信号「+D0 TO EU1」を出力する。この信号「+D0 TO EU1」は、IWR0の命令を実行ユニットEU1へディスパッチさせる選択信号である。AND152は、信号「+D1 TO EU2」を出力する。この信号「+D1 TO EU2」は、IWR1の命令を実行ユニットEU2へディスパッチさせる選択信号である。
【0095】
AND153,154,155,156の出力は、それぞれOR157の入力に接続される。OR157は、信号「+D1 TO RS」を出力する。この信号「+D1 TO RS」は、IWR1の命令を格納レジスタ群42bへディスパッチさせる選択信号である。
AND158は、信号「+D1 TO RS」を出力する。この信号「+D1 TO RS」は、IWR1の命令を格納レジスタ群42bへディスパッチさせる選択信号である。
【0096】
AND159,160の出力は、それぞれOR161の入力に接続される。OR161は、信号「+D1 TO EU1」を出力する。この信号「+D1 TO EU1」は、IWR0の命令を実行ユニットEU1へディスパッチさせる選択信号である。
AND162は、信号「+D1 TO EU2」を出力する。この信号「+D1TO EU2」は、IWR1の命令を実行ユニットEU2へディスパッチさせる選択信号である。
【0097】
以上の構成と請求項2乃至請求項4との対応関係は、次のようになっている。実行ユニット1には、実行ユニット43−1〜43−m(EU0、EU1、EU2)が対応する。必要命令検出手段3には、デコーダ111が対応する。命令格納手段4には、格納レジスタ群42(42b)が対応する。処理状況テーブル7には、更新保留状態テーブル113が対応する。参照可能命令検出手段8には、デコーダ111、選択制御回路112及び更新保留状態テーブル113の全体が対応する。第1給送制御手段10、登録手段11、第2給送制御手段12、命令検出手段13、第3給送制御手段12には、主として選択制御回路112が対応する。
【0098】
以下、図11〜図14を参照して第2実施形態の動作を説明する。
まず、格納レジスタ群42bに解読済み命令が格納されていない状態、即ち、有効命令が存在しない状態では、図14において、信号「−0 READY EU 0/1」「−1 READY EU 0/1」「−0 READY EU 2」が共に高レベルである。その結果、図13においてAND141とAND144が共に出力を高レベルにするので、AND146,153の入力状態、AND147,155の入力状態が問題となる。次の(10)(11)(12)(13)の動作となる。
【0099】
(10)デコーダ101が、IWR0の命令のみが実行ユニットEU0,EU1を必要とすることを検出した場合。
この場合には、デコーダ111は、信号「+D0 EX 0/1」を高レベル、信号「+D0 EX 2」「+D1 EX 0/1」「+D0 EX 2」を低レベルにしている。また、デコーダ111の参照アドレスに従い更新保留状態テーブル113から入力する信号「−D0 READY」は低レベルである。AND146の出力がOR149に与えられる。したがって、選択回路114は、OR149の出力「+D0 TO RS」に従ってIWR0の命令を格納レジスタ群42bへディスパッチする。
【0100】
(11)デコーダ111が、IWR0の命令のみが実行ユニットEU2を必要とすることを検出した場合。
この場合には、デコーダ111は、信号「+D0 EX 2」を高レベル、信号「+D0 EX 0/1」「+D1 EX 0/1」「+D0 EX 2」を低レベルにしている。また、デコーダ111の参照アドレスに従い更新保留状態テーブル113から入力する信号「−D0 READY」は低レベルである。
【0101】
したがって、AND147の出力がOR139に与えられるので、選択回路114は、OR149の出力「+D0 TO RS」に従ってIWR0の命令を格納レジスタ群42bへディスパッチする。
(12)デコーダ111が、IWR1の命令のみが実行ユニットEU0,EU1を必要とすることを検出した場合。
【0102】
この場合には、デコーダ111は、信号「+D1 EX 0/1」を高レベル、信号「+D0 EX 2」「+D0 EX 0/1」「+D1 EX 2」を低レベルにしている。また、デコーダ111の参照アドレスに従い更新保留状態テーブル113から入力する信号「−D1 READY」は低レベルである。
したがって、AND153の出力がOR157に与えられるので、選択回路114は、OR157の出力「+D1 TO RS」に従ってIWR1の命令を格納レジスタ群42bへディスパッチする。
【0103】
(13)デコーダ111が、IWR1の命令のみが実行ユニットEU2を必要とすることを検出した場合。この場合には、デコーダ111は、信号「+D1 EX 2」を高レベル、信号「+D0 EX 2」「+D0 EU 0/1」「+D1 EU 0/1」を低レベルにしている。また、デコーダ111の参照アドレスに従い更新保留状態テーブル113から入力する信号「−D1 READY」は低レベルである。
【0104】
したがって、AND155の出力がOR157に与えられるので、選択回路114は、OR157の出力「+D1 TO RS」に従ってIWR1の命令を格納レジスタ群42bへディスパッチする。
次に、格納レジスタ群12bに有効命令が格納されている状態では、図13において、信号「−0 READY EU 0/1」「−1 READY EU 0/1」「−0 READY EU 2」は、次のようになる。
【0105】
a)低レベルの信号「−0 READY EU 0/1」は、実行ユニットグループEUが実行ユニットEU0,EU1を使用するものがない場合において、保留状態フラグP1,P2が共にオペランド参照可能であることを示す。この場合には、図14において、インバータ142が出力を高レベルにするので、AND150、158、159の入力状態が問題となる。
【0106】
AND150の入力信号は、「+D0 EX 0/1」「−D0 READY」である。信号「−D0 READY」は、IWR0の命令のレジスタオペランドで参照可能であることを示す。選択回路114は、AND150の出力「+D0 TOEU0」に従いIWR0の命令を実行ユニットEU0へディスパッチする。
AND158の入力信号は、デコーダ111からの「+D1 EX 0/1」「−D0 EX」、デコーダ111の参照アドレスに従い更新保留状態テーブル113から入力する「−D1 READY」である。
【0107】
信号「+D1 EX 0/1」は、デコーダ111が、IWR1の命令が実行ユニットEU0、EU1を必要とすることを検出した場合に入力する。信号「−D0 EX」は、デコーダ111が、IWR0の命令が実行ユニットを使用しないことを検出した場合に入力する。信号「−D1 READY」は、IWR1の命令のレジスタオペランドで参照可能であることを示す。
【0108】
AND158は、これら3つの入力信号がこのように条件を満たすとき、「+D1 TO EU0」を出力する。選択回路114は、IWR1の命令を実行ユニットEU0へディスパッチする。
また、AND159の入力信号は、デコーダ111からの「+D0 EX 0/1」「+D1 EX 0/1」「−D0 EX」、更新保留状態テーブル113からの「−D1 READY」である。信号「+D0 EX 0/1」は、デコーダ111が、IWR0の命令が実行ユニットEU0、EU1を必要とすることを検出した場合に入力する。
【0109】
AND159は、これら4つの信号がこのような条件を満たすとき、OR161を介して「+D1 TO EU1」を出力する。選択回路114は、IWR1の命令を実行ユニットEU1へディスパッチする。IWR0の命令は、実行ユニットの割り当てを受けられなかったので、格納レジスタ群42bへディスパッチされることになる。
【0110】
b)低レベルの信号「−1 READY EU 0/1」は、実行ユニットグループEUが実行ユニットEU0,EU1を使用するものが1つある場合において、保留状態フラグP1,P2が共にオペランド参照可能であることを示す。この場合には、図14において、インバータ143が出力を高レベルにするので、AND151、154、160の入力状態が問題となる。
【0111】
AND151の入力信号は、「+D0 EX 0/1」「−D0 READY」である。信号「−D0 READY」は、IWR0の命令のレジスタオペランドで参照可能であることを示す。選択回路114は、AND151の出力「+D1 TO EU1」に従いIWR0の命令を実行ユニットEU1へディスパッチする。
【0112】
AND154の入力信号は、「+D0 EX 0/1」「+D1 EX 0/1」である。AND154は、2つの信号がこのような条件を満たすとき、OR157を介して「+D1 TO RS」を出力する。選択回路114は、OR157の出力に従ってIWR1の命令を格納レジスタ群42bへディスパッチする。なお、IWR0の命令は、割り当てを受けた実行ユニットへディスパッチされる。
【0113】
AND160の入力信号は、「+D1 EX 0/1」「−D1 READY」「−D0 EX」である。信号「−D1 READY」は、IWR1の命令のレジスタオペランドで参照可能であることを示す。
AND160は、これら3つの信号がこのような条件を満たすとき、OR161を介して「+D1 TO EU1」を出力する。選択回路114は、OR161の出力に従ってIWRIの命令を実行ユニットEU1へディスパッチする。
【0114】
c)低レベルの信号「−0 READY EU 2」は、実行ユニットグループEUが実行ユニットEU2を使用するものがない場合において、保留状態フラグP1,P2が共にオペランド参照可能であることを示す。この場合には、図14において、インバータ145が出力を高レベルにするので、AND152、162の入力状態が問題となる。
【0115】
AND152の入力信号は、デコーダ111からの「+D0 EX 2」、更新保留状態テーブル113から入力する「−D0 READY」である。
信号「+D0 EX 2」は、デコーダ111が、IWR1の命令が実行ユニットEU2を必要とすることを検出した場合に入力する。信号「−D0 READY」は、IWR0の命令のレジスタオペランドで参照可能であることを示す。
【0116】
AND152は、2つの入力信号がこのように条件を満たすとき、「+D0 TO EU2」を出力する。選択回路114は、AND152の出力に従ってIWR0の命令を実行ユニットEU2へディスパッチする。
【0117】
また、AND162の入力信号は、デコーダ111からの「+D1 EX 2」「−D0 EX 2」、更新保留状態テーブル113からの「−D1 READY」である。信号「+D1 EX 2」は、デコーダ111が、IWR1の命令が実行ユニットEU2を必要とすることを検出した場合に入力する。信号「−D0 EX2」は、デコーダ111が、IWR0の命令が実行ユニットEU2を必要としないことを検出した場合に入力する。
【0118】
AND162は、これら3つの信号がこのような条件を満たすとき、信号「+D1 TO EU2」を出力する。選択回路114は、AND162の出力に従ってIWR1の命令を実行ユニットEU2へディスパッチする。
そして、AND156では、信号「+D1 EX 0/1」「−D1 READY」が入力し、OR157を介して信号「+D1 TO RS」を出力する。選択回路114は、OR157の出力に従ってIWR1の命令を格納レジスタ群42bへディスパッチする。実行ユニットの割り当てが受けられなかったのである。
【0119】
この図13に示す選択制御回路は、以上のように動作するが、ディスパッチの内容を整理すると、次のようになる。
(イ)IWR0の命令を格納レジスタ12bへディスパッチする信号「+D0TO RS」は、次の場合に発生する。
*1。IWR0の命令が実行ユニットEU0,EU1を使用する場合。
【0120】
格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が2つ以上あるとき、
または、格納レジスタ群42bにおいてオペランドが参照可能でないとき
*2。IWR0の命令が実行ユニットEU2を使用する場合。
格納レジスタ群12bにおいてオペランドが参照可能で、かつ実行ユニットEU2を使用する命令が1つ以上有効であるとき
(ロ)IWR0の命令を実行ユニットEU0へディスパッチする信号「+D0TO EU0」は、IWR0の命令がオペランドを参照可能で、かつ実行ユニットEU0、EU1を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が有効でないときに発生する。
【0121】
(ハ)IWR0の命令を実行ユニットEU1へディスパッチする信号「+D0TO EU1」は、IWR0の命令がオペランドを参照可能で、かつ実行ユニットEU0、EU1を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が1つ有効であるときに発生する。
【0122】
(ニ)IWR0の命令を実行ユニットEU2へディスパッチする信号「+D0TO EU2」は、IWR0の命令がオペランドを参照可能で、かつ実行ユニットEU2を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU2を使用する命令が有効でないときに発生する。
(ホ)IWR1の命令を格納レジスタ42bへディスパッチする信号「+D1TO RS」は、次の場合に発生する。
【0123】
*1。IWR1の命令が実行ユニットEU0,EU1を使用する場合。
格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が2つ以上あるとき、または、格納レジスタ群42bにおいてオペランドが参照可能でないとき、さらに、同時にIWR0の命令が実行ユニットEU0,EU1を使用するとき
*2。IWR1の命令が実行ユニットEU2を使用する場合には、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU2を使用する命令が1つ以上有効であるとき
(ヘ)IWR1の命令を実行ユニットEU0へディスパッチする信号「+D1TO EU0」は、IWR1の命令がオペランドを参照可能で、かつ実行ユニットEU0、EU1を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が有効で、かつIWR0の命令が実行ユニットを使用しないときに発生する。
【0124】
(ト)IWR1の命令を実行ユニットEU1へディスパッチする信号「+D1TO EU1」は、IWR1の命令がオペランドを参照可能で、かつ実行ユニットEU0、EU1を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU0、EU1を使用する命令が1つ有効で、かつIWR0の命令が実行ユニットを使用しないときに発生する。
(チ)IWR1の命令を実行ユニットEU2へディスパッチする信号「+D1TO EU2」は、IWR1の命令がオペランドを参照可能で、かつ実行ユニットEU2を使用し、格納レジスタ群42bにおいてオペランドが参照可能で、かつ実行ユニットEU2を使用する命令が有効でないときで、IWR0の命令が実行ユニットEU2を使用しないときに発生する。
【0125】
この第2実施形態では、端的にCISC方式の命令セットを、RISC方式の命令セットを処理するサイクルと同じサイクル数で処理できることを示しているが、オペランドを参照してディスパッチを制御するので、単に有効性ビットを確認して制御する第1実施形の方式よりも処理速度の向上を図ることができる。 そこで、請求項2、3に対応する実施形態として、第1実施形態の方式において、この第2実施形態と同様の更新保留状態テーブルを設け、格納レジスタ群42aを格納レジスタ群42bのように構成すれば、同様にオペランドを参照してディスパッチを制御でき、この第2実施形態と同様に処理速度の向上が図れる。なお、請求項2、3に対応する実施形態では、実行ユニットの性格については、第1実施形態と同様に特に問わないものとする。
【0126】
【発明の効果】
以上説明したように、請求項1に記載の発明は、解読サイクルにおいて、実行ユニットを必要とする解読中命令数と格納されている解読済み命令の有効数を検出し、実行ユニット数が有効命令数よりも多いときは、解読中命令の一部を空いている実行ユニットへ給送し、実行ユニットが割り当てられないため給送できなかった解読中命令を命令格納手段へ給送する。
【0127】
即ち、解読中命令を、命令格納手段へ給送する同じサイクル(ディスパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となる。
請求項2に記載の発明は、解読サイクルにおいて、実行ユニットを必要とする解読中命令数とオペランドが参照可能な解読中命令数とを検出し、オペランドが参照可能な命令を空いている実行ユニットへ給送し、オペランドが参照可能でないため実行ユニットへ給送できなかった命令を命令格納手段へ給送して格納させる。
【0128】
これにより、解読中命令を、命令格納手段へ給送する同じサイクル(ディスパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となる。このとき、給送制御を命令中命令のオペランドの参照可否に基づき行うので、格納する解読済み命令の増加による処理の停滞が生ずる可能性を回避できる。
【0129】
請求項3に記載の発明は、解読サイクルにおいて、実行ユニットを必要とする解読中命令数とオペランドが参照可能な解読中命令数とを検出し、オペランドが参照可能な命令を空いている実行ユニットへ給送し、オペランドが参照可能でないため実行ユニットへ給送できなかった命令を命令格納手段へ給送して格納させると共に、命令格納手段へ給送する解読済み命令のオペランドの参照可否を命令格納手段に登録し、命令格納手段に格納される解読済み命令の給送制御を有効性とオペランド参照可否に基づき行う。
【0130】
これにより、解読中命令を、処理の停滞を招くことなく命令格納手段へ給送する同じサイクル(ディスパッチサイクル)において並行して実行ユニットへ給送できるので、複雑な命令セットであっても高速処理が可能となると共に、命令格納手段中の解読済み命令の給送制御をその解読済み命令の有効性とオペランドの参照可否に基づき行うので、給送制御を一層円滑かつ確実に行うことができる。
【0131】
請求項4に記載の発明は、異なった処理を行う複数種類の実行ユニットグループについての給送制御を、請求項1乃至請求項3の何れか1項に記載の発明によって実現できる。
これにより、CISC方式の命令セットが対象とする演算を、{(解読)のサイクル}と{(ディスパッチ)+(実行)のサイクル}と{(実行)のサイクル}との3つのサイクルで処理でき、複雑な命令セットの高速処理が可能となる。
【図面の簡単な説明】
【図1】請求項1に記載の発明の原理ブロック図である。
【図2】請求項2に記載の発明の原理ブロック図である。
【図3】請求項3に記載の発明の原理ブロック図である。
【図4】請求項1乃至請求項4に対応する実施形態の構成図である。
【図5】第1実施形態の制御部の構成図である。
【図6】第1実施形態の格納レジスタ群の構成図である。
【図7】第1実施形態の選択制御回路(ENTRY信号生成回路)の構成図である。
【図8】第1実施形態の選択制御回路(給送先選択信号発生回路)の構成図である。
【図9】第1実施形態の選択制御回路(実行ユニット選択信号発生回路)の構成図である。
【図10】第1実施形態の選択回路(命令コード選択回路)の構成図である。
【図11】第2実施形態の制御部の構成図である。
【図12】第2実施形態の格納レジスタ群の構成図である。
【図13】第2実施形態の選択制御回路の構成図である。(a)はRES・READY発生回路例である。(b)READY・EU発生回路例である。
【図14】第2実施形態の選択制御回路(給送先選択信号発生回路)の構成図である。
【図15】RISC方式の命令セットを備える情報処理装置の構成例である。
【図16】CISC方式の命令セットを備える情報処理装置の構成例である。
【符号の説明】
1 実行ユニット
3 必要命令検出手段
4 命令格納手段
5 有効命令検出手段
6、9 給送制御手段
7 処理状況テーブル
8 参照可能命令検出手段
10 第1給送制御手段
11 登録手段
12 第2給送制御手段
13 命令検出手段
14 第3給送制御手段
41 制御部
41−1〜41−n 命令レジスタ
42、42a、42b 格納レジスタ群
43−1〜43−m 実行ユニット
51、111 デコーダ
52、112 選択制御回路
53、114 選択回路
113 更新保留状態テーブル[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an information processing apparatus that includes a plurality of execution units that can operate simultaneously and that simultaneously decodes and executes a plurality of instructions, and in particular, supplies a plurality of instructions that are simultaneously decoded to an execution unit (hereinafter, referred to as “dispatch”). The present invention relates to an improvement in an instruction control method for controlling a command.
Information processing apparatuses that simultaneously decode and execute a plurality of instructions include a computer using a reduced in-structural set computer (RISC) system and a computer using a computer in a complex in-structural set computer (CISC) system.
The CISC system has a complicated instruction set so as to flexibly cope with compatibility and expansion of functions, and can flexibly incorporate hardware technology with rapid progress. On the other hand, the RISC method is based on the premise that a program is written in a high-level language and has been proposed as an architecture capable of executing the program efficiently. Its instruction set is limited to only the most frequently used instructions. Other functions realize high-speed processing by combining and executing the limited instructions. These differences indicate that the instruction processing cycles realized by the RISC system and the CISC system are different from each other.
[0002]
[Prior art]
FIG. 15 is an example of the configuration of an information processing apparatus provided with a RISC instruction set. In the RISC instruction set architecture, the operands of the execution units are usually registers, and memory accesses occur only for load / store instructions.
[0003]
Therefore, as shown in FIG. 15, for example, as shown in FIG. 15, a configuration for implementing the instruction set of the RISC system includes a plurality of
[0004]
In the decoding cycle D1, a plurality of instructions fetched into the plurality of
[0005]
Next, FIG. 16 is a configuration example of an information processing apparatus including an instruction set of the CISC system. In a CISC instruction set architecture, the operands of an execution unit are usually registers and memory operands, and memory accesses occur frequently in general instructions. Obtaining a memory operand requires address calculation and memory access, and requires a larger number of clocks than obtaining a register operand.
[0006]
Therefore, as shown in FIG. 16, for example, a configuration for implementing the instruction set of the CISC system includes a plurality of
[0007]
As shown in FIG. 16, the instruction processing cycle includes a decoding cycle D1, a dispatch cycle D2, and two instruction execution cycles E1 and E2, and the
[0008]
That is, in the instruction execution cycle E1, the
[0009]
[Problems to be solved by the invention]
The instruction set of the CISC system is useful because it is rich in extensibility. However, as described above, the instruction processing cycle in the CISC system is one cycle longer than the instruction processing cycle in the RISC system, so that the speed is increased. Will be lacking.
SUMMARY OF THE INVENTION It is an object of the present invention to provide an information processing apparatus that executes instruction processing at a high speed by simultaneously decoding and executing a plurality of instructions. An object of the present invention is to provide an instruction control method which can have the same number of cycles as the number of instruction processing cycles in the method.
[0010]
[Means for Solving the Problems]
FIG. 1 is a block diagram showing the principle of the first aspect of the present invention.
According to the first aspect of the present invention, in an information processing apparatus including a plurality of
[0011]
That is, in the invention according to the first aspect, in the decoding cycle, the necessary instruction detecting means 3 detects an instruction requiring the
And the feed control means 6 Vacant The magnitude relation between the number of necessary execution units and the number of valid instructions detected by the valid instruction detecting means 5 is determined, Vacant When there are more effective instructions than the number of execution units, 1 If not, all of the instructions being decoded are sent to the instruction storage means 4 for storage. You. one Who Than the number of free required
[0012]
Thus, the instruction during decoding can be fed to the execution unit in parallel in the same cycle (dispatch cycle) for feeding the instruction storing means, so that high-speed processing can be performed even for a complicated instruction set.
FIG. 2 is a block diagram showing the principle of the second aspect of the present invention.
According to a second aspect of the present invention, in an information processing apparatus including a plurality of
[0013]
That is, in the invention according to the second aspect, in the decoding cycle, the necessary
[0014]
Accordingly, the instruction during decoding can be fed to the execution unit in parallel in the same cycle (dispatch cycle) for feeding the instruction storing means, so that even a complicated instruction set can be processed at high speed. At this time, since the feed control is performed based on whether or not the operands of the instruction being decoded can be referred to, it is possible to avoid a possibility that the processing may be stagnated due to an increase in the stored decoded instructions.
[0015]
FIG. 3 is a principle block diagram of the third aspect of the present invention.
According to a third aspect of the present invention, in an information processing apparatus including a plurality of
[0016]
That is, according to the third aspect of the present invention, in the decoding cycle, the necessary
[0017]
At this time, the registration unit 11 registers in the
Then, the third
[0018]
Thus, the instruction during decoding can be sent to the execution unit in parallel in the same cycle (dispatch cycle) in which the instruction is sent to the instruction storage means without causing a stagnation of the processing. Becomes possible. At this time, the feed control of the decoded instruction in the instruction storage means is performed based on the validity of the decoded instruction and whether or not the operand can be referred to, so that the feed control can be performed more smoothly and reliably.
[0019]
According to a fourth aspect of the present invention, in the information processing apparatus according to any one of the first to third aspects, the plurality of
That is, according to the fourth aspect of the present invention, the feed control for a plurality of types of execution unit groups that perform different processes can be realized by the first aspect of the present invention.
[0020]
As a result, the operation targeted by the instruction set of the CISC method can be processed in three cycles of {(decoding) cycle} and {(dispatch) + (execution) cycle} and {(execution) cycle}. Thus, high-speed processing of a complicated instruction set becomes possible.
[0021]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
[0022]
FIG. 4 shows a configuration of an embodiment corresponding to
[0023]
That is, the control unit 41 performs the dispatch cycle D2 and the instruction execution cycle E1 in the instruction processing cycle in the CISC system in parallel so that the instruction execution cycle E2 can be executed at the same timing as the instruction execution cycle E in the RISC system. Controls dispatch of instructions.
As a result, in the dispatch cycle D2, address calculation and memory access become possible in parallel with the dispatch (instruction execution cycle E1). You Thus, the operation of the register operand and the memory operand can be executed (instruction execution cycle E2).
[0024]
That is, in the instruction control method of this embodiment, processing of an instruction set formed by the CICS method can be realized in the same number of cycles as processing of an instruction set formed by the RISC method.
This embodiment includes a first embodiment in which "a plurality of execution units are handled without being distinguished" and a second embodiment in which "a plurality of execution units are grouped according to their characteristics". However, for convenience of explanation, the number of execution units is 2 in the first embodiment and 3 in the second embodiment. In addition, the number of simultaneous decoding instructions is three.
[0025]
[First Embodiment: Corresponding to Claim 1]
FIG. 5 is a configuration example of the control unit 41 of the first embodiment. The control unit 41 of the first embodiment includes a
IWR0, IWR1, and IWR2 are instructions set in the instruction register, respectively, and are input to the
[0026]
One of the two outputs of the storage register group 42a (information of the stored instruction) is supplied to the selection circuit 53, and the other (validity flag) is supplied to the
[0027]
FIG. 6 is a configuration example of the storage register group 42a according to the first embodiment. As shown in FIG. 6, the decoded instructions (
The validity bit is "1" (valid) while the instruction is stored in the register, but becomes "0" when fetched to the execution unit. That is, FIG. 6 shows that
[0028]
In this embodiment, in each register of the storage register group 42a, the 0th register is represented by RES0, the first register is represented by RES1, the second register is represented by RES2, and the third register is represented by RES3. Also, the validity bit is denoted by V, V = “1” is denoted by “+”, and V = “0” is denoted by “−”. This is the contents of the validity flag output from the storage register group 42a to the
[0029]
Specifically, for example, the validity flag for the 0th register is “+ RES0 · V, −RES0 · V”, and the validity flag for the first register is “+ RES1 · V, −RES1 · V”. And the validity flag for the second register is “+ RES2 · V, −RES2 · V”. In each case, the level is high.
[0030]
In addition to the decoded instruction, various information of each decoded instruction is given from each register of the storage register group 42a to the selection circuit 53. This is necessary for execution of instructions in the execution unit. In this embodiment, “OPECODE” is taken as an example. Specifically, for example, “+ RES0 · OPECODE” is output for the instruction of the 0th register, and “+ RES1 · OPECODE” is output for the instruction of the first register.
[0031]
FIG. 7 is an example of an ENTRY signal generation circuit in the
In this embodiment, as shown in FIG. 6, four
[0032]
The
[0033]
The AND72 receives + RES0.V, -RES1.V, -RES2.V, and -RES3.V. That is, the AND 72 sets the output to a high level when a valid instruction exists in the 0th register among the 0th to 3rd registers. This is the first input of the NOR 76. The AND73 receives −RES0 · V, + RES1 · V, −RES2 · V, and −RES3 · V. That is, AND 7 No. 2 sets the output to a high level when a valid instruction exists in the first register among the four registers from the 0th to the 3rd. This is the
[0034]
AND74 receives -RES0.V, -RES1.V, + RES2.V, and -RES3.V. That is, the AND 74 sets the output to a high level when a valid instruction exists in the second register among the four registers from the 0th to the 3rd. This is NOR 7 6 is the third input.
AND75 receives -RES0.V, -RES1.V, -RES2.V, and + RES3.V. That is, the AND 75 sets the output to a high level when a valid instruction exists in the third register among the four registers from the 0th to the 3rd. This is the fourth input of NOR 66.
[0035]
In these
[0036]
FIG. 8 is an example of a selection signal generation circuit in the
[0037]
The signals “+ D0 EX”, “+ D1 EX” and “−D0 EX” are 5 Input from 1. These are obtained from the instructions (IWR0, IWR1) being decoded by the
[0038]
The input signal “+ D0 EX” is applied to the other input of AND84, 85, 86, the second input of AND88, and the first input of AND91. The input signal “+ D1 EX” is applied to the other input of AND77, the third input of AND88, 90, 91, and the second input of AND92. The input signal “−D0 EX” is applied to the second input of the AND 90 and the third input of the AND 92.
[0039]
Next, the AND 84 outputs a signal “+ D0 TO RS”. This signal "+ D0TO RS" is a selection signal for dispatching the instruction of IWR0 to the storage register group 42a. AND85 outputs the signal “+ D0 TO EU0”. This signal "+ D0 TO EU0" is a selection signal for dispatching the instruction of IWR0 to the execution unit EU0.
[0040]
The outputs of the
[0041]
The outputs of the
Next, FIG. 9 is an example of an execution unit selection signal generation circuit in the
[0042]
In FIG. 9, the signal “+ RES0 · V” is applied to the input of the
The signal “+ RES1 · V” is applied to the other inputs of
[0043]
The
[0044]
AND96 outputs the signal "+ SEL.RES2.EU0". This signal "+ SEL.RES2.EU0" causes the valid instruction of the second register to be dispatched to the execution unit EU0 when the instructions of the 0th and 1st registers are not valid and the instruction of the 2nd register is valid. This is a selection signal.
The AND 97 outputs a signal “+ SEL · RES1 · EU1”. This signal "+ SEL.RES1.EU1" is a selection signal for dispatching a valid instruction in the first register to the execution unit EU1 when both the instruction in the 0th register and the instruction in the first register are valid.
[0045]
OR100 outputs a signal “+ SEL · RES2 · EU1”. This signal "+ SEL.RES2.EU1" is output when both the instruction of the 0th register, the instruction of the first register, and the instruction of the second register are valid (output of AND98), or the instruction of the 0th register and the first instruction. When both register instructions are not valid and the second register instruction is valid (the output of AND99), this is a selection signal for dispatching the valid instruction of the second register to the execution unit EU1.
[0046]
FIG. 10 is an example of an instruction code selection circuit in the selection circuit 53. 10, in the selection circuit 53, the
[0047]
Therefore, the AND 101 receives the signal “+ SEL.RES0.EU0” at one input and the signal “+ RES0.OPECODE” at the other input, and provides an output to the first input of the
[0048]
The AND 105 receives the signal “+ SEL · RES1 · EU1” at one input and the signal “+ RES1 · OPECODE” at the other input, and provides an output to one input of the
[0049]
The selection circuit 53 dispatches the information of IWR0 and IWR1 to the execution units EU0 and EU1 according to the selection signal shown in FIG. 8, dispatches the information to the
[0050]
The correspondence between the above configuration and
[0051]
Hereinafter, the operation of the first embodiment will be described with reference to FIGS.
First, in a state where the decoded instruction is not stored in the storage register group 42a, that is, in a state where there is no valid instruction, in FIG. 7, the "-0. ENTRY" signal is low and the "-1. ENTRY" signal is low. High level. As a result, in FIG. 8, the output level of the
[0052]
(1) When the
[0053]
(2) When the decoder 41 detects that only the IWR1 instruction requires an execution unit. In this case, since the
[0054]
(3) When the
[0055]
Next, in the state where one valid instruction is stored in the storage register group 42a, in FIG. 7, the "-0 ENTRY" signal is at a high level, and the "-1 ENTRY" signal is at a low level. As a result, in FIG. 8, since the output of the
[0056]
(4) When the
[0057]
(5) When the
[0058]
(6) When the
[0059]
Next, in a state where two or more valid instructions are stored in the storage register group 42a, in FIG. 7, both the "-0 ENTRY" signal and the "-1 ENTRY" signal are at a high level. As a result, in FIG. 8, the output of the
[0060]
(7) When the
[0061]
(8) When the
[0062]
(9) When the
[0063]
The selection control circuit shown in FIG. 8 operates as described above. The contents of the dispatch are arranged as follows.
(A) The signal "+ D0 TORS" for dispatching the IWR0 instruction to the storage register group 42a occurs when the IWR0 instruction uses an execution unit and the storage register group 42a has two or more valid instructions. I do. This is the case where the number of unprocessed instructions exceeds the number of execution units.
[0064]
(B) The signal “+ D0TO EU0” for dispatching the instruction of the IWR0 to the execution unit EU0 is generated when the instruction of the IWR0 uses the execution unit EU0 and there is no valid instruction in the storage register group 42a. This is the opposite case to (a).
(C) The signal "+ D0TO EU1" for dispatching the instruction of the IWR0 to the execution unit EU1 is generated when the instruction of the IWR0 uses the execution unit EU1 and there is one valid instruction in the storage register group 42a. This is the same case as (b).
[0065]
(D) A signal "+ D1TORS" for dispatching an IWR1 instruction to the storage register 42a is used when the IWR1 instruction uses an execution unit, when there are two or more valid instructions in the storage register group 42a, or when the instruction is stored. This occurs when there is one valid instruction in the register group 42b and the IWR0 instruction uses the execution unit.
[0066]
The former is the same case as (a). The latter is a case where the number of unprocessed instructions is smaller than the number of execution units, but one free execution unit is assigned to another competing instruction.
(E) The signal “+ D1TO EU0” for dispatching the instruction of the IWR1 to the execution unit EU0 indicates that when the instruction of the IWR1 uses the execution unit, there is no valid instruction in the storage register group 42a and the instruction of the IWR0 is the execution unit. Occurs when is not used. This is the case where there is no unprocessed instruction, the execution unit is empty, and there are no other conflicting instructions.
[0067]
(F) The signal "+ D1TO EU1" for dispatching the instruction of the IWR1 to the execution unit EU1 indicates that when the instruction of the IWR1 uses the execution unit, there is no valid instruction in the storage register group 42a and the instruction of the IWR0 is the execution unit. Or when there is one valid instruction in the storage register group 42a and the instruction of IWR0 does not use the execution unit.
[0068]
In the former case, there is no unprocessed instruction, the execution unit is empty, and the execution unit can be allocated together with other competing instructions. In the latter case, there are few unprocessed instructions and few free execution units, but there are no other instructions competing.
As described above, when the decoded instruction in the previous cycle is not stored in the storage register group 42a, the decoding instruction is dispatched directly to the execution unit, while the decoded instruction in the previous cycle is stored in the storage register group 42a. If it is stored, the instruction being decoded is dispatched to an empty execution unit, and the instruction being decoded that could not be dispatched to the execution unit is dispatched to the storage register group 42a.
[0069]
Then, in the next processing cycle, the
[0070]
[Second Embodiment: Corresponding to
FIG. 11 is a configuration example of the control unit 41 of the second embodiment. The control unit of the second embodiment includes a
[0071]
IWR0, IWR1, and IWR2 are instructions set in the instruction register, respectively, and are input to the
[0072]
Of the two outputs of the storage register group 42b, one output (decoded instruction) is supplied to the selection circuit 114, and the other output (validity flag) is supplied to the
[0073]
The update pending state means that the instruction of the register is being processed or that the register is being used. The pending state flag given from the update pending state table 113 to the
The
[0074]
The three execution units EU0, EU1, and EU3 are execution unit groups in which the execution units EU0 and EU1 perform the same operation, and are execution unit groups in which the execution unit EU3 performs another operation. For example, the execution units EU0 and EU1 calculate an operand address, the execution unit EU3 calculates an instruction address, and so on.
[0075]
FIG. 12 is a configuration example of a storage register group 42b according to the second embodiment. In the second embodiment, in addition to the instruction and the validity bit shown in FIG. 6, addresses (ADRS1, ADRS2) and pending state flags (P1, P2) are stored in the storage register group 42b as shown in FIG. , An execution unit group (EU) is set.
[0076]
The address (ADRS1, ADRS2) is a register address for accessing a register of an execution unit that supplies (dispatches) an instruction. The pending state flags (P1, P2) are information indicating whether the register indicated by the address (ADRS1, ADRS2) is usable. If the register of the execution unit is available, that is, dispatchable, it means that the operand of the instruction dispatched to the register can be referred to.
[0077]
The pending state flags (P1, P2) are stored in the update pending state table 1 according to the reference address of the
In the dispatch cycle, the pending state flags (P1, P2) are read from the update pending state table 113 in accordance with the reference address of the
[0078]
The execution unit group (EU) is information indicating which execution unit group an instruction stored in each register of the storage register group 42b uses.
The storage register group 42b of the second embodiment outputs signals such as “−RES0 · V”, “−RES0 · P1”, “−RES0 · P2”, “−RES0 · EU”, etc. 2 Output to
[0079]
FIG. 13 shows an example of the RES / READY generation circuit (a) and an example of the READY / EU generation circuit (b) in the
In FIG. 13A, the RES / READY generation circuit includes four-
“+ RES0 · V” is connected to first inputs of AND131, NAND132, AND133, and NAND134. “+ RES0 · P1” is connected to the second inputs of AND131, NAND132, AND133, and NAND134. “+ RES0 · P2” is connected to the third inputs of AND131, NAND132, AND133, and NAND134. “−RES0 · EU” is connected to the fourth inputs of the AND 131 and the
[0080]
The AND 131 outputs “+ RES0 · READY 0/1”. The
Here, “+ RES0 · V” indicates that the instruction stored in the 0th register is valid. “+ RES0 · P1” indicates that the hold state flag P1 is not in the hold state, that is, the register specified by ADRES1 among the 0th registers can be referred to.
[0081]
“+ RES0 · P2” indicates that the hold state flag P2 is not in the hold state, that is, the register designated by ADRES2 among the 0th registers can be referred to. “−RES0 · EU” indicates that the instruction stored in the zeroth register does not use any of the execution units EU0 and EU1. “+ RES0 · EU” indicates that the instruction stored in the 0th register uses the execution unit EU2.
[0082]
Therefore, "+
[0083]
“+ RES0 · READY 2” indicates that the registers specified by the 0th register ADRES1 and ADRES2 can both be referred to and that the execution unit EU2 is used. Conversely, "-RES0.READY2" indicates that the registers specified by the 0th register ADRES1 and ADRES2 can both be referred to, but there is no one that uses the execution unit EU2.
[0084]
Although not shown, similar circuits are prepared for RES1, RES2, and RES3. Thereby, "-
[0085]
In FIG. 13B, the RES / EU generation circuit includes four
The
[0086]
The
[0087]
The
[0088]
FIG. 14 shows the selection control circuit 11 2 5 is an example of a selection signal generation circuit in FIG. The output (selection signal) of the selection signal generation circuit is output to the selection circuit 114.
In FIG. 14, in the AND 141, one input is a signal “-0
[0089]
AND An
The signals “+
[0090]
The signal “+
The signal “+ D0 EX2” is a signal indicating that the instruction of IWR0 uses the execution unit EU2. The signal “+
[0091]
The signal "-D0 READY" is a signal indicating that it is not possible to refer to the register operand of the IWR0 instruction. The signal “−D0 READY” is connected to the other input of the AND 148, the second inputs of the
The signal “+
[0092]
The signal “+ D1 EX2” is a signal indicating that the instruction of the IWR1 uses the execution unit EU2. The signal “+ D1 EX2” is connected to the other input of the AND 155 and the second input of the AND 162.
The signal “−D1 READY” is a signal indicating that the signal cannot be referred to by the register operand of the IWR1 instruction. The signal “−D1 READY” is connected to the other input of the AND 156, the second input of the AND 158, the third input of the AND 159, the fourth input of the AND 160, and the third input of the AND 162.
[0093]
The signal “−D0 EX” is a signal indicating that the instruction of IWR0 does not use the execution unit. This signal “−D0 EX” is connected to the second input of AND 158 and the third input of AND 160.
The signal “−D0 EX2” is a signal indicating that the instruction of IWR0 does not use the execution unit EU2. The signal “−
[0094]
Next, the outputs of
AND 150 outputs a signal “+ D0 TO EU0”. This signal "+ D0 TO EU0" is a selection signal for dispatching the instruction of IWR0 to the execution unit EU0. The AND 151 outputs a signal “+ D0 TO EU1”. This signal "+ D0 TO EU1" is a selection signal for dispatching the instruction of IWR0 to the execution unit EU1. AND 152 outputs the signal “+ D1 TO EU2”. This signal “+ D1 TO EU2” is a selection signal for dispatching the instruction of IWR1 to the execution unit EU2.
[0095]
Outputs of the
AND 158 outputs signal “+ D1 TO RS”. This signal "+ D1 TORS" is a selection signal for dispatching the IWR1 instruction to the storage register group 42b.
[0096]
Outputs of the
AND 162 outputs signal “+ D1 TO EU2”. This signal “+ D1TO EU2” is a selection signal for dispatching the instruction of IWR1 to the execution unit EU2.
[0097]
The correspondence between the above configuration and claims 2 to 4 is as follows. The
[0098]
Hereinafter, the operation of the second embodiment will be described with reference to FIGS.
First, in a state where the decoded instruction is not stored in the storage register group 42b, that is, in a state where there is no valid instruction, the signals “−0
[0099]
(10) When the
In this case, the
[0100]
(11) When the
In this case, the
[0101]
Therefore, the output of AND 147 is provided to OR 139, and selection circuit 114 dispatches the instruction of
(12) When the
[0102]
In this case, the
Therefore, the output of AND 153 is provided to OR 157, and selection circuit 114 dispatches the instruction of
[0103]
(13) When the
[0104]
Therefore, the output of AND 155 is provided to OR 157, and selection circuit 114 dispatches the instruction of
Next, in the state where a valid instruction is stored in the storage register group 12b, the signals “−0
[0105]
a) The low-level signal "-0
[0106]
The input signals of the AND 150 are “+
The input signals of the AND 158 are “+
[0107]
The signal “+
[0108]
When these three input signals satisfy the conditions, the AND 158 outputs “+ D1 TO EU0”. The selection circuit 114 dispatches the instruction of IWR1 to the execution unit EU0.
The input signals of AND 159 are “+
[0109]
When these four signals satisfy such conditions, the AND 159 outputs “+ D1 TO EU1” via the
[0110]
b) The low-level signal "-1
[0111]
The input signal of the AND 151 is “+
[0112]
The input signal of the AND 154 is “+
[0113]
The input signals of the AND 160 are “+
When these three signals satisfy such conditions, the AND 160 outputs “+ D1 TO EU1” via the
[0114]
c) The low-level signal "-0 READY EU2" indicates that both the pending state flags P1 and P2 can refer to the operands when the execution unit group EU does not use the execution unit EU2. In this case, in FIG. 14, since the output is made high by the
[0115]
The input signal of the AND 152 is “+ D0 EX2” from the
The signal “+ D0 EX2” is input when the
[0116]
The AND 152 outputs “+ D0 TO EU2” when the two input signals satisfy the condition as described above. The selection circuit 114 dispatches the instruction of IWR0 to the execution unit EU2 according to the output of the AND 152.
[0117]
The input signals of the AND 162 are “+ D1 EX2” and “−D0 EX2” from the
[0118]
When these three signals satisfy such a condition, the AND 162 outputs a signal “+ D1 TO EU2”. The selection circuit 114 dispatches the instruction of IWR1 to the execution unit EU2 according to the output of AND162.
The AND 156 receives the signals “+
[0119]
The selection control circuit shown in FIG. 13 operates as described above. The contents of the dispatch are arranged as follows.
(A) The signal "+ D0TORS" for dispatching the instruction of IWR0 to the storage register 12b occurs in the following cases.
* 1. When the instruction of IWR0 uses the execution units EU0 and EU1.
[0120]
When the operands can be referred to in the storage register group 42b and there are two or more instructions using the execution units EU0 and EU1,
Or, when the operand cannot be referenced in the storage register group 42b
* 2. When the instruction of IWR0 uses the execution unit EU2.
When operands can be referenced in storage register group 12b and one or more instructions using execution unit EU2 are valid
(B) The signal "+ D0TO EU0" for dispatching the instruction of the IWR0 to the execution unit EU0 is such that the instruction of the IWR0 can refer to the operand, and the execution units EU0 and EU1 can be used to refer to the operand in the storage register group 42b. , And an instruction using the execution units EU0 and EU1 is not valid.
[0121]
(C) The signal "+ D0TO EU1" for dispatching the instruction of the IWR0 to the execution unit EU1 can refer to the operand of the instruction of the IWR0, use the execution units EU0 and EU1, and refer to the operand in the storage register group 42b. , And when one instruction using the execution units EU0 and EU1 is valid.
[0122]
(D) The signal “+ D0TO EU2” for dispatching the instruction of the IWR0 to the execution unit EU2 can refer to the operand of the instruction of the IWR0, use the execution unit EU2, and refer to the operand in the storage register group 42b, and Occurs when an instruction using execution unit EU2 is not valid.
(E) The signal "+ D1TORS" for dispatching the instruction of the IWR1 to the storage register 42b is generated in the following cases.
[0123]
* 1. When the instruction of the IWR1 uses the execution units EU0 and EU1.
When the operands can be referred to in the storage register group 42b and there are two or more instructions that use the execution units EU0 and EU1, or when the operands cannot be referred to in the storage register group 42b, the IWR0 instruction is executed at the same time. When using units EU0 and EU1
* 2. When the instruction of the IWR1 uses the execution unit EU2, the operands can be referred to in the storage register group 42b, and one or more instructions using the execution unit EU2 are valid.
(F) The signal "+ D1TO EU0" for dispatching the instruction of the IWR1 to the execution unit EU0 is such that the instruction of the IWR1 can refer to the operand, and the execution units EU0 and EU1 can be used to refer to the operand in the storage register group 42b. Occurs when the instruction using the execution units EU0 and EU1 is valid and the instruction of IWR0 does not use the execution unit.
[0124]
(G) The signal “+ D1TO EU1” for dispatching the instruction of the IWR1 to the execution unit EU1 can refer to the operand of the instruction of the IWR1, use the execution units EU0 and EU1, and refer to the operand in the storage register group 42b. Occurs when one instruction using the execution units EU0 and EU1 is valid and the instruction of IWR0 does not use the execution unit.
(H) The signal “+ D1TO EU2” for dispatching the instruction of the IWR1 to the execution unit EU2 is such that the instruction of the IWR1 can refer to the operand, uses the execution unit EU2, and refers to the operand in the storage register group 42b, and Occurs when an instruction using the execution unit EU2 is not valid and the instruction of IWR0 does not use the execution unit EU2.
[0125]
In the second embodiment, it is shown that the CISC instruction set can be processed in the same number of cycles as the RISC instruction set, but the dispatch is controlled by referring to the operand. The processing speed can be improved as compared with the first embodiment in which the validity bit is confirmed and controlled. Therefore, as an embodiment corresponding to
[0126]
【The invention's effect】
As described above, according to the first aspect of the present invention, in the decoding cycle, the number of instructions being decoded and the effective number of stored decoded instructions that require an execution unit are detected, and the number of execution units is set to the number of effective instructions. If the number is larger than the number, a part of the decoding instruction is supplied to the empty execution unit, and the decoding instruction which cannot be supplied because the execution unit is not allocated is supplied to the instruction storage means.
[0127]
In other words, the instructions during decoding can be sent to the execution unit in parallel in the same cycle (dispatch cycle) for sending to the instruction storage means, so that even a complicated instruction set can be processed at high speed.
According to a second aspect of the present invention, in the decoding cycle, the number of instructions being decoded that require an execution unit and the number of instructions being decoded that allow an operand to be referenced are detected, and the execution unit that has an available instruction whose operand can be referenced is vacant. The instruction which cannot be supplied to the execution unit because the operand is not referable is supplied to the instruction storage means and stored.
[0128]
Thus, the instruction during decoding can be fed to the execution unit in parallel in the same cycle (dispatch cycle) for feeding the instruction storing means, so that high-speed processing can be performed even for a complicated instruction set. At this time, since the feed control is performed based on whether or not the operands of the in-command instruction can be referred to, it is possible to avoid a possibility that the processing may be stagnated due to an increase in the number of stored decoded instructions.
[0129]
According to a third aspect of the present invention, in the decoding cycle, the number of instructions being decoded that require an execution unit and the number of instructions being decoded that can be referenced by an operand are detected, and the execution unit that has an instruction whose operand can be referenced is vacant. The instruction that could not be supplied to the execution unit because the operand was not available for reference is supplied to the instruction storage means for storage, and the instruction whether the operand of the decoded instruction to be supplied to the instruction storage means can be referenced is provided. The registration of the decoded instruction stored in the storage unit and the control of the decoded instruction stored in the instruction storage unit are performed based on the validity and the availability of the operand.
[0130]
Thus, the instruction during decoding can be sent to the execution unit in parallel in the same cycle (dispatch cycle) in which the instruction is sent to the instruction storage means without causing a stagnation of the processing. In addition, since the feed control of the decoded instruction in the instruction storage means is performed based on the validity of the decoded instruction and whether or not the operand can be referred to, the feed control can be performed more smoothly and reliably.
[0131]
According to a fourth aspect of the present invention, the feed control for a plurality of types of execution unit groups that perform different processes can be realized by the first aspect of the present invention.
As a result, the operation targeted by the instruction set of the CISC method can be processed in three cycles of {(decoding) cycle} and {(dispatch) + (execution) cycle} and {(execution) cycle}. Thus, high-speed processing of a complicated instruction set becomes possible.
[Brief description of the drawings]
FIG. 1 is a principle block diagram of the invention according to
FIG. 2 is a principle block diagram of the invention according to
FIG. 3 is a principle block diagram of the invention according to
FIG. 4 is a configuration diagram of an embodiment corresponding to
FIG. 5 is a configuration diagram of a control unit according to the first embodiment.
FIG. 6 is a configuration diagram of a storage register group according to the first embodiment.
FIG. 7 is a configuration diagram of a selection control circuit (ENTRY signal generation circuit) of the first embodiment.
FIG. 8 is a configuration diagram of a selection control circuit (feed destination selection signal generation circuit) of the first embodiment.
FIG. 9 is a configuration diagram of a selection control circuit (execution unit selection signal generation circuit) of the first embodiment.
FIG. 10 is a configuration diagram of a selection circuit (instruction code selection circuit) of the first embodiment.
FIG. 11 is a configuration diagram of a control unit according to a second embodiment.
FIG. 12 is a configuration diagram of a storage register group according to the second embodiment.
FIG. 13 is a configuration diagram of a selection control circuit according to a second embodiment. (A) is an example of a RES / READY generation circuit. (B) An example of a READY / EU generation circuit.
FIG. 14 is a configuration diagram of a selection control circuit (feed destination selection signal generation circuit) according to a second embodiment.
FIG. 15 is a configuration example of an information processing apparatus including a RISC instruction set.
FIG. 16 is a configuration example of an information processing apparatus including a CISC instruction set.
[Explanation of symbols]
1 execution unit
3 Required instruction detection means
4 Instruction storage means
5 Effective command detection means
6, 9 feeding control means
7 Processing status table
8 Referenceable instruction detection means
10 First feed control means
11 Registration means
12 Second feed control means
13 Instruction detection means
14 Third feed control means
41 Control unit
41-1 to 41-n instruction registers
42, 42a, 42b Storage register group
43-1 to 43-m execution unit
51,111 decoder
52, 112 selection control circuit
53, 114 selection circuit
113 Update pending status table
Claims (4)
同時解読中の複数個の命令の中から前記実行ユニットを必要とする命令を検出する必要命令検出手段と、
解読済み命令を一時記憶する命令格納手段と、
前記命令格納手段における有効命令を検出する有効命令検出手段と、
前記有効命令検出手段が検出した有効命令数と空いている前記実行ユニット数との大小関係に応じて、前記必要命令検出手段が検出した前記実行ユニットを必要とする解読中命令の一部を空いている実行ユニットへ給送し、実行ユニットが割り当てられないため給送できなかった解読中命令を前記命令格納手段へ給送して格納させることを行う給送制御手段と
を備えることを特徴とする情報処理装置。In an information processing apparatus including a plurality of execution units that can be operated simultaneously, as a configuration that controls feeding of a plurality of instructions decoded at the same time to the plurality of execution units,
Required instruction detecting means for detecting an instruction requiring the execution unit from among a plurality of instructions being simultaneously decoded,
Command storage means for temporarily storing decoded commands;
Valid instruction detecting means for detecting a valid instruction in the instruction storing means;
In accordance with the magnitude relationship between the number of valid instructions detected by the valid instruction detection means and the number of vacant execution units, a part of the decoding instruction requiring the execution unit detected by the necessary instruction detection means is vacated. Feed control means for feeding to the instruction storage means and feeding the decoding instruction which could not be fed because the execution unit was not allocated to the execution unit. Information processing device.
同時解読中の複数個の命令の中から前記実行ユニットを必要とする命令を検出する必要命令検出手段と、
解読済み命令を一時記憶する命令格納手段と、
解読処理する複数個の命令のそれぞれについての処理状況が設定される処理状況テーブルと、
前記処理状況テーブルを参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出する参照可能命令検出手段と、
前記必要命令検出手段が検出した実行ユニットを必要とする解読中命令のうちで、前記参照可能命令検出手段が検出したオペランドが使用可能な命令を空いている実行ユニットへ給送し、オペランドが参照可能でないため実行ユニットへ給送できなかった命令を前記命令格納手段へ給送して格納させる給送制御手段と
を備えることを特徴とする情報処理装置。In an information processing apparatus including a plurality of execution units that can be operated simultaneously, as a configuration that controls feeding of a plurality of instructions decoded at the same time to the plurality of execution units,
Required instruction detecting means for detecting an instruction requiring the execution unit from among a plurality of instructions being simultaneously decoded,
Command storage means for temporarily storing decoded commands;
A processing status table in which the processing status of each of the plurality of instructions to be decoded is set;
Referenceable instruction detection means for detecting an instruction whose operand can be referred to among a plurality of instructions being simultaneously decoded with reference to the processing status table,
Among the decoding instructions that require the execution unit detected by the necessary instruction detection means, the instruction detected by the referenceable instruction detection means is supplied to the vacant execution unit and the usable instruction is supplied to the empty execution unit. An information processing apparatus comprising: a feed control unit that feeds an instruction that cannot be supplied to an execution unit because the instruction is not possible to the instruction storage unit and stores the instruction.
同時解読中の複数個の命令の中から前記実行ユニットを必要とする命令を検出する必要命令検出手段と、
解読処理する複数個の命令のそれぞれについての処理状況が設定される処理状況テーブルと、
前記処理状況テーブルを参照して同時解読中の複数個の命令のうちでオペランドが参照可能な命令を検出する参照可能命令検出手段と、
解読済み命令を一時記憶する命令格納手段と、
前記必要命令検出手段が検出した実行ユニットを必要とする解読中命令のうちで、前記参照可能命令検出手段が検出したオペランドが参照可能な命令を空いている実行ユニットへ給送し、オペランドが参照可能でないため実行ユニットへ給送できなかった命令を前記命令格納手段へ給送して格納させる給送手段する第1給送制御手段と、
前記第1給送制御手段が解読済み命令を命令格納手段へ給送する際にその解読済み命令のオペランドの参照可否を前記命令格納手段に登録する登録手段と、
前記命令格納手段における解読済み命令のうちでオペランドが参照可能な命令を実行ユニットへ給送する第2給送制御手段と、
前記命令格納手段における解読済み命令のうちで有効かつオペランドが参照可能な命令を検出する命令検出手段と、
前記命令格納手段における解読済み命令のうちで前記命令検出手段が検出した命令数と空いている前記実行ユニット数との大小関係に応じて、命令格納手段における有効かつ参照可能命令の全てを実行ユニットへ給送すること、有効かつ参照可能命令の一部を空いている実行ユニットへ給送することを行う第3給送制御手段と
を備えることを特徴とする情報処理装置。In an information processing apparatus including a plurality of execution units that can be operated simultaneously, as a configuration that controls feeding of a plurality of instructions decoded at the same time to the plurality of execution units,
Required instruction detecting means for detecting an instruction requiring the execution unit from among a plurality of instructions being simultaneously decoded,
A processing status table in which the processing status of each of the plurality of instructions to be decoded is set;
Referenceable instruction detection means for detecting an instruction whose operand can be referred to among a plurality of instructions being simultaneously decoded with reference to the processing status table,
Command storage means for temporarily storing decoded commands;
Among the decoding instructions that require the execution unit detected by the necessary instruction detection means, the instruction detected by the referenceable instruction detection means is supplied to the vacant execution unit and the instruction which can be referred to by the operand is detected. First feeding control means for feeding means for feeding and storing instructions which cannot be fed to the execution unit because they are not possible to the command storage means;
Registration means for registering in the instruction storage means whether or not the operand of the decoded instruction can be referred to when the first feed control means feeds the decoded instruction to the instruction storage means;
Second feed control means for feeding, to the execution unit, an instruction whose operand can be referred to among the decoded instructions in the instruction storage means;
Instruction detection means for detecting a valid and operand-referenceable instruction among the decoded instructions in the instruction storage means;
According to the magnitude relation between the number of instructions detected by the instruction detection means and the number of free execution units among the decoded instructions in the instruction storage means, all of the valid and referable instructions in the instruction storage means are executed by the execution unit. And a third feed control unit that feeds a part of the valid and referable instruction to the empty execution unit.
前記複数の実行ユニットは、異なった処理を行う複数種類の実行ユニットグループからなり、
前記必要命令検出手段は、実行ユニットを必要とする命令を実行ユニットグループ毎に検出する
ことを特徴とする情報処理装置。The information processing apparatus according to any one of claims 1 to 3,
The plurality of execution units include a plurality of types of execution unit groups that perform different processes,
The information processing apparatus according to claim 1, wherein said required instruction detecting means detects an instruction requiring an execution unit for each execution unit group.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30402897A JP3566841B2 (en) | 1997-11-06 | 1997-11-06 | Information processing equipment |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30402897A JP3566841B2 (en) | 1997-11-06 | 1997-11-06 | Information processing equipment |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11143711A JPH11143711A (en) | 1999-05-28 |
| JP3566841B2 true JP3566841B2 (en) | 2004-09-15 |
Family
ID=17928204
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP30402897A Expired - Fee Related JP3566841B2 (en) | 1997-11-06 | 1997-11-06 | Information processing equipment |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3566841B2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4952580B2 (en) * | 2005-04-21 | 2012-06-13 | 富士通株式会社 | Processor device |
-
1997
- 1997-11-06 JP JP30402897A patent/JP3566841B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH11143711A (en) | 1999-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
| KR940003383B1 (en) | Microprocessor with predecoder unit and main decoder unit operating in pipelined manner | |
| US5815724A (en) | Method and apparatus for controlling power consumption in a microprocessor | |
| US9092215B2 (en) | Mapping between registers used by multiple instruction sets | |
| JP4202244B2 (en) | VLIW DSP and method of operating the same | |
| US6968444B1 (en) | Microprocessor employing a fixed position dispatch unit | |
| US6959367B2 (en) | System having read-modify-write unit | |
| US6301655B1 (en) | Exception processing in asynchronous processor | |
| JPH07505494A (en) | Superscalar RISC instruction scheduling method | |
| US6725357B1 (en) | Making available instructions in double slot FIFO queue coupled to execution units to third execution unit at substantially the same time | |
| CN112463657B (en) | A method and device for processing address translation cache clearing instructions | |
| US6378062B1 (en) | Method and apparatus for performing a store operation | |
| US6460132B1 (en) | Massively parallel instruction predecoding | |
| EP0933697A2 (en) | A method and system for handling multiple store instruction completions in a processing system | |
| WO2021061626A1 (en) | Instruction executing method and apparatus | |
| JP2004529405A (en) | Superscalar processor implementing content addressable memory for determining dependencies | |
| KR101466934B1 (en) | Distributed dispatch using concurrent, non-sequential dispatch | |
| US11494190B2 (en) | Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state | |
| JP3566841B2 (en) | Information processing equipment | |
| US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
| JP2001337822A (en) | Instruction buffer and buffer queue control | |
| JP3554211B2 (en) | Instruction control device and method using microprogram | |
| US6185674B1 (en) | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor | |
| US7107478B2 (en) | Data processing system having a Cartesian Controller | |
| JP5185478B2 (en) | Pipeline processing method and pipeline processing apparatus using the method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20031128 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031224 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040223 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040316 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040511 |
|
| 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: 20040608 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040611 |
|
| 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: 20090618 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100618 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110618 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120618 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120618 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140618 Year of fee payment: 10 |
|
| LAPS | Cancellation because of no payment of annual fees |