JPH04273367A - プロセッサに対する命令機構 - Google Patents

プロセッサに対する命令機構

Info

Publication number
JPH04273367A
JPH04273367A JP3268784A JP26878491A JPH04273367A JP H04273367 A JPH04273367 A JP H04273367A JP 3268784 A JP3268784 A JP 3268784A JP 26878491 A JP26878491 A JP 26878491A JP H04273367 A JPH04273367 A JP H04273367A
Authority
JP
Japan
Prior art keywords
instruction
instructions
stage
buffer memory
bpu
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.)
Withdrawn
Application number
JP3268784A
Other languages
English (en)
Inventor
Alfons-Josef Wahr
アルフオンス‐ヨーゼフ ワール
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of JPH04273367A publication Critical patent/JPH04273367A/ja
Withdrawn legal-status Critical Current

Links

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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Multi Processors (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、n個のプロセッサ要素
を有するプロセッサに対する命令機構に関する。
【0002】
【従来の技術】大規模集積は、1つのチップの上に大き
いキャッシュメモリを実現すること可能にする。このよ
うな大きいキャッシュメモリは、単一のプロセッサしか
それにアクセスし得ないならば、その能力を十分に利用
されない。この理由から、このようなキャッシュメモリ
を並列計算機システムに対応付ける可能性がある。その
結果として、キャッシュメモリへの個々のプロセッサの
アクセスを同期化するため、またキャッシュメモリとプ
ロセッサとの間の通信を申し分なく行うため、付加のソ
フトウェアが作成されなければならない。他の可能性は
、プロセッサあたり、たとえばCPUとして実現されて
いてよい複数の並列プロセッサ要素を設けることにある
。このような構成では既存のプログラムが、新たに翻訳
される必要なしに、新たに結ばれる必要なしに、または
その他の前処理を必要とせずに、そのまま使用され得る
。このようなプロセッサの一例は図4に示されている。
【0003】図4によれば、プロセッサPは、中央処理
装置(CPU)として構成されていてよく、またそれに
応じて命令を処理し得るたとえば4つのプロセッサ要素
PE0ないしPE3を有する。プロセッサ要素PEはデ
ータバスDBを介して、キャッシュメモリを含んでいる
キャッシュメモリ装置CAと接続されており、また並列
にキャッシュメモリ装置CAにアクセスし得る。キャッ
シュメモリ装置CAは主メモリMMと通常の仕方で接続
されている。さらに、プロセッサ要素PEが固有のデー
タバスRBを介してレジスタバンクRGと接続されてお
り、また場合によってはマイクロ命令バスMIを介して
制御メモリCSと接続されていることは有利である。こ
のことは、プロセッサ要素PEによる命令処理が制御メ
モリCSのなかに位置するマイクロプログラムの利用を
必要とするときに有意義である。プロセッサ要素PEに
より処理すべき命令はこれらに命令バスIBを介して命
令機構IUから供給される。命令機構IUは命令データ
バスDBIを介してキャッシュメモリ装置CAと、また
レジスタバスRBIを介してレジスタバンクRGと接続
されている。
【0004】複数のプロセッサ要素PEを有するプロセ
ッサは、個々のプロセッサ要素PEが並列に命令を処理
し得るときにのみ最適に動作する。
【0005】
【発明が解決しようとする課題】本発明の課題は、個々
のプロセッサ要素に並列に命令を処理させるための命令
機構を提供することである。
【0006】この課題を解決するため、本発明において
は、命令の並列処理が可能であるように多数の命令が記
憶されている命令バッファメモリと、命令バッファメモ
リのなかにn個よりも少ない命令が存在するときに、処
理すべきプログラムの命令列のなかのすぐ次の命令をメ
モリから命令バッファメモリにロードする命令取出し段
と、命令バッファメモリのなかの命令をプロセッサ要素
に対応付け、またプロセッサ要素への対応付けを示す選
択信号を発生する命令転送ユニットと、命令転送ユニッ
トのなかに含まれている命令をプリデコードするプリデ
コード段と、プリレコードされた命令をプリデコート段
から受け、また命令コードからプロセッサ要素により並
列に処理すべき命令の間のコンフリクトを認識し、また
それに関係してコンフリクト信号を発生するコンフリク
ト検査段と、選択信号およびコンフリクト信号からプロ
セッサ要素に対する制御信号を発生し、プロセッサ要素
に準備された命令の受入れを指令し、またはコンフリク
トの場合にコンフリクトが除去されるまで命令の処理に
対してプロセッサ要素を遮断する制御信号段とを含んで
いる。
【0007】命令機構はn個の並列プロセッサ要素に並
列に機械命令を供給しなければならない。そのために命
令機構は命令アドレスバスによりシステムのキャッシュ
メモリから命令の流れから可能なかぎりn個の命令を同
時に受け取るような多くの語を同時に、すなわち並列に
ロードする。可変の命令長さを有する命令コードではこ
の問題の解決は固定のコード長さを有する命令コードの
場合よりもはるかに困難である。たとえば可変の命令長
さの場合には、命令が2、4または6バイトを含んでい
ることが可能である。その場合、キャッシュメモリから
n個の並列なプロセッサ要素ではnと最大の命令コード
長さとの積に等しい幅であるそれぞれ命令のブロックが
ロードされ得る。しかし、nと平均の命令コード長さと
の積に等しい幅である命令ブロックをそれぞれロードす
ることも可能である。後者の場合に、命令機構の命令バ
ッファメモリのなかで場合によってはn個の命令が、キ
ャッシュメモリから再ロードされることなしには、処理
され得ないことを意味するであろう。このような解決策
は、最大の命令コード長さを有する命令が比較的稀に生
ずるときには正当化できるであろう。
【0008】相異なる命令コード長さの命令の際には、
命令バッファメモリと転送ユニットとの間に、命令バッ
ファメモリから待っているn個の命令を選択し、またプ
ロセッサ要素に対応付ける選択ユニットが配置されてい
ることが有利である。これは、キャッシュメモリから命
令機構に伝達される語がn個よりも少ない命令を含んで
いるときには問題であり得る。なぜならば、たとえば命
令データバスの幅がnと命令幅との積よりも小さいから
である。この場合にはプロセッサ要素に対してイネーブ
ル制御信号が発生されなければならず、これは制御信号
段により行われる。制御信号からプロセッサ要素は、そ
れらが新しい命令を供給されているか否かを知り得る。 その際に命令の供給は同時に、一層詳細にはプロセッサ
要素の位置に関係してたとえば左から右へのシーケンス
で、またはダイナミックに循環してランダムに行われて
よく、この場合には、どのプロセッサ要素が最初の処理
されない命令を含んでいるかを指示するポインタまたは
インデックスが伴われるべきである。命令はこうしてプ
ロセッサ要素にブロックごとにまたはダイナミックに循
環して対としてまたは個々に渡される。
【0009】複数の命令が並列に処理されるべきであれ
ば、もしかするとコンフリクト状況が生じ得る。たとえ
ばシーケンシャルに後で実行すべき命令は先行の演算に
より最初に計算されなければならないソースレジスタの
ような資源を利用し得る。または後続の命令が、さらに
前になおソースとして必要とされるレジスタを記述した
い。または先行の命令が後続の命令を変更し得る。これ
らのコンフリクト状況は認識され、また相応に取り扱わ
れなければならない。これは、コンフリクト検査段がプ
リデコードされた命令を検査し、またコンフリクトの際
にコンフリクト信号を発生し、この信号が制御信号段に
供給され、また命令語の受入れをレリーズする制御信号
を抑制させることにより行われる。
【0010】プログラムのなかに頻繁に分岐命令、飛越
し命令または条件付き命令が存在するので、場合によっ
ては命令によりレリーズされる代替の処理を準備し、ま
たは既に部分的に実行するため、これらの条件付き命令
を認識することは目的にかなっている。それに応じて、
プリデコードされた命令からこのような条件付き命令を
認識し、また相応にプロセッサ要素に制御信号段を介し
て影響を与える飛越し命令ユニットを設けることは有利
である。
【0011】頻繁にオペランドがアドレス計算のために
必要であるので、追加的に、プリデコードされた命令コ
ードからこのような命令を認識し、またたとえばオペラ
ンド取出し段によりオペランドアドレスのロードを行わ
せるオペランドアドレス指定ユニットが設けられ得る。 オペランドアドレス(飛越し命令および手続き呼出また
は復帰飛越しの際には飛越し先アドレスとも呼ばれる)
はその場合に命令カウンタに伝達され得る。
【0012】他の構成は従属請求項にあげられている。
【0013】
【実施例】以下、図1ないし図3に示されている実施例
により本発明を一層詳細に説明する。
【0014】図1には、上記の課題を満足する命令機構
IUが示されている。図4から知られているユニットは
プロセッサ要素PE0ないしPEn−1、レジスタバン
クRGおよびキャッシュメモリ装置CAである。
【0015】キャッシュメモリ装置CAは先ず命令デー
タバスDBIを介して命令取出し段BFEおよび命令バ
ッファメモリBPUと接続されている。追加的に、命令
データバスDBIが図1中に示されているように命令先
取り段BPREと接続されていることも可能である。
【0016】命令取出し段BFEは命令をキャッシュメ
モリから取出し、それらを一時記憶し、またそれらを次
いで命令バッファメモリBPUにロードする。もちろん
、命令を直接にバッファメモリBPUにロードすること
も可能である。すなわち、命令バッファメモリBPUが
空であれば、または十分に命令を含んでいないならば、
たとえばnよりも少ない命令しか含んでいないならば、
命令取出し段BFEは命令シーケンス中で続く命令をキ
ャッシュメモリまたは他のメモリ、たとえば主メモリM
Mから要求し、またそれらを命令バッファメモリBPU
にロードする。命令をアドレス指定するためには、命令
取出し段BFEと接続されている命令カウンタBZが設
けられている。
【0017】追加的に命令先取り段が存在しているなら
ば、たとえば、キャッシュメモリへのアクセスが行われ
ていない時間中に、推定されるすぐ次のn個の命令が命
令先取り段BPREからロードされ、また予めそこに保
持され得る。新しい命令を命令バッファメモリBPUに
ロードすべきであれば、これは命令取出し段BFEもし
くは命令先取り段BPREを介して行われ得る。命令先
取り段は同じく命令カウンタBZと接続されており、ま
たこれからロードすべき命令のアドレスを取出し得る。 たとえば命令取出し段BFEがn個の命令をロードすれ
ば、命令先取り段BPREはすぐ次のn個の命令を予め
ロードし得る。
【0018】命令バッファメモリBPUは、少なくとも
n個の命令をプロセッサ要素PEに与え得るような大き
さを有し得る。しかし、命令が相異なるコード長さを有
するべきであれば、命令バッファメモリBPUの再ロー
ドが種々の方法で行われ得る。
【0019】すなわち、たとえば、それぞれn個の命令
から成る常に1つの命令ストリングがロードされている
ように配慮され得る。そのためには、ロードされる命令
ストリングはnと最大命令長さとの積に等しい最大必要
な長さを有していなければならない。4つのプロセッサ
要素が設けられており、また最大命令長さがたとえば6
バイトであったならば、4つの命令が命令バッファメモ
リから取り出され得ることを保証するように、命令スト
リングは24バイトを有していなければならない。
【0020】他の可能性は、非常に頻繁にn個の命令が
取り出され得るが、常にではないことにある。たとえば
少なくともnと平均命令長さとの積に等しい命令ブロッ
クがロードされるならば、平均的にたとえば50%はn
個の命令が取り出され得る。
【0021】さらに、命令データバスDBIの幅のそれ
ぞれ1つの命令ブロックを命令バッファメモリBPUに
ロードし、また命令バッファメモリBPUからそれぞれ
そのなかに含まれているすべての命令をプロセッサ要素
PEに対応付けることも可能であろう。この場合にも、
大きい命令長さの際に命令バッファメモリBPUから一
回で並列にすべてのn個のプロセッサ要素がサービスさ
れ得ず、それどころか付加の再ロードが必要であること
が可能である。
【0022】命令バッファメモリBPUの出力端に選択
ユニットBSEが配置され得る。しかし、この選択ユニ
ットは固定の命令長さの際には不要である。しかし、可
変の命令長さの際およびプロセッサ要素PEへの命令B
EFの可変の対応付けの際にはこのユニットは有意義で
ある。命令バッファメモリBPUのなかでインデックス
は始端、すなわち命令シーケンスの最初の処理されない
命令BEFを指示する。この最初の命令BEFは選択ユ
ニットBSEにより選択され、またそれに続いて後続の
命令BEFが先行の命令のそのつどの命令長さに関係し
て選択される。それに応じて選択ユニットBSEが個々
のプロセッサ要素PEに命令を対応付け、またそれらを
命令転送ユニットBUEに選択された命令と一緒に伝達
する相応の選択信号S‐AWを発生する。
【0023】選択ユニットBSEにより選択された命令
はたとえばマルチプレクサを介して命令バッファメモリ
から呼び出され、また命令バスIBに導かれ、またそれ
によって相応のプロセッサ要素に導かれる。この課題は
命令転送ユニットBUEにより実行される。相応の選択
信号は制御信号段ENGに伝達され、この制御信号段が
次いで相応の制御信号S‐ENまたはイネーブル信号を
プロセッサ要素PEに導く。
【0024】コンフリクト状況を認識し得るため、コン
フリクト状況が可能であるか否かに関して、選択されて
いる命令を検査することは目的にかなっている。そのた
めに、命令プリデコード段BDCにより命令をプリデコ
ードすることは有意義である。しばしばオペランドアド
レス計算が必要であり、またそれらは適時に認識され、
また予め計算され、またそのためにプリデコードが利用
される。相応のことが飛越し命令の認識に対しても当て
はまり、その適時の認識が可能な代替の並列処理を許す
。ここでも命令のプリデコードが使用され得る。
【0025】前記のように、プリデコードされた命令に
より、プロセッサ要素に供給すべき命令が飛越し、ルー
プ、呼出し、復帰、システム呼出し命令のような条件付
き命令であるか否かが認識され得る。場合によってはビ
ジィでないプロセッサ要素または特にそのために設けら
れているプロセッサ要素が高い分岐確率を有する分岐代
替を線形の命令の流れに対して並列に、可能なかぎり、
予め計算し、また既にループ命令を実行し得る。飛越し
命令ユニットSPRによりこのケースが認識され、飛越
し信号S‐SPが発生され、この飛越し信号は転送ユニ
ットBUEに供給され、それにより転送ユニットが選択
ユニットBSEにより相応のプロセッサ要素に代替命令
を供給する。
【0026】たとえばバッフアメモリのなかで選択され
た命令が、アドレス計算のために1つまたはそれ以上の
レジスタ内容が必要であるオペランド関係、アドレス計
算のためにメモリデータが必要であるオペランド関係、
アドレス計算のためにレジスタ内容およびメモリデータ
が必要であるオペランド関係のように、オペランド行き
先計算を必要とするときに、オペランドアドレス計算は
プリデコードに関係してオペランドアドレスユニットO
PAにより認識され得る。
【0027】前記のように、プロセッサ要素PEによる
命令の並列処理の際にコンフリクト状況が生じ得る。こ
の状況は認識されなければならない。そのために、プリ
デコードされた命令からこのようなコンフリクトを認識
して相応のコンフリクト信号Kを発生するコンフリクト
検査段KFLが設けられている。コンフリクト信号Kは
制御信号段ENGに導かれ、制御信号段ENGがコンフ
リクト信号Kにより、コンフリクトが除去されるまで、
対応付けられているプロセッサ要素PEを阻止する。コ
ンフリクト検査段KFLを直接に命令プリデコード段B
DCと接続せずに、オペランドアドレス指定ユニットO
PAまたは飛越し命令ユニットSPRを介して接続する
ことは目的にかなっている。なぜならば、これらのユニ
ットのなかでなお必要なオペランドアドレスまたは命令
代替のアドレスが計算され得るからである。
【0028】オペランド取出し段OFEによりオペラン
ドがキャッシュメモリまたはレジスタバンクRGから取
り出され、また計算され得る。飛越し先アドレスである
オペランドは命令カウンタPCに供給され得る。
【0029】制御信号段ENGは転送ユニット、飛越し
命令ユニットSPR、コンフリクト検査段KFLおよび
場合によってはオペランド取出し段OFEから発せられ
た信号からプロセッサ要素PE、レジスタバンクRGお
よびキャッシュメモリ装置CAに対する制御信号または
イネーブル信号S‐ENを発生する。これらの制御信号
によりプロセッサ要素PEは、たとえば受け入れられ得
る命令BEFが存在することについて情報を与えられる
。同じく、制御信号段ENGがコンフリクト信号に関係
して命令の所属する特定のプロセッサ要素を、コンフリ
クトが解消するまで阻止することも可能である。
【0030】インクレメンタPCと一緒にカウントユニ
ットPCを形成する前記の命令カウンタBZは、どの命
令をまさに実行すべきか、またはどの命令をすぐ次に実
行すべきかを指示する。1つの命令が実行されると、命
令カウンタはプログラム飛越しの際のほかは一般に値1
だけ高められる。しかしながらここでk(0≦k≦n)
の命令が並列に実行されると、命令カウンタBZは値k
だけインクレメントされなければならない。そのために
インクレメンタPCIが設けられている。これにたとえ
ば開始アドレスがレジスタバンクのレジスタからオペラ
ンド取出し段OFEを介して導かれ得る。
【0031】命令バッファメモリBPUの構成は提供す
べき命令の数に関係して異なっていてよい。一例は図2
に示されている。図2による命令バッファメモリBPU
の説明にあたって、命令データバスDBIの幅がn個の
命令から成る命令ストリングの最大幅よりも小さいこと
から出発する。例として、命令データバスDBIの幅が
16バイトであり、命令ストリングBSBの最大幅(n
と最大命令長さとの積)が6バイトの命令長さ(BSB
1)の際に24バイトであるものとする。平均命令長さ
から導き出される命令ストリングの他の可能な幅はたと
えば16バイト(BSB2)または14バイトである。 これらの場合は、どのように可変の幅の命令が処理され
るべきかを示す。図2によれば、バッファメモリBPU
は、それぞれ命令データバスDBIの幅またはそれより
も小さい幅を有するメモリブロックIBBに分割されて
いる。図2には命令データバスの幅の2つのメモリブロ
ックIBB1およびIBB2と、それよりも小さい幅の
別のメモリブロックIBB0とが設けられている。メモ
リブロックIBB1およびIBB2は16バイトから成
っており、これらは4つの語または8つの半語に分割さ
れている。半語は参照符号HAを付されており、またそ
れぞれ2バイトから成っている。半語境界にそれぞれ1
つの命令の開始が存在し得る。最も望ましくない場合に
は、このことは14バイト幅の1つのカットBVに通ず
る。すなわちBV=B(DBI)−2バイト=14バイ
トである。
【0032】それぞれ常にn=4の命令が完全に命令バ
ッファメモリのなかに存在すべきであり、また可能な命
令ブロックカットが顧慮されれば、命令バッファメモリ
BPUは下記のように計算される長さLを有していなけ
ればならない。 L=BSB+BV=n×(最大命令長さ)+BV
【00
33】実施例では最大命令長さは6バイトであり、従っ
て4つのプロセッサ要素の際には最大命令ストリングの
幅はBSB=24バイトであり、それに14バイトが加
えられて38バイトとなる。それぞれ1つのメモリブロ
ック、すなわちメモリブロックIBB1もしくはIBB
2が命令データバスDBIを介して一回ロードされ得る
。ただ3つの半語の幅であるメモリブロックIBB0は
他の両メモリブロックIBB1およびIBB2からの語
を記憶する役割をする。現在の命令ストリングが常に命
令ブロックカットのなかで、すなわち半語−7ないし0
の範囲内で開始することから出発する。命令ストリング
の開始は1つのポインタにより指示され得る。 命令バッファメモリの再ロードは3つの場合に別けられ
得る。
【0034】a)n=4の命令の取り出しの後に後続の
命令ストリングが半語−3および0(内包的)の範囲内
で開始する。この場合、バッファメモリは不変にとどま
る。なぜならば、なおn=4の命令がそのなかに含まれ
ており、単にインデックスまたはポインタが新たに計算
されるからである。
【0035】b)命令取り出しの後に後続の命令ストリ
ングが半語1ないし8(内包的)の範囲内で開始する。 命令バッファメモリはいま1命令ブロックだけずらされ
なければならない。 IBB0    :=IBB11 …3 IBB1  
  :=IBB2 IBB2    :=命令取出し段BFEの内容インデ
ックス:=古い命令ストリング開始−8
【0036】c
)命令ストリングが命令取り出しの後に半語範囲9ない
し12(内包的)の範囲内で開始する。 ここでは命令バッファメモリは2命令ブロックだけずら
されなければならない。 IBB0    :=IBB29−11IBB1   
 :=命令取出し段BFEの内容IBB2    :=
命令先取り段BPREの内容インデックス:=古い命令
ストリング開始−16
【0037】ただ3つの半語の長
さのメモリブロックIBB0が省略されることも可能で
ある。命令ブロックカットはその場合に−4から+3ま
で行き、命令ストリングは3つの半語だけ短い。この措
置によりハードウェア実現費用が少なくてすむが、その
代わりに場合の一部分では3つの命令しか転送され得な
い。
【0038】命令バッファメモリの別の可能な実現例が
図3に示されている。図2では命令バッファメモリは、
予めそれぞれ4語の1つまたは2つの命令ブロックが場
所を有するならば、常に再ロードされるが、図3では、
命令バッファ終端にn個の命令がもはや全く含まれてお
らず、またメモリブロックIBB2のなかに第1の半語
がロードされていないときにのみ再ロードされる。この
解決策では命令ストリング(BSB3)の常に少なくと
も16バイトがロードされ得る。従って、場合の大部分
でn=4の命令がロードされている。この解決策の利点
は、飛越し命令の際に放棄されなければならない命令バ
ッファ内容がより少ないことである。
【0039】図2を例として、命令ストリングの開始を
指示するインデックスがどのように計算され得るかを示
す。 もし  残余インデックス≧9  であればインデック
ス:=残余インデックス−16もし  残余インデック
ス≧1  でなければインデックス:=残余インデック
ス−8さもなければ BEF1        :=命令ストリング(インデ
ックス); BL1          :=命令長さ(BEF1)
;BEF2        :=命令ストリング(イン
デックス+BL1); BL2          :=命令長さ(BEF2)
;BEF3        :=命令ストリング(イン
デックス+BL1+BL2); BL3          :=命令長さ(BEF3)
;BEF4        :=命令ストリング(イン
デックス+BL1+BL2+BL3); BL4          :=命令長さ(BEF4)
;残余インデックス:=インデックス+BL1+BL2
+BL3+BL4
【図面の簡単な説明】
【図1】命令機構のブロック回路図である。
【図2】命令バッファメモリの第1の実施例の説明図で
ある。
【図3】命令バッファメモリの第2の実施例の説明図で
ある。
【図4】複数の並列プロセッサ要素を有するプロセッサ
の原理回路図である。
【符号の説明】
BDC  命令プリデコード段 BEF  命令 BFE  命令取出し段 BPRE  命令先取り段 BPU  命令バッファメモリ BSE  選択ユニット BUE  命令転送ユニット BZ    命令カウンタ CA    キャッシュメモリ装置 DBI  命令データバス ENG  制御信号段 IBB  命令ブロック IU    命令機構 K      コンフリクト信号 KFL  コンフリクト検査段 KS    コンフリクト信号 OFE  オペランド取出し段 OPA  オペランドアドレス指定ユニットP    
  プロセッサ PC    インクレメンタ PE    プロセッサ要素 RG    レジスタバンク S‐EN  制御信号 SPR  飛越し命令ユニット

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】  n個のプロセッサ要素(PE)を有す
    るプロセッサ(P)に対する命令機構において、命令の
    並列処理が可能であるように多数の命令が記憶されてい
    る命令バッファメモリ(BPU)と、命令バッファメモ
    リ(BPU)のなかにn個よりも少ない命令が存在する
    ときに、処理すべきプログラムの命令列のなかのすぐ次
    の命令をメモリ(CA)から命令バッファメモリ(BP
    U)にロードする命令取出し段(BFE)と、命令バッ
    ファメモリ(BPU)のなかの命令(BEF)をプロセ
    ッサ要素(PE)に対応付け、またプロセッサ要素への
    対応付けを示す選択信号を発生する命令転送ユニット(
    BUE)と、命令転送ユニット(BUE)のなかに含ま
    れている命令をプリデコードするプリデコード段(BD
    C)と、プリデコードされた命令をプリデコード段(B
    DC)から受け、また命令コードからプロセッサ要素(
    PE)により並列に処理すべき命令の間のコンフリクト
    を認識し、またそれに関係してコンフリクト信号(KS
    )を発生するコンフリクト検査段(KFL)と、選択信
    号およびコンフリクト信号からプロセッサ要素(PE)
    に対する制御信号(S‐EN)を発生し、プロセッサ要
    素に準備された命令(BEF)の受入れを指令し、また
    はコンフリクトの場合にコンフリクトが除去されるまで
    命令の処理に対してプロセッサ要素を遮断する制御信号
    段(ENG)とを含んでいることを特徴とするプロセッ
    サに対する命令機構。
  2. 【請求項2】  命令バッファメモリ(BPU)と命令
    転送ユニット(BUE)との間に、可変長さの命令の際
    に命令をその長さに相応してプロセッサ要素(PE)に
    対応付ける選択ユニット(BSE)が配置されているこ
    とを特徴とする請求項1記載の命令機構。
  3. 【請求項3】  プリデコード段(BDC)と接続され
    ており、また命令シーケンスのなかの飛越し命令を認識
    し、またこの場合に飛越し信号を発生する飛越し命令ユ
    ニット(SPR)が設けられており、飛越し信号が選択
    ユニット(BSE)に供給され、それによって同時に可
    能な代替経路の命令が並列に実行されるように指令され
    ることを特徴とする請求項2記載の命令機構。
  4. 【請求項4】  プリデコード段(BDC)と接続され
    ており、またオペランドアドレス計算を実行するオペラ
    ンドアドレス指定ユニット(OPA)が設けられている
    ことを特徴とする請求項1ないし3の1つに記載の命令
    機構。
  5. 【請求項5】  アドレス計算のために必要なオペラン
    ドをメモリ(RG、CA)から取出すオペランド取出し
    段(OFE)が設けられていることを特徴とする請求項
    4記載の命令機構。
  6. 【請求項6】  命令バッファメモリ(BPU)および
    命令取出し段(BFE)と接続されており、また命令取
    出し段(BFE)からロードされた命令に続く命令をロ
    ードする命令先取り段(BPRE)が設けられているこ
    とを特徴とする請求項1ないし5の1つに記載の命令機
    構。
  7. 【請求項7】  命令バッファメモリ(BPU)の幅が
    命令ストリングの幅と、メモリから命令機構へ通ずる命
    令データバスの幅に関係するカットとの和に等しく選定
    されており、命令ストリングの幅がプロセッサ要素の数
    と最大命令長さとの積により決定されていることを特徴
    とする請求項1ないし6の1つに記載の命令機構。
  8. 【請求項8】  命令バッファメモリ(BPU)がたか
    だか命令データバス(DBI)の幅の命令ブロック(I
    BB)に分割されており、また1つまたは2つの新しい
    命令ブロックに対する場所が命令データバスの幅により
    与えられているときに、命令がバッファメモリに再ロー
    ドされることを特徴とする請求項7記載の命令機構。
  9. 【請求項9】  命令バッファメモリ(BPU)が、そ
    のなかにn個の命令がもはや含まれていないときに再ロ
    ードされることを特徴とする請求項7記載の命令機構。
JP3268784A 1990-09-26 1991-09-20 プロセッサに対する命令機構 Withdrawn JPH04273367A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE4030438 1990-09-26
DE4030438.8 1990-09-26

Publications (1)

Publication Number Publication Date
JPH04273367A true JPH04273367A (ja) 1992-09-29

Family

ID=6415011

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3268784A Withdrawn JPH04273367A (ja) 1990-09-26 1991-09-20 プロセッサに対する命令機構

Country Status (2)

Country Link
EP (1) EP0477598A2 (ja)
JP (1) JPH04273367A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer

Also Published As

Publication number Publication date
EP0477598A3 (ja) 1994-01-05
EP0477598A2 (de) 1992-04-01

Similar Documents

Publication Publication Date Title
US5051885A (en) Data processing system for concurrent dispatch of instructions to multiple functional units
KR100431168B1 (ko) 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템
CA1103369A (en) Multi-instruction stream branch processing mechanism
EP0021399B1 (en) A method and a machine for multiple instruction execution
KR100208889B1 (ko) 병렬처리장치 및 병렬처리방법
EP2519874B1 (en) Branching processing method and system
US6247124B1 (en) Branch prediction entry with target line index calculated using relative position of second operation of two step branch operation in a line of instructions
EP0238810B1 (en) Method and system for facilitating instruction processing of a digital computer
US7424598B2 (en) Data processor
US5848268A (en) Data processor with branch target address generating unit
US4648034A (en) Busy signal interface between master and slave processors in a computer system
JPS62221036A (ja) 計算装置
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
JPS6323586B2 (ja)
US6499097B2 (en) Instruction fetch unit aligner for a non-power of two size VLIW instruction
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
US4967338A (en) Loosely coupled pipeline processor
US10929296B2 (en) Zero latency prefetching in caches
JPH02207351A (ja) データ路の巾が予め定められたコンピュータシステムのデータ記憶レートを増加する方法及び装置
KR100385495B1 (ko) 워드정렬브랜치타겟을가지는처리시스템
GB2024475A (en) Memory access controller
US5453927A (en) Data processor for processing branch instructions
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US5897654A (en) Method and system for efficiently fetching from cache during a cache fill operation
US5890006A (en) Apparatus for extracting instruction specific bytes from an instruction

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19981203