JP2003525493A - マルチコマンド命令語を有するデータプロセッサ - Google Patents

マルチコマンド命令語を有するデータプロセッサ

Info

Publication number
JP2003525493A
JP2003525493A JP2001563991A JP2001563991A JP2003525493A JP 2003525493 A JP2003525493 A JP 2003525493A JP 2001563991 A JP2001563991 A JP 2001563991A JP 2001563991 A JP2001563991 A JP 2001563991A JP 2003525493 A JP2003525493 A JP 2003525493A
Authority
JP
Japan
Prior art keywords
branch
target
command
instruction
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001563991A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2003525493A publication Critical patent/JP2003525493A/ja
Pending 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

(57)【要約】 複数の分岐コマンドの実行の結果から得られる予測された目標命令にアクセスするための効率的な機構を提供すること。複数の分岐コマンドを含むVLIW命令において予測された分岐の目標命令にアクセスする効率的な機構を提供すること。分岐予測の効率を向上させること。 【課題】 【解決手段】 並列実行のためのいくつかのコマンドを含むVLIW命令のような、複数の分岐コマンドを含むことができるコマンドグループとして、命令のアドレス指定を行うデータプロセッサ。このプロセッサは、グループにおける分岐コマンドから期待された使用される分岐コマンドを選択する。このプロセッサは、期待された用いられる分岐コマンドに対する仮の目標も選択し、そして制御フローを仮の目標により識別されるさらなるコマンドグループに、仮に、リダイレクトする。このプロセッサは、以前に実行された分岐コマンドの目標を格納するための連想目標メモリを含む。目標が、グループにおけるコマンドを識別する連想アドレスにより、検索される。仮の目標が、仮の目標に関連する連想アドレスと期待された用いられるコマンドの表示との間の一致を基礎として選択される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、命令のアドレス指定を、複数の分岐コマンドを含むことができるコ
マンドグループとして行うデータプロセッサに関する。
【0002】
【従来の技術】
VLIWプロセッサは、プロセッサによる同時実行に対して少なくとも2つのコマ
ンドからなる命令を有する。一つの命令におけるコマンドは、複数の分岐コマン
ドを含むことができる。このようなプロセッサの具体例は、このようなマルチ分
岐コマンドに影響を与える方法が記載されている米国特許第4,833,599号に見出
すことが出来る。
【0003】 分岐は、プログラムの実行における遅延の原因となる。分岐予測によってこれ
らの遅延を低減させることは、公知である。分岐予測により、プロセッサは、そ
の分岐の条件が実際にテストされる前に、分岐に従うべきか否かを仮に決める。
条件がテストされ、この決定が正しいことが判明すると、これはより速い実行を
可能にする。分岐遅延をさらに低減させるために、プロセッサは、分岐の目標ア
ドレス、またはその目標アドレスの場所に格納されている目標命令を分岐目標メ
モリに格納することができる。続いて分岐が再び実行に用いられると、目標アド
レスまたは目標命令は、目標メモリからロードされ、そしてプロセッサに与えら
れる。これは、実行を進めるために仮にそれを使用する。
【0004】 米国特許第5,903,750号には、キャッシュラインからいくつかの命令のバンド
ルを一度にロードするプロセッサのための分岐予測が記載されている。このバン
ドルは、複数の分岐命令を含むことができる。これらの命令に対する分岐予測を
別々に取り扱う代わりに、この米国特許においては、バンドルを、分岐予測が一
つしか行われない単一命令として取り扱っている。
【0005】 分岐命令が異なる目標アドレスをバンドルに格納するエントリは、分岐目標メ
モリにバンドルに対してなされる。何れの分岐命令が、バンドルにおける全ての
分岐命令を実行した後の最終結果を決定するかを予測することにより、一つの分
岐予測が、バンドルにおける全ての分岐命令に対して、行われる。予測された分
岐命令に対する目標アドレスは、このバンドルに対して格納されていてかつ推測
実行に対して使用される目標アドレスの中から選択される。
【0006】 例えば、バンドル内に3つの連続分岐命令が存在する場合、このバンドルに対
しては3つの目標アドレスが格納される。第一分岐命令が用いられずに、第二分
岐命令が用いられるであろうと予測されると、このバンドルに対しては第二分岐
目標アドレスが選択され、そしてこの目標アドレスを含むキャッシュラインが、
投機的に実行されるであろう。これにより、バンドルがフェッチされなければな
らない次のキャッシュラインを決定するために必要な遅延が最小になる。しかし
ながら、全ての分岐命令の分岐目標アドレスに対して、メモリは確保される。バ
ンドルにおける一つ以上の分岐命令が極めてまれにしか用られない場合、これは
非能率である。
【0007】
【発明を解決するための手段】
本発明の目的は、複数の分岐コマンドの実行の結果から得られる予測された目
標命令にアクセスするための効率的な機構を提供することである。
【0008】 本発明の他の目的は、複数の分岐コマンドを含むVLIW命令において予測された
分岐の目標命令にアクセスする効率的な機構を提供することである。
【0009】 発明の更なる目的は、分岐予測の効率を向上させることである。
【0010】 本発明によると、分岐目標に対するメモリは、これらのアドレスでのアドレス
または命令の何れかの形態で設けられている。このメモリは、連想アドレスの部
分として予測して用いられる分岐コマンドのVLIW命令におけるポジションを使用
して、連想アドレスによりアドレス指定が行われる。このようにして、このプロ
セッサは、他のポジションでのコマンドに対して他の分岐目標が格納されている
か否かに拘わらず、命令内の各ポジションに対して分岐目標を個々に格納するか
格納しないかという自由度を有する。分岐目標を命令ごとに格納する場合に比較
し、これは、格納する必要がある分岐目標の数を低減させる。
【0011】 本発明の一実施例によると、分岐目標に対するメモリは、各連想が、分岐目標
とタグとを含む連想セットを含む、連想型に設定される。命令のアドレスは、目
標を見いだすためのセットを見いだすためのインデクスとして使用される。命令
におけるコマンドの分岐目標は、コマンドのポジションの識別を含むタグと連想
させて、格納される。命令の実行に応じて、命令のアドレスがセットを選択する
ために使用され、そして分岐コマンドが用いられることが、予測されると、分岐
コマンドのポジションが、一致するタグとの連想を見いだすために使用される。
予測されたコマンドを選択するために必要な遅延の間、命令アドレスを使用して
、セットには、すでにアクセスすることができる。このことは、用いられる分岐
コマンドのポジションの予測が得られるとすぐに、セットからの連想が、使用可
能になることを意味する。
【0012】 本発明の他の実施例の場合、プロセッサは、将来の命令の結果を予測するため
に、分岐コマンドを有する命令の結果の統計情報を格納する分岐履歴メモリを有
する。この統計情報は、状態の識別を含み、そして命令の実行に応じて、その命
令に対する状態は、以前の状態と、(存在する場合)用いられる命令からの分岐
コマンドとに依存して、更新される。この状態は、次に命令が実行される時に、
用いられることが期待される分岐コマンドのポジションと、この分岐がそのポジ
ションで用いられる多くの分岐コマンドの実行の飽和カウントとを表す。この状
態は、期待されたコマンドに対してのみ、このようなカウントを表す。すなわち
、期待された異なるコマンドへの状態遷移があるときのみ、他のコマンドに対す
るカウントの表示が、開始される。
【0013】 例えば、命令に対する状態は、あるポジションでのコマンドの結果として分岐
を用いることが、期待されることを表すことが出来る。この状態は、分岐が用い
られるそのコマンドの、1つまたは2つの何れかの実行のカウントも表す。この分
岐が、命令が実行される際に、用いられず、かつこの状態が2のカウントを表す
場合、このコマンドがまだ期待されたコマンドであるが、このカウントが2から1
に変化する状態への遷移が行われるであろう。この分岐が、用いられず、かつカ
ウントが1であると、他の分岐コマンド(存在する場合)が、この他のコマンド
に対して1のカウントを有する、用いられることが予測される分岐であることを
表す状態への遷移がなされるであろう。
【0014】 本発明のプロセッサのこれらのかつ他の有利な態様は、添付の図を使用してよ
り詳細に議論されるであろう。
【0015】
【発明を実施するための形態】
図1は、プロセッサアーキテクチャを示す。アーキテクチャは、プロセッサ10
、プログラムカウンタ12、命令メモリ14、および分岐予測ユニット16を含む。プ
ログラムカウンタ12は、命令メモリ14のアドレス入力に結合されている。命令メ
モリ14は、分岐予測ユニット16を介してプロセッサ10に結合されている命令出力
を有する。プロセッサ10は、プログラムカウンタ12と分岐予測ユニット16に結合
されている分岐出力を有する。
【0016】 プロセッサ10は、送出スロットユニット100、多くの機能ユニット102a-c、お
よびレジスタファイル104を有する、VLIWプロセッサとして示されている。機能
ユニット102a-cの中には、プログラムカウンタ12と分岐予測ユニット16に結合さ
れている出力を有する分岐ユニットが存在する。オプションとして、いくつかの
異なる機能ユニットを、同じ送出スロットに接続し、命令により、いくつかの機
能ユニットの何れのユニットがコマンドを実行すべきかを選択させるようにする
ことができる。この場合、いくつかの機能ユニットの一つを、分岐ユニットとし
、他のユニットを、分岐ユニットにしないように出来るので、送出スロットが分
岐に到ることが出来るか否かは、命令に依存する。本発明によると、命令が送出
スロットに接続されている分岐ユニットを選択しない場合、その命令の送出スロ
ットに対しては分岐目標を格納しないことが可能になる。
【0017】 分岐予測ユニット16は、分岐履歴メモリ160、選択ユニット161、分岐目標メモ
リ162、マルチプレクサ164、および制御ユニット166を含む。制御ユニット166は
、プロセッサ10の分岐出力に結合されている入力を有する。制御ユニット166は
、分岐履歴メモリ160と分岐目標メモリ162とに各々結合されている出力を有する
。分岐履歴メモリ160は、選択ユニット161に結合されている出力を有する。選択
ユニット161は、分岐目標メモリ162に結合されている出力と、マルチプレクサ16
4の制御入力に結合されている出力を有する。マルチプレクサ164は、命令メモリ
14に結合されている入力と、分岐目標メモリ162に結合されている入力を有する
【0018】 動作中、命令メモリ14は命令プログラムを含む。VLIWプロセッサのこのケース
の場合、各命令は、機能ユニット102a-cの異なるユニットに対する多くのコマン
ドからなる。プログラムカウンタ12は、命令メモリ14からフェッチされる命令の
逐次アドレスを含む。これらのアドレスに応答して、命令メモリ14は、プロセッ
サ10にアドレス指定が行われた命令を出力する。プロセッサ10は、命令を受信し
、そして種々の機能ユニット102a-cについての各命令からのコマンドを配布する
【0019】 コマンドが分岐コマンドであって、かつこの分岐コマンドを実行する機能ユニ
ット102a-cが、この分岐が用いられるべきであると決定すると、これは、プログ
ラムカウンタ12に送られる。機能ユニット102a-cは、この分岐が用いられるべき
であるとの決定と、次の命令がフェッチされるべき分岐の目標アドレスを送る。
複数の機能ユニット102a-cが、分岐が用いられるべきであるとの信号を送る場合
、プログラムカウンタ12は、決定のある型を使用してどの分岐が用いられるべき
であるかを決定する。このような決定の具体例には、この分岐が用いられるべき
であるとの信号が送られる機能ユニット102a-cによって優先権の順序を割り当て
ることが、挙げられる。
【0020】 分岐により、プログラムの実行時に遅延が生じる。このことは、連続命令に対
してコマンド実行の異なる段を並列に実行するパイプライン型プロセッサに、特
に、言える。並列実行は、実行時間の速度を向上させるが、一つ以上の分岐コマ
ンドを含む命令に従う場合のように、どの命令が連続的に実行されるべきである
かが知られていない場合には、並列実行は、困難である。(もし存在する場合に
は)どの分岐コマンドに従うべきかと言う決定に到るには、多くの実行段が必要
である。これらの段の間では、一つ以上の分岐コマンドを含む命令に従って、ど
の命令が実行されるべきであるかを確実に決定することは不可能である。
【0021】 分岐予測ユニット16は、一つ以上の分岐コマンドを含む命令の後で、プロセッ
サ10が実際に分岐コマンドの結果についてプログラムカウンタ12に指示すること
が可能となる前に、どの命令が、実行されるべきであるかを予測することにより
、この問題に対処している。プロセッサ10は、分岐コマンドを有する命令の結果
が決定されるまで、データの上書きのような、いかなる不可逆アクションも行わ
ずに、予測された命令を、仮に、実行する。
【0022】 分岐予測ユニット16は、分岐履歴メモリ160と分岐目標メモリ162から、それぞ
れ、分岐履歴情報と分岐目標情報を使用する命令を予測する。分岐履歴情報は、
この命令からの一つ以上の分岐コマンドが、以前に、プログラムカウンタ12に変
化をもたらした頻度についての統計情報を表す。選択ユニット161は、この情報
を使用して、用いられる分岐が、予測されるべきであるか否か、そして、命令に
おけるどの分岐コマンドが、その目標アドレスがプログラムカウンタ12に影響を
及ぼすことになる、用いられる分岐となるかを決定する。
【0023】 選択ユニット161は、マルチプレクサ164にこの決定を送る。通常、マルチプレ
クサ164は、命令メモリ14からの命令をプロセッサ10に渡すが、選択ユニットが
、用いられる分岐が予測されたことを示す信号を送ると、マルチプレクサ164は
、その代わりに分岐目標メモリ162からの命令を渡す。
【0024】 分岐目標メモリ162は、分岐コマンドの目標であるアドレスに位置する目標命
令のコピーを含む。所定の分岐コマンドおよびソース命令における分岐コマンド
の位置の表示を含むソース命令のアドレスが、与えられると、各命令の検索が可
能となるように、これらのコピーは格納される。これに代えて、目標命令のアド
レスのみを、分岐目標メモリに格納して、それらを、命令メモリ14(図1に図示
されていないこれの代替に対する付加的な回路)から検索することもできる。
【0025】 分岐目標メモリ162は、一つ以上の分岐コマンド(このアドレスは、プログラ
ムカウンタから使用可能である)を含むソース命令のアドレスと、選択ユニット
161により選択された、そのソース命令内の選択された分岐コマンド位置の表示
とを受信する。この情報により分岐目標メモリは、(分岐目標メモリ162におい
て使用可能であるならば)その分岐コマンドに対する目標命令(またはそのアド
レス)を検索する。選択ユニット161がそれが用いられるべき分岐を期待するこ
とをマルチプレクサ164に示すと、目標命令が、マルチプレクサ164に与えられ、
プロセッサ10に渡される。したがって、プロセッサ10は、予測された命令を仮に
実行することが可能になる。何の目標命令も使用可能でない場合、分岐目標メモ
リ162は、これをマルチプレクサ164に送り、次いでマルチプレクサ164は命令メ
モリ14からの命令を渡す。
【0026】 図1は、分岐目標アドレスがどのように得られるかを説明するために使用され
る設計上の要素しか示していない。空のパイプライン段の数を最小にするために
、処理アーキテクチャのパイプライン構造およびパイプラインへの予測された命
令の正確なポイントの注入のような図1に示されていない分岐目標を使用するこ
とについての公知のインプリメンテーションの詳細は、プロセッサ10のニーズに
より必要に応じて選択されることは、当業者には、理解されるであろう。同様に
、分岐コマンドが最終的に決定されない限り、予測された命令に応答して不可逆
の動作を防ぐ回路は、当業者には公知であり、そして明確さの理由から図1には
図示されていない。同じことは、分岐目標が誤って予測される場合に、正しい状
態にプロセッサ10をリストアする回路についても当てはまる。
【0027】 図2は、分岐目標メモリ162の一実施例を示す。この実施例は、分岐目標メモリ
のセット連想インプリメンテーションを示す。この実施例は、タグ比較ユニット
22に結合されている出力を有するセットメモリ20を含む。セットメモリ20は、一
つ以上の分岐コマンドを含むソース命令のアドレスの第一部分によりアドレス指
定が行われる(このアドレスは、ここではソースアドレスと呼ばれている)。(
図示されていない選択ユニット161から受信される)選択された分岐コマンドの
表示と共にソースアドレスの残りの部分は、タグ比較ユニット22に与えられる。
【0028】 動作中、ソースアドレスの第一部分は、セットメモリ20におけるメモリー位置
のセットを選択する。各メモリー位置は、分岐コマンドのタグおよび目標命令を
格納する。タグは、その分岐コマンドが発生するソース命令におけるその分岐コ
マンドの位置を表す。タグは、そのソース命令のソースアドレスの残りの部分も
表す。ソース命令のソースアドレスに応答して、セットメモリは、ソースアドレ
スにより選択されるタグおよび目標命令のセットを出力する。タグ比較ユニット
22は、これらのタグを、選択ユニット161(図示せず)により選択された分岐コ
マンドの位置の表示およびプログラムカウンタ12(図示せず)から(おそらくパ
イプライン段により)受信されるソースアドレスの残りの部分と比較する。セッ
トメモリ20によるタグ出力の何れもが位置の表示およびソースアドレスの残りの
部分と一致すると、タグ比較ユニット22は、対応する目標命令を出力する。
【0029】 タグにおけるソースアドレスの残りの部分とソース命令における分岐コマンド
の位置の表示とは、タグ比較ユニット22における比較に対する情報については、
同じ役割を演ずることに、留意する必要がある。各タグは、ソースアドレスの残
りの部分とソース命令における関連した分岐コマンドの位置の表示とを結合させ
る。このようなタグは、すべての目標命令に対して(すなわち、同じソース命令
におけるコマンドが異なった目標に対して異なった完全タグを使用する必要が有
る場合に)格納される。したがって、同じソース命令における異なった分岐コマ
ンドに対する目標命令は、分岐目標メモリ162において互いに独立に格納させる
ことができる。例えば、ソース命令における目標命令は、同じ命令における他の
コマンドに対してではなく、一つの分岐コマンドに対して格納されるかもしれな
いので、他のソース命令からの目標命令を格納するための余地が得られる。
【0030】 セットメモリ20は、分岐履歴メモリ160が分岐履歴情報を読み込む時間の間、
ソースアドレスの第一部分によりアドレス指定を行われるセットを検索するため
に必要な動作を実行し、および/または選択ユニット161は、用いられる分岐コ
マンドが予測されているか否かを決定しそしてもしそうである場合には、その分
岐コマンドがソース命令のどこに位置するかを決定する。すなわち、セットメモ
リ20は、関連した分岐コマンドの位置が判明する前に、このセットを検索する。
このような事前の読み込みは、処理の速度を上げる。ソース命令における分岐コ
マンドの位置が、タグ比較ユニット22における比較に対して、セットを読んだ後
にしか必要でないので、このことが可能になる。
【0031】 制御ユニット166は、プロセッサによるソース命令の実行の後、分岐履歴メモ
リ160および分岐目標メモリ162の内容を更新する。ソース命令が一つ以上の分岐
コマンドを含む場合、制御ユニット166は、(もし存在する場合には)これらの
コマンドの内の何れがプログラムカウンタの値を変化させるかを監視する。用い
られる分岐コマンドの目標命令が分岐目標メモリ162(コントロール)内にまだ
存在しない場合には、ユニット166は、この目標命令を、ソース命令および命令
における分岐コマンドの位置を識別するタグと組み合わせて、分岐目標メモリ16
2に格納させる。
【0032】 分岐履歴メモリ160は、ソース命令の以前の実行についての統計情報を表す状
態についての情報を格納する。分岐履歴メモリは、ソース命令のアドレスを使用
してアクセスすることができる連想メモリ(例えば、充分に連想的、セット連想
的または直接マップされている)であることが、好ましい。分岐目標メモリ162
が、少なくともソース命令のアドレスと連想アドレスとしてのコマンドの位置の
両方を使用し、分岐履歴メモリ160が、連想アドレスとしてソース命令のアドレ
スのみを使用する点で、分岐履歴メモリ160が分岐目標メモリ162と異なることは
、理解されるであろう。分岐履歴メモリ160は、連想アドレスとしていかなる命
令のポジションも使用しない。
【0033】 制御ユニットは、分岐履歴メモリ160からソース命令に対して格納されている
状態を得る(この状態は、ソース命令を処理する以前の段での分岐予測の部分と
して読み込まれる)。ソース命令における分岐の状態および結果から、制御ユニ
ット166は、更新された状態を計算する。分岐履歴メモリから何の状態も使用可
能でない場合、デフォルト状態が生成され、そして分岐を予測しかつ更新された
状態を計算するために使用される。
【0034】 図3は、分岐履歴メモリ160における状態情報およびこれらの状態間の可能な遷
移により仮定することができる状態の状態図の一例を示す。この例は、分岐コマ
ンドを並列処理することが出来る3機能ユニット102a-cしか有しないプロセッサ1
0に対するものである。このダイアグラムは、8つの状態を示す。
【0035】 このダイアグラムは、「分岐が無い」結果の予測、およびソース命令における
第一、第二または第三位置からの分岐コマンドの使用される結果に対する状態を
、それぞれ、示す。最初の4つの状態34、35、36、37は、それぞれ、4つの異なっ
た結果に対する強い優先を表す。第二の4つの状態30、31、32、33は、それぞれ
、分岐コマンドの4つの異なった結果に対する弱い優先を表す。
【0036】 分岐履歴メモリ160が、ソース命令の結果に対して強い優先を表し、かつその
結論が実行の結果として発生する状態を識別する情報を格納すると、その状態は
影響を受けないままである。異なった結論が発生しかつその状態が強い優先を有
すると、強い優先を有する常態と同じ結果に対して弱い優先を有する状態への遷
移が行われる。その状態が、ソース命令の結論に対する弱い優先と、その結論が
実行の結果として発生することとを表すと、弱い優先を有する元の常態と同じ結
論に対する強い優先を有する状態への遷移が、発生する。異なった結論が発生し
かつこの状態が弱い優先を有すると、ソース命令の実行の結論に対する弱い優先
を有する状態への遷移が、なされる。状態について何の情報も命令に対してまだ
格納されていない場合、デフォルト状態には、例えば、ソース命令における最も
高い優先順位に対し弱い優先が仮定される。状態表現の代わりに、各々が、使用
される分岐の数または関連した位置における分岐コマンドによるそれの欠如を計
数して、個別の飽和カウントをソース命令における異なった位置に対して維持す
ることも出来た。しかしながら、飽和カウントと同様な情報が、好ましい結論に
対してのみ示されるので、図3に示される状態を使用することにより、必要とす
るメモリは少なくて済む。もちろん、より多くの状態を使用すると、好ましい結
論に対する優先においてより多くの階調を、表すことができる。この場合、状態
図は、個別カウントと比較してより大きな節約さえもたらす。
【0037】 分岐履歴メモリ160に状態についての情報を格納することは、異なったバイナ
リラベルを種々のノードに割り当てることにより実現することができる。図3の
具体例においては、3-ビットラベルを、使用することができる。これらのラベル
を割り当てる一つの方法は、強い優先が有るか弱い優先が有るかを表す1ビット
と、4つの可能な結論のどれに対し優先が有るかを表す2ビットを用いることであ
る。もちろん、他の状態図を用い、優先の強さおよび好ましい結論を識別するた
めのビットの適切な数に対しより多くのビットを使用して、他の割当てを使用す
ることもできる。
【0038】 制御ユニット166は、分岐履歴メモリ160からの状態についての情報を受信し、
更新された状態を計算しそして更新された状態を表す情報を分岐履歴メモリ160
に書き戻す。選択ユニット161は、状態についての情報を受信し、そして(もし
存在する場合には)この状態が優先を表すソース命令における位置を選択する。
この選択は、目標メモリ162に与えられる。「分岐が無い」が好まれるか否かに
ついての情報は、マルチプレクサ164に出力され、命令メモリ14からのまたは分
岐目標メモリ162からの命令がプロセッサ10に渡されるべきか否かが示される。
【図面の簡単な説明】
【図1】 プロセッサアーキテクチャを示す。
【図2】 分岐目標メモリを示す。
【図3】 分岐履歴状態の遷移図を示す。
【符号の説明】
10 プロセッサ 12 プログラムカウンタ 14 命令メモリ 16 分岐予測ユニット 100 送出スロットユニット 102a 機能ユニット 102b 機能ユニット 102c 機能ユニット 104 レジスタファイル 160 分岐履歴メモリ 161 選択ユニット 162 分岐目標メモリ 164 マルチプレクサ 166 制御ユニット
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B013 BB02 DD04 5B033 AA02 BE05 【要約の続き】 待された用いられるコマンドの表示との間の一致を基礎 として選択される。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数の分岐コマンドを含むことができるコマンドグループとして命令のアドレ
    ス指定を行うデータプロセッサであって、前記データプロセッサが、 * グループの前記分岐コマンドから期待された用いられる分岐コマンドを選択
    するコマンド選択ユニットと、 * 前記期待された用いられる分岐コマンドに対し仮の目標を選択する目標選択
    ユニットとを有し、 前記データプロセッサが、制御フローを前記仮の目標によって識別されるコマ
    ンドのさらなるグループに仮にリダイレクトし、 前記目標選択ユニットが、以前に実行された分岐コマンドの目標を格納する連
    想目標メモリを含み、 前記目標メモリが連想を格納するための位置のセットを有し、 目標および連想アドレスの各々が前記グループのコマンドを識別することが可能
    で、 前記目標選択ユニットが、前記仮の目標と関連する前記連想アドレスと前記期
    待された用いられるコマンドの表示との間の一致に基づいて前記仮の目標を選択
    する、データプロセッサ。
  2. 【請求項2】 前記連想目標メモリが、セット連想メモリで、 前記セット連想メモリが、連想を格納する位置のセットを有し、 目標およびタグの各々が、前記グループのコマンドを識別することが可能で、 前記目標選択ユニットが、前記グループの命令アドレスに基づいて前記目標メ
    モリ内の前記セットを指標付けし、そして前記仮の目標と関連する前記タグと前
    記期待された用いられるコマンドの表示との間の一致に基づいて指標付けされた
    目標から前記命令アドレスによって前記仮の目標を選択する、 請求項1に記載のデータプロセッサ。
  3. 【請求項3】 前記目標メモリが、前記コマンド実行ユニットによる前記期待されたコマンド
    の決定により前記セットを並列に検索するように構成されている、 請求項2に記載のデータプロセッサ。
  4. 【請求項4】 複数の機能ユニットを有するVLIWアーキテクチャを有し、 前記グループが、VLIW命令であり、 その特定グループが実行されると、前記プロセッサが、各機能ユニット上の各
    特定のグループ内の前記コマンドの全ての実行を同時に始める、 請求項1に記載のデータプロセッサ。
  5. 【請求項5】 前記コマンド選択ユニットが、コマンドの各グループのそれぞれに対し、状態
    に関する情報を格納する分岐履歴メモリを有し、 前記状態が、前記グループにおいて用いられることが期待される前記コマンド
    の表示およびそのコマンドに対する優先の程度を、前記グループ内の他のコマン
    ドに対する優先の程度を表さずに、表し、 前記程度が、前記グループ内の全ての他のコマンドに対する優先の少なくとも
    2つの異なるレベルから選択可能である、 請求項1に記載のデータプロセッサ。
JP2001563991A 2000-02-28 2001-02-12 マルチコマンド命令語を有するデータプロセッサ Pending JP2003525493A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP00200679 2000-02-28
EP00200679.9 2000-02-28
PCT/EP2001/001463 WO2001065362A1 (en) 2000-02-28 2001-02-12 Data processor with multi-command instruction words

Publications (1)

Publication Number Publication Date
JP2003525493A true JP2003525493A (ja) 2003-08-26

Family

ID=8171104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001563991A Pending JP2003525493A (ja) 2000-02-28 2001-02-12 マルチコマンド命令語を有するデータプロセッサ

Country Status (6)

Country Link
US (1) US7577827B2 (ja)
EP (1) EP1236095B1 (ja)
JP (1) JP2003525493A (ja)
AT (1) ATE464600T1 (ja)
DE (1) DE60141807D1 (ja)
WO (1) WO2001065362A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127115B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Group formation with multiple taken branches per group
US9280398B2 (en) 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
FR3021433B1 (fr) * 2014-05-21 2016-06-24 Kalray Systeme de synchronisation inter-processeurs

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833599A (en) 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5414822A (en) 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
GB9521978D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Computer instruction supply
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6014742A (en) * 1997-12-31 2000-01-11 Intel Corporation Trace branch prediction unit
US6304962B1 (en) * 1999-06-02 2001-10-16 International Business Machines Corporation Method and apparatus for prefetching superblocks in a computer processing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets

Also Published As

Publication number Publication date
ATE464600T1 (de) 2010-04-15
EP1236095A1 (en) 2002-09-04
US7577827B2 (en) 2009-08-18
US20010020265A1 (en) 2001-09-06
DE60141807D1 (de) 2010-05-27
EP1236095B1 (en) 2010-04-14
WO2001065362A1 (en) 2001-09-07

Similar Documents

Publication Publication Date Title
US5954815A (en) Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address
US7269715B2 (en) Instruction grouping history on fetch-side dispatch group formation
US7711930B2 (en) Apparatus and method for decreasing the latency between instruction cache and a pipeline processor
US6101577A (en) Pipelined instruction cache and branch prediction mechanism therefor
EP1029268B1 (en) Method relating to handling of conditional jumps in a multi-stage pipeline arrangement
US6304961B1 (en) Computer system and method for fetching a next instruction
US5553254A (en) Instruction cache access and prefetch process controlled by a predicted instruction-path mechanism
WO1998025196A2 (en) Dynamic branch prediction for branch instructions with multiple targets
KR20080023723A (ko) 분기 명령들을 예측하기 위한 방법 및 장치
US20040098540A1 (en) Cache system and cache memory control device controlling cache memory having two access modes
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US7017030B2 (en) Prediction of instructions in a data processing apparatus
EP3264263A1 (en) Sequential monitoring and management of code segments for run-time parallelization
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache
JP3725547B2 (ja) 限定ラン分岐予測
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
JP2003525493A (ja) マルチコマンド命令語を有するデータプロセッサ
JP3146077B2 (ja) プロセッサ
JP3532835B2 (ja) データ処理装置およびプログラム変換装置
US6061775A (en) Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
US7085916B1 (en) Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
US7475223B2 (en) Fetch-side instruction dispatch group formation
US6874080B2 (en) Context processing by substantially simultaneously selecting address and instruction of different contexts
US11507372B2 (en) Processing of instructions fetched from memory

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070323

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080208

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20111118

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120321