JPH0844562A - コンピュータシステム及びその動作方法 - Google Patents

コンピュータシステム及びその動作方法

Info

Publication number
JPH0844562A
JPH0844562A JP7179312A JP17931295A JPH0844562A JP H0844562 A JPH0844562 A JP H0844562A JP 7179312 A JP7179312 A JP 7179312A JP 17931295 A JP17931295 A JP 17931295A JP H0844562 A JPH0844562 A JP H0844562A
Authority
JP
Japan
Prior art keywords
instruction
branch
instructions
new
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7179312A
Other languages
English (en)
Other versions
JP2746549B2 (ja
Inventor
Criag Sturges Andrew
クレイグ スタージェス アンドリュー
Mackenzie Sidwell Nathan
マッケンジー シドウェル ネイサン
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.)
S G S THOMSON MICROELECTRON Ltd
SGS THOMSON MICROELECTRONICS
STMicroelectronics Ltd Great Britain
Original Assignee
S G S THOMSON MICROELECTRON Ltd
SGS THOMSON MICROELECTRONICS
STMicroelectronics Ltd Great Britain
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 S G S THOMSON MICROELECTRON Ltd, SGS THOMSON MICROELECTRONICS, STMicroelectronics Ltd Great Britain filed Critical S G S THOMSON MICROELECTRON Ltd
Publication of JPH0844562A publication Critical patent/JPH0844562A/ja
Application granted granted Critical
Publication of JP2746549B2 publication Critical patent/JP2746549B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

(57)【要約】 【目的】 1つのセット分岐命令によってセットアップ
される目標位置を用いた多数の分岐が可能であるように
分岐命令を実行する。 【構成】 取り出し回路は2つの命令フェッチャを有
し、これら命令フェッチャは、実行用のメモリからの命
令のシーケンスと、実行中の命令のシーケンスにおける
セット分岐命令によって識別される目標位置から始まる
命令のシーケンスをそれぞれ取り出す。有効分岐信号が
生成されると、目標命令は次に実行されて、実行用の命
令を取り出し中のフェッチャが目標命令の取り出しを開
始する。有効分岐信号はセット分岐命令とは別々に生成
される。有効分岐信号はさらに、条件付き有効分岐命令
の実行と同時に生成されて、分岐が使用される命令シー
ケンス上の地点に位置付けられる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分岐(ブランチ)命令
を実行するためのコンピュータシステム及びこのような
コンピュータシステムを動作するための方法に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】プログ
ラムは、1つの入口点(最初の命令)及び1つの出口点
(最後の命令)を有する連続命令のブロック又はストリ
ングからなる。あらゆる特定のブロックの後で実行され
る命令ブロックの1つ又は2つの選択がある。2つの可
能ブロックがある時、条件を用いてどのブロックを選択
するべきかを決定する必要がある。ブロック同士の間の
リンク(連係)パターンは、プログラムの制御又はフロ
ーグラフと呼ばれる。
【0003】これらの命令のブロックは、メモリ内に一
緒にパックされる。後続(subsequent)ブロック(ブロッ
クB)の選択がない場合、通常それは、第1のブロック
(ブロックA)の直ぐ後に配置され得る。これは、ブロ
ックAからブロックBを得るために制御に明示的な変化
を必要としないことを意味する。しかしこれは時には可
能でないことがある。例えば、1つよりも多いブロック
が後にくるもの(sucessor)にブロックBを有する場合で
あり、これらの先行するブロック(predecessor) の1つ
以外全ては、後続ブロックが次の順次ブロックではなく
てブロックBになることを示さなくてはならない。これ
らは、無条件分岐である。幾つかのブロックは、後続ブ
ロックの選択を有する。後続するもの、例えばブロック
Bだけをその後順次的に配置することができることは明
白である。他のブロックであるブロックCは、ブロック
A内に明示的に示される。条件付きメカニズムを用いて
どのブロックを選択するべきかを決定する。条件があえ
ば、次に選択された後続ブロックをブロックCとする。
条件があわなければ、選択された後続ブロックをブロッ
クBをする。これらは条件分岐である。
【0004】分岐は従来技術において周知であり、コン
ピュータシステムがあらゆるプログラムを実行するため
になくてはならないものである。周知のコンピュータシ
ステムは、命令ポインタレジスタである特別のレジスタ
を含み、これは実行する後続命令のアドレスの指示を行
う。このレジスタは一般的に命令の実行後に自動的に増
分されるので、次の順次命令のアドレスを示す。分岐命
令を使用してこの動作(behavior)を変更する。これらの
分岐命令は、次に実行可能な命令用の代替アドレス(目
標位置)を指定する。条件分岐命令はまた使用される代
替アドレスにあわせる必要がある条件も指定するが、さ
もなければ通常のように増分される。従って、これらの
分岐命令は命令ブロックの終了を定義する。
【0005】非パイプライン式コンピュータシステムに
おいて、コンピュータは、後続命令に移動する前に1つ
の命令を取り出し(フェッチ)、復号し、実行して1つ
の命令を完了する。一方、取り出し、復号及び実行ステ
ージが全て命令のストリームに対して同時に動作するパ
イプラインシステムの場合、要求されない命令を取り出
すことがあり得る。例えば、取り出し、復号、実行、及
び書き込みステージを有する4ステージの命令パイプラ
インを有するシステムについて考えてみると、分岐命令
を検出することができる一番早いステージは、復号ステ
ージであり、このステージまでにメモリ内の次の順次命
令はすでに取り出されているであろう。無条件分岐の場
合、これは捨てられて新しい命令が目標位置(ターゲッ
トロケーション)から取り出されることが必要である。
条件分岐の場合、それはより複雑である。条件を評価し
て目標位置を変更するべきか否かを決定しなければなら
ない。このことは実行ステージで生じるので、順次取り
出される命令を取り出しステージにおいて停止し、そし
て分岐が実行された後でだけパイプライン手順を実行す
ることができる。条件が真であれあば、順次取り出され
た命令を無視し、目標位置から新しい命令を取り出す必
要がある。あらゆるプロセッサアーキテクチャ(構造)
に適用される第1のパイプライン化は、予め命令を発す
るべきであり、これが最も容易な高速化の1つである。
【0006】前記記載から、分岐命令後の命令は、常に
取り出されるが時々しか要求されないので、パイプライ
ンバブルが何をすべきかを決定しながら作成されること
は明白である。分岐命令の意味を変更することによりこ
れを改良しようとする試みが行われてきた結果、分岐命
令の後続命令は常に実行され、該後続命令の後で実行さ
れる命令が、該後続命令に連続する命令であるか、目標
位置における命令であるかを分岐は決定する。これらは
遅延された分岐(delayed branch)と呼ばれ、分岐命令の
直ぐ次にくる命令は、分岐遅延スロット(branch delay
slot) と呼ばれる。図1はこの動作を概略的に示す。分
岐命令は復号ステージで検出される。分岐遅延スロット
はInst1(命令1)であり、これは常に実行され
る。分岐が使用されると、次に実行される命令は異なる
ブロックの第1命令であるInstD0になるが、分岐
が使用されない場合、次に実行される命令は次の順次ブ
ロックの第1命令であるInst2(命令2)である。
Inst1は、(条件)分岐の結果に関係なく常に実行
され得る命令であることが必須であり、またそれは条件
分岐が使用されるべきか否かを決定する命令であっては
いけない。これらの条件を満足させる命令をプログラム
内で見つけることができない場合、効果の無い(NO
OP)命令が代わりに挿入されることが必須である。
【0007】遅延スロットの最適数が1以上であるパイ
プラインを設計することができる。コンピュータが巧妙
にパイプラインされればされるほど、一般的により多く
の遅延スロットを必要とする。不運なことに、有用な命
令を見つけて各追加スロット中に入れることはますます
難しくなるので、スロットの多くは何もしない命令で満
たされる。これは、命令を実行する場合にNO OP命
令の大きなバブルを配するので、深いパイプラインを作
成することにより得られた速度の利点を減じる。
【0008】このアプローチに伴う別の重要な問題は、
既存の命令セットを有する新しいコンピュータシステム
が新しいパイプライン編成によって異なる数の分岐遅延
スロットで設計されると、既存のバイナリを実行できな
いということである。従って、プログラムを実行するた
めに再コンパイルしなけらばならない。
【0009】分岐遅延スロットを不要にしようとする場
合、ある周知のシステムはパイプラインの取り出し(フ
ェッチ)ステージで2つの命令フェッチャを使用する。
各命令フェッチャは命令のシーケンスを取り出して保持
することができる。一方の命令フェッチャはそれと関係
付けられるローカル復号回路を有し、このローカル復号
回路は分岐命令を検出するように配置される。認識され
るようにこのローカル復号回路は、パイプラインの通常
の復号ステージに追加される。分岐命令が能動(アクテ
ィブ)フェッチャによって検出されると、分岐命令は他
方の命令フェッチャをイニシャライズ(初期状態に)し
て、新しいブロックからの取り出し命令をスタートし、
一方第1ブロックの分岐命令までの命令は復号及び実行
のためにパイプラインに送り続けられる。このシステム
は、パイプラインの通常の復号ステージの前に分岐命令
を検出するための外部ローカル復号回路を要求するだけ
でなく、メモリからの命令の思弁的な取り出し(specula
tive fetching)(その多くが要求されないこともある)
も伴う。
【0010】EP−A−355069号(エヴェンズ&
サザランドンピュータ会社(Evans &Sutherland Compute
r Corporation) )は、2つの異なる部分への分岐を行
うために命令の分離があるシステムを定める。セット分
岐命令は、分岐のための目標位置を示し、それはできる
限り命令ストリングの開始位置の近くに配置され得る。
【0011】分岐の実際の実施は、後の命令で位置付け
られる分割ビットに応答して後で実行される。
【0012】セット分岐命令を用いた分岐の目標位置の
提供は、メモリアクセスが行われている(又は行われよ
うとしている)という事実の早期指示を行うと共に、そ
のアクセスのためにメモリアドレス(目標位置)を提供
する。分割ビットにより分岐が行われて、そのメモリア
ドレスをアクセスする時間になると、システムは、例え
ば必要なデータをローカルキャッシュにもたらすことに
よって、アクセス用にセットアップするきっかけを有す
る。
【0013】EP−A−355069号のシステムに関
連付けられる1つの問題は、新しい命令が取り出される
目標位置が分割ビット信号が実行された後にリセットさ
れることである。即ち、これは、1つのセット分岐命令
によりセットアップされる目標位置を使用して多数の分
岐になりえないことを意味する。この状況を可能にする
ことは有利であり、従ってこれを可能にする分岐を実施
する改良システムを提供することは本発明の目的の1つ
である。
【0014】
【課題を解決するための手段と作用】本発明の一態様に
従って、命令を取り出し、復号し、実行するためのコン
ピュータシステムが提供され、該システムは:それぞれ
の記憶位置で複数の命令を保持するための記憶回路を有
し、前記複数の命令が命令ストリング中に配置され、各
ストリングが第1の命令と後続命令のセットとを含むこ
とと;前記記憶回路から一連の命令を取り出すための命
令取り出し回路を有し、次の取り出し動作が行われ得る
次のアドレスの指示を提供するためのインディケータを
含むことと;取り出された命令を実行するための実行回
路を有し、ここで前記命令ストリングの少なくとも幾つ
かが、各々が後続命令を取り出すことができる目標位置
の指示を提供するセット分岐命令(SET)を含み、後
続命令が異なる命令ストリングから得られ、ここで前記
命令取り出し回路が前記セット分岐命令(SET)の実
行に応答して動作され、前記目標位置から開始する前記
異なる命令ストリングからの新しい命令と、前記セット
分岐命令を含む前記ストリングからの後続命令とを前記
後続命令を実行し続けながら並行に取り出すことと;前
記目標位置の指示を保持するための目標記憶装置を有
し、前記指示が、前記セット分岐命令(SET)を実行
すると前記記憶装置にロードされ、後続セット分岐命令
の実行まで有効指示として前記記憶装置中に保持される
ことと;実行されるべき更なる命令が前記新しい命令で
あることを示す有効分岐(DO)信号の生成に応答し、
前記実行回路に前記新しい命令を実行させ、前記命令取
り出し回路に前記目標位置から開始する新しい命令を再
び取り出させる選択回路を有することと;を含む。
【0015】本発明はまた、命令を取り出し、復号し、
実行するためにコンピュータを動作する方法であって、
前記コンピュータがそれぞれの記憶位置で複数の命令を
保持する記憶回路を有し、前記複数の命令が命令ストリ
ング中に配置され、各ストリングが第1の命令と後続命
令のセットとを含む方法を提供し、該方法は:前記記憶
回路から命令のシーケンスを取り出して、次の取り出し
動作を行う次のアドレスの指示を提供するステップと;
前記命令を復号するステップと;各命令を順番に実行す
るステップであって、ここで前記命令ストリングの少な
くとも幾つかが、後続命令を取り出すことができる目標
位置の指示を提供するセット分岐命令(SET)を各々
含み、後続命令が異なる命令ストリングから得られるス
テップと;前記セット分岐命令が実行されると、後続の
セット分岐命令を実行するまで目標記憶装置中に前記目
標位置の指示を有効指示として保持し、前記目標位置か
ら開始する前記異なる命令ストリングからの新しい命令
と、前記分岐命令を含むストリングからの後続命令とを
並行に取り出すステップと;実行されるべき更なる命令
が前記新しい命令であることを示す有効分岐信号が生成
されるまで前記後続命令を実行し続けるステップと;前
記新しい命令の実行を開始することにより前記有効分岐
信号に応答し、前記目標位置から開始する新しい命令を
再び取り出すステップと;を含む。
【0016】一実施例において、前記命令取り出し回路
が2つの命令バッファ、即ち前記実行回路に接続される
後続命令を保持する第1バッファ、及び新しい命令を保
持する第2バッファを含み、ここで、前記有効分岐(D
O)信号の生成に応答して前記第2バッファの内容が前
記第1バッファにコピーされる。
【0017】記載される実施例において、前記命令取り
出し回路は、前記後続命令及び前記新しい命令をそれぞ
れ取り出すための2つの命令フェッチャを含み、ここ
で、前記選択回路が前記命令フェッチャのうちの選択さ
れた1つを前記実行回路に接続する様に動作可能であ
る。
【0018】最も簡便なケースの場合、目標記憶装置
は、目標位置のメモリアドレスを保持することができ
る。カーネル(核)エントリを許容するために、セット
分岐命令は暗黙値を用いて目標位置を識別することがで
き、この暗黙値は新しい命令のメモリアドレスを保持す
る特別なレジスタをアドレス指定する。
【0019】実行されるべき記述子分岐(descriptor br
anch) を許容するために、目標記憶装置はメモリ位置を
指すポインタを保持することができ、このメモリ位置は
目標位置のメモリアドレスを含む。
【0020】有効分岐信号は、分岐が行われ得る分岐点
が識別されると生成される。これはいくつもの方法で行
われ得る。例えば、更なる命令は分岐点の前で実行され
る命令のストリング内に位置することができ、その場
合、前記更なる命令は、分岐点レジスタ内に保持される
ことになる分岐点を識別する。次に分岐点レジスタの内
容を、後続命令を通常通り取り出すことができるアドレ
スの指示を保持する命令ポインタレジスタと比較し、2
つのレジスタ値が等しい時に、有効分岐信号を生成する
ことができる。分岐点を識別するための代替方法もまた
本明細書において記載される。
【0021】分岐点を識別するが、分岐点の前に位置付
けられる更なる命令を提供することは、分岐が行われる
前に取り出されるであろう望ましくない命令の数を減少
する。
【0022】更なる代替法として、セット分岐命令自体
は分岐点レジスタ中に記憶される分岐点を識別すること
ができるので、更なる命令に対する必要性を無くす。
【0023】一方、特に好適な実施例において、分岐点
はセット分岐命令と異なる更なる専用命令により識別さ
れ、この専用命令は実行される命令のストリング中の分
岐点に位置付けられる。追加の分岐が行われることを可
能にするために、この有効分岐命令は、それ自体が満足
される条件を定義するので、条件が満足される場合のみ
分岐が行われ、条件が満足されない場合分岐が行われな
い。
【0024】これは上記記載されたEP−A−3550
69号のシステムに更なる技術的な利点を提供すること
ができる。そのシステムにおいて、セット分岐命令自体
は、分岐が条件的であろうとなかろうと示すことが必須
であり、様々な異なる条件ディテクタを条件を感知でき
る状態のレディ状態にさせる。条件自体は、セット分岐
命令及び分割ビット命令と異なる命令で定義される。
【0025】状態インディケータに対する必要性を回避
するために、本発明は別の態様によって、命令を取り出
し、復号し、実行するためのコンピュータシステムを提
供し:該コンピュータシステムは、複数の命令をそれぞ
れの記憶位置に保持するための記憶回路を有し、前記複
数の命令が命令ストリングに配列され、各ストリングが
第1命令と後続命令のセットとを含むこと;前記記憶回
路から一連の命令を取り出すための命令取り出し回路を
有し、次の取り出し動作を行うことができる次のアドレ
スの指示を提供するためのインディケータを含むこと;
取り出された命令を実行するための実行回路を有し、こ
こで前記命令ストリングの少なくとも1つが、後続命令
を取り出すことができる目標位置の指示を提供するセッ
ト分岐命令であって、後続命令が異なる命令ストリング
から得られるセット分岐命令(SET)と、前記セット
分岐命令と異なり、分岐点に位置付けられ、その分岐点
の後で前記新しい命令が実行される有効分岐命令と、を
含み、ここで前記命令取り出し回路が前記セット分岐命
令(SET)の実行に応答して動作され、前記目標位置
から開始する前記異なる命令ストリングからの新しい命
令と、前記セット分岐命令を含む前記ストリングからの
後続命令とを前記後続命令を実行し続けながら並行に取
り出すこと;前記有効分岐(DO)命令の実行に応答
し、前記有効分岐命令により決定された条件が満足され
る場合に前記実行回路に前記新しい命令を実行させる選
択回路を有すること;を含む。
【0026】本発明はまた、命令を取り出し、復号し、
実行するためにコンピュータを動作する方法であって、
前記コンピュータがそれぞれの記憶位置で複数の命令を
保持する記憶回路を有し、前記複数の命令が命令ストリ
ング中に配置され、各ストリングが第1の命令と後続命
令のセットとを含む、方法を提供し、該方法は:前記記
憶回路から命令のシーケンスを取り出して、次の取り出
し動作を行うことができる次のアドレスの指示を提供す
るステップと;前記命令を復号するステップと;各命令
を順番に実行するステップであって、ここで前記命令ス
トリングの少なくとも1つは、後続命令を取り出すこと
ができる目標位置の指示を提供するセット分岐命令(S
ET)を含み、後続命令が異なる命令ストリングから得
られるステップと、前記セット分岐命令が実行される
と、前記目標位置から開始する前記異なる命令ストリン
グからの新しい命令と、前記分岐命令を含むストリング
からの後続命令とを並行に取り出すステップと;有効分
岐命令により決定される条件が満足される場合に、後で
新しい命令が実行できる分岐点に位置される有効分岐命
令であって、実行されるべき更なる命令が前記新しい命
令であることを示す有効分岐命令が実行されるまで前記
後続命令を実行し続けるステップと;前記新しい命令の
実行を開始することにより前記有効分岐信号に応答する
ステップと;を含む。
【0027】コンピュータシステムが条件分岐を実行で
きる代替え構成として、確認状態(comfirmed state) 内
の1つと拒絶状態(rejected state)とに状態インディケ
ータを保持するための回路を含むことができる。確認状
態は実行されるべき更なる命令が、目標位置から開始す
る新しい命令である状態である。拒絶状態は、実行され
るべき更なる命令がメモリ中の後続命令であり新しい命
令でない状態である。これらの状態の内の一方を、セッ
ト分岐命令の実行に応答して設定することができ、これ
らの状態の他方をセット分岐命令と異なる第2命令の実
行に応答すると共に条件に従って選択的に設定すること
ができる。
【0028】第2命令は、確認条件が満足される場合に
確認状態を設定する確認命令とすることができる。
【0029】あるいは、第2命令は拒絶命令が満足され
る場合に拒絶状態を設定する拒絶命令とすることができ
る。
【0030】これらの拒絶又は確認命令を提供すること
により更なる改良を行うことができ、その改良におい
て、セット分岐命令がストリングの第1命令であると共
に、複数の連続命令ストリングがあり、セット分岐命令
は更なる命令として作用し、状態インディケータが確認
状態にある場合に有効分岐信号を生成する。認識される
ように、更なる命令として作用するセット分岐命令はま
た、状態インディケータの状態をその元の状態に戻す。
確認/拒絶命令は、(条件が生成された後に)ストリン
グ内にできるだけ早く配置され得るので、実行回路は分
岐がどの道を進むかの早期指示を与えられることができ
る。
【0031】
【実施例】最初に図2と図3を参照して、本発明の分岐
システムの基礎となる概念を説明する。図2は、メモリ
内の命令の3つのブロック、即ち、ブロックA、ブロッ
クB及びブロックC、を示している。各ブロックは、セ
ットブランチ命令として各ケースにおいてそれぞれセッ
トB、セットC、セットDとされた第1の命令と、後続
の命令のシーケンス、例えば、ブロックAの場合ではI
nstA1、InstA2、・・・InstAi−1
と、各ケースごとにDOと称される有効分岐命令として
の最終命令と、を有する。ブロックAにおける命令のシ
ーケンスはパイプライン式コンピュータシステムにおい
て取り出され、復号化され、さらに実行されると仮定す
る。第1の命令としてのセットBの実行と同時に、分岐
用の目標位置が記憶され、この場合にはブロックBの第
1の命令としてのセットCのメモリアドレスを識別す
る。しかしながら、この段階では、その目標位置を記憶
して、可能であれば例えば、関連メモリアドレスをロー
カルキャッシュに移動させることによってアクセス用の
ブロックBを含むメモリをセットアップする以外に取ら
れる動作はない。ブロックAにおける命令は、最終命令
D0が実行されるようになるまで、続けて取り出され復
号化され且つ実行される。この命令の実行によって有効
分岐信号が生成され、このため、セット命令のセットB
によってセットアップされる目標位置がその次の命令と
して実行ユニットによってアドレス指定される。従っ
て、メモリから取り出される次の命令はブロックBの第
1の命令であるセットCである。これは、図2の点線に
よる矢印によって示される。
【0032】図2は無条件分岐の例を示しており、これ
は必ず行なわれる分岐である。図3は条件付き分岐の位
置を示し、評価された条件が満足されるか否かによって
用いられたり用いられなかったりする分岐である。図3
は、図2に関して上述されたセット分岐命令と有効分岐
命令に加えて第3の命令が使用される例を示している。
図3において、この第3の命令はCONFIRM(確
認)と称されるが、以下において、反対の意味論(セマ
ンティクス)を含めた拒否命令を用いて条件付き分岐が
実施可能であることがより明白になる。
【0033】さらに、条件付きDO命令を用いて条件付
き分岐を実施することも可能である。
【0034】図3は、ブロックA、ブロックB及びブロ
ックCとしての、メモリに保持される命令の3つのシー
ケンスを示している。ブロックBはブロックAに隣接し
ており、順次メモリアドレスを用いて命令がメモリから
取り出されると命令がブロックBへと続くブロックAの
シーケンスにおいて正常に取り出されるようにメモリ内
に配置される。ブロックCはメモリ内の他の場所に設け
られている。図3に示されるように、各ブロックは、セ
ット分岐命令としての第1の命令(ブロックAではセッ
トC、ブロックBではセットD、ブロックCではセット
E)を有する。ブロックAではさらに、confirm
命令と、有効分岐命令としての最終命令を含む実行すべ
き命令のシーケンスを有する。図2に関連して上述され
たように、命令は取り出され、復号化され且つ実行され
る。ブロックAの第1の命令は実行されると、ブロック
Cにおける第1の命令であるセットEのメモリアドレス
を識別する目標位置を含めたセット分岐命令として識別
される。ブロックAにおける命令は、confirm命
令がそれに対応付けられる条件を有することに達するま
で、続けて取り出され、復号化され且つ実行される。条
件が満足されると、分岐は確認されて、ブロックAの終
わりで有効分岐命令DOが実行されると、目標位置によ
って識別される分岐は、図3の点線で示されるようにし
て用いられることになる。このため、取り出され復号化
され且つ実行される次の命令は、ブロックCの第1の命
令であるセットEになる。confirm条件が満足さ
れないと、有効分岐命令が実行される場合に分岐は用い
られず、代わりに、取り出され復号化され且つ実行され
る次の命令が、メモリ内で順次ブロックAの後に続くブ
ロックBの第1の命令であるセットDになる。conf
irm命令がいったん導入されると、分岐が常に確認さ
れて条件を受けにくいとされる、ブロックCの例によっ
て示されるような無条件分岐を確認することさえも必要
になることは容易に理解される。
【0035】本発明の説明のために、どんな有効なコン
ピュータシステムも無条件分岐に加えて条件付き分岐を
実行する能力がなければならないと仮定する。図2と図
3に関連して上述されたような分岐を実施するために、
セット分岐命令によって指示される目標位置を記憶する
ために目標レジスタを設ける必要があることは理解され
るだろう。さらに、条件付き分岐では、分岐が確認され
た状態にあるか否かを指示するために状態インディケー
タを設ける必要がある。本発明を実施する能力のある回
路構成の詳細な説明は以下に示される。最初に、本発明
による分岐命令が実施される種々の異なる方法について
説明する。
【0036】方法A 設定 <addr> ;分岐目標を指定する ・・・ 確認 <cond> ;分岐を確認する ・・・ 実行(ドゥー) ;確認されたら実行する
【0037】これは上記で概略説明されたスキーム(体
系)である。3つの個別命令が示されている。分岐が確
認されたか否かを指定するために状態の1ビットが必要
とされる。多数の確認命令がある場合、任意の確認命令
について評価される条件が真であると分岐は実行され
る。
【0038】方法B 設定 <addr> ;分岐目標を指定する ・・・ 拒否 <cond> ;任意選択条件付き拒否分岐 ・・・ 実行 ;拒否されなかったら、その分岐を 実行する
【0039】このメカニズムは、分岐が確認されるので
はなく拒否されなければならないという点を除いて方法
Aと同様である。前述のように、状態の1ビットは、分
岐が拒否されたか否かを保持(保留)するために必要と
される。セット命令は分岐目標レジスタを初期化し、分
岐する状態を設定する。拒否命令は条件付きで分岐しな
い状態を設定する。その状態がまだ分岐にある場合、D
O命令は初期化された分岐を実行する。これら意味論で
は、拒否命令は任意選択であり、無条件分岐はそれを必
要としなくなる。拒否命令が1つよりも多い場合、分岐
を無効にすると、その分岐は実行されない。
【0040】方法C 設定 <addr> ;分岐目標を初期化する ・・・ 実行 <cond> ;条件付きで分岐を実行する
【0041】この方法は確認命令とDO命令を組み合わ
せたものであり、このため、DOは条件付きDOにな
る。状態マシンについて分岐が実行されるか否かを保持
することの必要条件はない。
【0042】方法D 設定 <addr> ;分岐目標を初期化する ・・・ 確認 <cond> ;条件付きで分岐を確認する ・・・ 実行 <offset> ;後で命令の分岐を実行する
【0043】このスキームは、DO命令の効果を可変量
(<offset>)だけ遅延させる。これによって、
命令のブロックの終わりに不要な命令の取り出しを停止
させることが可能になる。
【0044】ブロックの終了(分岐点)はDO命令にお
いて、該ブロックの最終命令と後続ブロックの第1の命
令とのオフセットとして、又は、該ブロックの終了に対
する命令カウントとして指示される。2つのレジスタが
必要とされ、分岐が確認されたか否かを記録するための
1ビットの状態と、分岐点の指示としてブロック終了ア
ドレス又はカウントを保持するための分岐点レジスタで
ある。
【0045】方法E 設定 <addr> ;分岐目標を初期化する ・・・ 拒否 <cond> ;任意選択的に条件付きで 分岐を拒否する ・・・ 実行 <offset> ;後で命令の分岐を実行する
【0046】このスキームは、分岐が確認されるのでな
く条件付きで拒否される点を除いて方法Dと同様であ
る。拒否命令は任意選択である。
【0047】方法F 設定 <offset>、<addr> ;目標及び分岐点を 初期化する ・・・ 確認 <cond> ;条件付きで分岐を 確認する
【0048】このスキームは、分岐点がセット命令で指
定される点を除いて方法Dと同様であり、このため、D
O命令の必要条件を排除する。分岐はまだ確認される必
要があり、そうでない場合は無視される。2つの付加レ
ジスタが必要とされ、分岐が確認されたか否かを記録す
る1ビットの状態と、ブロック終了オフセット又はカウ
ントを分岐点の指示として保持するための分岐点レジス
タである。
【0049】方法G 設定 <offset>、<addr> ;目標及び分岐地点を 初期化する ・・・ 確認 <cond> ;任意選択的に条件付き で分岐を拒否する
【0050】このスキームは、分岐が任意選択的に拒否
可能である点を除いて方法Fと同様である。無条件分岐
は拒否命令を必要としない。同一の付加状態が必要とさ
れる。
【0051】方法H 設定 <addr> ;分岐目標を初期化する ・・・ 実行 <cond>、<offset> ;分岐点を確認し設定する
【0052】この方法は方法Cと方法Dとを組み合わせ
たものである。セット命令は分岐目標位置を指定し、一
方、DO命令は、分岐点と、分岐が実行されるか否かに
ついての条件をともに指定する。2つの部分から成る状
態はこれを支持するべく要求され、分岐点レジスタは分
岐点を保持し、もう一つは分岐が実行されるべきか否か
を保持する。これら状態はともに、DO命令によって設
定される。条件が偽であると、プロセッサは非分岐状態
を持続する。無条件分岐は、真の条件を指定するか、も
しくは特定の無条件DO命令を使用することになる。
【0053】この方法は、連続するブロックの目標が同
一である場合、各ブロックごとに設定される分岐目標位
置を必要としないので、興味深いものである。これは、
緊密ループにおいて生じる。例えば、以下のコードが有
効である。 設定 ループ ;ループする分岐目標 を設定する ループ: ;ループエントリ地点 ・・・ ;ループコード 実行 <cond>、<offset> ;ループ継続条件 ・・・ ;更なるループコード
【0054】セット命令は一度のみ実行される。同一分
岐目標はループの繰り返しごとに要求される。
【0055】上記に示された方法の幾つかはさらに変更
が可能である。例えば、セット分岐命令がブロックの第
1の命令であってDO命令がブロックの最終命令である
図3において例示されるようにメモリ内の複数の連続ブ
ロックに対して、各ブロックインターフェースにおいて
セット命令が直後に続くDO命令が存在することは明白
である。これは特に、図3においてブロックAがブロッ
クBと接触する場合に示される。システムが分岐状態に
あるか否かについての指示を保持する方法では、ブロッ
クの終了においてDO命令を排除し、隣接するブロック
の始めにおいてセット命令に依存することができる。こ
のため、方法AとBは、異なるDO命令を排除してセッ
ト命令を以下のように解釈するために変更可能とされ
る。システムが分岐状態にある場合、次のブロックの始
めの後続セット命令が、あたかも分岐を実行するための
DO命令であるように実行されることになる。次のブロ
ックの始めのセット命令が実行される場合にシステムが
分岐状態にないと、分岐は実行されず、セット命令は通
常の方法で実行されて目標位置により分岐をセットアッ
プすることになる。
【0056】次に、分割分岐命令を用いて分岐を実施す
るためのコンピュータシステムについて説明する。図4
はパイプライン式コンピュータシステムの簡略化ブロッ
ク図である。同図には、本実施例において従来型RAM
を備えたメモリ41が示されている。コンピュータシス
テムは、メモリ41に結合されたアドレスバス39とデ
ータバス43を有する。該メモリに対して読み書き制御
信号が必要とされることは理解されるが、図4において
は図示省略する。メモリ41は、図2と図3に関して既
述されたように、異なるアドレス指定可能な位置に命令
のシーケンスを有するプログラムを保持する。メモリ4
1はさらにデータを保持する。データバス43はデータ
値をメモリ41に搬送し、また、メモリ41から搬送す
る。アドレスバス39は読み/書き操作のためのメモリ
アドレス値を搬送する。コンピュータシステムは命令取
り出し回路10を有し、これは、アドレスをアドレスラ
イン12に沿ってメモリに供給し、データライン14に
沿ってメモリから命令を受信するように配置される。復
号回路16は、命令取り出し回路によって取り出され且
つ命令ライン22上に供給される命令を受信するために
接続されて、それらを復号化する。復号回路16は命令
を実行回路18に供給して、実行回路18は命令を実行
し、結果書き込み回路20を制御して実行の結果を一時
レジスタ11に書き込む。本発明の目的に対して、復号
回路16、実行回路18、結果書き込み回路20及びレ
ジスタ11は従来型であるので、ここでは更なる記載を
省略する。これらはまとめて、以下ではプロセッサ17
と称される。
【0057】取り出し回路10は、メモリ41から一度
に4個のバイトを取り出し、命令ライン22に沿って命
令を復号回路16に提供するように配置される。命令が
可変長である場合、正確には4バイト長でない命令を処
理し、これら命令を正確に位置合わせするために命令取
り出し回路内に位置合わせメカニズムが要求されること
は理解されるだろう。これを実行するための回路構成は
係属中のアメリカ特許出願、即ち、Page White & Farre
r Ref. 74893 Compressed Instruction Set 、に示され
ている。本発明は、同一長又は可変長の命令セットでも
実施可能である。
【0058】取り出し回路10は2つの命令フェッチャ
を有し、その一つは図5を参照して説明される。データ
ライン14aとアドレスライン12aは図4に示された
対応するライン14と12に接続されている。フェッチ
ャは取り出しポインタ65を有し、取り出しポインタ6
5は32ビットワード語が読みだされるメモリにおいて
次のアドレスを含む32ビットラッチを有する。メモリ
から値が読みだされるたびに、取り出しポインタ65は
通常、4バイト増分されて増分ユニット38を介して新
しいポインタアドレスになる。フェッチャは、データラ
イン14上のメモリからの命令を命令バッファ66に読
み込むように配置され、それら命令は命令ライン22に
沿って命令バッファ66からプロセッサ17に出力され
る。可変長命令について、長さインディケータ74は、
出力された命令の長さに関する命令バッファ66からの
指示をライン70上で受信するように提供される。長さ
インディケータ74は量信号86を生成し、量信号86
は出力中の命令によって使用されるバイトの数を表示す
る。バイトカウンタ75は毎回、命令バッファ66にお
けるバイト数のカウントを保持し、選択信号24を生成
し、その選択信号24によって、メモリ41から取り出
されたバイトが命令バッファ66内の何れに挿入される
かが判断される。命令バッファ66はまた、除去信号2
6を受信し、除去信号26によって命令はバッファから
除去される。除去されなかった命令は共にシフトされ、
それによって、メモリ41からの更なるバイトに対して
バッファの終了においてスペースを形成する。命令バッ
ファ66はまた、記憶(ストア)信号28に応答し、記
憶信号28は、メモリからのバイトを選択信号24によ
って指示されたバッファ内の位置に記憶させる。記憶信
号28はラッチ信号30から導出され、ラッチ信号30
を使用してデータがメモリから記憶可能であることを指
示する。
【0059】取り出しポインタ65には、取り出しマル
チプレクサ34からのライン32上のアドレスが供給さ
れ、マルチプレクサ34は増分ユニット38からライン
36上の次のアドレスを受信するように接続される1入
力を有する。増分ユニット38は通常の方法で取り出し
アドレスを更新し、本実施例では1回につき4バイトず
つ更新する。取り出しマルチプレクサ34の別の入力は
開始ライン40に接続され、開始ライン40上では取り
出しが開始される次のアドレスが供給される。分岐処理
のために、新しいアドレスがセット分岐命令において識
別される目標位置から導出されることは容易に理解され
るだろう。ビギン信号42は取り出しマルチプレクサ3
4を制御して、開始ライン40上で新しいアドレスから
の取り出しを開始する。取り出しポインタ65はORゲ
ート44に接続されたラッチ入力を有し、ORゲート4
4はビギン信号42とラッチ信号30を受信して取り出
しポインタ65への次のアドレスのラッチングを制御す
る。ラッチ信号30はさらにゲート46に供給され、ゲ
ート46はバイトカウンタ75のラッチ入力に接続され
且つ別の入力として次の信号48を受信する。次の信号
48は命令を命令バッファ66から読み出したことを表
示するために使用され、従って適切なバイトカウントを
ラッチする。
【0060】ビギン信号42はさらに、バイトカウンタ
75のクリア入力とストップラッチ50のクリア入力に
供給される。ストップラッチ50は取り出される更なる
命令がない場合の後のアドレスをStopAtライン5
2上で受信する。このアドレスは、ストップ信号54の
制御のもとでストップラッチ50に記憶される。ストッ
プラッチ50の出力はコンパレータ56に供給(入力)
され、コンパレータ56はさらに、ライン12上でメモ
リアドレスを受信する。コンパレータ56は、ライン1
2上のメモリアドレスがストップラッチ50に記憶され
たアドレスに到達したか否かを決定する。コンパレータ
56の出力はゲート58に供給されて、ゲート58はま
た、検査フルユニット80からの出力を受信する。検査
フルユニット80はバイトカウンタ75からの出力を受
信し、バッファ66が一杯であるたびに出力を指定す
る。ゲート58の出力はライン82上にフル信号を供給
し、フル信号は、命令バッファ66が一杯であるか、又
はストップアドレスが到達されたかを表示する。フル信
号82が指定されると、実行される更なるメモリ要求は
なくなる。バイトカウンタ75の出力はさらに第2の増
分ユニット84に供給され、その出力はカウントマルチ
プレクサ85の1入力に供給される。カウントマルチプ
レクサ85の別の入力は減算ユニット90から供給さ
れ、減算ユニット90はバイトカウンタ75からの出力
と、長さインディケータ74からの出力を受信する。減
算ユニット90は、命令バッファが少なくとも1つの命
令を含まない場合にはいつでもモア(more)信号9
2を指定する。
【0061】次に命令フェッチャの動作を説明する。開
始アドレス、即ち、命令のブロックの初めに最初の4バ
イトを識別するメモリアドレス、はライン40上におい
て取り出しマルチプレクサ34に供給される。ビギン信
号42はストップラッチ50をクリアし、取り出しポイ
ンタ65に開始アドレスををラッチするために指定され
る。メモリアクセスはそのアドレスにおいて行なわれ、
最初の4バイトはデータライン14に沿って命令バッフ
ァ66に供給される。ラッチ信号30は、これら4バイ
トをバッファ内に記憶させ、取り出しポインタ65への
次のアドレスをラッチする。この次のアドレスは、分岐
が以下においてさらに詳述されるようにして利用されな
い場合、増分ユニット38によって4バイトだけ増分さ
れた開始アドレスとなる。命令バッファ66はライン2
2に沿って命令を供給し、ライン70上の命令の長さを
長さインディケータ74に指示する。長さインディケー
タ74の出力は量信号86を供給して除去された命令の
サイズを指示し、さらに、減算ユニット90に対し入力
を供給する。減算ユニット90はバイトカウンタ75に
カウントを付与して、バイトカウンタ75が選択信号2
4を指定し、メモリから取り出された次の4バイトがバ
ッファ内のどこに記憶されるかを判断することを可能に
する。
【0062】既述されたように、ライン22上における
バッファからの命令の除去は次の信号48の制御のもと
で行なわれる。命令バッファ内に保持される命令が少な
くとも一つもない場合、モア信号92が指定される。命
令バッファが一杯であると、検査フルユニット80によ
ってフル信号82が指定されて、更なるメモリアクセス
を防止する。
【0063】ストップラッチ50は、フェッチャが通過
するべきでないアドレスを記憶するために使用される。
開始アドレスで取り出しを開始すると同時に、ストップ
ラッチ50はビギン信号42によって無効アドレスに対
しクリアされる。ストップラッチ50において特別のア
ドレスを記憶することによって、取り出しを停止するこ
とになる。ストップラッチ50の使用法は、フェッチャ
ユニットの適用に関する以下の説明においてより明白に
なる。
【0064】分岐命令が取り出され、復号化され且つ実
行された場合、分岐命令によって識別された目標位置
は、分岐が利用されるように有効分岐信号が供給される
場合に命令フェッチャに対してライン40上に開始アド
レスを付与するために使用される。このように、フェッ
チャは新しい目標位置から命令の取り出しを開始する。
【0065】図4の取り出し回路10は図5を参照して
述べられたタイプの2つの命令フェッチャを有する。次
に図6を参照して、分岐命令が命令フェッチャの活動を
制御する方法をより詳細に説明する。図6において、フ
ェッチャはフェッチャAとフェッチャBとして示されて
いる。システムはアービトレータユニット100を有
し、アービトレータユニット100は、各フェッチャか
らのフル信号とモア信号を用いてメモリへのアクセスの
ためにフェッチャAとフェッチャBとの間を裁定してど
のフェッチャがデータを必要としているかを決定する。
フェッチャAに対するフル信号及びモア信号は、アービ
トレータではモアAとフルAと称され、フェッチャBに
対するフル信号及びモア信号は、アービトレータではモ
アBとフルBと称される。フェッチャAについての参照
番号は、図5に示される命令フェッチャのそれらと対応
する。これらの番号はフェッチャBについては繰り返し
て使用されないが、フェッチャBは正確には、フェッチ
ャAと同一信号及び同一作用を有するからである。フェ
ッチャAとBの各アドレス出力12aはアドレスマルチ
プレクサ102を介してアドレスライン12に供給され
る。マルチプレクサはアービトレータ100からのライ
ン104上のSelA信号によって制御され、アービト
レータ100は、現在、実行用の命令の取り出し中であ
るフェッチャに優先権を付与する。これらフェッチャの
一つを用いて現ブロック(及び潜在的に次の後続ブロッ
ク)内の命令を取り出し、別のフェッチャを用いて目標
位置から開始する命令を取り出すことは理解されるだろ
う。各フェッチャはともにデータライン14に沿って命
令を受信し、それら命令をライン22a上において選択
マルチプレクサ104に供給する。マルチプレクサ10
4の出力22はプロセッサ17に接続され、プロセッサ
17は命令を復号化し且つ実行し、その結果を一時レジ
スタ11に書き込む。プロセッサ17は次の信号を供給
し、次の信号はライン48上で命令フェッチャに供給さ
れる。プロセッサ17は、フェッチャのモア信号92か
ら導出されるライン106上で待ち信号を受信する。プ
ロセッサ17は命令を実行すると、プロセッサ17は命
令ポインタレジスタ108を更新して、ポインタマルチ
プレクサ112を介して新IPライン110上に出力を
供給することによって実行される次の命令を指し示す。
ライン114上のラッチIP信号は、命令ポインタレジ
スタ108が更新される時を指示する。命令ポインタレ
ジスタ108の出力はカレントIPライン116上で命
令ポインタの現在値を付与する。
【0066】図6のコンピュータシステムはさらに、セ
ット分岐命令によって識別される目標位置を保持するた
めの目標ポインタレジスタ118と、分岐が用いられる
地点を識別する値を保持するための分岐ポインタレジス
タ120を有する。コンピュータシステムはさらに、能
動フェッチャスイッチ122を有し、これは、フェッチ
ャAとBの内でプロセッサ17に命令を供給している方
を制御する。さらに、比較ユニット124は、分岐ポイ
ンタレジスタ120と命令ポインタレジスタ108の各
出力を受信するように接続されている。ライン126上
のプロセッサ17から出力される検査はゲート128を
介して供給されて、ポインタマルチプレクサ112と活
動フェッチャスイッチ122を制御する。ゲート128
はさらに、比較ユニット124からのライン130上の
入力を有する。
【0067】プロセッサ17の実行回路はセット分岐命
令実行ユニット136とDO命令実行ユニット142を
有する。コンピュータシステムはさらに、分岐状態にあ
るか否かについてのシステムの状態の指示を保持するた
めの状態インディケータ132を有する。
【0068】図6に示される残りのゲートは、それらが
信号ライン間の接続をより明白に示すためにのみ完全性
を目的として図示されているので、ここでは説明を省略
する。
【0069】次に、図6のコンピュータシステムの動作
を説明する。プロセッサ17は図3のブロックAを実行
するものと仮定する。ブロックAの第1の命令の開始を
識別する開始アドレスはフェッチャAに供給される。第
1の命令はライン22a上でマルチプレクサ104に供
給され、マルチプレクサ104は能動フェッチャスイッ
チ122からのライン134上の信号によって制御さ
れ、その結果、フェッチャAからの命令はプロセッサ1
7に供給される。第1の命令は、プロセッサ17の一部
を形成するセット分岐実行ユニット136によって識別
されるセット分岐命令としてのセットCである。セット
分岐実行ユニット136は目標ライン138上に適切な
目標位置と、ライン140上にセット信号を生成する。
セット信号を用いてフェッチャBに対してビギン信号4
2を起動することによって、目標位置からの命令の取り
出しを開始するようにフェッチャは初期化される。目標
位置はさらに目標ポインタレジスタ118に記憶され
る。ブロックAの命令はフェッチャAによってメモリか
らプロセッサ17に供給され続けて実行される。確認命
令を実行すると同時に、確認命令に対する条件が評価さ
れて状態インディケータ132は適切に設定される。条
件ライン145はシステムの状態を指示し、これは後述
されるようにストップライン54と各フェッチャに選択
的に供給される。以下の説明では、システムが分岐状態
にあるように確認状態の条件が正であるように仮定す
る。ブロックA内のInstA−1を含むまでの更なる
命令の取り出し、復号化、且つ実行の後で、次の命令は
有効分岐命令である。これは、プロセッサ17の一部を
構成するDO命令実行ユニット142によって実行され
る。この実行ユニット142によって有効分岐命令を実
行すると同時に、分岐点は計算されて(次の後続ブロッ
クの初めの第1の命令の第1のアドレス)、ライン14
4に沿って分岐ポインタレジスタ120に供給される。
分岐点はさらに各フェッチャのストップラッチ50に供
給される。この場合、ストップ信号54は、条件ライン
145を介してフェッチャAに対して指定され、フェッ
チャBには指定されない。このため、フェッチャAはス
トップアドレスをラッチするので、そのアドレスが到達
されると取り出しを停止することになる。分岐ポインタ
レジスタ120に記憶される分岐点が命令ポインタレジ
スタ108に記憶される次の命令のアドレスと一致する
場合、比較ユニット124の出力によって有効分岐信号
はライン146上で指定されることになる。このため、
命令ポインタマルチプレクサ112は制御されて、目標
ポインタレジスタ118からの命令ポインタレジスタ1
08を更新し、目標ポインタレジスタ118は想起され
るように、セット分岐命令において識別された目標位置
を保持する。さらに、有効分岐信号146は能動フェッ
チャスイッチ122に供給されて、フェッチャBを分岐
が利用されるように目標位置からの取り出しを開始する
能動フェッチャとする。能動フェッチャスイッチ122
の出力は命令マルチプレクサ104を制御して、その入
力をスイッチする。
【0070】確認命令に対して評価された条件が、分岐
が利用されないことを示すと、DO分岐実行ユニット1
42によってDO命令を実行すると同時に、無効アドレ
スが分岐ライン144上に供給されて、能動フェッチャ
としてフェッチャAのストップラッチ50に記憶される
ことになる。このため、能動フェッチャはメモリから順
次命令を取り出し続けることになるので、分岐は利用さ
れないことになる。同様に、分岐ポインタレジスタ12
0における分岐点として記憶された無効アドレスは命令
ポインタレジスタ108に記憶されたアドレスと決して
一致することはないので、比較ユニットによって、有効
分岐信号146が指定されることはない。
【0071】図6のコンピュータシステムについての上
記説明は、分岐ポインタレジスタと、システムの状態を
保持するための状態インディケータを有するシステムに
対して付与される。記述されたように、これらは、有効
分岐信号が分岐点に設けられた条件付き信号である場合
の方法Cのような方法が利用される場合には省略するこ
とがある。セット分岐命令は上記のように目標ポインタ
レジスタ118内に目標位置を設定する。有効分岐命令
が実行されると、命令において定義された条件が評価さ
れる。条件が真である場合、有効分岐信号146が供給
されて、フェッチャBを分岐が利用されるように目標位
置からの取り出しを開始する能動フェッチャとする。目
標位置は目標ポインタレジスタ118では有効状態であ
り、上述したように取り出しを停止するように制御され
るフェッチャAの代わりに、目標位置から新しい命令の
取り出しを開始させる。このため、セット命令によって
定義される目標位置を有する更なる分岐が要求される
と、新しい命令が既に取り出されているという効果があ
る。
【0072】有効分岐命令が、命令において定義された
条件が真であることに対して実行されている場合、有効
分岐命令の後で実行ユニット142に入力するすべての
命令が削除されるのは、それら命令を実行する必要がな
いからである。その代わり、新しい命令の実行が開始さ
れる。
【0073】このように、条件が満足された場合に対し
有効分岐命令を実行すると同時に、フェッチャAとフェ
ッチャBはそれらの役割を交換する。
【0074】条件によって分岐が利用されないと決定さ
れた場合に有効分岐命令が実行される場合、各フェッチ
ャの役割に変化はない。
【0075】目標位置は有効状態にあり、次のセット命
令の実行まで目標ポインタレジスタ118に記憶され、
目標ポインタレジスタ118内の新しい目標位置をリセ
ットする。
【0076】図11はかかる主要部を示すブロック図で
ある。図11において、参照番号39と43は前述した
各図面にあるようなアドレスバスとデータバスをそれぞ
れ示している。図4の取り出し回路構成10は実行命令
フェッチャ402と目標命令フェッチャ404によって
実施される。これらはそれぞれ、フェッチャEとフェッ
チャTとして示されている。各フェッチャにおける同等
の要素は同一参照番号を付し、適切には接尾部E又はT
をそれぞれ有する。各フェッチャは、命令が取り出され
る次のアドレスの指示を保持するための取り出しポイン
タ406と、命令の新しいストリングにおける第1の命
令を指示する目標位置を保持するための開始ポインタ4
08を有する。各フェッチャはさらに、命令のキューを
保持するためのバッファ410を有する。
【0077】前述された目標ポインタレジスタ118は
セット分岐命令の実行に応答して目標位置の指示を保持
する。選択回路412は、図4の復号回路16にその命
令を供給するために実行フェッチャEとして動作するフ
ェッチャの一つを選択する。
【0078】シーケンサ414は有効分岐信号146を
受信し、選択回路412をライン411に沿って制御す
ることにより、フェッチャの役割を上述したように変更
させるべく前記信号を受信すると同時に変化する状態を
有する。
【0079】シーケンサ414はさらに、ライン418
Eと418Tに沿って、それぞれフェッチャ408Eと
408Tに信号を付与することができる。有効分岐信号
が生じると、シーケンサはライン418E上に信号を供
給して、フェッチャEに目標位置からの命令の獲得を開
始させる。
【0080】満足される場合と満足されない場合のそれ
ぞれの条件付き命令を考慮するために3つ以上の命令フ
ェッチャ付与するることが有効であることも時にはあ
る。これは特に、実行ユニットがパイプライン式であり
有効分岐条件の決定がパイプラインの終わりの方の段階
で行なわれる場合である。
【0081】図12はかかる配列を実施するためのシー
ケンスを示すブロック図である。図12では、実行命令
フェッチャ、目標命令フェッチャ、及び図11と図12
の間で共通のその他の特徴については、同一番号は図1
1の同等部分を示している。
【0082】図12のシステムはさらに、予測ミスフェ
ッチャ403としてのフェッチャMを有する。これは同
様に、次の命令を取り出すべきアドレスを保持するため
の取り出しポインタレジスタ406Mと、命令のキュー
を保持するためのバッファ410Mと、命令を取り出す
べき開始アドレスを保持するための開始ポインタレジス
タ408Mを有する。選択回路412は、復号回路構成
16に命令を供給するために実行フェッチャEとして動
作する3つのフェッチャの内の一つを選択するようにな
っている。
【0083】前述したように、実行フェッチャ402は
実行ユニットへの供給のための命令の通常のシーケンス
を取り出す。目標フェッチャ404は目標位置から始ま
る命令を取り出し、このように次の分岐目標命令を保持
する。
【0084】これら2つのフェッチャのほかに、予測ミ
スフェッチャ403は、満足されない場合の条件付き命
令から生じられる分岐に設けられる命令を取り出す。こ
れは、使用すべきでないと予測される分岐のアームと称
される。その後条件付き分岐が間違ったものと予測され
たことが判断されると、命令の正確なシーケンスがこの
フェッチャにおいて保持される。
【0085】セット分岐命令の実行と同時に、目標位置
の指示は前述のように目標ポインタレジスタ118にロ
ードされる。目標フェッチャ404はクリアされて目標
位置からの命令の取り出しを開始する。
【0086】利用される可能性がある場合の条件付きD
O命令(又は無条件DO命令)が実行ユニットに送られ
ると、3つのフェッチャの機能は次のように変更され
る。即ち、実行フェッチャ402は予測ミスフェッチャ
となり、目標フェッチャ404は実行フェッチャとな
り、さらに予測ミスフェッチャ403は目標フェッチャ
になる。新しい目標フェッチャ(前は予測ミスフェッチ
ャM)はクリアされて、目標ポインタレジスタ118に
記憶された目標位置から命令の取り出しを開始する。満
足されない可能性がある条件を示す条件付きDO命令が
実行ユニットに送られると、目標フェッチャと予測ミス
フェッチャの役割は次のように変わる。目標フェッチャ
Tは予測ミスフェッチャになり、予測ミスフェッチャM
は目標フェッチャになる。新しい目標フェッチャはクリ
アされて、目標ポインタレジスタ118に記憶された目
標位置で命令の取り出しを開始する。
【0087】これら条件付きDO命令の実行ユニットに
対するディスパッチ(タスク指名)の検出は検出ユニッ
ト413によって管理される。これは、プレディクト・
テイクン(Predict Taken)信号及びプレ
ディクト・アンテイクン(Predict Untak
en)信号をシーケンサ414に供給する。
【0088】DO命令が実行ユニットによって実行され
ると、分岐が取られるか否かが判断される。これが予測
と一致すると、すべて好都合にいく。しかしながら、分
岐の利用が間違って予測されると、間違って予測された
条件付きDO命令の後に実行ユニットに入力したすべて
の命令は削除されて、予測ミスフェッチャと実行フェッ
チャは役割を交換する。このため、シーケンサは実行ユ
ニットから予測ミス信号を受信する。
【0089】この配列は、本発明の概念に影響を与える
ことなく種々の異なる方法で実施可能である。例えば、
フェッチャが名称変更されると、出力目標フェッチャの
内容は入力目標フェッチャに複写される可能性がある。
これは、新しい目標フェッチャがこれら命令を再取り出
しする時間を無駄にしないことを意味する。一杯でない
場合には、出力目標フェッチャがフェッチを停止すると
ころからの取り出しを続けることになる。あるいはま
た、フェッチャは動的に名称変更される必要はないが、
それらの内容は適切なものとして転送される。これによ
って、シーケンサ414における状態の必要条件が排除
されることになる。
【0090】上述された命令フェッチャと回路構成は所
謂単純分岐を実行する能力がある。その他の特殊型の分
岐命令もまた有効である。これらの内の一つはカーネル
分岐である。多くのプロセッサは2つの動作モードを有
し、その一つは通常のプログラム用であり、もう一つは
特殊プログラム用である。これらはそれぞれ、ユーザモ
ードとカーネルモードと称される。カーネルモードはコ
ンピュータの動作を操作するのに使用されるモードに利
用可能な更なる命令を有する。このような分離は、間違
った又は有害なユーザモードプログラムが他のユーザモ
ードプログラムに損害を与えないようにするために必要
とされる。カーネルモードプログラムは正しいと仮定す
ることができる。従って、プログラムモードをユーザか
らカーネルに変更するための方法が必要とされる。これ
は、カーネルエントリポイントと称される特別目標位置
に対する分岐によって実行される。本発明では、これは
特殊セット分岐命令を使用して実施され、特殊セット分
岐命令は明示的に分岐目標位置を指定せずに暗黙値を使
用する。分岐が生じるとプログラムがカーネルモードに
変わる必要があることを指定するように使用されなけれ
ばならない状態もある。
【0091】別の特殊な種類の分岐命令は所謂記述子分
岐であり、これはポインタを介しての呼出しである。こ
の分岐命令はメモリ内のアドレスを指定するが、分岐の
目標位置を指示するアドレスではない。その代わり、分
岐用の目標位置を含むメモリ位置である。
【0092】図7はカーネル分岐と記述子分岐を実施す
るのに使用可能な命令フェッチャを示している。図7の
同等な符号は図5の同一部分を表わす。図7のフェッチ
ャは以下に示す追加回路構成を有する。カーネルラッチ
200はカーネル呼出しに使用するためのアドレスを保
持し、トラステッドコードによってプログラム可能であ
るにすぎない。カーネルラッチはそのラッチ入力で記憶
カーネル信号202を受信してライン204上のカーネ
ルアドレスをラッチする。カーネルマルチプレクサ20
6はその1入力においてカーネルアドレスを、また、別
の入力においてライン40上の通常開始アドレスを受信
する。カーネルマルチプレクサ206はライン208上
の分岐カーネル信号によって制御される。分岐カーネル
信号は、開始信号40が正常の場合に分岐を初期化する
ために指定されると同時に指定される。信号が指定され
ると、カーネルラッチ200に保持されるアドレスが、
開始信号によって供給されるアドレスよりも、マルチプ
レクサ206と、さらに別のマルチプレクサ208を介
して取り出しラッチ65に記憶される。
【0093】フェッチャはさらに記述子ラッチ210を
有し、記述子ラッチ210は取り出しポインタ65が命
令アドレス又は記述子アドレスを保持するかどうかを指
示する。記述子ラッチ210はライン212上の記述子
信号によって制御される。記述子ラッチ210によって
アドレスが記述子アドレスであると指示されると、記述
子ラッチはポインタレジスタ214を介してバッファ6
6に保持されたデータからロードされる。マルチプレク
サ208は、取り出しポインタ65に供給されたアドレ
スがポインタレジスタ214又はマルチプレクサ206
からのものであるかどうかを制御する。記述子指示ユニ
ット216は、正しい記述子アドレスを保持するために
バッファ66がポインタレジスタ214に対する十分な
情報を保持するか否かについて信号を送る。
【0094】図7のフェッチャはこのように、カーネル
分岐と記述子分岐を実行することができる。
【0095】別のタイプの分岐命令は手順呼出しであ
る。ここでは、手順がそれが出てくるプログラムの一部
分へ戻ることができるように適切な命令ポインタ値が保
管されることが必要である。従って、手順をプログラム
の異なる部分から呼出すことができる。図8は手順呼出
しのフローグラフを示している。図8はパート1、パー
ト2及び手順を含むプログラムを示す。パート1は、間
に呼出し命令が設けられた命令の連続ブロックとしての
ブロックAとブロックBを有する。同様に、パート2
は、間に呼出し命令が設けられた命令の連続ブロックと
してのブロックCとブロックDを有する。手順は、手順
命令PROCと戻り命令のシーケンスを有する。パート
1とパート2から成るコードの2つの部分はともに手順
を呼び出し、ともにそれぞれの制御フローに戻る。呼出
し命令は、特殊タイプのセット命令又はDO分岐命令と
して実施可能であり、この分岐命令は目標位置(SE
T)や分岐点(DO)を識別するのみならず、次の後続
ブロックの第1の命令の戻りアドレスを戻りレジスタに
保管させる。さらに、戻り命令は特殊タイプのセット命
令として実施可能であり、このセット命令はレジスタに
保持された戻りアドレスに対し分岐を実行する。
【0096】図9は手順呼出しを実施するために必要と
される状態レジスタを示している。ここでは、レジスタ
選択信号234によって制御される選択レジスタユニッ
ト232を備えたレジスタ230が含まれる。セット命
令又はDO分岐(又は呼出し)命令を実行すると同時
に、プログラムが戻る呼出し命令の後の次の命令のアド
レスは記憶信号238に応答して分岐ライン236上の
レジスタ230に記憶される。特殊セット(又は戻り)
命令が実施されると、分岐は特殊レジスタ230の記憶
される目標位置に対して実行される。
【0097】上述された実施例では、スイッチマルチプ
レクサの状態によって能動フェッチャとしてともに機能
可能な2つの命令フェッチャがある。図10はブロック
図の形式において、命令取り出し回路が2つの命令フェ
ッチャを有し、その一つは常に能動フェッチャであると
する別の実施例を示している。この実施例を図10を参
照してさらに詳細に説明する。図10の同一の符号は図
6の同一部分を表わすが、ダッシュ記号が付されてい
る。図10では、セット分岐命令実行回路136’とD
O分岐命令実行回路142’を備えた実行回路構成を含
むパイプライン式プロセッサ17’を示している。さら
に、命令ポインタレジスタ108’と目標ポインタレジ
スタ118’とが示されている。取り出し回路は能動フ
ェッチャと目標フェッチャを有する。能動フェッチャは
取り出しポインタ65’と命令バッファ66’を有す
る。目標フェッチャは同様に、取り出しポインタ65”
と目標命令バッファ66”を有する。
【0098】セット分岐命令を実行すると同時に、目標
ポインタレジスタ118’は初期化されて目標フェッチ
ャの取り出しポインタ65”に対し目標位置からの命令
の取り出しを開始するように指示する。一方、能動フェ
ッチャはメモリから連続的に命令を取り出し、それらを
プロセッサ17’に供給している。有効分岐命令を実行
すると同時に、コピーユニット300は目標フェッチャ
の目標命令バッファ66”の内容を能動フェッチャの命
令バッファ66’にコピーするように動作することによ
って、プロセッサ17’に供給される次の命令は目標位
置から始まる命令である。
【0099】図10の回路の実施については、図5、図
6及び図7の各回路に関連して示される情報によって図
10の回路の実施方法が明白であるために、その詳細な
説明はここでは省略する。
【0100】
【発明の効果】本発明は上記のように構成されているの
で、1つのセット分岐命令によりセットアップされる目
標位置を使用して多数の分岐が可能であるという効果を
有する。
【図面の簡単な説明】
【図1】周知の分岐システムの概略図。
【図2】無条件分岐のための本発明の分岐システムの概
略図。
【図3】条件分岐のための本発明の分岐システムの概略
図。
【図4】パイプラインプロセッサの簡易ブロック図。
【図5】命令フェッチャの回路図。
【図6】分岐命令を実行するためのコンピュータシステ
ムの回路図。
【図7】カーネル(核)及び記述子を有する命令フェッ
チャの回路図。
【図8】手続きの呼び出しを示す概略図。
【図9】手続き呼び出しを実行するための状態を示す概
略図。
【図10】命令取り出し回路の代替え実施を示すブロッ
ク図。
【図11】非予測フェッチャを示すブロック図。
【図12】予測フェッチャを示すブロック図。
【符号の説明】
12 アドレス 14 データ 17 プロセッサ 100 アービトレータ 108 命令ポインタレジスタ 118 目標ポインタレジスタ 120 分岐ポインタレジスタ 122 フェッチャ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ネイサン マッケンジー シドウェル イギリス国 BS2 9UD ブリストル セント ワーバーフ クリーブ ストリ ート 21

Claims (37)

    【特許請求の範囲】
  1. 【請求項1】 命令を取り出し、復号し、実行するため
    のコンピュータシステムであって、該システムは:それ
    ぞれの記憶位置で複数の命令を保持するための記憶回路
    を有し、前記複数の命令が命令ストリング中に配置さ
    れ、各ストリングが第1の命令と後続命令のセットとを
    含むことと;前記記憶回路から一連の命令を取り出すた
    めの命令取り出し回路を有し、次の取り出し動作が行わ
    れ得る次のアドレスの指示を提供するためのインディケ
    ータを含むことと;取り出された命令を実行するための
    実行回路を有し、ここで前記命令ストリングの少なくと
    も幾つかが、各々が後続命令を取り出すことができる目
    標位置の指示を提供するセット分岐命令(SET)を含
    み、後続命令が異なる命令ストリングから得られ、ここ
    で前記命令取り出し回路が前記セット分岐命令(SE
    T)の実行に応答して動作され、前記目標位置から開始
    する前記異なる命令ストリングからの新しい命令と、前
    記セット分岐命令を含む前記ストリングからの後続命令
    とを前記後続命令を実行し続けながら並行に取り出すこ
    とと;前記目標位置の指示を保持するための目標記憶装
    置を有し、前記指示が、前記セット分岐命令(SET)
    を実行すると前記記憶装置にロードされ、後続セット分
    岐命令の実行まで有効指示として前記記憶装置中に保持
    されることと;実行されるべき更なる命令が前記新しい
    命令であることを示す有効分岐(DO)信号の生成に応
    答し、前記実行回路に前記新しい命令を実行させ、前記
    命令取り出し回路に前記目標位置から開始する新しい命
    令を再び取り出させる選択回路を有することと;を含む
    コンピュータシステム。
  2. 【請求項2】 前記命令取り出し回路が2つの命令バッ
    ファ、即ち前記実行回路に接続される後続命令を保持す
    る第1バッファ、及び新しい命令を保持する第2バッフ
    ァを含み、ここで、前記有効分岐(DO)信号の生成に
    応答して前記第2バッファの内容が前記第1バッファに
    コピーされる請求項1に記載のコンピュータシステム。
  3. 【請求項3】 前記命令取り出し回路は、前記後続命令
    及び前記新しい命令をそれぞれ取り出すための2つの命
    令フェッチャを含み、ここで、前記選択回路が前記命令
    フェッチャのうちの選択された1つを前記実行回路に接
    続する様に動作可能である請求項1に記載のコンピュー
    タシステム。
  4. 【請求項4】 予測される条件付き命令を実施するため
    に命令を取り出す第3の命令フェッチャを前記命令取り
    出し回路が含む請求項3に記載のコンピュータシステ
    ム。
  5. 【請求項5】 次の命令が取り出される得るアドレスの
    指示を保持するための第1のレジスタを含む請求項1、
    2、3又は4に記載のコンピュータシステム。
  6. 【請求項6】 目標記憶装置が、新しい命令のストリン
    グの第1命令を取り出すことができるアドレスを保持す
    る請求項1乃至5のいずれかに記載のコンピュータシス
    テム。
  7. 【請求項7】 セット分岐命令が、新しい命令のストリ
    ングの第1命令を取り出すことができるアドレスを保持
    する特別なレジスタを識別する請求項1乃至5のいずれ
    かに記載のコンピュータシステム。
  8. 【請求項8】 目標記憶装置が、新しい命令のストリン
    グの第1命令を取り出すことができるアドレスを保持す
    るメモリ位置のアドレスを保持する請求項1乃至5のい
    ずれかに記載のコンピュータシステム。
  9. 【請求項9】 前記取り出された命令を復号するための
    復号回路を有し、前記命令取り出し回路、復号回路及び
    実行回路がパイプラインに配列されることを含む請求項
    1乃至8のいずれかに記載のコンピュータシステム。
  10. 【請求項10】 前記少なくとも1つの命令ストリング
    が、更なる命令を含み、更なる命令が分岐点を決定し、
    分岐点の後で新しい命令が実行されることになり、前記
    分岐点の識別により前記選択回路に前記有効分岐信号が
    生成される請求項1乃至9のいずれかに記載のコンピュ
    ータシステム。
  11. 【請求項11】 前記更なる命令が分岐点で位置づけら
    れて、分岐点の後で前記新しい命令を実行できる請求項
    10に記載のコンピュータシステム。
  12. 【請求項12】 前記更なる命令が分岐点の前のストリ
    ングに位置付けられて、実行されるべき更なる命令が分
    岐点の後で前記新しい命令になり、前記更なる命令が分
    岐点を示すコンピュータシステムであって、更にここで
    前記分岐点を保持するための分岐点レジスタを含む請求
    項10に記載のコンピュータシステム。
  13. 【請求項13】 前記更なる命令が前記セット分岐命令
    と異なる命令である請求項10、11又は12に記載の
    コンピュータシステム。
  14. 【請求項14】 前記更なる命令が条件を定義し、その
    条件が満足される場合だけに、実行されるべき更なる命
    令が新しい命令になることを決定する請求項13に記載
    のコンピュータシステム。
  15. 【請求項15】 前記セット分岐命令が分岐点を識別
    し、分岐点の後で実行されるべき更なる命令が新しい命
    令となるコンピュータシステムであって、更に前記分岐
    点を記憶する分岐点レジスタと、前記分岐点が第1レジ
    スタにより示されたアドレスと整合する時に前記有効分
    岐信号を選択回路に生成するための比較回路と、を含む
    請求項5に記載のコンピュータシステム。
  16. 【請求項16】 前記分岐点の後の次の命令のアドレス
    である復帰アドレスを保持するための復帰レジスタを含
    み、ここで前記更なる命令は、前記有効分岐信号を生成
    し、前記復帰アドレスを前記復帰レジスタ中に保管する
    のに有効であり、更にここで、前記分岐命令が前記復帰
    レジスタを識別して目標位置を示す、請求項10乃至1
    5のいずれかに記載のコンピュータシステム。
  17. 【請求項17】 命令を取り出し、復号し、実行するた
    めにコンピュータを動作する方法であって、前記コンピ
    ュータがそれぞれの記憶位置で複数の命令を保持する記
    憶回路を有し、前記複数の命令が命令ストリング中に配
    置され、各ストリングが第1の命令と後続命令のセット
    とを含む、方法を提供し、該方法は:前記記憶回路から
    命令のシーケンスを取り出して、次の取り出し動作を行
    うアドレスの指示を提供するステップと;前記命令を復
    号するステップと;各命令を順番に実行するステップで
    あって、ここで前記命令ストリングの少なくとも幾つか
    が、後続命令を取り出すことができる目標位置の指示を
    提供するセット分岐命令(SET)を各々含み、後続命
    令が異なる命令ストリングから得られるステップと;前
    記セット分岐命令が実行されると、後続のセット分岐命
    令を実行するまで目標記憶装置中に前記目標位置の指示
    を有効指示として保持し、前記目標位置から開始する前
    記異なる命令ストリングからの新しい命令と、前記分岐
    命令を含むストリングからの後続命令とを並行に取り出
    すステップと;実行されるべき更なる命令が前記新しい
    命令であることを示す有効分岐信号が生成されるまで前
    記後続命令を実行し続けるステップと;前記新しい命令
    の実行を開始することにより前記有効分岐信号に応答
    し、前記目標位置から開始する新しい命令を再び取り出
    すステップと;を含むコンピュータ動作方法。
  18. 【請求項18】 前記後続命令が第1バッファに保持さ
    れ、前記新しい命令が第2バッファに保持されるステッ
    プであって、更に前記有効分岐信号により前記第2バッ
    ファの内容が前記第1バッファにコピーされる請求項1
    7に記載のコンピュータ動作方法。
  19. 【請求項19】 第1命令フェッチャが前記後続命令を
    取り出し、第2命令フェッチャが前記新しい命令を取り
    出し、前記第1及び第2命令フェッチャのどちらかを選
    択する前記有効分岐有効信号が実行命令を提供する請求
    項17に記載のコンピュータ動作方法。
  20. 【請求項20】 有効分岐信号が、分岐点を決定して、
    そのあとで新しい命令を実行できる更なる命令の実行に
    応答して生成される請求項17、18又は19に記載の
    コンピュータ動作方法。
  21. 【請求項21】 前記更なる命令が条件を定義し、その
    条件が満足される場合だけに、実行されるべき更なる命
    令が新しい命令となることを決定する請求項20に記載
    のコンピュータ動作方法。
  22. 【請求項22】 前記分岐命令が分岐点を識別し、分岐
    点の後で実行されるべき更なる命令が新しい命令とな
    り、ここで前記分岐点が次の命令が取り出すことができ
    るアドレスと整合する時に前記有効分岐信号が生成され
    る請求項17乃至21のいずれかに記載のコンピュータ
    動作方法。
  23. 【請求項23】 新しい命令ストリングの第1命令を取
    り出すことができるアドレスをセット分岐命令が目標位
    置として識別する請求項17乃至22のいずれかに記載
    のコンピュータ動作方法。
  24. 【請求項24】 セット分岐命令が、目標位置を保持す
    る特別なレジスタを識別する請求項17乃至22のいず
    れかに記載のコンピュータ動作方法。
  25. 【請求項25】 セット分岐命令が目標位置を保持する
    メモリ位置のアドレスを識別する請求項17乃至22の
    いずれかに記載のコンピュータ動作方法。
  26. 【請求項26】 前記更なる命令の実行により復帰アド
    レスが復帰レジスタ中に保管され、ここで前記分岐命令
    が目標位置を示すために復帰レジスタを識別する請求項
    20又は21に記載のコンピュータ動作方法。
  27. 【請求項27】 命令を取り出し、復号し、実行するた
    めのコンピュータシステムであって:該コンピュータシ
    ステムは、 複数の命令をそれぞれの記憶位置に保持するための記憶
    回路を有し、前記複数の命令が命令ストリングに配列さ
    れ、各ストリングが第1命令と後続命令のセットとを含
    むこと;前記記憶回路から一連の命令を取り出すための
    命令取り出し回路を有し、次の取り出し動作を行うこと
    ができる次のアドレスの指示を提供するためのインディ
    ケータを含むこと;取り出された命令を実行するための
    実行回路を有し、ここで前記命令ストリングの少なくと
    も1つが、後続命令を取り出すことができる目標位置の
    指示を提供するセット分岐命令であって、後続命令が異
    なる命令ストリングから得られるセット分岐命令(SE
    T)と、前記セット分岐命令と異なり、分岐点に位置付
    けられ、その分岐点の後で前記新しい命令が実行される
    有効分岐命令と、を含み、ここで前記命令取り出し回路
    が前記セット分岐命令(SET)の実行に応答して動作
    され、前記目標位置から開始する前記異なる命令ストリ
    ングからの新しい命令と、前記セット分岐命令を含む前
    記ストリングからの後続命令とを前記後続命令を実行し
    続けながら並行に取り出すこと;前記有効分岐(DO)
    命令の実行に応答し、前記有効分岐命令により決定され
    た条件が満足される場合に前記実行回路に前記新しい命
    令を実行させる選択回路を有すること;を含むコンピュ
    ータシステム。
  28. 【請求項28】 前記命令取り出し回路が2つの命令バ
    ッファ、即ち前記実行回路に接続される後続命令を保持
    するための第1バッファと、新しい命令を保持するため
    の第2バッファとを含み、ここで前記第2バッファの内
    容が前記有効分岐(DO)信号の生成に応答して前記第
    1バッファにコピーされる請求項27に記載のコンピュ
    ータシステム。
  29. 【請求項29】 前記命令取り出し回路が前記後続命令
    と前記新しい命令とをそれぞれ取り出すために2つの命
    令フェッチャを含み、ここで前記選択回路が前記命令フ
    ェッチャの選択された1つを前記実行回路に接続するた
    めに動作可能である請求項27に記載のコンピュータシ
    ステム。
  30. 【請求項30】 後続命令を取り出すことができるアド
    レスの指示を保持するための第1レジスタを含む請求項
    27、28又は29に記載のコンピュータシステム。
  31. 【請求項31】 セット分岐命令により識別される目標
    位置の指示を保持するための目標レジスタを含む請求項
    27、28、29又は30に記載のコンピュータシステ
    ム。
  32. 【請求項32】 目標レジスタが、新しい命令の第1命
    令を取り出せるアドレスを保持する請求項31に記載の
    コンピュータシステム。
  33. 【請求項33】 セット分岐命令が、新しい命令のスト
    リングの第1命令を取り出せるアドレスを保持する特別
    なレジスタを識別する請求項31に記載のコンピュータ
    システム。
  34. 【請求項34】 目標レジスタが、新しい命令のストリ
    ングの第1命令を取り出せるアドレスを保持するメモリ
    位置のアドレスを保持する請求項31に記載のコンピュ
    ータシステム。
  35. 【請求項35】 前記取り出された命令を復号するため
    の復号回路を含み、前記命令取り出し回路、復号回路及
    び実行回路がパイプラインに配置される請求項27乃至
    34のいずれかに記載のコンピュータシステム。
  36. 【請求項36】 前記分岐点の後の後続命令のアドレス
    である復帰アドレスを保持するための復帰レジスタを含
    み、ここで前記更なる命令が前記有効分岐信号を生成
    し、前記復帰アドレスを前記復帰レジスタ中に保管する
    のに有効であり、ここで前記分岐命令が目標位置を示す
    ために前記復帰レジシタを識別する請求項27乃至30
    のいずれかに記載のコンピュータシステム。
  37. 【請求項37】 命令を取り出し、復号し、実行するた
    めにコンピュータを動作する方法であって、前記コンピ
    ュータがそれぞれの記憶位置で複数の命令を保持する記
    憶回路を有し、前記複数の命令が命令ストリング中に配
    置され、各ストリングが第1の命令と後続命令のセット
    とを含む、方法を提供し、該方法は:前記記憶回路から
    命令のシーケンスを取り出して、次の取り出し動作を行
    うことができる次のアドレスの指示を提供するステップ
    と;前記命令を復号するステップと;各命令を順番に実
    行するステップであって、ここで前記命令ストリングの
    少なくとも1つは、後続命令を取り出すことができる目
    標位置の指示を提供するセット分岐命令(SET)を含
    み、後続命令が異なる命令ストリングから得られるステ
    ップと、 前記セット分岐命令が実行されると、前記目標位置から
    開始する前記異なる命令ストリングからの新しい命令
    と、前記分岐命令を含むストリングからの後続命令とを
    並行に取り出すステップと;有効分岐命令により決定さ
    れる条件が満足される場合に、後で新しい命令が実行で
    きる分岐点に位置される有効分岐命令であって、実行さ
    れるべき更なる命令が前記新しい命令であることを示す
    有効分岐命令が実行されるまで前記後続命令を実行し続
    けるステップと;前記新しい命令の実行を開始すること
    により前記有効分岐信号に応答するステップと;を含む
    コンピュータ動作方法。
JP7179312A 1994-06-22 1995-06-22 コンピュータシステム及びその動作方法 Expired - Fee Related JP2746549B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9412487-2 1994-06-22
GB9412487A GB9412487D0 (en) 1994-06-22 1994-06-22 A computer system for executing branch instructions

Publications (2)

Publication Number Publication Date
JPH0844562A true JPH0844562A (ja) 1996-02-16
JP2746549B2 JP2746549B2 (ja) 1998-05-06

Family

ID=10757116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7179312A Expired - Fee Related JP2746549B2 (ja) 1994-06-22 1995-06-22 コンピュータシステム及びその動作方法

Country Status (5)

Country Link
US (2) US5961637A (ja)
EP (2) EP1003095B1 (ja)
JP (1) JP2746549B2 (ja)
DE (2) DE69522385D1 (ja)
GB (1) GB9412487D0 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016224972A (ja) * 2016-08-08 2016-12-28 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6467035B2 (en) * 1997-09-08 2002-10-15 Agere Systems Guardian Corp. System and method for performing table look-ups using a multiple data fetch architecture
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6611910B2 (en) * 1998-10-12 2003-08-26 Idea Corporation Method for processing branch operations
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
JP3606435B2 (ja) * 1999-09-29 2005-01-05 富士通株式会社 モードを変更する分岐命令を制御する命令処理装置および方法
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6820193B1 (en) * 1999-12-17 2004-11-16 Koninklijke Philips Electronics N.V. Branch instructions with decoupled condition and address
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
US7085915B1 (en) * 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
GB0025053D0 (en) 2000-10-12 2000-11-29 Sgs Thomson Microelectronics Compiling computer programs including branch instructions
GB0025052D0 (en) 2000-10-12 2000-11-29 Sgs Thomson Microelectronics Compiling computer programs including branch instructions
FR2821450B1 (fr) * 2001-02-27 2004-07-09 St Microelectronics Sa Procede de gestion d'instructions de branchement au sein d'un processeur, en particulier un processeur de traitement numerique du signal, et processeur correspondant
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
DE10254653B4 (de) * 2002-11-22 2009-05-28 Infineon Technologies Ag Vorrichtung zur Steuerung der Verarbeitung von Datenwörtern eines Datenstroms
US20050055544A1 (en) * 2003-07-30 2005-03-10 International Business Machines Corporation Central processing unit having a module for processing of function calls
JP2005078234A (ja) * 2003-08-29 2005-03-24 Renesas Technology Corp 情報処理装置
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US20050223202A1 (en) * 2004-03-31 2005-10-06 Intel Corporation Branch prediction in a pipelined processor
US20050257035A1 (en) * 2004-05-12 2005-11-17 International Business Machines Corporation Linked instruction buffering of basic blocks for asynchronous predicted taken branches
JP3760999B2 (ja) * 2004-06-15 2006-03-29 セイコーエプソン株式会社 情報処理装置、マイクロコンピュータ及び電子機器
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US8046569B2 (en) * 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Processing element having dual control stores to minimize branch latency
US8671202B2 (en) 2007-12-20 2014-03-11 Ooma, Inc. Mechanisms for role negotiation in the establishment of secure communication channels in peer-to-peer environments
US20090276537A1 (en) * 2007-12-20 2009-11-05 Deverick James W Mechanisms for role negotiation in the establishment of secure communication channels in peer-to-peer environments
US9952869B2 (en) * 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
US20130305017A1 (en) * 2012-05-08 2013-11-14 Alexander Rabinovitch Compiled control code parallelization by hardware treatment of data dependency
US9535701B2 (en) 2014-01-29 2017-01-03 Telefonaktiebolaget Lm Ericsson (Publ) Efficient use of branch delay slots and branch prediction in pipelined computer architectures
US9430245B2 (en) 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
GB2551548B (en) * 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254342A (ja) * 1985-08-30 1987-03-10 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
JPH02161524A (ja) * 1988-08-15 1990-06-21 Evans & Sutherland Computer Corp パイプラインコンピュータに使用する分岐システムとその動作方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3426330A (en) * 1966-02-14 1969-02-04 Burroughs Corp Central data processor
US3551895A (en) * 1968-01-15 1970-12-29 Ibm Look-ahead branch detection system
US3573854A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254342A (ja) * 1985-08-30 1987-03-10 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
JPH02161524A (ja) * 1988-08-15 1990-06-21 Evans & Sutherland Computer Corp パイプラインコンピュータに使用する分岐システムとその動作方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016224972A (ja) * 2016-08-08 2016-12-28 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム

Also Published As

Publication number Publication date
EP1003095A2 (en) 2000-05-24
JP2746549B2 (ja) 1998-05-06
US7047399B2 (en) 2006-05-16
US20020078330A1 (en) 2002-06-20
DE69534148D1 (de) 2005-05-19
GB9412487D0 (en) 1994-08-10
EP0689131B1 (en) 2001-08-29
EP0689131A1 (en) 1995-12-27
EP1003095A3 (en) 2001-02-28
EP1003095B1 (en) 2005-04-13
DE69534148T2 (de) 2006-02-16
DE69522385D1 (de) 2001-10-04
US5961637A (en) 1999-10-05

Similar Documents

Publication Publication Date Title
JP2746549B2 (ja) コンピュータシステム及びその動作方法
US5903750A (en) Dynamic branch prediction for branch instructions with multiple targets
JP2846406B2 (ja) 分岐処理方法及び分岐処理装置
EP0380859B1 (en) Method of preprocessing multiple instructions
EP0628184B1 (en) Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JP2875909B2 (ja) 並列演算処理装置
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US20040193858A1 (en) Zero-overhead loop operation in microprocessor having instruction buffer
WO1995016954A1 (fr) Circuit de traitement d'instructions dans un systeme informatique
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JPS6341093B2 (ja)
KR20080023723A (ko) 분기 명령들을 예측하기 위한 방법 및 장치
US5502827A (en) Pipelined data processor for floating point and integer operation with exception handling
US5522084A (en) Method and system for invalidating instructions utilizing validity and write delay flags in parallel processing apparatus
JPS634208B2 (ja)
EP0550289A2 (en) A mechanism to detect stores into the instruction stream
US5809324A (en) Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US6243805B1 (en) Programming paradigm and microprocessor architecture for exact branch targeting

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees