JP3745450B2 - 並列処理プロセッサ - Google Patents

並列処理プロセッサ Download PDF

Info

Publication number
JP3745450B2
JP3745450B2 JP11796296A JP11796296A JP3745450B2 JP 3745450 B2 JP3745450 B2 JP 3745450B2 JP 11796296 A JP11796296 A JP 11796296A JP 11796296 A JP11796296 A JP 11796296A JP 3745450 B2 JP3745450 B2 JP 3745450B2
Authority
JP
Japan
Prior art keywords
instruction
processing
stage
destination address
field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP11796296A
Other languages
English (en)
Other versions
JPH09305402A (ja
Inventor
知嘉子 中西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP11796296A priority Critical patent/JP3745450B2/ja
Priority to US08/745,134 priority patent/US5805852A/en
Publication of JPH09305402A publication Critical patent/JPH09305402A/ja
Application granted granted Critical
Publication of JP3745450B2 publication Critical patent/JP3745450B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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)

Description

【0001】
【発明の属する技術分野】
本発明は、並列処理プロセッサに関し、特に、バイパス制御を高速に行なうことのできる並列処理プロセッサに関する。
【0002】
【従来の技術】
プロセッサの性能向上を図るため、複数のパイプラインを備えている並列処理プロセッサがある。まず、1つのパイプラインを備える従来のスカラ・プロセッサについて、パイプライン処理およびハザードについて説明する。
【0003】
パイプライン処理について説明する。パイプライン処理は、複数の命令をオーバーラップさせて同時実行する技術である。現在、パイプライン処理は、CPU(Central Processing Unit )の高速化のための基本技術となっている。パイプライン処理では、パイプラインの1ステップで命令の一部分を担当し、実行する。1個の命令の処理過程は、複数の小さな処理単位に分割する。この処理単位をパイプライン・ステージ(以下、「ステージ」と呼ぶ)と呼ぶ。各ステージが順に接続されて、1本のパイプを形成する。
【0004】
パイプライン処理のスループットは、命令がパイプラインを出ていく速度で決まる。各ステージは、お互いに連結しているので、すべてのステージが同時に処理を完了しなければならない。1ステージにおいて、処理に要する時間がマシン・サイクルと呼ばれるものである。このマシン・サイクルは、最も処理が遅いステージの処理時間によって決まる。
【0005】
ハザードについて説明する。パイプライン処理では、命令を適切なマシン・サイクルで実行できない状況が存在する。このような状況をハザードと呼ぶ。ハザードは、パイプライン・ストールの原因となる。パイプライン・ストールの発生は、プロセッサの性能低下を引き起こす。ハザードの1つであるデータ・ハザードについて説明する。
【0006】
パイプライン処理では、命令の実行をオーバーラップするので、命令の相対的な実行タイミングが変わってしまう。このことを原因として生じるハザードが、データ・ハザードである。以下、詳しく説明する。データ・ハザードは、命令の逐次実行とパイプライン実行とでオペランドへのアクセス順序が異なる場合に生じる。ここで、1つの例として、命令の実行過程を(1)命令フェッチステージIF、(2)命令デコードステージID、(3)実行ステージEX、(4)メモリ・アクセスステージMEM、(5)書戻しステージWBの5ステップとする場合を考える。そして、クロック・サイクルごとに新しい命令をフェッチするとする。そして、さらに、命令は演算命令を考える。第1番目の命令フェッチステージIFにおいては、命令が命令キャッシュ(図示せず)から命令デコーダ(図示せず)へフェッチされる。第2番目の命令デコードステージIDにおいては、そのフェッチされた命令が命令デコーダによってデコードされ、さらにそのデコードされた命令に従ってレジスタファイル(図示せず)からオペランドがフェッチされる。第3番目の実行ステージEXにおいては、命令が実行され、オペランドに対して演算が施される。この演算結果は、実行ステージEXにおける結果バッファ(図示せず)に保持される。第4番目のメモリ・アクセスステージMEMにおいては、実行ステージEXにおける結果バッファに保持された演算結果を、メモリ・アクセスステージMEMにおける結果バッファ(図示せず)に保持する。第5番目の書戻しステージWBにおいては、メモリ・アクセスステージMEMにおける結果バッファに保持された演算結果をレジスタ・ファイルに書込む。以下の2つの演算命令(加算命令addおよび減算命令sub)をパイプライン処理する場合を考える。
【0007】
add a1、a2、a3
sub a4、a1、a5
加算命令addおよび減算命令subにおいて、1番左側は、デスティネーション・アドレス(演算結果を格納するレジスタ・ファイルのアドレス)を示し、真ん中および1番左側は、ソース・アドレス(オペランドが格納されているレジスタ・ファイルのアドレス)を示す。減算命令subは、加算命令addのデスティネーション・アドレスa1を、ソースアドレスa1としている。このような場合に、データ・ハザードが生じる。
【0008】
図26は、データ・ハザードを説明するための図である。図26を参照して、加算命令addは、第1番目のクロックで、命令フェッチステージIFに存在し、第2番目のクロックで命令デコードステージIDに存在し、第3番目のクロックで実行ステージEXに存在し、第4番目のクロックでメモリ・アクセスステージMEMに存在し、第5番目のクロックでは書戻しステージWBに存在する。減算命令subは、第2番目のクロックで命令フェッチステージIFに存在し、第3番目のクロックでは命令デコードステージIDに存在し、第4番目のクロックでは実行ステージEXに存在し、第5番目のクロックではメモリ・アクセスステージMEMに存在し、第6番目のクロックでは書戻しステージWBに存在する。加算命令addは、書戻しステージWB(第5番目のクロック)で、デスティネーション・アドレスa1に従って、演算結果を、レジスタ・ファイルに書込む(矢印A)。一方、減算命令subは、命令デコードステージIDで(第3番目のクロック)、ソース・アドレスa1に従って、レジスタ・ファイルからオペランドをフェッチする(矢印B)。減算命令subは、加算命令addの演算結果を使用するが、減算命令subがレジスタ・ファイルからオペランドをフェッチする命令デコードステージID(第3番目のクロック)においては、加算命令addの演算結果はレジスタ・ファイルには書込まれていない。このような状況をデータ・ハザードと呼ぶ。もし、データ・ハザードを回避しないと、減算命令subは、間違ったオペランドをフェッチして、使用してしまう。すなわち、減算命令subは、加算命令addの演算結果がレジスタ・ファイルに書込まれる前のデータを、レジスタ・ファイルのアドレスa1から読出してしまい、減算命令subが正しく処理されないことになる。
【0009】
データ・ハザードは、以下に示すバイパスと呼ぶ簡単なハードウェア技術で解決できる。まず、2つのラッチ回路と、2つのラッチ回路に保持されている2つのオペランドに対して演算を施すALU(Arithmetic and Logic Unit )を含むプロセッサを考える。そして、ALUの演算結果を、必ず、2つのラッチ回路にフィードバックするようにしておく。そして、さらに、ALUの演算結果が、これから行なうALUでの演算に用いるオペランドに等しい場合、レジスタ・ファイルから読出したオペランドではなく、ALUでの演算結果を、これから行なうALUの入力として用いるようにする。このような仕組みがバイパス機構と呼ばれるものである。データ・ハザードを解決するバイパス機構については、たとえば、“Computer Architecture A Quantitative Approach"、David A.Patterson 、John L.Hennessy 、MORGAN KAUFMANN PUBLISHERS, inc.に開示されている。
【0010】
図27は、バイパス機構を説明するための図である。図27を参照して、1番上は、デスティネーション・アドレスa1およびソースアドレスa2,a3を持つ加算命令addのパイプライン処理を示し、真ん中は、デスティネーション・アドレスa4およびソース・アドレスa1,a5を持つ減算命令subのパイプライン処理を示し、1番下はデスティネーション・アドレスa6およびソース・アドレスa1,a7を持つ加算命令addのパイプライン処理を示す。図27に示すような5段構成のパイプライン構成では、命令(add a1, a2, a3)の演算結果を、次に投入される命令(sub a4, a1, a5)に対してのみならず、その次に投入される命令(add a6, a1, a7)に対してもバイパスする必要がある。ここで、命令デコードステージIDの後半で、オペランドのフェッチ(データの読出)Rを行ない、書戻しステージWBの前半で演算結果の書込を行なっている。このため、命令(add a1, a2, a3)の演算結果を、命令(add a6, a1, a7)の次に投入される命令に対してはバイパスをする必要はない。なぜならば、命令(add a6, a1, a7)の次に投入される命令が実行ステージEXにくるときには、命令(add a1, a2, a3)の演算結果は既にレジスタ・ファイルに書込まれているからである。
【0011】
図28は、バイパス機構を有する従来のスカラ・プロセッサを示す概略ブロック図である。図28を参照して、従来のスカラ・プロセッサは、レジスタ・ファイル5、マルチプレクサ211,213、ALU215、結果バッファ217,219、2個のラッチ回路(図示せず)および4個の比較器(図示せず)を含む。ここで、パイプライン構成は、上述した5段構成とする。
【0012】
命令が、書戻しステージWBに進むまでの、その命令の演算結果を保持するために、2個の結果バッファ217,219を設けている。先行する命令(1つ先にALU215で実行される命令または2つ先にALU215で実行される命令)の演算結果を、オペランドとする命令が実行ステージEXに入った際、オペランドとなる演算結果を生成した先行する命令は、実行ステージEXからメモリ・アクセスステージMEMに(1つ先にALU215で実行される命令の場合)、または、メモリ・アクセスステージMEMから書戻しステージWBに(2つ先にALU215で実行された命令の場合)、進んでいる(図27参照)。
【0013】
2個の結果バッファ217,219に保持されている2個の演算結果は、2個のマルチプレクサ211,213を介して、ALU215の2つのポートのいずれの入力にもなり得る。マルチプレクサ211,213の制御は、実行ステージEXに投入されようとする命令のソース・アドレスが、先行する2つの命令のデスティネーション・アドレスと等しいか否かを判定して行なう。もし、実行ステージEXに投入されようとする命令のソース・アドレスと、先行する命令のデスティネーション・アドレスとが等しい場合は、レジスタ・ファイル5からではなく、そのデスティネーション・アドレスを持つ命令の演算結果が存在する結果バッファ(結果バッファ217または結果バッファ219)から、オペランドを入力するように、マルチプレクサ211,213の制御が行なわれる。
【0014】
また、実行ステージEXに投入されようとする命令のソース・アドレスが、先行する2つの命令の2つのデスティネーション・アドレスの両方に等しい場合は、1つ先にALU215で実行された命令の演算結果を、結果バッファ217からオペランドを入力するようにマルチプレクサ211,213の制御が行なわれる。このように、ソース・アドレスが、先行する2つの命令の2つのデスティネーション・アドレスの両方に等しい場合において、先行する2つの命令のうち、最も新しい命令の演算結果が存在する結果バッファからオペランドを入力するようにすることを、優先順位付き選択と呼ぶ。
【0015】
マルチプレクサ211,213を制御するために行なう、実行ステージEXに投入されようとする命令のソース・アドレスと、先行する2つの命令の2つのデスティネーション・アドレスとの比較は、2つの比較器によって行なわれる。ここで、上述したように2個のラッチ回路と、4個の比較器が設けられているが、ソース・アドレスは2つであるため、1つのソース・アドレスに対して、1個のラッチ回路および2個の比較器が用いられる。また、ALU215は、1ステージで演算を完了するので、バイパスさえ行なわれれば任意の命令の組合せに対してパイプラインがストールすることはない。
【0016】
従来の並列処理プロセッサについて説明する。並列処理プロセッサは、上述したように、複数のパイプラインを設けて、1クロック・サイクル当りに複数の命令の実行を開始するものである。たとえば、1クロック・サイクルで、複数の演算命令に基づき複数の演算を行なう。ここで、命令の実行を開始することを、命令を発行すると呼ぶ場合もある。並列処理プロセッサを通して、VLIW(Very Long Instruction Word)プロセッサがある。VLIWプロセッサでは、1個の命令内に並列に動作可能な複数のオペレーションを指定する。すなわち、VLIWプロセッサでは、1個の命令で、複数のスカラ命令に相当する複数のオペレーションを指定する。このため、VLIWプロセッサでは、スカラ・プロセッサに比べて1個のプログラムの実行に要する命令数が減少する。VLIWプロセッサでは、1個の命令で指定された複数のオペレーションを複数の独立した機能ユニットを用いて実行する。この機能ユニットには、ALUが含まれている。以下、VLIWプロセッサにおいて、複数のオペレーションを含む命令を「基準命令」と呼び、1個の基準命令に含まれているオペレーションを、単に「命令」と呼ぶことにする。
【0017】
【発明が解決しようとする課題】
VLIWプロセッサにおいても、各機能ユニットはパイプライン化されている。このため、データ・ハザードが生じる。このため、バイパス機構を設けている。VLIWプロセッサでは、並列に実行されている命令数が多い。このため、スカラ・プロセッサに比べて、どの演算結果をバイパスするかを決定するバイパス制御が複雑になる。ここで、各機能ユニットのパイプライン構成が、上述した5段構成の場合を考える。この場合、スカラ・プロセッサでは、実行ステージEXおよびメモリ・アクセスステージMEMに存在する2つの命令の2つのデスティネーション・アドレスと、命令デコードステージIDに存在する命令の2つのソース・アドレスとを比較するために、4つの比較器が必要になる。しかし、4つの命令を発行するVLIWプロセッサでは、4つの機能ユニットが設けられるため、64個の比較器が必要になる。すなわち、1つのソース・アドレスに対して、8つの比較器が必要になる。
【0018】
さらに、最も新しい命令の演算結果をバイパスするために、優先順位付き選択を行なわなければならない。スカラ・プロセッサの場合では、2つの演算結果に対して優先順位付き選択を行なえばよい。しかし、4つの命令を発行するVLIWプロセッサでは、4つの機能ユニットを設けるため、8つの演算結果に対して優先順位付き選択を行なわなければならない。
【0019】
以上のように、従来のVLIWプロセッサでは、並列に発行できる命令数が増加すればするほど、必要となる比較器が増加するとともに、優先順位付き選択の対象も増加する。このため、並列に発行できる命令数が増加すればするほど指数関数的に処理の複雑度が増加する。処理が複雑になると、処理に要する時間が増加する。マシン・サイクルは、最も遅いステージの処理時間によって決まってしまう。このため、バイパス制御に時間がかかることによって1ステージの処理に要する時間が増加し、マシン・サイクルが増加してしまう。このようなマシン・サイクルの増加は、プロセッサの性能に直接影響し、プロセッサの性能低下につながる。
【0020】
以上のように、従来の並列処理プロセッサとしてのVLIWプロセッサでは、並列に発行できる命令数が増加すればするほど、処理が複雑化し、バイパス制御に時間がかかるため、性能が低下するという問題点があった。
【0021】
この発明は、以上のような問題点を解決するためになされたもので、バイパス制御を高速に行なうことのできる並列処理プロセッサを提供することを目的とする。
【0022】
【課題を解決するための手段】
本発明の請求項1の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、1つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットのいずれの処理ステージに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【0023】
本発明の請求項2の並列処理プロセッサは、請求項1に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する命令が、いずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、機能ユニットフィールドおよび処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。また、バイパス制御手段は、新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効/無効フィールドをセットし、その命令が投入される機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドをセットする。さらに、バイパス制御手段は、新たに投入される命令が、最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。さらに、バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が、各処理ステージへ移行するごとに新しくセットする。
【0024】
本発明の請求項3の並列処理プロセッサは、請求項1に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する命令がいずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドとからなる。命令管理手段は、複数のエントリに分かれる。機能ユニットフィールドにおいては、複数の機能ユニットと同数のビット数を有するビット・ベクタによって、命令がいずれの機能ユニットに存在するかを示す。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドにおいて、その命令が投入される機能ユニットに対応する、ビット・ベクタのビットをセットし、新たに投入される命令が最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が、各処理ステージへ移行するごとに新しくセットし、エントリの機能ユニットフィールドにおいて、ビット・ベクタのいずれか1つのビットがセットされているときは、そのエントリの機能ユニットフィールドおよび処理ステージフィールドのデータが有効とし、ビット・ベクタのいずれのビットもセットされていないときは、そのエントリの機能ユニットフィールドおよび処理ステージフィールドは無効とする。
本発明の請求項5の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、1つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【0025】
本発明の請求項5の並列処理プロセッサは、請求項4に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、機能ユニットフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効/無効フィールドをセットし、その命令が投入される機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドをセットする。バイパス制御手段は、複数の判断手段をさらに含む。複数の判断手段は、1つの基準命令に含まれる複数の命令の複数のソース・アドレスに対応して設けられる。各判断手段は、新たに投入される命令の対応するソース・アドレスが、複数の機能ユニットの複数の処理ステージのいずれに存在する命令のデスティネーション・アドレスと一致するか否かを判断するためのものである。判断手段は、複数の選択手段を含む。複数の選択手段は、各機能ユニットの複数の処理ステージに対応して設けられる。選択手段には、複数の機能ユニットの、選択手段に対応する複数の処理ステージに存在する複数の命令の複数のデスティネーション・アドレスと、新たに投入される命令のソース・アドレスに対応するエントリの機能ユニットフィールドのデータとが入力される。選択手段は、入力された機能ユニットフィールドのデータが示す機能ユニットに対応する処理ステージに存在する命令のデスティネーション・アドレスを出力する。判断手段は、複数の比較手段をさらに含む。複数の比較手段は、複数の選択手段に対応して設けられる。比較手段は、対応する選択手段から出力されたデスティネーション・アドレスと、新たに投入される命令が持つソース・アドレスとを比較し、新たに投入される命令が持つソース・アドレスが、対応する選択手段から出力されたデスティネーション・アドレスと一致するか否かを判断する。
【0026】
本発明請求項6の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、1つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの処理ステージに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【0027】
本発明の請求項7の並列処理プロセッサは、請求項6に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効/無効フィールドをセットする。バイパス制御手段は、新たに投入される命令が、最初の処理ステージの前のステージに存在するときに、その命令の持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が各処理ステージへ移行するごとに新しくセットする。バイパス制御手段は、複数の判断手段をさらに含む。複数の判断手段は、1つの基準命令に含まれる複数の命令の複数のソース・アドレスに対応して設けられる。各判断手段は、新たに投入される命令の対応するソース・アドレスが複数の機能ユニットの複数の処理ステージのいずれに存在する命令のデスティネーション・アドレスと一致するか否かを判断するためのものである。判断手段は、複数の選択手段を含む。複数の選択手段は、複数の機能ユニットに対応して設けられる。選択手段には、対応する機能ユニットの複数の処理ステージに存在する複数の命令のデスティネーション・アドレスと、新たに投入される命令のソース・アドレスに対応するエントリの処理ステージフィールドのデータとが入力される。選択手段は、入力された処理ステージフィールドのデータが示す処理ステージに対応する処理ステージに存在する命令のデスティネーション・アドレスを出力する。判断手段は、複数の比較手段をさらに含む。複数の比較手段は、複数の選択手段に対応して設けられる。比較手段は、対応する選択手段から出力されたデスティネーション・アドレスと、新たに投入される命令が持つソース・アドレスとを比較し、新たに投入される命令が持つソース・アドレスが、対応する選択手段から出力されたデスティネーション・アドレスと一致するか否かを判断する。
【0028】
本発明の請求項8の並列処理プロセッサは、請求項2または5に記載のものであって、機能ユニットフィールドにおいては、複数の機能ユニットと同数のビット数を有するビット・ベクタによって、命令がいずれの機能ユニットに存在するかを示す。
【0029】
本発明の請求項9の並列処理プロセッサは、請求項2、3または7のいずれか1項に記載のものであって、処理ステージフィールドにおいては、各機能ユニットにおける複数の処理ステージと同数のビット数を有するビット・ベクタによって、命令がいずれの処理ステージに存在するかを示す。命令管理手段は、命令が存在する処理ステージに対応する、ビット・ベクタのビットをセットする。
【0030】
本発明の請求項10の並列処理プロセッサは、請求項2または7に記載のものであって、各機能ユニットの最後の処理ステージは、そこに存在する処理結果をデスティネーション・アドレスに従って、レジスタ・ファイルに書込むものであり、バイパス手段は適用されない。命令管理手段は、複数の処理ステージフィールド管理手段を含む。複数の処理ステージフィールド管理手段は、複数のエントリに対応して設けられる。各処理ステージフィールド管理手段は、対応するエントリの処理ステージフィールドを管理するためのものである。処理ステージフィールド管理手段は、更新手段と、参照手段と、データ比較手段とを含む。更新手段は、対応するエントリの処理ステージフィールドのデータを、命令が各処理ステージへ移行するごとにその移行した処理ステージに対応したものにセットする。参照手段は、最後の処理ステージに対応する参照データを持つ。データ比較手段は、処理ステージフィールドのデータと、参照手段の参照データとを比較し、両者が一致したときに、対応するエントリの有効/無効フィールドをリセットする。
【0031】
本発明の請求項11の並列処理プロセッサは、請求項9に記載のものであって、各機能ユニットの最後の処理ステージは、そこに存在する処理結果を、デスティネーション・アドレスに従って書込むものであり、バイパス手段は、適用されない。ビット・ベクタは、各機能ユニットにおける複数の処理ステージと同数より1つ多いビット数を有している。ビット・ベクタの1つのビットは、命令が最初の処理ステージに移行する前のステージに存在することを示すためのものである。命令管理手段は、複数の処理ステージフィールド管理手段を含む。複数の処理ステージフィールド管理手段は、複数のエントリに対応して設けられる。各処理ステージフィールド管理手段は、対応するエントリの処理ステージフィールドを管理するためのものである。処理ステージフィールド管理手段は、ビット・シフタであり、命令がステージまたは各処理ステージへ移行するごとに、移行したステージまたは各処理ステージに対応する、ビット・ベクタのビットをセットする。
【0032】
【発明の実施の形態】
以下、本発明による並列処理プロセッサとしてのVLIWプロセッサについて図面を参照しながら説明する。VLIWプロセッサは、一般には、上述したように、1つの基準命令に含まれる複数の命令を並列的に処理するものである。なお、以下に記載の信号pipe[0],pipe[1],pipe[2],pipe[3],stage [0],stage [1],stage [2]は、それぞれ、図中に記載のpipe(0),pipe(1),pipe(2),pipe(3),stage (0),stage (1),stage (2)と同じである。
【0033】
(実施の形態1)
図1は、本発明の実施の形態1によるVLIWプロセッサを示す概略ブロック図である。図1を参照して、本発明の実施の形態1によるVLIWプロセッサは、命令キャッシュ1、デコーダ3、レジスタ・ファイル5、機能ユニット7−1,7−2,7−3,7−4、データ・キャッシュ9およびバイパス制御回路13を含む。機能ユニット7−1〜7−4は、どのような命令も実行できると仮定する。レジスタ・ファイル5からは、一度に、4個の命令の8個のソース・アドレスに対応する8個のデータ(オペランド)を読出すことができる。さらに、レジスタ・ファイル5には、バス11を介して、一度に4個の命令の処理結果を書込むことができる。データ・キャッシュ9には、4つのアドレスaddrに従って、一度に4つのデータdataの書込ができる。さらに、データ・キャッシュ9からは、4つのアドレスaddrに従って、1度に、4つのデータdataの読出ができる。
【0034】
パイプライン処理について説明する。パイプライン構成は、5段構成で、第1番目の命令フェッチステージIFと、第2番目の命令デコードステージIDと、第3番目の実行ステージEXと、第4番目のメモリ・アクセスステージMEMと、第5番目の書戻しステージWBとからなる。命令フェッチステージIFにおいては、命令キャッシュ1から、基準命令がフェッチされる(読出される)。命令デコードステージIDにおいては、デコーダ3によって、基準命令がデコードされる。デコードされた基準命令に含まれる4つの命令は、4つの機能ユニット7−1〜7−4に投入され処理される。
【0035】
図2は、デコードされた基準命令の形式を示した概略図である。図2を参照して、基準命令は、オペコードop1,デスティネーション・アドレスdes1およびソース・アドレスsrc1−1,src1−2からなる命令(機能ユニット7−1に投入される命令)と、オペコードop2,デスティネーション・アドレスdes2およびソース・アドレスsrc2−1,src2−2からなる命令(機能ユニット7−2に投入される命令)と、オペコードop3,デスティネーション・アドレスdes3,ソース・アドレスsrc3−1,src3−2からなる命令(機能ユニット7−3に投入される命令)と、オペコードop4,デスティネーション・アドレスdes4およびソース・アドレスsrc4−1,src4−2からなる命令(機能ユニット7−4に投入される命令)とからなる。オペコードop1〜op4は、操作の種類を示す。
【0036】
再び図1を参照して説明する。実行ステージEX、メモリ・アクセスステージMEMおよび書戻しステージWBにおける処理については、命令の種類に分けて説明する。まず、命令が、演算命令の場合について説明する。実行ステージEXにおいては、演算命令が実行され、すなわち、演算が行なわれ、その演算結果(処理結果)が、実行ステージEXの結果バッファ(図示せず)に保持される。メモリ・アクセスステージMEMにおいては、実行ステージEXの結果バッファに保持された演算結果が、メモリ・アクセスステージMEMの結果バッファ(図示せず)に保持される。書戻しステージWBにおいては、メモリ・アクセスステージMEMの結果バッファに保持された演算結果を、レジスタ・ファイル5に書込む。次に、命令が、メモリ・アクセス命令の場合について説明する。実行ステージEXにおいては、アドレスが計算され、実行ステージEXの結果バッファに保持される。メモリ・アクセスステージMEMにおいては、実行ステージEXの結果バッファに保持されたアドレスに基づき、データ・キャッシュ9またはレジスタ・ファイル5をアクセスする。メモリ・アクセス命令がロード命令の場合には、データ・キャッシュ9からデータを読出して、メモリアクセスステージMEMの結果バッファに保持する。メモリ・アクセス命令がストア命令の場合には、レジスタ・ファイル5からデータを読出して、メモリ・アクセスステージMEMの結果バッファに保持する。書戻しステージWBにおいては、メモリ・アクセス命令がロード命令の場合、メモリ・アクセスステージMEMの結果バッファに保持されているデータをレジスタ・ファイル5に書込み、メモリ・アクセス命令がストア命令の場合は、メモリ・アクセスステージMEMの結果バッファに保持されているデータをデータ・キャッシュ9に書込む。
【0037】
命令デコードステージIDにおいては、各命令の各オペランドを得るために、レジスタ・ファイル5をアクセスする。得られた各オペランド(レジスタ・ファイル5内の各データ)は、実行ステージEXで、各機能ユニット7−1〜7−4に供給される。
【0038】
図3は、図1のVLIWプロセッサの一部を示す概略ブロック図である。なお、図1と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0039】
図3を参照して、図1のVLIWプロセッサの一部は、レジスタ・ファイル5、バイパス制御回路13、ラッチ回路L1〜L8、ALUa1〜a4、結果バッファe1〜e4,m1〜m4、トライ・ステート・バッファT1〜T72およびバス1−1〜4−2を含む。ここで、ラッチ回路L1,L2、ALUa1および結果バッファe1,m1は、機能ユニット7−1を構成する。ラッチ回路L3,L4、ALUa2および結果バッファe2,m2は、機能ユニット7−2を構成する。ラッチ回路L5,L6、ALUa3および結果バッファe3,m3は、機能ユニット7−3を構成する。ラッチ回路L7,L8、ALUa4および結果バッファe4,m4は、機能ユニット7−4を構成する。
【0040】
ラッチ回路L1は、バス1−1およびトライ・ステート・バッファT1を介して結果バッファe1と接続され、バス1−1およびトライ・ステート・バッファT9を介して結果バッファe1と接続され、バス1−1およびトライ・ステート・バッファT17を介して結果バッファe2と接続され、バス1−1およびトライ・ステート・バッファT25を介して結果バッファm2と接続され、バス1−1およびトライ・ステート・バッファT33を介して結果バッファe3と接続され、バス1−1およびトライ・ステート・バッファT41を介して結果バッファm3と接続され、バス1−1およびトライ・ステート・バッファT49を介して結果バッファe4と接続され、バス1−1およびトライ・ステート・バッファT57を介して結果バッファm4と接続される。
【0041】
同様に、ラッチ回路L2は、バス1−2およびトライ・ステート・バッファT2,T10,T18,T26,T34,T42,T50,T58を介して、結果バッファe1,m1,e2,m2,e3,m3,e4,m4と接続される。同様に、ラッチ回路L3は、バス2−1およびトライ・ステート・バッファT3,T11,T19,T27,T35,T43,T51,T59を介して、結果バッファe1〜e4,m1〜m4と接続される。ラッチ回路L4も同様に、バス2−2およびトライ・ステート・バッファT4,T12,T20,T28,T36,T44,T52,T60を介して結果バッファe1〜e4,m1〜m4と接続される。ラッチ回路L5も同様に、バス3−1およびトライ・ステート・バッファT5,T13,T21,T29,T37,T45,T53,T61を介して結果バッファe1〜e4,m1〜m4と接続される。ラッチ回路L6も同様に、バス3−2およびトライ・ステート・バッファT6,T14,T22,T30,T38,T46,T54,T62を介して結果バッファe1〜e4,m1〜m4と接続される。ラッチ回路L7も同様に、バス4−1およびトライ・ステート・バッファT7,T15,T23,T31,T39,T47,T55,T63を介して結果バッファe1〜e4,m1〜m4と接続される。ラッチ回路L8も同様に、バス4−2およびトライ・ステート・バッファT8,T16,T24,T32,T40,T48,T56,T64を介して結果バッファe1〜e4,m1〜m4と接続される。
【0042】
ラッチ回路L1は、バス1−1およびトライ・ステート・バッファT65を介してレジスタ・ファイル5と接続される。ラッチ回路L2は、バス1−2およびトライ・ステート・バッファT66を介してレジスタ・ファイル5と接続される。ラッチ回路L3は、バス2−1およびトライ・ステート・バッファT67を介してレジスタ・ファイル5と接続される。ラッチ回路L4は、バス2−2およびトライ・ステート・バッファT68を介してレジスタ・ファイル5と接続される。ラッチ回路L5は、バス3−1およびトライ・ステート・バッファT69を介してレジスタ・ファイル5と接続される。ラッチ回路L6は、バス3−2およびトライ・ステート・バッファT70を介してレジスタ・ファイル5と接続される。ラッチ回路L7は、バス4−1およびトライ・ステート・バッファT71を介してレジスタ・ファイル5と接続される。ラッチ回路L8は、バス4−2およびトライ・ステート・バッファT72を介してレジスタ・ファイル5と接続される。
【0043】
トライ・ステート・バッファT1〜T72は、バイパス制御回路13からの対応する制御信号e1−1−1〜r−4−2によって、オン/オフが制御される。
【0044】
トライ・ステート・バッファが、対応する制御信号によりオンとなった場合には、そのトライ・ステート・バッファと対応するラッチ回路へ、そのトライ・ステート・バッファに対応する結果バッファまたはレジスタ・ファイルからデータが転送される。
【0045】
図4は、バイパス制御回路13が生成する、トライ・ステート・バッファT1〜T72を制御する制御信号e1−1−1〜r−4−2と、トライ・ステート・バッファT1〜T72との対応関係を示す図である。図4を参照して、T1〜T72は、図2のトライ・ステート・バッファT1〜T72を示す。なお、図4においては、トライ・ステート・バッファを「TSB」と表わしている。また、図4を参照して、e1−1−1〜r−4−2は、トライ・ステート・バッファT1〜T72を制御する制御信号を示す。そして、図4において、1つの枠内に記載されているトライ・ステート・バッファと制御信号とは対応している。たとえば、トライ・ステート・バッファT1のオン/オフを制御するのは制御信号e1−1−1である。
【0046】
再び図3を参照して、バイパス制御について簡単に説明する。ここで、ラッチ回路L1が必要とするデータのソース・アドレスをsrc1−1とし、ラッチ回路L2が必要とするデータのソース・アドレスをsrc1−2とし、ラッチ回路L3が必要とするデータのソース・アドレスをsrc2−1とし、ラッチ回路L4が必要とするデータのソース・アドレスをsrc2−2とし、ラッチ回路L5が必要とするデータのソース・アドレスをsrc3−1とし、ラッチ回路L6が必要とするデータのソース・アドレスをsrc3−2とし、ラッチ回路L7が必要とするデータのソース・アドレスをsrc4−1とし、ラッチ回路L8が必要とするデータのソース・アドレスをsrc4−2とする。
【0047】
バイパス制御回路13は、そこで管理している命令が、いずれの機能ユニットのいずれのステージに存在するかを管理している。そして、バイパス制御回路13は、4つの機能ユニット7−1〜7−4の8つのステージのいずれかに存在する命令が持つデスティネーション・アドレスと、実行ステージEXで実行される命令のソース・アドレスsrc1−1〜src4−2とが一致する場合は、一致するソース・アドレスに対応するラッチ回路へ、一致するデスティネーション・アドレスを持つ命令が存在するステージの結果バッファから、そこに保持されている命令の処理結果(演算結果)を転送する。すなわち、バイパス制御回路13は、一致するソース・アドレスに対応するラッチ回路と、一致するデスティネーション・アドレスを持つ命令が存在するステージの結果バッファとの間にあるトライ・ステート・バッファを、制御信号によってオンさせる。
【0048】
一方、バイパス制御回路13は、ソース・アドレスが、管理している命令のいずれのデスティネーション・アドレスとも一致しない場合には、そのソース・アドレスに対応するラッチ回路へ、そのソース・アドレスに従って、レジスタ・ファイル5からデータが転送される。すなわち、バイパス制御回路13は、管理している命令のいずれのデスティネーション・アドレスとも一致しないソース・アドレスに対応するラッチ回路と、レジスタ・ファイル5との間にあるトライ・ステート・バッファを、制御信号によってオンさせる。
【0049】
図3および図4を参照して、具体例を挙げながらバイパス制御について説明する。結果バッファe4に保持されているALUa4の演算結果(データ)と、これからラッチ回路L1で保持されるデータのソース・アドレスとが一致しているとする。この一致は、バイパス制御回路13によって検出され、バイパス制御回路13は、制御信号e4−1−1を“1”とする。このような、“1”となっている制御信号e4−1−1は、トライ・ステート・バッファT49をオンにする。このため、結果バッファe4に保持されているALUa4の演算結果(データ)が、バス1−1によって、ラッチ回路L1に転送される。
【0050】
VLIWプロセッサでは、スカラ・プロセッサと異なり、4つの機能ユニット7−1〜7−4の8つの結果バッファe1〜e4,m1〜m4に保持されている8つの演算結果(データ)が、4つの機能ユニット7−1〜7−4の4つのALUa1〜a4のいずれの入力ともなり得る。
【0051】
図5は、図3のバイパス制御回路13を示す概略ブロック図である。図5を参照して、バイパス制御回路は、フィールド制御回路21−1,21−2,21−3,21−4、命令管理回路15、アドレスデコーダ17および制御信号発生回路19を含む。命令管理回路15は、有効/無効フィールド(以下、「valid フィールド」という)23、機能ユニットフィールド(以下、「pipeフィールド」という)25およびステージフィールド(以下、「stage 値フィールド」という)27からなる。
【0052】
図6は、図5の命令管理回路15を示す概略ブロック図である。なお、図5と同様の部分については同一の参照符号を付しその説明を適宜省略する。図6を参照して、命令管理回路は、複数のエントリf1〜fnに分けられる。エントリf1〜fnは、図3のレジスタ・ファイル5のアドレスに対応して設けられ、その数は、図3のレジスタ・ファイル5のアドレスの数と同じである。たとえば、図3のレジスタ・ファイル5のアドレス“1”に対応するのが、エントリf1である。また、デスティネーション・アドレス“1”は、図3のレジスタ・ファイル5のアドレス“1”を示すため、デスティネーション・アドレス“1”に対応するのはエントリf1である。さらに、ソース・アドレス“1”は図3のレジスタ・ファイル5のアドレス“1”を示すため、ソース・アドレス“1”に対応するのはエントリf1である。
【0053】
再び図5を参照して説明する。フィールド制御回路21−1は、機能ユニット7−1に投入される命令のデスティネーション・アドレスdes1を受取る。そして、フィールド制御回路21−1は、受取ったデスティネーション・アドレスdes1に対応するエントリ(図6参照)のデータを更新するための複数の信号を生成する。この複数の信号は、信号address 、信号pipe set、信号valid set および信号stage rsetである。フィールド制御回路21−2は、機能ユニット7−2へ投入される命令のデスティネーション・アドレスdes2を受取り、フィールド制御回路21−3は、機能ユニット7−3に投入される命令のデスティネーション・アドレスdes3を受取り、フィールド制御回路21−4は機能ユニット7−4に投入される命令のデスティネーション・アドレスdes4を受取る。フィールド制御回路21−2〜21−4の動作は、フィールド制御回路21−1と同様である。
【0054】
命令管理回路15は、エントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、どの機能ユニットのどのステージに存在するかを管理する。すなわち、命令管理回路15は、エントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果(演算結果)が現在どの機能ユニットのどの結果バッファに存在するかを管理する。valid フィールド23は、pipeフィールド25およびstage フィールド27のデータが有効か無効かを示すものである。pipeフィールド25は、エントリに対応するデスティネーション・アドレスを持つ命令が、現在どの機能ユニットに存在するかを示すものである。すなわち、エントリに対応するデスティネーション・アドレスを持つ命令の処理結果(演算結果)がどの機能ユニットにあるかを示すものである。stage フィールド27は、エントリに対応するデスティネーション・アドレスを持つ命令が現在どのステージに存在するかを示すものである。すなわち、エントリに対応するデスティネーション・アドレスを持つ命令の処理結果(演算結果)がどの結果バッファに存在するかを示すものである。
【0055】
valid フィールド23、pipeフィールド25およびstage フィールド27は、フィールド制御回路21−1〜21−4が生成した複数の信号に従ってセットまたはリセットされる。信号address は、これからセットまたはリセットしようとするエントリを、フィールド制御回路に入力されたデスティネーション・アドレスに従って決定する。すなわち、信号address は、フィールド制御回路に入力されたデスティネーション・アドレスに対応するエントリを選択するものである。信号valid set は、信号address に従ったエントリのvalid フィールド23をセットする。これによって、信号address に従ったエントリのpipeフィールド25およびstage フィールドのデータが有効であることが示される。信号pipe setは、信号address に従ったエントリのpipeフィールド25をセットする。すなわち、信号pipe setは、フィールド制御回路に入力されたデスティネーション・アドレスを持つ命令が投入される機能ユニットを示すようにpipeフィールド25をセットする。信号stage reset は、信号address に従ったエントリのstage フィールド27をリセットする。そして、信号address に従ったエントリのstage フィールド27は、そのエントリに対応するデスティネーション・アドレスを持つ命令がステージを移行するごとに新しくセットされる。このことについては後で詳しく説明する。
【0056】
アドレスデコーダ17は、図1のデコーダ3から、4つの命令の8個のソース・アドレスsrc1−1〜src4−2を受取り、デコードして、命令管理回路15に転送する。命令管理回路15は、アドレスデコーダ17から転送された8個のソース・アドレスsrc1−1〜src4−2に対応するエントリのフィールド(valid フィールド23,pipeフィールド25およびstage フィールド27)のデータを制御信号発生回路19に転送する。8個のソース・アドレスsrc1−1〜src4−2が入力されているため、valid フィールド23からは、8個の1ビットのデータ(信号valid )が、pipeフィールド25からは、2ビットの8個のデータ(信号pipe)が、stage フィールド27からは2ビットの8個のデータ(信号stage )が、制御信号発生回路19に入力されることになる。制御信号発生回路19は、命令管理回路15の3つのフィールド23,25,27から入力されたデータに基づき、トライ・ステート・バッファT1〜T72を制御する制御信号e1−1−1〜r−4−2(図4参照)を発生する。
【0057】
図7は、図5の制御信号発生回路19を示す概略ブロック図である。図7を参照して、制御信号発生回路は、8つの制御回路S1−1,S1−2,S2−1,S2−2,S3−1,S3−2,S4−1,S4−2を含む。8つの制御回路S1−1〜S4−2は、8つのソース・アドレスsrc1−1〜src4−2に対応して設けられている。たとえば、ソース・アドレスsrc1−1に対応して設けられるのが制御回路S1−1である。図3,図4,図5および図7を参照して、制御回路S1−1に注目して説明する。制御回路S1−1は、ソース・アドレスsrc1−1に対応するエントリの3つのフィールド23,25,27から3つの信号を受取る。すなわち、valid フィールド23からは、1ビットの信号valid を、pipeフィールド25からは2ビットの信号pipeを、stage フィールド27からは2ビットの信号stage を受取る。信号valid は、信号pipeおよび信号stage が有効か無効かを示すものである。信号pipeは、ソース・アドレスsrc1−1と同じデスティネーション・アドレスを持つ命令(命令の処理結果)がどの機能ユニットに存在するかを示すものである。信号stage は、ソース・アドレスsrc1−1と同じデスティネーション・アドレスを持つ命令(命令の処理結果)がどのステージに存在するかを示すものである。制御回路S1−1は、このような信号valid 、信号pipeおよび信号stage に基づいて、バス1−1に接続されたトライ・ステート・バッファT1,T9,T17,T25,T33,T41,T49,T57,T65を制御する制御信号e1−1−1〜e4−1−1、m1−1−1〜m4−1−1、r1−1−1を生成する。
【0058】
制御回路S1−2〜S4−2の動作は、制御回路S1−1の動作と同様である。すなわち、制御回路S1−2は、ソース・アドレスsrc1−2に対応して用いられ、ソース・アドレスsrc1−2に対応するエントリのフィールド23,25,27から信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S1−2は、制御信号e1−1−2〜e2−1−2,m1−1−2〜m4−1−2,r−1−2を生成する。制御回路S2−1は、ソース・アドレスsrc2−1に対応して用いられ、ソース・アドレスsrc2−1に対応するエントリのフィールド23,24,27からの信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S2−1は、制御信号e1−2−1〜e4−2−1,m1−2−1〜m4−2−1,r−2−1を生成する。制御回路S2−2は、ソース・アドレスsrc2−2に対応して用いられ、ソース・アドレスsrc2−2に対応するエントリのフィールド23,25,27から、信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S2−2は、制御信号e1−2−2〜e4−2−2,m1−2−2〜m4−2−2,r−2−2を受ける。制御回路S3−1は、ソース・アドレスsrc3−1に対応して用いられ、ソース・アドレスsrc3−1に対応するエントリのフィールド23,25,27から、信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S3−1は、制御信号e1−3−1〜e4−3−1,m1−3−1〜m4−3−1,r−3−1を生成する。
【0059】
制御回路S3−2は、ソース・アドレスsrc3−2に対応して用いられ、ソース・アドレスsrc3−2に対応するエントリのフィールド23,25,27から、信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S3−2は、制御信号e1−3−2〜e4−3−2,m1−3−2〜m4−3−2,r−3−2を生成する。制御回路S4−1は、ソース・アドレスsrc4−1に対応して用いられ、ソース・アドレスsrc4−1に対応するエントリのフィールド23,25,27から、信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S4−1は、制御信号e1−4−1〜e4−4−1,m1−4−1〜m4−4−1,r−4−1を生成する。制御回路S4−2は、ソース・アドレスsrc4−2に対応して用いられ、ソース・アドレスsrc4−2に対応するエントリのフィールド23,24,27から、信号valid ,信号pipeおよび信号stage を受ける。そして、制御回路S4−2は、制御信号e1−4−2〜e4−4−2,m1−4−2〜m4−4−2,r−4−2を生成する。
【0060】
図8は、図7の制御回路S1−1の詳細を示す回路図である。図8を参照して、制御回路S1−1は、3入力のAND回路29〜51およびNOR回路53を含む。AND回路29〜33,37〜51の入力に付されている丸印(○)は、反転された信号がAND回路に入力されることを表わす。信号pipe[0]は、2ビットの信号pipeの第1ビット目を示すものであり、信号pipe[1]は、2ビットの信号pipeの第2ビット目を示すものである。信号stage [0]は、2ビットの信号stage の第1ビット目を示すものであり、信号stage [1]は、2ビットの信号stage の第2ビット目を示すものである。
【0061】
AND回路29〜35には、信号valid 、信号pipe[0]および信号pipe[1]が入力される。AND回路37〜51には、信号stage [0]および信号stage [1]が入力される。AND回路37,39には、AND回路29の出力信号が入力される。AND回路41,43には、AND回路31の出力信号が入力される。AND回路45,47には、AND回路33の出力信号が入力される。AND回路49,51には、AND回路35の出力信号が入力される。NOR回路53には、AND回路37〜51の出力信号が入力される。
AND回路29〜35は、機能ユニットを識別するためのものである。すなわち、ソース・アドレスsrc1−1に対応するエントリで管理している命令(命令の処理結果)がどの機能ユニットに存在するかを識別するためのものである。ソース・アドレスsrc1−1に対応するエントリのpipeフィールド25およびstage フィールド27のデータが有効な場合、すなわち、信号pipe[0],信号pipe[1],信号stage [0],信号stage [1]が有効なときは、信号valid は“1”となっている。AND回路37〜51は、ステージを識別するためのものである。すなわち、ソース・アドレスsrc1−1に対応するエントリによって管理している命令(命令の処理結果)がどのステージにあるのかを識別するためのものである。
【0062】
このようにAND回路29〜51によって、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令がどの機能ユニットのどのステージに存在するかを特定する。すなわち、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果がどの機能ユニットのどの結果バッファに存在するかを特定する。そして、特定された結果バッファに保持されている命令の処理結果を、バス1−1を介して、ラッチ回路L1に転送するため、バス1−1に接続され、特定された結果バッファに対応するトライ・ステート・バッファをオンにするための制御信号e1−1−1〜e4−1−1,m1−1−1〜m4−1−1を発生する。
【0063】
図3および図8を参照して、具体的な例を挙げて説明する。ここで、信号pipeが“0”のときは機能ユニット7−1を示し、信号pipeが“1”のときは機能ユニット7−2を示し、信号pipeが“2”のときは機能ユニット7−3を示し、信号pipeが“3”のときは機能ユニット7−4を示すとする。また、信号stage が“0”のときは命令デコードステージIDを示し、信号stage が“1”のときは実行ステージEXを示し、信号stage が“2”のときはメモリ・アクセスステージMEMを示し、信号stage が“3”のときは書戻しステージWBを示すとする。信号pipeが“0”で信号stage が“1”の場合は、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令(命令の処理結果)が、機能ユニット7−1の実行ステージEXの結果バッファe1に存在することを示す。このため、トライ・ステート・バッファT1をオンにして、結果バッファe1に格納されている命令の処理結果を、ラッチ回路L1へバイパスする必要がある。そこで、信号pipeが“0”であるため、信号pipe[0]および信号pipe[1]が“0”となっている。そして、信号valid が“1”の場合は、AND回路29の出力のみが“1”となる。また、信号stage が“1”であるため、信号stage [0]が“0”であり、信号stage [1]が“1”となっている。このため、AND回路37の出力のみが“1”となる。すなわち、制御信号e1−1−1のみが“1”となる。この“1”となった制御信号e1−1−1によって、トライ・ステート・バッファT1がオンになる。
【0064】
ソース・アドレスsrc1−1に対応するエントリのpipeフィールド25およびstage フィールド27のデータが無効である場合、すなわち、信号pipe[0],信号pipe[1],信号stage [0],信号stage [1]が無効の場合には、信号valid は“0”となっている。ソース・アドレスsrc1−1に対応するエントリのpipeフィールド25およびstage フィールド27のデータが無効であるということは、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果が、いずれの機能ユニットのいずれの結果バッファにも存在しないことを示す。したがって、このような場合には、レジスタ・ファイル5からソース・アドレスsrc1−1に対応するデータをラッチ回路L1へ読出す必要がある。すなわち、トライ・ステート・バッファT65をオンにする制御信号を発生する必要がある。ここで、信号valid が“0”であるため、AND回路29〜35のすべての出力信号は“0”となる。さらに、AND回路29〜35のすべての出力信号が“0”であるため、AND回路37〜51のすべての出力信号も“0”となる。これによって、NOR回路53の出力信号のみが“1”となる。すなわち、制御信号r−1−1のみが“1”となり、トライ・ステート・バッファT65をオンにする。なお、図7の制御回路S1−2〜S4−2の構成は、図8に示した制御回路S1−1の構成と同じである。
【0065】
図9は、図5のstage フィールド27の一部およびstage フィールド27の一部を管理するためのstage フィールド管理回路を示す概略ブロック図である。図9を参照して、stage フィールド55は、図5のstage フィールド27のうち、1つのエントリに対応するものである。すなわち、stage フィールド55は、1つのエントリのstage フィールドである。そして、stage フィールド55に対応して、stage フィールド管理回路54が設けられる。すなわち、命令管理回路15(図6)は、複数のエントリf1〜fnに対応して複数のstage フィールド管理回路54を備えていることになる。
【0066】
stage フィールド管理回路54は、加算回路57、データ比較器59および参照回路61を含む。
【0067】
エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令がどのステージに存在するかを示すものである。すなわち、エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果がどの結果バッファに存在するかを示すためのものである。ここで、stage フィールド55が初期状態または信号stage reset によってリセットされた状態の場合には、stage フィールド55は“0”となっている。すなわち、エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令が命令デコードステージIDに存在するときは、“0”となっている。エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令が実行ステージEXに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果が実行ステージEXの結果バッファに存在するときは、“1”となっている。エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令がメモリ・アクセスステージMEMに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果がメモリ・アクセスステージMEMの結果バッファに存在するときは、“2”となっている。エントリのstage フィールド55は、そのエントリに対応するデスティネーション・アドレスを持つ命令が書戻しステージWBに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果が書戻しステージWBに存在するときは、“3”となっている。
【0068】
このようにstage フィールド55のデータをセットしていくのは(更新していくのは)は、stage フィールド管理回路54である。stage フィールド55の値には、クロック・サイクルごとに、すなわち、命令がステージを移行するごとに、加算回路57によって、“1”が加算される。そして、その加算値は、再びstage フィールド55に格納される。データ比較器59は、stage フィールド55の値と、参照回路61に格納されている値“3”とを比較する。そして、データ比較器59は、stage フィールド55の値が“3”のときは、信号valid reset を生成する。すなわち、命令が、書戻しステージWBに移行した場合には、データ比較器59から信号valid reset が出力され、stage フィールド管理回路54に対応するエントリのvalid フィールドがリセットされる。リセットされたvalid フィールドは、pipeフィールドおよびstage フィールドが無効であることを示す。このように、命令が書戻しステージWBに存在するときに、信号valid reset を出力するのは、命令が書戻しステージWBに存在するときはバイパスする必要がなく、レジスタ・ファイル5から直接データを読出せばよいからである。
【0069】
再び図3,図5および図6を参照して、命令管理回路15のセットまたはリセットについて、具体例を挙げながら説明する。機能ユニット7−1に投入される命令のデスティネーション・アドレスdes1が“1”とする。このとき、フィールド制御回路21−1は、信号address を“1”とする。信号address “1”は、デスティネーション・アドレスdes1“1”に対応するエントリf1を選択する。すなわち、この選択されたエントリf1の3つのフィールド23,25,27がセットまたはリセットされることになる。そして、フィールド制御回路21−1は、エントリf1のvalid フィールド23を“1”にセットするための信号valid set を発生する。なお、valid フィールド23が“1”のときには、pipeフィールド25およびstage フィールド27のデータが有効であることを示し、valid フィールド23が“0”の場合には、pipeフィールド25およびstage フィールド27のデータが無効であることを示す。
【0070】
また、フィールド制御回路21−1は、エントリf1のpipeフィールド25を“0”にセットするための信号pipe setを発生する。なお、pipeフィールド25が“0”のときは、機能ユニット7−1を示し、pipeフィールド25が“1”のときは機能ユニット7−2を示し、pipeフィールド25が“2”のときは機能ユニット7−3を示し、pipeフィールド25が“3”のときは機能ユニット7−4を示す。さらに、フィールド制御回路21−1は、エントリf1のstage フィールド27をリセットするための信号stage reset を発生する。なお、stage フィールド27に、信号stage reset が与えられた場合には、stage フィールド27は“0”となる。また、stage フィールド27が“0”の場合は、命令が命令デコードステージIDに存在することを示し、stage フィールド27が“1”の場合は、命令が実行ステージEXに存在することを示し、stage フィールド27が“2”の場合には、命令がメモリ・アクセスステージMEMに存在することを示し、stage フィールド27が“3”のときは命令が書戻しステージWBに存在することを示す。
【0071】
次に、図3、図5、図7、図8、図6を参照して、具体例を挙げながら、バイパス制御回路13が行なうバイパス制御について説明する。アドレスデコーダ17に入力されるソース・アドレスsrc1−1が“2”とする。アドレスデコーダ17は、ソース・アドレスsrc1−1“2”に対応する命令管理回路15のエントリf2を読出し、ソース・アドレスsrc1−1“2”に対応するエントリf2のvalid フィールド23、pipeフィールド25およびstage フィールド27のデータを制御信号発生回路19に送信する。すなわち、制御回路S1−1(図7)には、valid フィールド23から信号valid が入力され、pipeフィールド25からは信号pipeが入力され、stage フィールド27からは信号stage が入力されることになる。ここで、信号valid が“1”、信号pipeが“1”、信号stage が“1”とする。すなわち、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令(命令の処理結果)は、機能ユニット7−2の結果バッファe2に存在することになる。この場合において、信号valid が“1”、信号pipe[0]が“0”、信号pipe[1]が“1”であるため、AND回路31(図8)の出力のみが“1”となる。また、信号stage [0]が“0”、信号stage [1]が“1”であるため、AND回路41の出力のみが“1”となる。すなわち、制御信号e2−1−1のみが“1”となる。これによって図3のトライ・ステート・バッファT17がオンし、結果バッファe2に保持されている命令の処理結果がバス1−1を介してラッチ回路L1に転送されることになる。
【0072】
図5および図6を参照して、実施の形態1によるVLIWプロセッサでは、優先順位付選択(比較)が不要な理由を説明する。命令管理回路15が、あるエントリによって、命令を管理している場合において、そのエントリに対応するデスティネーション・アドレスを持つ命令が、機能ユニット7−1〜7−4のいずれかに投入されるときは、すなわち、フィールド制御回路21−1〜21−4のいずれかに、そのエントリに対応するデスティネーション・アドレスが新たに入力されるときは、そのエントリは新たに投入される命令を管理する。たとえば、デスティネーション・アドレス“1”に対応するエントリは、エントリf1ひとつであるため、現在管理している命令のデスティネーション・アドレスが“1”である場合において、次に投入される命令のデスティネーション・アドレスも“1”である場合には、エントリf1に上書きされることになるのである。このように、命令管理回路15では、上書きされるので、優先順位付選択は不要になる。
【0073】
以上のように、実施の形態1によるVLIWプロセッサでは、バイパス制御回路によって、命令の処理結果がいずれの機能ユニットのいずれの結果バッファに存在するかを管理して、バイパス制御を行なっている。このため、デスティネーション・アドレスとソース・アドレスとを比較するための比較器が不要になるとともに、優先順位付選択をも不要になる。その結果、実施の形態1によるVLIWプロセッサでは、回路が簡単になり、高速にバイパス制御を行なうことができる。
【0074】
(実施の形態2)
実施の形態2による並列処理プロセッサとしてのVLIWプロセッサの構成は、図1および図3に示した実施の形態1によるVLIWプロセッサの構成と同様である。実施の形態2によるVLIWプロセッサの命令デコードステージIDでデコードされた基準命令の形式は図2のものと同様である。実施の形態2によるVLIWプロセッサにおいて、トライ・ステート・バッファT1〜T72と、トライ・ステート・バッファT1〜T72を制御する制御信号e1−1−1〜r4−2との関係は、図4に示したものと同様である。実施の形態2によるVLIWプロセッサのバイパス制御回路は、図4に示した実施の形態1によるバイパス制御回路と同様である。
【0075】
実施の形態2によるVLIWプロセッサの命令管理回路は、図6に示した実施の形態1によるVLIWプロセッサの命令管理回路と同様である。ただし、以下の点が異なる。実施の形態1によるVLIWプロセッサの命令管理回路は、pipeフィールド25において、4つの機能ユニット7−1〜7−4を、2ビットで表現している。これに対し、実施の形態2によるVLIWプロセッサでは、pipeフィールド25において、4つの機能ユニット7−1〜7−4を、4ビットのビット・ベクタで表現している。たとえば、実施の形態2によるVLIWプロセッサの命令管理回路では、pipeフィールド25の第1ビットが“1”の場合は、管理している命令が、機能ユニット7−1に存在することを示し、pipeフィールド25の第2ビットが“1”の場合は、管理している命令が、機能ユニット7−2に存在することを示し、pipeフィールド25の第3ビットが“1”の場合は、管理している命令が、機能ユニット7−3に存在することを示し、pipeフィールド25の第4ビットが“1”の場合は、管理している命令が、機能ユニット7−4に存在することを示す。このように、実施の形態2によるVLIWプロセッサでは、機能ユニット7−1〜7−4と同数のビット数を有するビット・ベクタで、各機能ユニットを表現する。pipeフィールド25において、4ビットのビット・ベクタで、各機能ユニットを表現しているため、pipeフィールド25から、制御信号発生回路19(図5)に与えられる信号pipeのビット数も4ビットになる。
【0076】
実施の形態2によるVLIWプロセッサの制御信号発生回路は、図7に示した実施の形態1によるVLIWプロセッサの制御信号発生回路と同様である。ただし、異なるのは以下の点である。上述のように、pipeフィールド25(図6)において、各機能ユニット7−1〜7−4を、4ビットのビット・ベクタで表現しているため、pipeフィールド25から制御回路S1−1〜S4−2に与えられる信号pipeが4ビットになる。これによって、実施の形態2によるVLIWプロセッサの制御回路S1−1〜S4−2の具体的な回路構成は、図8に示した実施の形態1によるVLIWプロセッサの制御回路S1−1〜S4−2の具体的な回路構成と異なってくる。
【0077】
図10は、実施の形態2によるVLIWプロセッサの制御回路S1−1(図7)の詳細を示す回路図である。なお、図8と同様な部分については同様の参照符号を付し、その説明は適宜省略する。図10を参照して、制御回路S1−1は、AND回路63〜69,37〜51およびNOR回路53を含む。AND回路63〜69には、信号valid が入力される。AND回路63には、信号pipe[0]が入力される。AND回路65には、信号pipe[1]が入力される。AND回路67には、信号pipe[2]が入力される。AND回路69には、信号pipe[3]が入力される。
【0078】
図5も参照して、信号pipe[0]は、pipeフィールドの第1ビット目に対応し、すなわち、信号pipeの第1ビット目を示し、信号pipe[1]は、pipeフィールドの第2ビット目に対応し、すなわち、信号pipeの第2ビット目を示し、信号pipe[2]は、pipeフィールドの第3ビット目に対応し、すなわち、信号pipeの第3ビット目を示し、信号pipe[3]は、pipeフィールドの第4ビット目に対応し、すなわち、信号pipeの第4ビット目を示すものである。すなわち、信号pipe[0]が“1”のときには、管理する命令(命令の処理結果)が機能ユニット7−1に存在することを示し、信号pipe[1]が“1”の場合は、管理する命令(命令の処理結果)が機能ユニット7−2に存在することを示し、信号pipe[2]が“1”の場合は、管理する命令(命令の処理結果)が機能ユニット7−3に存在することを示し、信号pipe[4]が“1”の場合は、管理する命令(命令の処理結果)が機能ユニット7−4に存在することを示す。したがって、AND回路63〜69によって、管理している命令がどの機能ユニットに存在するかを識別できる。なお、制御回路S1−2〜S4−2の具体的な回路構成は図10に示した制御回路S1−1と同じである。
【0079】
実施の形態2によるVLIWプロセッサのstage フィールドおよびstage フィールド管理回路は、図9に示した実施の形態1によるstage フィールドおよびstage フィールド管理回路と同様である。
【0080】
以上のように、実施の形態2によるVLIWプロセッサでは、バイパス制御回路のpipeフィールド25(図5)において、4つの機能ユニット7−1〜7−4(図3)を4ビットのビット・ベクタで表現している。すなわち、機能ユニットと同数のビット数を有するビット・ベクタで、機能ユニットを表現している。このため、制御回路(図10)が、実施の形態1によるVLIWプロセッサの制御回路(図8)より簡単になる。その結果、実施の形態2によるVLIWプロセッサでは、実施の形態1によるVLIWプロセッサに比し、さらに高速に、バイパス制御を行なうことができる。
【0081】
(実施の形態3)
実施の形態3による並列処理プロセッサとしてのVLIWプロセッサの構成は、図1および図3に示した実施の形態1によるVLIWプロセッサと同様である。実施の形態3によるVLIWプロセッサの命令デコードステージIDでデコードされた基準命令の形式は図2に示したものと同様である。
【0082】
実施の形態3によるVLIWプロセッサのトライ・ステート・バッファT1〜T72と、制御信号e1−1−1〜r−4−2との対応関係は、図4に示したのと同様である。実施の形態4によるVLIWプロセッサのバイパス制御回路は、図5に示した実施の形態1によるVLIWプロセッサのバイパス制御回路と同様である。
【0083】
実施の形態3によるVLIWプロッセサの命令管理回路は、図6に示した実施の形態1によるVLIWプロセッサの命令管理回路と同様である。ただし、以下の点が異なる。実施の形態1によるVLIWプロセッサのstage フィールド27では、管理している命令が存在するステージを、2ビットで表現している。これに対し、実施の形態3によるVLIWプロセッサの命令管理回路のstage フィールド27では、管理している命令が存在するステージを4ビットのビット・ベクタで表現している。たとえば、命令デコードステージIDに、命令が存在する場合は、stage フィールド27の第1ビットを“1”にセットし、実行ステージEXに命令が存在する場合は、stage フィールド27の第2ビットを“1”にセットし、メモリ・アクセスステージMEMに命令が存在する場合は、stage フィールド27の第3ビットを“1”にセットし、書戻しステージWBに命令が存在する場合は、stage フィールド27の第4ビットを“1”にセットする。このように、stage フィールド27においては、4つのステージを4ビットのビット・ベクタで表現しているため、stage フィールド27から制御信号発生回路19(図5)へ与えられる信号stage も4ビットとなる。
【0084】
実施の形態3によるVLIWプロセッサの制御信号発生回路は、図7に示した実施の形態1によるVLIWプロセッサの制御信号発生回路と同様である。ただし以下の点が異なる。上述したように、実施の形態3によるVLIWプロセッサでは、stage フィールド27において、4つのステージを4つのビット・ベクタで表現しているため、stage フィールド27から制御回路S1−1〜S4−2に与えられる信号stage も4ビットになる。このため、制御回路S1−1〜S4−2の具体的な回路構成が実施の形態1によるVLIWプロセッサの制御回路S1−1〜S4−2と異なってくる。
【0085】
図11は、本発明の実施の形態3によるVLIWプロセッサの制御回路(図7)の詳細を示す回路図である。なお、図8と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0086】
図11を参照して、制御回路S1−1は、AND回路29〜35,71〜85およびNOR回路53を含む。AND回路71,73には、AND回路29の出力信号が入力される。AND回路75,77には、AND回路31の出力信号が入力される。AND回路79,81には、AND回路33からの出力信号が入力される。AND回路83,85には、AND回路35からの出力信号が入力される。AND回路71,75,79,83には、信号stage [1]が入力される。AND回路73,77,81,85には、信号stage [2]が入力される。
【0087】
ここで、信号stage [1]は、stage フィールド27(図5)の第2ビット目の値、すなわち、信号stage の第2ビット目を示している。すなわち、信号stage [1]は、管理している命令が、命令実行ステージEXに存在するか否かを示す信号である。信号stage [2]は、stage フィールド27の第3ビット目の値、すなわち、信号stage の第3ビット目を示している。すなわち、stage [2]は、管理している命令が、メモリ・アクセスステージMEMに存在するか否かを示す信号である。具体的に言うと、信号[1]が、“1”のときは、管理している命令が、命令実行ステーションEXに存在することを示す。また、信号[2]が“1”のときは、管理している命令が、メモリ・アクセスステージMEMに存在することを示す。なお、制御回路S1−1では、実行ステージEXの結果バッファe1〜e4およびメモリ・アクセスステージMEMの結果バッファm1〜m4に保持されている命令の処理結果をバイパスすることを目的としているため、stage フィールド27の第1ビット目に対応する信号stage [0]および、stage フィールド27の第4ビット目に対応する信号stage [3]は、制御回路S1−1に入力する必要はない。ここで、図8(実施の形態1)では、ステージを識別するためのAND回路37〜51は、3入力となっているが、図11において、ステージを識別するためのAND回路71〜85は、2入力となっている。
【0088】
図3および図11を参照して、具体例を挙げて動作について説明する。ラッチ回路L1が必要とするデータのソース・アドレスと、結果バッファe3に存在する命令の処理結果(データ)のデスティネーション・アドレスとが一致する場合を考える。この場合、信号valid および信号pipe[0]は“1”であり、信号pipe[1]は0である。このため、AND回路33の出力信号のみが“1”となる。そして、stage [1]が“1”であり、信号stage [2]が“0”である。このため、AND回路79の出力信号のみが“1”となる。すなわち、制御信号e3−1−1のみが“1”となる。これによってトライ・ステート・バッファT33がオンになり、結果バッファe3に保持されている命令の処理結果がラッチ回路L1に転送されることになる。
【0089】
また、ラッチ回路L1にこれから投入されるデータのソース・アドレスが8つの結果バッファe1〜e4,m1〜m4に保持されている8つの命令の処理結果の8つのデスティネーション・アドレスのいずれとも一致しない場合には、信号valid が“0”である。このため、AND回路71〜85の出力信号はすべて“0”になる。これによって、NOR回路53の出力が、“1”となる。すなわち、制御信号r−1−1が“1”となる。これによって、トライ・ステート・バッファT65がオンし、レジスタ・ファイル5からデータがラッチ回路L1に投入される。なお、制御回路S1−2〜S4−2の回路構成は、図11に示した制御回路と同じである。
【0090】
図12は、実施の形態3によるVLIWプロセッサのstage フィールド27(図5)の一部およびstage フィールド27の一部を管理するビット・シフタを示す概略ブロック図である。図12を参照して、stage フィールドの一部87は、stage フィールド27(図5)の一部であって、1つのエントリに対応するものである。したがって、stage フィールドの一部87に対応して設けられるビット・シフタ89もまた、1つのエントリに対応するものである。stage フィールドの一部87では、4ビットのビット・ベクタで、ステージを識別している。したがって、ビット・シフタ89によって、命令が命令デコードステージIDに存在するときには、stage フィールドの一部87の第1ビット目[0]を“1”にセットし、命令が実行ステージEXに存在するときには、stage フィールドの一部87の第2ビット目[1]を“1”にセットし、命令がメモリ・アクセスステージMEMに存在するときは、stage フィールドの一部87の第3ビット目[2]を“1”にセットし、命令が書戻しステージWBに存在するときは、stage フィールドの一部87の第4ビット目[3]を“1”にセットする。
【0091】
すなわち、ビット・シフタ89は、各ステージへ移行するごとに、すなわち、クロック・サイクルごとに、移行したステージに対応する、ビット・ベクタのビットをセットする。たとえば、命令が、実行ステージEXに存在するときは、stage フィールドの一部87のビット・ベクタは、0100になっている。valid フィールド23(図5)をリセットするための信号valid reset は、命令が、書戻しステージWBに進んだときに発生すればよい。このため、stage フィールドの一部87の第4ビット[3]の値をそのまま信号valid reset とする。
【0092】
以上のように、実施の形態3によるVLIWプロセッサでは、ステージをビット・ベクタで表わしている。すなわち、4つのステージを4ビットのビット・ベクタで表わしている。このため、制御回路(図11)およびstage フィールド27(図5)を管理する回路(図12のビット・シフタ89)が、実施の形態1によるVLIWプロセッサの制御回路(図8)およびstage フィールド27を管理する回路(図9のstage フィールド管理回路54)に比し、簡単になる。その結果、実施の形態3によるVLIWプロセッサでは、さらに、高速に、制御信号a1−1−1〜r−4−2および信号valid reset を発生することができ、さらに、高速にバイパス制御を行なうことができる。
【0093】
また、実施の形態2によるVLIWプロセッサの特徴部分と、実施の形態3によるVLIWプロセッサの特徴部分とを組合せることができる。すなわち、4つの機能ユニット7−1〜7−4を4ビットのビット・ベクタで表わし、かつ、4つのステージ(命令デコードステージID、実行ステージEX、メモリ・アクセスステージMEMおよび書戻しステージWB)を4ビットのビット・ベクタで表わす。このようにした場合、制御回路S1−1〜S4−2(図7)の具体例な回路構成が異なってくる。
【0094】
図13は、実施の形態2によるVLIWプロセッサの特徴部分と実施の形態3によるVLIWプロセッサの特徴部分とを組合せた場合の制御回路S1−1(図7)の詳細を示す回路図である。図13を参照して、制御回路S1−1は、AND回路63〜69,71〜85およびNOR回路53を含む。なお、図10および図11と同様の部分については同一の参照符号を付し説明は省略する。また、制御回路S1−2〜S4−2の具体的な回路構成も、図13の制御回路S1−1と同じである。このように、実施の形態2によるVLIWプロセッサの特徴部分と実施の形態3によるVLIWプロセッサの特徴部分を組合せた場合には、実施の形態2によるVLIWプロセッサの制御回路(図10)または実施の形態3によるVLIWプロセッサの制御回路(図11)に比し、制御回路が簡単になる。その結果、実施の形態2によるVLIWプロセッサまたは実施の形態3によるVLIWプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【0095】
(実施の形態4)
実施の形態4による並列処理プロセッサとしてのVLIWプロセッサの構成は、図1および図3に示した実施の形態1によるVLIWプロセッサの構成と同様である。実施の形態4によるVLIWプロセッサの命令デコードステージIDでデコードされた基準命令の形式は、図2に示したものと同様である。実施の形態4によるVLIWプロセッサのトライ・ステート・バッファT1〜T72と、制御信号e1−1−1〜r−4−2との対応関係は、図4に示したものと同様である。
【0096】
図14は、実施の形態4によるVLIWプロセッサのバイパス制御回路13(図3)を示す概略ブロック図である。なお、図5と同様の部分については同一の参照符号を付しその説明を適宜省略する。図14を参照して、バイパス制御回路は、フィールド制御回路21−1〜21−4、命令管理回路88、アドレスデコーダ17および制御信号発生回路90を含む。命令管理回路88は、機能ユニットフィールド(以下、「pipeフィールド」という)25およびステージフィールド(以下、「stage フィールド」という)27を含む。
【0097】
図5のバイパス制御回路と、図14のバイパス制御回路が異なるのは、図14のバイパス制御回路には、図5のバイパス制御回路のようなvalid フィールド23がないことである。実施の形態4によるVLIWプロセッサのバイパス制御回路では、以下のようにして、pipeフィールド25およびstage フィールド27のデータが有効か無効かを判断している。
【0098】
なお、命令管理回路88は、図6の命令管理回路と同様に、複数のエントリf1〜fnに分かれている。
【0099】
pipeフィールド25は、実施の形態2によるVLIWプロセッサのpipeフィールドと同様のものである。すなわち、4つの機能ユニット7−1〜7−4を、4ビットのビット・ベクタで表わしている。そして、あるエントリのpipeフィールド25において、ビット・ベクタの第1ビット〜第4ビットの値のうちいずれか1つが“1”の場合は、そのエントリのpipeフィールド25およびstage フィールド27のデータは有効であるとする。一方、あるエントリのpipeフィールド25において、ビット・ベクタの第1ビット〜第4ビットの値のすべてが“0”の場合は、そのエントリのpipeフィールド25およびstage フィールド27のデータは無効であるとする。
【0100】
このようにする場合には、一番最初にpipeフィールド25のビット・ベクタのすべてのビットを“0”に初期化しておく必要がある。また、命令が書戻しステージWBに存在する場合は、その命令が持つデスティネーション・アドレスに対応するエントリのpipeフィールド25において、ビット・ベクタのすべてのビットをリセットする必要がある。なぜならば、命令(命令の処理結果)が書戻しステージWBに存在するときには、レジスタ・ファイルから直接データを読出せばよく、バイパスする必要がないからである。また、stage フィールド27を管理するstage フィールド管理回路は、図9に示したものと同様である。したがって、pipeフィールド25において、ビット・ベクタのすべてのビットのリセットは、図9のstage フィールド管理回路54が発生する信号valid reset によって行なわれる。
【0101】
pipeフィールド25では、4ビットのビット・ベクタによって機能ユニットを表わしているため、制御信号発生回路90には、それに対応して4ビットの信号pipeがpipeフィールド25から与えられることになる。なお、ソース・アドレスsrc1−1〜src4−2は8個であるため、pipeフィールド25からは、4ビットの8個の信号pipeが制御信号発生回路90に与えられる。
【0102】
図15は、図14の制御信号発生回路90を示す概略ブロック図である。なお、図7と同様の部分については同一の参照符号を付しその説明は適宜省略する。図15を参照して、制御回路S1−1には、4ビットの信号pipeおよび2ビットの信号stage が与えられる。これに応じて、制御回路S1−1は制御信号e1−1−1〜e4−1−1,m1−1−1〜m4−1−1,r−1−1を発生する。なお、制御回路S1−2〜S4−2についても制御回路S1−1と同様である。
【0103】
図16は、図15の制御回路S1−1の詳細を示す回路図である。図16を参照して、制御回路S1−1は、AND回路91〜105およびNOR回路53を含む。AND回路91〜105には、信号stage [0]および信号stage [1]が入力される。AND回路91,93には、信号pipe[0]が入力される。AND回路95,97には、信号pipe[1]が入力される。AND回路99,101には、信号pipe[2]が入力される。AND回路103,105には、信号pipe[3]が入力される。ここで、信号pipe[0]、信号pipe[1]、信号pipe[2]および信号pipe[3]は、それぞれ、図10(実施の形態2)に示した信号pipe[0]、信号pipe[1]、信号pipe[2]および信号pipe[3]と同様である。信号stage [0]および信号stage [1]は、それぞれ、図10に示した信号stage [0]および信号stage [1]と同様のものである。
【0104】
図16の制御回路S1−1の動作について、図3も参照しながら具体例を挙げて説明する。ラッチ回路L1でこれから必要とされるデータのソース・アドレスと、結果バッファe3に保持されている命令の処理結果(データ)のデスティネーション・アドレスとが一致している場合を考える。この場合には、信号pipe[0]、信号pipe[1]および信号pipe[3]は“0”であり、信号pipe[2]は“1”である。また、信号stage [0]は“0”であり、信号stage [1]は“1”である。このため、AND回路99の出力信号のみが“1”となる。すなわち制御信号e3−1−1のみが“1”となる。このため、トライ・ステート・バッファT33がオンになり、結果バッファe3に保持されている命令の処理結果がラッチ回路L1に転送されることになる。
また、ラッチ回路L1にこれから必要とされるデータのソース・アドレスが、結果バッファe1〜e4,m1〜m4に存在する命令の処理結果(データ)のデスティネーション・アドレスのいずれとも一致しない場合、すなわち、ラッチ回路L1でこれから必要とされるデータのソース・アドレスに対応するエントリのpipeフィールドおよびstage フィールドのデータが無効である場合は、信号pipe[0]〜pipe[3]のすべてが“0”となる。したがって、AND回路91〜105の出力信号はすべて“0”となる。これによって、NOR回路53から出力される制御信号r−1−1は“1”となる。これに応じて、トライ・ステート・バッファT65がオンになり、レジスタ・ファイル5から直接データがラッチ回路L1に読出されることになる。なお、制御回路s1−2〜s4−2の回路構成も、図16に示した制御回路s1−1の回路構成と同じである。
【0105】
以上のように、実施の形態4によるVLIWプロセッサでは、pipeフィールド25において、4つの機能ユニットを4ビットのビット・ベクタで表わし、pipeフィールド25に、図5に示したようなvalid フィールド23の役割を果たさせている。このため、実施の形態4によるVLIWプロセッサでは、その命令管理回路88が、実施の形態1による命令管理回路15(図5)に比し小さくなる。
【0106】
また、実施の形態4によるVLIWプロセッサでは、4つの機能ユニットを4ビットのビットベクタで表わすことで、pipeフィールド25に、図5に示したようなvalid フィールド23の役割を果たさせている。このため、図5で示したようなvalid フィールド23からの信号valid がなくなる。これによって、制御回路S1−1〜S4−2が、実施の形態1によるVLIWプロセッサの制御回路S1−1〜S4−2(図8)に比し、簡単になる。その結果、実施の形態4によるVLIWプロセッサでは、実施の形態1によるVLIWプロセッサに比し、バイパス制御をさらに高速に行なうことができる。
【0107】
また、実施の形態4によるVLIWプロセッサは、実施の形態3によるVLIWプロセッサの特徴部分と組合せることができる。すなわち、実施の形態4によるVLIWプロセッサのstage フィールド27において、4つのステージを4ビットのビット・ベクタで表わす。こうすることで、制御回路S1−1〜S4−2が図16の制御回路に比し簡単になる。
【0108】
図17は、実施の形態4によるVLIWプロセッサと、実施の形態3によるVLIWプロセッサの特徴部分を組合せた場合の制御回路S1−1(図15)の詳細を示す回路図である。なお、図16と同様の部分については同一の参照符号を付しその説明は適宜省略する。図17を参照して、制御回路S1−1は、AND回路107〜121およびNOR回路53を含む。AND回路107,111,115,119には、信号stage [1]が入力される。AND回路109,113,117,121には、信号stage [2]が入力される。信号stage [1]は、図11の信号stage [1]と同様のものであり、信号stage [2]は、図11の信号stage [2]と同様のものである。
【0109】
図17の制御回路S1−1の動作について具体例を挙げて説明する。ラッチ回路L1でこれから必要とされるデータのソース・アドレスと、結果バッファe3に保持されている命令の処理結果(データ)のデスティネーション・アドレスとが一致する場合を考える。この場合には、信号pipe[0]、信号pipe[1]および信号pipe[3]が“0”であり、信号pipe[2]が“1”である。さらに、信号stage [1]が“1”であり、信号stage [2]が“0”である。このため、AND回路115の出力信号のみが“1”となる。すなわち制御信号e3−1−1のみが“1”となる。これによって、トライ・ステート・バッファT33がオンし、結果バッファe3に保持されている命令の処理結果(データ)が、ラッチ回路L1に転送される。
【0110】
また、ラッチ回路L1にこれから必要とされるデータのソース・アドレスが、8個の結果バッファe1〜e4,m1〜m4に保持されている8個の命令の処理結果(データ)のデスティネーション・アドレスのいずれとも一致しない場合は、すなわち、ラッチ回路L1にこれから必要とされるデータのソース・アドレスに対応するエントリのpipeフィールド25およびstage フィールド27のデータが無効である場合は、信号pipe[0]〜pipe[3]がすべて“0”となる。このため、AND回路107〜121の出力信号はすべて“0”となる。これによって、NOR回路53から出力される制御信号r−1−1は“1”となる。これによって、トライ・ステート・バッファT65がオンになり、レジスタ・ファイル5から直接ラッチ回路L1にデータが読出されることになる。なお、制御回路S1−2〜S4−2の回路構成も、図17に示した制御回路S1−1の回路構成と同じである。
【0111】
以上のように、実施の形態4によるVLIWプロセッサと、実施の形態3によるVLIWプロセッサの特徴部分を組合せた場合には、制御回路S1−1〜S4−2(図17)が、実施の形態4によるVLIWプロセッサの制御回路S1−1〜S4−2(図16)より簡単になる。その結果、実施の形態4によるVLIWプロセッサと実施の形態3によるVLIWプロセッサの特徴部分を組合せた場合には、実施の形態4によるVLIWプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【0112】
(実施の形態5)
実施の形態5による並列プロセッサとしてのVLIWプロセッサの全体構成は、図1に示した実施の形態1によるVLIWプロセッサの全体構成と同様である。
【0113】
図18は、実施の形態5によるVLIWプロセッサの一部を示す概略ブロック図である。なお、図3と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0114】
図18を参照して、結果バッファe1〜e4,m1〜m4に対応して、アドレス保持回路ee1〜ee4,mm1〜mm4が設けられる。アドレス保持回路ee1は、結果バッファe1に保持されている命令の処理結果のデスティネーション・アドレスe1−aを保持している。アドレス保持回路ee2は、結果バッファe2に保持されている命令の処理結果のデスティネーション・アドレスe2−aを保持している。アドレス保持回路ee3は、結果バッファe3に保持されている命令の処理結果のデスティネーション・アドレスe3−aを保持している。アドレス保持回路ee4は、結果バッファe4に保持されている命令の処理結果のデスティネーション・アドレスe4−aを保持している。
【0115】
アドレス保持回路mm1は、結果バッファm1に保持されている命令の処理結果のデスティネーション・アドレスm1−aを保持している。アドレス保持回路mm2は、結果バッファm2に保持されている命令の処理結果のデスティネーション・アドレスm2−aを保持している。アドレス保持回路mm3は、結果バッファm3に保持されている命令の処理結果のデスティネーション・アドレスm3−aを保持している。アドレス保持回路mm4は、結果バッファm4に保持されている命令の処理結果のデスティネーション・アドレスm4−aを保持している。
【0116】
ここで、アドレス保持回路ee1〜ee4,mm1〜mm4は、図3のVLIWプロセッサにおいても、図示していないが、設けられているものである。したがって、アドレス保持回路ee1〜ee4,mm1〜mm4は、実施の形態4によるVLIWプロセッサのために特別に設けたわけではない。後で詳しく説明するが、バイパス制御回路123には、アドレス保持回路ee1〜ee4,mm1〜mm4に保持されているデスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aが入力される。
【0117】
図19は、図18のバイパス制御回路123を示す概略ブロック図である。なお、図5と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0118】
図19を参照して、バイパス制御回路は、フィールド制御回路21−1〜21−4、命令管理回路125、アドレスデコーダ17および制御信号発生回路127を含む。命令管理回路125は、有効/無効フィールド(以下、「valid フィールド」という)23および機能ユニットフィールド(以下、「pipeフィールド」という)25を含む。命令管理回路125は、図6に示した命令管理回路と同様に、複数のエントリf1〜fnに分かれている。図19のバイパス制御回路が、図5のバイパス制御回路と異なるのは、図19のバイパス制御回路には、図5のようなstage フィールド27が存在しないことである。したがって、図19の命令管理回路125には、図9に示すようなstage フィールド管理回路54も設けられていない。制御信号発生回路127には、アドレス保持回路ee1〜ee4,mm1〜mm4に保持されているデスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aおよびラッチ回路L1〜L8がこれから必要とするデータのソース・アドレスsrc1−1〜src4−2が入力される。
【0119】
図20は、図19の制御信号発生回路127を示す概略ブロック図である。なお、図7と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0120】
図20を参照して、制御信号発生回路127は、制御回路S1−1〜S4−2を含む。制御回路S1−1〜S4−2には、アドレス保持回路ee1〜ee4,mm1〜mm4に保持されているデスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aが入力される。そして、制御回路S1−1には、対応するソース・アドレスsrc1−1およびソース・アドレスsrc1−1に対応するエントリからの信号valid 、信号pipeが入力される。制御回路S1−2〜S4−2についても同様に、対応するソース・アドレスsrc1−2〜src4−2およびソース・アドレスsrc1−2〜src4−2に対応するエントリからの信号valid ,信号pipeが入力される。
【0121】
図21は、図20の制御回路S1−1の詳細を示す回路図である。なお、図8と同様の部分については同一の参照符号を付しその説明を適宜省略する。また、図21の信号pipe[0]および信号pipe[1]は、図8の信号pipe[0]および信号pipe[1]と同様のものである。
【0122】
図21を参照して、制御回路S1−1は、判断回路128、AND回路137〜155およびNOR回路53含む。判断回路128は、選択回路129,131および比較器133,135を含む。判断回路128は、ラッチ回路L1がこれから必要とするデータのソース・アドレスsrc1−1が、4つの機能ユニット7−1〜7−4の8つの結果バッファe1〜e4,m1〜m4のいずれに存在する命令の処理結果のデスティネーション・アドレスm1−a〜m4−a,e1−a〜e4−aと一致するか否かを判断するものである。詳しく説明する。
【0123】
選択回路129は、デスティネーション・アドレスm1−a〜m4−aを受ける。そして、選択回路129は、信号pipeが“0”のときはデスティネーション・アドレスm1−aを選択し、信号pipeが“1”のときはデスティネーション・アドレスm2−aを選択し、信号pipeが“2”のときはデスティネーション・アドレスm3−aを選択し、信号pipeが“3”のときはデスティネーション・アドレスm4−aを選択する。選択回路131は、信号pipeが“0”のときはデスティネーション・アドレスe1−aを選択し、信号pipeが“1”のときはデスティネーション・アドレスe2−aを選択し、信号pipeが“2”のときはデスティネーション・アドレスe3−aを選択し、信号pipeが“3”のときはデスティネーション・アドレスe4−aを選択する。
【0124】
比較器133は、選択回路129で選択されたデスティネーション・アドレスと、ソース・アドレスsrc1−1とを比較する。そして、比較器133は、選択回路129で選択されたデスティネーション・アドレスと、ソース・アドレスsrc1−1とが一致する場合には、AND回路137に出力信号“1”を出力し、一致しない場合には出力信号“0”を出力する。比較器135は、選択回路131で選択されたデスティネーション・アドレスとソース・アドレスsrc1−1とを比較する。そして、比較器135は、選択回路131で選択されたデスティネーション・アドレスとソース・アドレスsrc1−1とが一致する場合には、出力信号“1”を出力し、一致しない場合には出力信号“0”を出力する。
【0125】
AND回路137,139は、信号valid が入力されているため、ソース・アドレスsrc1−1に対応するエントリのpipeフィールド25のデータが有効か否かを調べるためのものである。信号valid が“1”の場合、すなわち、pipeフィールドのデータが有効である場合を考えると、比較器133の出力信号のみが“1”の場合は、AND回路137の出力信号が“1”となり、比較器135の出力信号のみが“1”のときは、AND回路139の出力信号のみが“1”となる。信号valid が“1”の場合に、比較器133,135の両方から出力信号“1”が出力された場合を考える。このときには、比較器135の出力信号は、AND回路137に反転して入力されているため、AND回路137の出力信号は“0”となり、AND回路139の出力信号のみが“1”となる。すなわち、命令実行ステージEXの結果バッファe1〜e4に保持されている命令の処理結果(データ)を、メモリ・アクセスステージMEMの結果バッファm1〜m4に保持されている命令の処理結果よりも、優先的にバイパスするためである。
【0126】
AND回路141〜147には、AND回路137からの出力信号が入力される。AND回路149〜155には、AND回路139からの出力信号が入力される。AND回路141〜155には、信号pipe[0]および信号pipe[1]が入力される。NOR回路53には、AND回路141〜155からの出力信号が入力される。AND回路141〜155は、制御信号m1−1−1〜m4−1−1,e1−1−1〜e4−1−1を出力し、NOR回路53は制御信号r−1−1を出力する。
【0127】
図21の制御回路S1−1の動作について図18も参照しながら具体例を挙げて説明する。ラッチ回路L1がこれから必要とするデータのソース・アドレスsrc1−1が、結果バッファe3に保持されている命令の処理結果(データ)のデスティネーション・アドレスe3−aと一致する場合を考える。なお、このとき信号valid は“1”である。選択回路129は、デスティネーション・アドレスm3−aを選択し、選択回路131は、デスティネーション・アドレスe3−aを選択する。比較器133は、デスティネーション・アドレスm3−aとソース・アドレスsrc1−1とを比較し、“0”を出力する。比較器135は、デスティネーション・アドレスe3−aとソース・アドレスsrc1−1を比較し、出力信号“1”を出力する。このため、AND回路137の出力信号は“0”になり、AND回路139の出力信号は“1”となる。信号pipe[0]は“1”であり、信号pipe[1]は“0”である。このため、AND回路153の出力信号のみが“1”となる。すなわち、制御信号e3−1−1のみが“1”となる。これによって、トライ・ステート・バッファT33がオンになり、結果バッファe3に保持されている命令の処理結果(データ)はラッチ回路L1に転送される。
【0128】
ラッチ回路L1にこれから必要とされるデータのソース・アドレスsrc1−1が4つの機能ユニット7−1〜7−4の8つの結果バッファe1〜e4,m1〜m4のいずれに存在する命令の処理結果のデスティネーション・アドレスとも一致しない場合、すなわち、ソース・アドレスsrc1−1に対応するエントリのpipeフィールド25のデータが無効の場合には、信号valid が“0”であるため、AND回路137,139の出力信号は“0”となり、AND回路141〜155の出力信号も“0”となる。このため、NOR回路53の信号が“1”となる。すなわち、制御信号r−1−1のみが1となる。これによって、トライ・ステータス・バッファT65がオンになり、レジスタ・ファイル5から直接ラッチ回路L1にデータが読出される。なお、制御回路S1−2〜S4−2についても、図21に示す制御回路S1−1と同じ回路構成である。
【0129】
以上のように、実施の形態5によるVLIWプロセッサでは、バイパス制御回路によって、命令の処理結果がいずれの機能ユニットに存在するかを管理して、バイパス制御を行なっている。このため、1つのソース・アドレスに対して、2個の比較器133,135を設ければ足りる。また、1つのソース・アドレスに対して2個のデータの優先順位付選択を行なえば足りる。これに対し、従来のVLIWプロセッサでは、1つのソース・アドレスに対して8個の比較器が必要となる。また、従来のVLIWプロセッサでは、8個のデータの優先順位付選択が必要となる。このように、実施の形態5によるVLIWプロセッサでは、従来のVLIWプロセッサに比し、回路が簡単になり、優先順位付選択も簡単になる。このため、従来のVLIWプロセッサに比し、高速にバイパス制御を行なうことができる。
【0130】
実施の形態5によるVLIWプロセッサと、実施の形態2によるVLIWプロセッサの特徴部分とを組合せることができる。すなわち、図19のpipeフィールド25において、4つの機能ユニットを2ビットで表わすのではなく、4つの機能ユニットを4ビットのビット・ベクタで表わすものである。これによって、pipeフィールド25から出力される信号pipeも4ビットとなる。したがって、図20に示す制御回路S1−1〜S4−2の具体的な回路構成が、図21の回路構成と異なってくる。
【0131】
図22は、実施の形態5によるVLIWプロセッサと、実施の形態2によるVLIWプロセッサの特徴部分とを組合せた場合の制御回路S1−1(図20)の詳細を示す回路図である。なお、図21と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0132】
図22を参照して、制御回路は、判断回路128、AND回路137,139,157〜171およびNOR回路53を含む。
【0133】
図22を参照して、AND回路157〜163には、AND回路137からの出力信号が入力される。AND回路165〜171には、AND回路139からの出力信号が入力される。AND回路157,165には、信号pipe[0]が入力される。AND回路159,167には、信号pipe[1]が入力される。AND回路161,169には、信号pipe[2]が入力される。AND回路163,171には、信号pipe[3]が入力される。なお、信号pipe[0]〜信号pipe[3]は、図10の信号pipe[0]〜信号pipe[3](実施の形態2)と同様のものである。AND回路157〜171の出力信号は、NOR回路153に入力される。AND回路157〜171は、制御信号m1−1−1〜m4−1−1,e1−1−1〜e3−1−1を出力し、NOR回路53は、制御信号r−1−1を出力する。
【0134】
図22の制御回路S1−1の動作について、図18も参照しながら具体例を挙げて説明する。ラッチ回路L1がこれから必要とするデータのソース・アドレスsrc−1−1が、結果バッファe3に保持されている命令の処理結果(データ)のデスティネーション・アドレスe3−aと一致する場合を考える。このとき信号valid は“1”である。判断回路128の処理については、図21において具体例を挙げた場合と同様であるため説明を省略する。AND回路137の出力は“0”となり、AND回路139の出力信号のみが“1”となる。信号pipe[0]、信号pipe[1]および信号pipe[3]は“0”で、信号pipe[2]だけが“1”である。なぜならば、結果バッファe3は、機能ユニット7−3に存在するからである。したがって、AND回路169の出力信号のみが1となる。すなわち制御信号e3−1−1のみが“1”となる。これによってトライ・ステート・バッファT33がオンし、結果バッファe3に保持されている命令の処理結果(データ)が、ラッチ回路L1へ転送される。
【0135】
なお、ラッチ回路L1にこれから必要とされるデータのソース・アドレスsrc1−1が4つの機能ユニット7−1〜7−4の8つの結果バッファe1−e4,m1−m4に保持されているいずれの命令の処理結果のデスティネーション・アドレスとも一致しない場合(信号valid が“0”の場合)の、図22の制御回路S1−1の動作については、図21の制御回路S1−1の場合と同様である。また、他の制御回路S1−2〜S4−2の回路構成は、図22の制御回路S1−1と同じものである。
【0136】
以上のように、実施の形態5によるVLIWプロセッサと実施の形態2によるVLIWプロセッサの特徴とを組合せた場合には、制御回路S1−1〜S4−2が、実施の形態4によるVLIWプロセッサの制御回路S1−1〜S4−2よりも簡単になる。したがって、実施の形態5によるVLIWプロセッサと実施の形態2によるVLIWプロセッサの特徴部分を組合せた場合には、実施の形態4によるVLIWプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【0137】
(実施の形態6)
実施の形態6による並列処理プロセッサとしてのVLIWプロセッサの構成は、図1および図18のVLIWプロセッサの構成と同様である。実施の形態6によるVLIWプロセッサのデコードステージIDでデコードされた基準命令の形式は、図2に示したものと同様である。実施の形態6によるVLIWプロセッサにおいて、トライ・ステート・バッファT1〜T72と、トライ・ステート・バッファT1〜T72を制御する制御信号e1−1−1〜r−4−2との対応関係は、図4に示したものと同様である。
【0138】
図23は、実施の形態6によるVLIWプロセッサのバイパス制御回路123(図18)を示す概略ブロック図である。なお、図5と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0139】
図23を参照して、バイパス制御回路は、フィールド制御回路21−1〜21−4、命令管理回路173、アドレスデコーダ17および制御信号発生回路175を含む。命令管理回路173は、valid フィールド23およびstage フィールド27を含む。
【0140】
命令管理回路173は、図6の命令管理回路と同様に、複数のエントリf1〜fnに分かれている。図23の命令管理回路173が、図5の命令管理回路15と異なるのは、図23の命令管理回路173には、図5のpipeフィールド25がないことである。したがって、フィールド制御回路21−1〜21−4から与えられる信号pipe setもない。制御信号発生回路175は、ラッチ回路L1〜L8にこれから入力されようとする8つのデータのソース・アドレスsrc1−1〜src4−2を受ける。また、制御信号発生回路175は、アドレス保持回路ee1〜ee4,mm1〜mm4に保持されているデスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aを受ける。
【0141】
図24は、図23の制御信号発生回路175を示す概略ブロック図である。なお、図7と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【0142】
図24を参照して、制御信号発生回路175は、制御回路S1−1〜S4−2を含む。制御回路S1−1〜S4−2は、デスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aを受ける。制御回路S1−1は、対応するソース・アドレスsrc1−1およびソース・アドレスsrc1−1に対応するエントリからの信号valid 、信号pipeを受ける。同様に、制御回路S1−2〜S4−2も、対応するソース・アドレスsrc1−2〜src4−2およびソース・アドレスsrc1−2〜src4−2に対応するエントリからの信号valid 、信号pipeを受ける。
【0143】
図25は、図24の制御回路S1−1の詳細を示す回路図である。なお、図8と同様の部分については同一の参照符号を付しその説明を適宜省略する。図25を参照して、制御回路S1−1は、判断回路177、AND回路195〜209およびNOR回路53を含む。判断回路177は、選択回路179〜185および比較器187〜193を含む。判断回路177は、ラッチ回路L1にこれから必要とされるデータのソース・アドレスsrc1−1が、4つの機能ユニット7−1〜7−4の8つの結果バッファe1〜e4,m1〜m4のいずれに存在する命令の処理結果(データ)のデスティネーション・アドレスと一致するか否かを判断するためのものである。以下詳しく説明する。
【0144】
比較回路179には、デスティネーション・アドレスe1−a,m1−aが入力され、比較回路181にはデスティネーション・アドレスe2−a,m2−aが入力され、比較回路183には、デスティネーション・アドレスe3−a,m3−aが入力され、比較回路185にはデスティネーション・アドレスe4−a,m4−aが入力される。また、比較回路179〜185には、信号stage が入力される。信号stage が“1”の場合は、すなわち、信号stage が実行ステージEXを表わしている場合は、比較回路179はデスティネーション・アドレスe1−aを、比較回路181はデスティネーション・アドレスe2−aを、比較回路183はデスティネーション・アドレスe3−aを、比較回路185はデスティネーション・アドレスe4−aを選択する。信号stage が“2”の場合は、すなわち信号stage がメモリ・アクセスステージMEMを表わしている場合は、比較回路179はデスティネーション・アドレスm1−aを、比較回路181はデスティネーション・アドレスm2−aを、比較回路183はデスティネーション・アドレスm3−aを、比較回路185はデスティネーション・アドレスm4−aを選択する。信号stage が“1”および“2”以外の場合は、比較器179〜185は、“0”を出力する。
【0145】
比較器187は、選択回路179が選択したデスティネーション・アドレスとソース・アドレスsrc1−1を比較し、一致した場合には“1”を出力し、一致しない場合には“0”を出力する。比較器189は、選択回路181で選択されたデスティネーション・アドレスとソース・アドレスsrc1−1を比較し、一致した場合は“1”を出力し、一致しない場合は“0”を出力する。比較器191は、選択回路183で選択されたデスティネーション・アドレスとソース・アドレスsrc1−1とを比較し、一致した場合には“1”を出力し、一致しない場合は“0”を出力する。比較器193は、選択回路185が選択したデスティネーション・アドレスとソース・アドレスsrc1−1とを比較し、一致した場合には“1”を出力し、一致しない場合には“0”を出力する。
【0146】
このように、判断回路177は、ラッチ回路L1にこれから必要とされるデータのソース・アドレスsrc1−1が、4つの機能ユニット7−1〜7−4の8つの結果バッファe1−e4,m1−m4のいずれに存在する命令の処理結果(データ)のデスティネーション・アドレスと一致するか否かを判断することによって、ラッチ回路L1がこれから必要とするデータのソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果がどの機能ユニットに存在するかを識別している。
【0147】
すなわち、比較器187の出力信号が“1”のときには、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット7−1にあることを示し、比較器189の出力信号が“1”のときは、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット7−2にあることを示し、比較器191の出力信号が“1”のときは、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット7−3にあることを示し、比較器193の出力信号が“1”のときは、ソース・アドレスsrc1−1と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット7−4にあることを示す。
【0148】
信号stage [0]が“1”のときには、信号stage は“2”または“3”である。そして、信号stage が“2”のときは、実行ステージEXを表わす。このため、信号stage [0]は、実行ステージEXの結果バッファe1〜e4に対応するトライ・ステート・バッファT1,T17,T33,T49を制御するための制御信号m1−1−1,m2−1−1,m3−1−1,m4−1−1を発生するAND回路197,201,205,209に入力される。信号stage [1]が“1”のときは信号stage は“1”または“3”である。そして、信号stage が“1”のときは、メモリ・アクセスステージMEMを表わす。このため、信号stage [1]は、メモリ・アクセスステージMEMの結果バッファm1〜m4に対応するトライ・ステート・バッファT9,T25,T41,T57を制御する制御信号e1−1−1,e2−1−1,e3−1−1,e4−1−1を発生するAND回路195,199,203,207に入力される。
【0149】
このように、AND回路195〜209のすべてに、信号stage [0]および信号stage [1]を入力する必要はない。ここで、信号stage [0]が“1”のときや、信号stage [1]が“1”のときは、信号stage が“3”のときもあるが、このことは問題にならない。なぜならば、すべてのAND回路195〜209に信号valid が入力されているからである。すなわち、信号stage が“3”のときは、命令の処理結果が書戻しステージWBに存在することを示しており、この場合には、レジスタ・ファイル5から直接データを読出せばよいので、信号valid が“0”にされるからである。
【0150】
制御回路S1−1では、機能ユニット7−1の結果バッファe1,m1に保持されている命令の処理結果よりも、機能ユニット7−2の結果バッファe2,m2に保持されている命令の処理結果を、機能ユニット7−2の結果バッファe2,m2に保持されている命令の処理結果よりも、機能ユニット7−3の結果バッファe3,m3に保持されている命令の処理結果を、機能ユニット7−3の結果バッファe3,m3に保持されている命令の処理結果よりも、機能ユニット7−4の結果バッファe4,m4に保持されている命令の処理結果を、ラッチ回路L1にバイパスするようにしている。このため、AND回路195,197には、比較器187,189,191,193の出力信号が入力され、AND回路199,201には、比較器189,191,193の出力信号が入力され、AND回路203,205には、比較器191,193から出力信号が入力され、AND回路207,209には比較器193からの出力信号が入力される。
【0151】
制御回路S1−1の動作について、図18も参照しながら、具体例を挙げて説明する。ラッチ回路L1にこれから必要とされるデータのソース・アドレスsrc1−1が、アドレス保持回路e1に保持されているデスティネーション・アドレスe1−aとのみ一致する場合を考える。このとき、信号stage は、“1”である。このため、選択回路179からは、デスティネーション・アドレスe1−aが出力され、選択回路181からはデスティネーション・アドレスe2−aが出力され、選択回路183からはデスティネーション・アドレスe3−aが出力され、選択回路185からはデスティネーション・アドレスm4−aが出力されることになる。そして、比較器187の出力のみが“1”になり、比較器189〜193の出力は“0”となる。そして、信号stage [0]は、“0”であり、信号stage [1]は“1”である。また、信号valid を“1”とする。このような場合には、AND回路195の出力信号のみが“1”となる。すなわち制御信号e1−1−1のみが“1”となる。これによって、トライ・ステート・バッファT1がオンになり、結果バッファe1に保持されている命令の処理結果がラッチ回路L1に転送されることになる。
【0152】
ラッチ回路L1にこれから必要とされるデータのソース・アドレスrsc1−1が、アドレス保持回路ee1〜ee4,mm1〜mm4に保持されているデスティネーション・アドレスe1−a〜e4−a,m1−a〜m4−aのいずれとも一致しない場合は、すなわち、信号valid が“0”の場合には、AND回路195〜209の出力信号はすべて“0”となる。このため、NOR回路53から出力される制御信号r−1−1のみが“1”となる。これにより、トライ・ステート・バッファT65がオンし、レジスタ・ファイル5から直接ラッチ回路L1にデータが読出される。なお、制御回路S1−2〜S4−2についても、図25の制御回路S1−1と同じ回路構成である。
【0153】
以上のように、実施の形態6によるVLIWプロセッサでは、命令管理回路173のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、どのステージに存在するかを管理している。このため、1つのソース・アドレスに対して、4つの比較器187〜193を設ければ足りる。これに対して、従来のVLIWプロセッサでは、1つのソース・アドレスに対して8つの比較器が必要になる。さらに、実施の形態6によるVLIWプロセッサでは、1つのソース・アドレスに対して、4つの比較器187〜193を設ければ足りることから、4つの比較器187〜193から出力される4つの出力信号に対して優先順位付選択をすれば足りる。これに対して従来のVLIWプロセッサでは、1つのソース・アドレスにつき8個のデータの優先順位付選択をする必要がある。以上のように、実施の形態6によるVLIWプロセッサでは、回路が簡単になるとともに優先順位付選択をする対象も少ないため、高速にバイパス制御を行なうことができる。
【0154】
実施の形態6によるVLIWプロセッサと、実施の形態3によるVLIWプロセッサの特徴部分とを組合せることもできる。すなわち、stage フィールド27において、4つのステージを4ビットのビット・ベクタで表わす。こうすることで、stage フィールド27を管理するために、stage フィールド管理回路54(図9)ではなく、ビット・シフタ89(図12)を設けることができる。このため、実施の形態6によるVLIWプロセッサに比し、さらに回路を簡単化でき、さらに高速にバイパス制御を行なうことができる。
【0155】
【発明の効果】
この発明の第1の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットのいずれの処理ステージに存在するかを管理している。また、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、アドレス比較のための比較器が不要になるとともに、優先順位付選択も不要になる。その結果、この発明の第1の発明に係る並列処理プロセッサでは、回路が簡単になり、高速にバイパス制御を行なうことができる。
【0156】
この発明の第2の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットに存在するかを管理している。あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、アドレス比較のための比較器が従来の並列処理プロセッサに比し、少なくて済む。これに伴い、従来の並列処理プロセッサに比し、優先順位付選択のための比較も少なくて済む。その結果、この発明の第2の発明に係る並列処理プロセッサでは、高速にバイパス制御を行なうことができる。
【0157】
この発明の第3の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの処理ステージに存在するかを管理する。あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、従来の並列処理プロセッサに比し、アドレス比較のための比較器が少なくて済む。これに伴い、優先順位付選択のための比較も、従来の並列処理プロセッサに比し少なくなる。その結果、この発明の第3の発明に係る並列処理プロセッサでは、高速にバイパス制御を行なうことができる。
【図面の簡単な説明】
【図1】 本発明の実施の形態1によるVLIWプロセッサを示す概略ブロック図である。
【図2】 図1のVLIWプロセッサの命令デコードステージIDでデコードされた基準命令の形式を示す図である。
【図3】 図1のVLIWプロセッサの一部を示す概略ブロック図である。
【図4】 トライ・ステート・バッファ(図3)と、トライ・ステート・バッファを制御する制御信号との対応関係を示す図である。
【図5】 図3のバイパス制御回路を示す概略ブロック図である。
【図6】 図5の命令管理回路を示す概略ブロック図である。
【図7】 図5の制御信号発生回路を示す概略ブロック図である。
【図8】 図7の制御回路S1−1の詳細を示す回路図である。
【図9】 stage フィールド(図5)の一部およびstage フィールドの一部を管理するstage フィールド管理回路を示す概略ブロック図である。
【図10】 本発明の実施の形態2によるVLIWプロセッサの制御回路S1−1(図7)の詳細を示す回路図である。
【図11】 本発明の実施の形態3によるVLIWプロセッサの制御回路S1−1(図7)の詳細を示す回路図である。
【図12】 本発明の実施の形態3によるVLIWプロセッサにおいて、stage フィールド(図5)の一部およびstage フィールドの一部を管理するビット・シフタを示す概略ブロック図である。
【図13】 本発明の実施の形態2によるVLIWプロセッサの特徴部分と実施の形態3によるVLIWプロセッサの特徴部分とを組合せた場合において、制御回路S1−1(図7)の詳細を示す回路図である。
【図14】 本発明の実施の形態4によるVLIWプロセッサのバイパス制御回路(図3)を示す概略ブロック図である。
【図15】 図14の制御信号発生回路を示す概略ブロック図である。
【図16】 図15の制御回路S1−1の詳細を示す回路図である。
【図17】 本発明の実施の形態3によるVLIWプロセッサの特徴部分と、本発明の実施の形態4によるVLIWプロセッサとを組合せた場合において、制御回路S1−1(図15)の詳細を示す回路図である。
【図18】 本発明の実施の形態5によるVLIWプロセッサの一部を示す概略ブロック図である。
【図19】 図18のバイパス制御回路を示す概略ブロック図である。
【図20】 図19の制御信号発生回路を示す概略ブロック図である。
【図21】 図20の制御回路S1−1の詳細を示す回路図である。
【図22】 本発明の実施の形態2によるVLIWプロセッサの特徴部分と、本発明の実施の形態5によるVLIWプロセッサとを組合せた場合において、制御回路S1−1(図20)の詳細を示す回路図である。
【図23】 本発明の実施の形態6によるVLIWプロセッサのバイパス制御回路(図18)を示す概略ブロック図である。
【図24】 図23の制御信号発生回路を示す概略ブロック図である。
【図25】 図24の制御回路S1−1の詳細を示す回路図である。
【図26】 従来のスカラ・プロセッサにおいて、データ・ハザードを説明するための図である。
【図27】 従来のスカラ・プロセッサにおいて、バイパス機構を説明するための図である。
【図28】 バイパス機構を有する従来のスカラ・プロセッサを示す概略ブロック図である。
【符号の説明】
1 命令キャッシュ、3 デコーダ、5 レジスタ・ファイル、7−1〜7−4 機能ユニット、9 データ・キャッシュ、11 バス、13,123 バイパス制御回路、15,88,125,173 命令管理回路、17 アドレスデコーダ、19,90,127,175 制御信号発生回路、21−1〜21−4フィールド制御回路、23 valid フィールド、25 pipeフィールド、27 stage フィールド、29〜51,63〜85,91〜121,137〜171,195〜209 AND回路、53 NOR回路、54 stage フィールド管理回路、55,87 stage フィールドの一部、57 加算回路、59 データ比較器、61 参照回路、89 ビット・シフタ、128,177 判断回路、129,131,179〜185 選択回路、133,135,187〜193比較器、211,213 マルチプレクサ、215 ALU、217,219結果バッファ、1−1〜4−2 バス、a1〜a4 ALU、L1〜L8 ラッチ回路、e1〜e4,m1〜m4 結果バッファ、op1〜op4 オペコード、src1−1〜src4−2 ソース・アドレス、e1−1−1〜r−4−2 制御信号、des1〜des4 デスティネーション・アドレス、IF 命令フェッチステージ、ID 命令デコードステージ、EX 実行ステージ、MEM メモリ・アクセスステージ、WB 書戻しステージ、pipe, valid, stage, address, pipe set, valid set, stage reset, valid reset, pipe[0],pipe[1],pipe[2],pipe[3],stage [0],stage [1],stage [2],stage [3] 信号、S1−1〜S4−2 制御回路、ee1〜ee4,mm1〜1mm4 アドレス保持回路。

Claims (11)

  1. 命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、1つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
    各々が、対応する前記命令を処理する複数の機能ユニットを備え、
    前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
    前記並列処理プロセッサは、
    前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
    前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記機能ユニットのいずれの前記処理ステージに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
    前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
  2. 前記バイパス制御手段は、
    管理する前記命令が、いずれの前記機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する前記命令が、いずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、前記機能ユニットフィールドおよび前記処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる命令管理手段を含み、
    前記命令管理手段は、前記複数のエントリに分かれ、
    前記バイパス制御手段は、新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効/無効フィールドをセットし、その命令が投入される前記機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドをセットし、
    前記バイパス制御手段は、新たに投入される前記命令が、前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
    前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が、前記各処理ステージへ移行するごとに新しくセットする、請求項1に記載の並列処理プロセッサ。
  3. 前記バイパス制御手段は、
    管理する前記命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する前記命令がいずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドとからなる命令管理手段を含み、
    前記命令管理手段は、前記複数のエントリに分かれ、
    前記機能ユニットフィールドにおいては、前記複数の機能ユニットと同数のビット数を有するビット・ベクタによって、前記命令がいずれの機能ユニットに存在するかを示し、
    前記バイパス制御手段は、前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つ前記デスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドにおいて、その命令が投入される前記機能ユニットに対応する、前記ビット・ベクタのビットをセットし、新たに投入される前記命令が前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
    前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が、前記各処理ステージへ移行するごとに新しくセットし、前記エントリの前記機能ユニットフィールドにおいて、前記ビット・ベクタのいずれか1つのビットがセットされているときは、そのエントリの前記機能ユニットフィールドおよび前記処理ステージフィールドのデータが有効とし、前記ビット・ベクタのいずれのビットもセットされていないときは、そのエントリの前記機能ユニットフィールドおよび前記処理ステージフィールドは無効とする、請求項1に記載の並列処理プロセッサ。
  4. 命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、1つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
    各々が、対応する前記命令を処理する複数の機能ユニットを備え、
    前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
    前記並列処理プロセッサは、
    前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
    前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記機能ユニットに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
    前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
  5. 前記バイパス制御手段は、
    管理する前記命令が、いずれの前記機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、前記機能ユニットフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる命令管理手段を含み、
    前記命令管理手段は、前記複数のエントリに分かれ、
    前記バイパス制御手段は、前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効/無効フィールドをセットし、その命令が投入される前記機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドをセットし、
    前記バイパス制御手段は、
    1つの前記基準命令に含まれる前記複数の命令の複数の前記ソース・アドレスに対応して設けられ、各々が、新たに投入される前記命令の対応するソース・アドレスが、前記複数の機能ユニットの前記複数の処理ステージのいずれに存在する前記命令のデスティネーション・アドレスと一致するか否かを判断するための複数の判断手段をさらに含み、
    前記判断手段は、
    前記各機能ユニットの前記複数の処理ステージに対応して設けられる複数の選択手段を含み、
    前記選択手段には、前記複数の機能ユニットの、前記選択手段に対応する複数の前記処理ステージに存在する複数の前記命令の複数の前記デスティネーション・アドレスと、新たに投入される前記命令の前記ソース・アドレスに対応する前記エントリの前記機能ユニットフィールドのデータとが入力され、
    前記選択手段は、入力された前記機能ユニットフィールドのデータが示す前記機能ユニットに対応する前記処理ステージに存在する命令のデスティネーション・アドレスを出力し、
    前記判断手段は、
    前記複数の選択手段に対応して設けられる複数の比較手段をさらに含み、
    前記比較手段は、対応する前記選択手段から出力された前記デスティネーション・アドレスと、新たに投入される前記命令が持つ前記ソース・アドレスとを比較し、新たに投入される前記命令が持つ前記ソース・アドレスが、対応する前記選択手段から出力された前記デスティネーション・アドレスと一致するか否かを判断する、請求項4に記載の並列処理プロセッサ。
  6. 命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、1つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
    各々が、対応する前記命令を処理する複数の機能ユニットを備え、
    前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
    前記並列処理プロセッサは、
    前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
    前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記処理ステージに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
    前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
  7. 前記バイパス制御手段は、
    管理する前記命令が、いずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、前記処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効/無効フィールドとからなる命令管理手段を含み、
    前記命令管理手段は、前記複数のエントリに分かれ、
    前記バイパス制御手段は、
    前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効/無効フィールドをセットし、
    前記バイパス制御手段は、新たに投入される前記命令が、前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
    前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が前記各処理ステージへ移行するごとに新しくセットし、
    前記バイパス制御手段は、
    1つの前記基準命令に含まれる複数の前記命令の複数の前記ソース・アドレスに対応して設けれ、各々が、新たに投入される前記命令の対応するソース・アドレスが前記複数の機能ユニットの前記複数の処理ステージのいずれに存在する前記命令のデスティネーション・アドレスと一致するか否かを判断するための複数の判断手段をさらに含み、
    前記判断手段は、
    前記複数の機能ユニットに対応して設けられる複数の選択手段を含み、
    前記選択手段には、対応する前記機能ユニットの前記複数の処理ステージに存在する複数の前記命令のデスティネーション・アドレスと、新たに投入される前記命令のソース・アドレスに対応するエントリの前記処理ステージフィールドのデータとが入力され、
    前記選択手段は、入力された前記処理ステージフィールドのデータが示す前記処理ステージに対応する前記処理ステージに存在する前記命令の前記デスティネーション・アドレスを出力し、
    前記判断手段は、
    前記複数の選択手段に対応して設けられる複数の比較手段をさらに含み、
    前記比較手段は、対応する前記選択手段から出力された前記デスティネーション・アドレスと、新たに投入される前記命令が持つ前記ソース・アドレスとを比較し、新たに投入される前記命令が持つソース・アドレスが、対応する前記選択手段から出力された前記デスティネーション・アドレスと一致するか否かを判断する、請求項6に記載の並列処理プロセッサ。
  8. 前記機能ユニットフィールドにおいては、前記複数の機能ユニットと同数のビット数を有するビット・ベクタによって、前記命令がいずれの前記機能ユニットに存在するかを示す、請求項2または5に記載の並列処理プロセッサ。
  9. 前記処理ステージフィールドにおいては、前記各機能ユニットにおける前記複数の処理ステージと同数のビット数を有するビット・ベクタによって、前記命令がいずれの前記処理ステージに存在するかを示し、
    前記命令管理手段は、前記命令が存在する前記処理ステージに対応する、前記ビット・ベクタのビットをセットする、請求項2、3または7のいずれか1項に記載の並列処理プロセッサ。
  10. 前記各機能ユニットの最後の前記処理ステージは、そこに存在する前記処理結果を前記デスティネーション・アドレスに従って、前記レジスタ・ファイルに書込むものであり、前記バイパス手段は適用されず、
    前記命令管理手段は、
    前記複数のエントリに対応して設けられ、各々が、対応する前記エントリの前記処理ステージフィールドを管理するための複数の処理ステージフィールド管理手段を含み、
    前記処理ステージフィールド管理手段は、
    対応する前記エントリの前記処理ステージフィールドの前記データを、前記命令が前記各処理ステージへ移行するごとに、その移行した前記処理ステージに対応したものにセットする更新手段と、
    前記最後の処理ステージに対応する参照データを持つ参照手段と、
    前記処理ステージフィールドのデータと、前記参照手段の前記参照データとを比較し、両者が一致したときに、対応する前記エントリの前記有効/無効フィールドをリセットするデータ比較手段とを含む、請求項2または7に記載の並列処理プロセッサ。
  11. 前記各機能ユニットの最後の前記処理ステージは、そこに存在する前記処理結果を、前記デスティネーション・アドレスに従って書込むものであり、前記バイパス手段は、適用されず、
    前記ビット・ベクタは、前記各機能ユニットにおける前記複数の処理ステージと同数より1つ多いビット数を有し、
    前記ビット・ベクタの1つのビットは、前記命令が前記最初の処理ステージに移行する前の前記ステージに存在することを示すためのものであり、
    前記命令管理手段は、
    前記複数のエントリに対応して設けられ、各々が、対応する前記エントリの前記処理ステージフィールドを管理するための複数の処理ステージフィールド管理手段を含み、
    前記処理ステージフィールド管理手段は、ビット・シフタであり、前記命令が前記ステージまたは前記各処理ステージへ移行するごとに、移行した前記ステージまたは前記各処理ステージに対応する、前記ビット・ベクタのビットをセットする、請求項9に記載の並列処理プロセッサ。
JP11796296A 1996-05-13 1996-05-13 並列処理プロセッサ Expired - Fee Related JP3745450B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP11796296A JP3745450B2 (ja) 1996-05-13 1996-05-13 並列処理プロセッサ
US08/745,134 US5805852A (en) 1996-05-13 1996-11-07 Parallel processor performing bypass control by grasping portions in which instructions exist

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11796296A JP3745450B2 (ja) 1996-05-13 1996-05-13 並列処理プロセッサ

Publications (2)

Publication Number Publication Date
JPH09305402A JPH09305402A (ja) 1997-11-28
JP3745450B2 true JP3745450B2 (ja) 2006-02-15

Family

ID=14724576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11796296A Expired - Fee Related JP3745450B2 (ja) 1996-05-13 1996-05-13 並列処理プロセッサ

Country Status (2)

Country Link
US (1) US5805852A (ja)
JP (1) JP3745450B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3578883B2 (ja) * 1997-01-31 2004-10-20 三菱電機株式会社 データ処理装置
US5996065A (en) * 1997-03-31 1999-11-30 Intel Corporation Apparatus for bypassing intermediate results from a pipelined floating point unit to multiple successive instructions
KR100243100B1 (ko) * 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US5872986A (en) * 1997-09-30 1999-02-16 Intel Corporation Pre-arbitrated bypassing in a speculative execution microprocessor
JP3614646B2 (ja) * 1998-03-12 2005-01-26 富士通株式会社 マイクロプロセッサ、演算処理実行方法及び記憶媒体
EP1050808B1 (en) * 1999-05-03 2008-04-30 STMicroelectronics S.A. Computer instruction scheduling
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
JP3445535B2 (ja) 1999-09-24 2003-09-08 株式会社東芝 バイパス制御回路
US6633971B2 (en) * 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US6601162B1 (en) 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
AUPQ542900A0 (en) * 2000-02-04 2000-02-24 Bisinella, Richard Microprocessor
ATE529802T1 (de) 2000-02-09 2011-11-15 Texas Instruments Inc Datenverarbeitungsvorrichtung
US7007153B1 (en) * 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US7096343B1 (en) * 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
US7093107B2 (en) * 2000-12-29 2006-08-15 Stmicroelectronics, Inc. Bypass circuitry for use in a pipelined processor
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US6889318B1 (en) * 2001-08-07 2005-05-03 Lsi Logic Corporation Instruction fusion for digital signal processor
US6728156B2 (en) * 2002-03-11 2004-04-27 International Business Machines Corporation Memory array system
US7107432B2 (en) * 2002-04-18 2006-09-12 Koninklijke Philips Electronics N.V. VLIW processor with data spilling means
US20040128572A1 (en) * 2002-12-31 2004-07-01 Nadav Bonen Apparatus and method for driving and routing source operands to execution units in layout stacks
US7730284B2 (en) * 2003-03-19 2010-06-01 Koninklijke Philips Electronics N.V. Pipelined instruction processor with data bypassing and disabling circuit
TWI246023B (en) * 2003-11-26 2005-12-21 Admtek Inc Very long instruction word architecture
TWI244299B (en) * 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
JP2009169767A (ja) 2008-01-17 2009-07-30 Toshiba Corp パイプライン型プロセッサ
US8145874B2 (en) * 2008-02-26 2012-03-27 Qualcomm Incorporated System and method of data forwarding within an execution unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313551A (en) * 1988-12-28 1994-05-17 North American Philips Corporation Multiport memory bypass under software control
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism

Also Published As

Publication number Publication date
US5805852A (en) 1998-09-08
JPH09305402A (ja) 1997-11-28

Similar Documents

Publication Publication Date Title
JP3745450B2 (ja) 並列処理プロセッサ
US5546597A (en) Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US6205543B1 (en) Efficient handling of a large register file for context switching
US7836287B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
EP3166014B1 (en) Processors supporting endian agnostic simd instructions and methods
KR100267098B1 (ko) 레지스터 화일 판독을 감소시키는 벡터 프로세서 디자인
JPH09120360A (ja) ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法
US5937178A (en) Register file for registers with multiple addressable sizes using read-modify-write for register file update
CN101689107A (zh) 用于将条件指令扩展为无条件指令与选择指令的方法和系统
JPH09212359A (ja) マイクロプロセッサ及びデータ処理方法
JP2014063385A (ja) 演算処理装置及び演算処理装置の制御方法
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US8909903B1 (en) Providing data to registers between execution stages
JP3155519B2 (ja) スーパスカラ・プロセッサでストア命令を処理する方法及び装置
JP2535252B2 (ja) 並列処理装置
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US6948049B2 (en) Data processing system and control method
US5666507A (en) Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing
JP2001243071A (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
JP2004038753A (ja) プロセッサ及び命令制御方法
JPH08249178A (ja) プロセッサのアネックス内において修飾ビットを形成する方法及び装置
JP3854200B2 (ja) プロセッサ及び命令制御方法
EP1762929B1 (en) Centralized resolution of conditional instructions
JP3461887B2 (ja) 可変長パイプライン制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051117

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees