JP5280521B2 - 分岐予測における使用のためのマルチモードレジスタファイル - Google Patents

分岐予測における使用のためのマルチモードレジスタファイル Download PDF

Info

Publication number
JP5280521B2
JP5280521B2 JP2011510563A JP2011510563A JP5280521B2 JP 5280521 B2 JP5280521 B2 JP 5280521B2 JP 2011510563 A JP2011510563 A JP 2011510563A JP 2011510563 A JP2011510563 A JP 2011510563A JP 5280521 B2 JP5280521 B2 JP 5280521B2
Authority
JP
Japan
Prior art keywords
mode
register file
register
branch
multimode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011510563A
Other languages
English (en)
Other versions
JP2011521382A (ja
Inventor
コドレスキュ、ルシアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011521382A publication Critical patent/JP2011521382A/ja
Application granted granted Critical
Publication of JP5280521B2 publication Critical patent/JP5280521B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • 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/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

この中に開示された発明概念の実施形態は一般にデータ処理システムの分野に関する。より具体的には、この中に開示された発明概念の実施形態はマルチモードレジスタファイルに関する。
プロセッサ内で命令を処理するために、処理のステージは(命令を得るために)フェッチする、(命令をオペレーションおよび複数オペランド、例えば、オペランドAプラスオペランドBに分類するために)デコードする、レジスタファイルからオペランドを検索する、命令を実行する、およびその結果(例えば、オペランドAプラスオペランドBの合計)をライトバック(writeback)することを含むことができる。パイプライニングの前に、プロセッサは次の命令に進む前に1つの命令についてのステージのすべてを実行するであろう。計算速度を増加させるべく、パイプラインは1命令を種々のステージの処理に分けるために複数プロセッサ内で実施された。従って、1つの命令を処理する1つのステージは、次の命令を処理するもう1つのステージが同じクロックサイクルの間に実行されるのと同時に実行されることができる。例えば、第1の命令が第1のクロックサイクルの間にデコードされる一方で、第2の命令は第1のクロックサイクルの間にフェッチされることができる。その後、オペランドが第2のクロックサイクルの間に第1の命令についてレジスタファイルから検索されている一方で、第2の命令はデコードされることができ、そして第3の命令は第2のクロックサイクルの間フェッチされることができる。パイプライニングによる複数の命令の同時処理はプロセッサの計算速度を増加さることができる。
分岐命令はプログラム内の異なる位置で命令を計算し始めることにプロセッサを向けることができる。例えば、分岐命令である第5の命令は第20番目の命令を処理し始めるためにプロセッサをジャンプすることができる。けれども、パイプライニングを使用して、プロセッサは分岐命令を実行する前に次の命令(例えば、命令6,7,および8)を検索してデコードし始めることができる。従って、もし分岐が必要とされれば、処理されている最中の命令は取り除かれ、そして分岐された新命令が処理される。処理されるべきでない命令を処理することは時間を要し、したがって処理速度に影響を及ぼす。さらに、誤推測の命令もエネルギーを浪費する。
結果として、プロセッサは分岐命令後のどの命令がフェッチされるべきかをプロセッサについて予測する(即ち、分岐が必要とされるか否かを決定する)ために分岐予測ロジックを含むことができる。分岐予測ロジックはプロセッサが失敗した分岐のための命令を間違ってフェッチする回数を減らす。分岐予測ロジックは分岐履歴表および/または分岐ターゲットキャッシュを含むことができる。分岐履歴表は予測されるべき各分岐命令についての分岐履歴のある変更を蓄積する。分岐履歴は分岐が各分岐命令の実行のために必要とされるかまたはされないかの記録である。分岐履歴表は2ビット・バイ・nビット(two by net bit)のテーブルであってもよく、ここにおいてn列のおのおのはプログラムの異なる分岐命令に対応し、そしてn列のおのおのについての2ビットはその列に対応する分岐命令について分岐を必要とするか否かを予測するためにプロセッサによって使用される。より多くの列は、より多くの分岐命令が予測されうることを意味する。2つのビットは、等しい1−1は分岐を必要とすると予測することを意味し、0−0は分岐を必要としないと予測することを意味し、そして1−0または0−1は不確かを意味しうるカウンタとして動作することができる。それらのビットは、予測されるべき各分岐命令について分岐履歴を観察することによって訓練される。もし分岐が必要とされれば、その時カウンタは(1−1に達するまで)増加される。もし分岐が必要とされなければ、その時カウンタは(0−0に達するまで)減少される。
分岐ターゲットキャッシュは予測されるべき各分岐命令についての通報受端を蓄積する。1つの実施形態では、分岐ターゲットキャッシュは分岐ターゲットキャッシュの列またはレジスタの数(例えば、分岐ターゲットごとに1列またはレジスタ)に等しい数の分岐命令について通報受端を蓄積することができる。分岐ターゲットキャッシュは1分岐命令について1分岐によって指摘された命令のアドレスを蓄積することができる。プロセッサ内に分岐履歴表および/または分岐ターゲットキャッシュを含むことと共に1つの問題は分岐履歴表および分岐ターゲットキャッシュが追加のロジックであることであり、従ってプロセッサの面積およびそれによる電力消費を増加させることである。
1実施形態では、マルチモードレジスタファイルが記述される。マルチモードレジスタファイルは第1のモードの間1オペランドを含む。マルチモードレジスタファイルはさらに第2のモード内のオペランドを置換する補助情報を含む。
この中で開示された1つまたは複数の実施形態の利点は分岐予測ロジックおよび電力保存を含むための回路への最小のサイズ増加を含むことができる。
この実例となる実施形態はこの中に開示された発明の概念を制限または限定することはないが、しかしそれの理解を助けるべく実例を提供することに言及される。本開示の他の局面、利点、および特徴は、以下のセクション:図面の簡単な説明、詳細な説明、および請求項を含む、本願全体を検討した後に明白になるであろう。
これらのおよび他の特徴、局面、およびこの中に開示された本発明の概念の利点は以下の詳細説明が添付図面を参照して読まれる時によりよく理解される。
図1は、分岐予測を実施するためのプロセッサ内の例示的な回路を示す概略図である。 図2は、図1における概略図の例示的なレジスタファイルユニットを示す概略図である。 図3は、図1における概略図の例示的なレジスタファイルユニットを示す代替の概略図である。 図4は、第1のモードにおける使用のためのまたは第2のモードにおける使用のための図3における概略図のレジスタファイルの例示的な分離を示す概略図である。 図5は、1つのマルチモードレジスタファイル内で情報を蓄積するための例示的な方法を示すフローチャートである。 図6は、マルチモードレジスタファイルの各モードによる複数のマルチモードレジスタファイル内の情報を蓄積するための例示的な方法を示すフローチャートである。 図7は、マルチモードレジスタファイルを含むことができるディジタル信号プロセッサを組み込んでいる1例の携帯型通信装置を示す一般的な図である。 図8は、マルチモードレジスタファイルを含むことができるディジタル信号プロセッサを組み込んでいる1例のセルラー電話機を示す一般的な図である。 図9は、マルチモードレジスタファイルを含むことができるディジタル信号プロセッサを組み込んでいる1例の無線インターネットプロトコル電話機を示す一般的な図である。 図10は、マルチモードレジスタファイルを含むことができるディジタル信号プロセッサを組み込んでいる1例の携帯型ディジタルアシスタントを示す一般的な図である。 図11は、マルチモードレジスタファイルを含むことができるディジタル信号プロセッサを組み込んでいる1例のオーディオファイルプレーヤーを示す一般的な図である。
詳細な説明
明細書全体を通して、説明のため、この中に開示された発明の概念の徹底的な理解を提供するために多数の特定の詳細が述べられる。しかしながら、この中に開示された発明の概念がいくつかのこれらの特定の詳細無しに実行されうることはこの分野の技術者には明白であるだろう。他の事例では、周知の構成および装置がこの中に開示された発明の概念の基礎をなす原理を不明瞭にすることを避けるためにブロック図の形式で示される。
この中に開示された発明の概念の実施形態は分岐予測における使用のためのマルチモードレジスタファイルに関連する。プロセッサの各スレッドはそれ自身のレジスタファイルを有することができる。例えば、6スレッドプロセッサは6レジスタファイルを有することができる。スレッドの実行中、レジスタファイルはスレッド用のプロセッサによって退けられたオペランドを蓄積する。例えば、命令/オペレーション“オペランドAプラスオペランドB”について、レジスタファイルは後の検索のためにその合計を蓄積ことができる。
マルチスレッドアーキテクチャでは、すべてのスレッドが同時に実行しなくもよい。例えば、オーディオファイルを聞くことは1つのスレッドを動作させることができるが、しかし他のスレッドは必要とされないかもしれない。したがって、1つの実施形態では、インアクティブスレッドに関連するレジスタファイルはそれぞれのアクテイブスレッドに対応しない、分岐予測情報のような、補助情報を蓄積するために使用されることができる。分岐予測情報は動作中の命令の流れについての分岐を予測するためにプロセッサによって使用されることができる。結果として、マルチスレッドアーキテクチャのレジスタファイルは、第1のモードでは、それのそれぞれのスレッドのためのオペランドを蓄積し、あるいは第2のモードでは、分岐予測情報のような、補助情報を蓄積していることができる。
分岐予測情報は分岐履歴表および/または分岐ターゲットキャッシュを含むことができる。マルチモードレジスタファイルが第2のモードにありそして分岐予測情報を蓄積している時に、レジスタファイルは分岐履歴表およびアクティブスレッドのための分岐ターゲットキャッシュの1つまたは両方を蓄積することができる。結果として、レジスタファイル内に蓄積されたテーブルはこのレジスタファイルと関連しないアクティブスレッド内の分岐を予測するために使用される。一度第2のモード内のレジスタファイルに対応するスレッドは再びアクティブになるべきであり(即ち、このスレッドの命令はプロセッサによって実行されるべきであり)、新しくアクティブなスレッドのためのオペランドを蓄積するためにこのレジスタファイルは第2のモードから第1のモードに切り替えられる。1つの実施形態では、レジスタファイルが第1のモードに切り替わる時に、レジスタファイル内に蓄積された任意の補助情報はマルチスレッドアーキテクチャ内の現在インアクティブなスレッドのための1つまたは複数のレジスタに転送されることができる。もう1つの実施形態では、レジスタファイル内に蓄積された全部または一部の補助情報は失われるかもしれない。分岐予測情報の損失がプロセッサに分岐予測情報を再編集させる一方で、分岐予測の正当性はプロセッサがそのような情報を再編集する時に保証される。
もしマルチスレッドアーキテクチャの全スレッドがアクティブであれば、その時レジスタファイルのすべてはそれらそれぞれのスレッドのためのオペランドを蓄積している第1のモード内にある。結果として、どのレジスタファイルも分岐予測情報を蓄積するために第2のモード内にはないので分岐予測は実行されることはできない。他方、複数のスレッドはインアクティブであることができ、そしてインアクティブスレッドのためのレジスタファイルの全部とは限らず分岐予測情報を蓄積するために必要であるかもしれない。従って、プロセッサはどのレジスタファイルが第2のモード内にあるべきかに優先順位をつけるための(例えば、分岐予測情報を蓄積するための)ロジックを含むことができる。さらに、プロセッサはどのスレッドが命令ストリームを実行すべきかそしてどのスレッドがインアクティブであるべきかを決定するためのロジックを含み、従って複数のスレッドの間で命令実行に優先順位をつけることができる。
図1〜4の概略図は分岐予測を実施するためのプロセッサ内の例示的な回路の実施形態を示す。図1の概略図は分岐予測のためのプロセッサ100内の例示的な回路を示す。図2の概略図は図1内の概略図の例示的なレジスタファイルユニット102を示し、ここにおいてレジスタファイルユニット102は複数のレジスタファイルを含む。図3の概略図は複数のレジスタファイルおよびそれらのそれぞれのレジスタファイルレジスタを含んでいる図1内の概略図の例示的なレジスタファイルユニット102を示す。図4の概略図は第1のモード内での使用のためのまたは第2のモード内での使用のための図3におけるレジスタファイルユニット102のレジスタファイルの例示的な分離を示す。
プロセッサ100(図1)は分岐を予測するための分岐予測ロジックを含むことができ、ここにおいて分岐予測情報104はレジスタファイルユニット102内に蓄積される。このロジックはプロセッサ100内に含まれた他の演算回路のほかにあってもよい。以前に述べたように、分岐予測情報104は分岐履歴表および分岐ターゲットキャッシュの1つまたは両方であってもよい。もう1つの実施形態では、分岐予測情報はプロセッサに分岐を予測することを試みさせるための任意の情報であってもよい。図1では、分岐予測情報104は分岐ターゲットキャッシュである。レジスタファイルユニット102はレジスタファイルユニット102からデータを読み出すための読出しポート106、レジスタファイルユニット102にデータを書き込むための書込みデータポート108、およびアクセス(読出しまたは書込み)されるべきレジスタファイルユニット102の特定のアドレスを識別するためのアドレスバス110を含む。図示されたように、レジスタファイルユニット102は制御ロジック112に結合されてもよい。
1つの実施形態では、制御ロジック112は分岐命令が命令パイプライン114からの命令を処理することに出会うかどうかおよび分岐が出会った分岐命令について予測されるべきかどうかを決定する。1つの実施形態では、分岐命令はパイプライン内の命令の復号の間に決定される。分岐が出会われるかどうかの決定において、制御ロジック112は出会った命令のアドレスが分岐命令の既知のアドレスと一致するかどうかを決定できる。1つの実施形態では、出会った命令のアドレスはその命令のプログラムカウンタ116から引き出されることができる。既知の分岐命令のアドレスは分岐予測情報104からまたは別個のリストからアクセスされることができる。もし出会った命令のアドレスが分岐命令のアドレスと一致すれば、その時制御ロジック112は出会った命令が分岐命令であると想定する。
プロセッサ100はその後この分岐予測情報104をアクセスすることによってこの分岐の通報受端を決定できる。1つの実施形態では、プロセッサ100は予測情報118についてレジスタファイルユニット102をアクセスするためにアドレスバス110上に送られるべき分岐命令についてのプログラムカウンタ116からのアドレスを作り出す。分岐予測情報104は(分岐のターゲットアドレスを含む)分岐アクセス表を含むので、予測情報118は出会った分岐命令についてのターゲットアドレスを含む。もし分岐が必要とされるようならば、その時予測情報118からのターゲットアドレスは分岐を獲得することに使用される。
マルチプレクサ120は分岐が必要とされるべきかどうかを決定することができ、ここにおいてマルチプレクサ120への制御入力は分岐履歴情報であってもよい。マルチプレクサ120への1つの入力は予測情報118からのターゲットアドレスであってもよい。1つの実施形態では、もし分岐が必要とされないならばマルチプレクサは分岐予測124上にロジックゼロを出力するように、マルチプレクサ内へのもう1つの入力はロジックゼロ(例えば、地気)である。もう1つの実施形態では、もし分岐が必要とされないならばマルチプレクサ120は分岐予測124上に高インピーダンス信号を出力するように構成される。
図1の概略図では、分岐履歴情報はプログラムカウンタ116内に蓄積されることができる。例えば、(分岐履歴表として以前に記述されたような)出会った分岐についての2ビット分岐履歴はプログラムカウンタ116内に蓄積されることができる。結果として、この回路は分岐が必要とされようが必要とされまいがマルチプレクサ120が分岐予測124上に出力するのを制御するために制御122上にプログラムカウンタ116からの分岐履歴情報を出力することができる。例えば、もしプログラムカウンタ内の分岐履歴の2ビットが1−1であれば、その時制御122は分岐を必要とすべき予測を分岐予測124上に出力するためにマルチプレクサ120を切り替えるための信号を含む。
1つの実施形態では、もし分岐が必要とされるべきである(例えば、分岐履歴が1−1に等しい)ならば、それを制御ロジック112にフィードバックするためにターゲットアドレスが分岐予測124に送られる。制御ロジック112はその後分岐が必要とされべきであることをこの信号から決定して、ストリームをターゲットアドレスにある命令にジャンプする。もう1つの実施形態では、ロジック1は制御ロジック112について分岐が必要とされるべきであることを決定するために分岐予測124を介して制御ロジック112に送られることができる。もし分岐が必要とされるべきでない(例えば、分岐履歴が0−0に等しい)ならば、その時ロジックゼロまたは高インピーダンスは分岐予測124を介して制御ロジック112によって受信されることができる。制御ロジックはその後、ストリームが分岐を必要とすることなく、分岐命令の次の命令を処理することに進まねばならないことをこの信号から決定する。
もう1つの実施形態では、そして以前に述べたように、分岐履歴は分岐履歴表としてレジスタファイルユニット102内に蓄積されることができる。そのように、レジスタファイルユニット102内の分岐履歴表はマルチプレクサ120の出力を制御するために制御122の上に読出しデータポート106からオプションとして出力することができる。1つの実施形態では、このように分岐履歴表の情報および分岐ターゲットキャッシュの情報を組み合わせて、分岐履歴および分岐命令についてのターゲットアドレスは1つのレジスタ内に蓄積されることができる。
図2を参照して、レジスタファイルユニット102は複数のレジスタファイル204〜214を含む蓄積装置202を含むことができる。図示された実施形態では、6レジスタファイルが示され、ここにおいてプロセッサは6スレッドアーキテクチャであることができる。他の実施形態では、レジスタファイルの数は1より大きい任意数(例えば、2)であってもよく、ここにおいて少なくとも1つのレジスタファイルは第1のモード内にあってもよく、そして少なくとも1つのレジスタファイルは第2のモード内にあってもよい。レジスタファイル204〜214のおのおのは6スレッドアーキテクチャプロセッサのそれぞれのスレッドと結合される。例えば、レジスタファイル1 204はこのプロセッサの第1のスレッドと結合されることができる。レジスタファイル204〜214はバス216により相互接続されることができる。従って、第2のモード内のレジスタファイルのための分岐予測情報は第2のモード内のレジスタファイルの間で分割されることができる。もう1つの実施形態では、残りのレジスタファイルがマルチモードレジスタファイルである一方で一部分のレジスタファイルは(単にオペランドを蓄積している)シングルモードであってもよい。
図2を再び参照して、蓄積装置202はフェッチユニット218および書送りユニット220に接続される。フェッチユニット218はアクセスしてレジスタファイル204〜214の1つのレジスタ値をフェッチするためにアドレス222を蓄積装置202に送る。アクセスされた値は、レジスタファイルユニット102からの値を出力する、レジスタファイルデータインターフェイス224に送られる。書送りユニット220はそれにデータが書き込まれて蓄積される蓄積装置202内のレジスタのためのアドレス222を送る。1つの実施形態では、フェッチユニット218および書送りユニット220は第1のモード内のレジスタファイルから/へのオペランドおよび第2のモード内のレジスタファイルから/への補助情報(例えば、分岐予測情報)をアクセスすることができる。
図3を参照して、レジスタファイルユニット102は(例えば、蓄積装置202内の)レジスタファイルレジスタ302〜312をさらに含むことができる。1つの実施形態では、各レジスタファイルレジスタ302〜312はレジスタファイル204〜214と関連する。例えば、RF1レジスタ302はレジスタファイル1 204と関連し、RF2レジスタ304はレジスタファイル2 206と関連する、等である。レジスタファイルレジスタ302〜312は、レジスタをいつ第2のモードに切り替えるべきかに関する優先情報を、レジスタはいつ第1のモードにあるべきかに関する優先情報を、あるいは対応するレジスタにどのスレッドが関連するかに関する情報を含んでいる、それらのそれぞれのレジスタ204〜214についての情報を含むことができる。例えば、RF1レジスタ302は、レジスタファイル1 204がスレッド0と関連し、レジスタファイル1 204はオペランドを蓄積するために第1のモード内にあるべき第1のレジスタであり、および/またはレジスタファイル1 204は補助情報を蓄積するために第2のモード内にあるべき最後のレジスタである情報を含むことができる。もう1つの実施形態では、レジスタファイルレジスタは対応するレジスタが第1のモードまたは第2のモードのどちらにあるかについての情報を含むことができる。
1つの実施形態では、各レジスタ204〜214についてレジスタファイルレジスタ302〜312はそれぞれのレジスタファイルがいつ第1のモードにあるべきかおよびそれぞれのレジスタファイルがいつ第2のモードに切り替えられるべきかの優先度についての情報を含み、プロセッサ100はどのレジスタファイルが第1のモードにあり、そしてどのレジスタファイルが第2のモードにあるかを制御するためにこの情報を使用することができる。例えば、プロセッサはバス214を介してレジスタファイルレジスタ302〜312を制御することによってレジスタファイルを第1のモードから第2のモードへ/第2のモードから第1のモードへ切り替えることができる。
図4の概略図はレジスタファイル204〜208が第1のモードにあり、そしてレジスタファイル210〜214が第2のモードにある1例を図示する。以前に記述したように、レジスタファイルレジスタ302〜312はいつレジスタファイル204〜214が第1のモードにあるべきかの優先情報を含むことができる。例えば、この優先情報はレジスタファイル1 204が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第1である)第1のレジスタファイルであり、レジスタファイル2 206が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第2である)第2のレジスタファイルであり、レジスタファイル3 208が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第3である)第3のレジスタファイルであり、レジスタファイル4 210が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第4である)第4のレジスタファイルであり、レジスタファイル5 212が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第5である)第5のレジスタファイルであり、そしてレジスタファイル6 214が第1のモードにあるべき(即ち、それの関連するスレッドは命令の実行について第6である)第6のそして最後のレジスタファイルである。よって、もし5つのスレッドが命令を実行しているようであるならば、その時レジスタファイル204〜212は第1のモード(例えば、それらのそれぞれのスレッドのためのオペランドを蓄積している)にあるべきであり、そしてレジスタファイル6 214は第1のモードにある必要はない。
また以前に記述したように、レジスタファイルレジスタ302〜312はいつレジスタファイル204〜214が第2のモードにあるべきかの優先情報を含むことができる。例えば、この優先情報はレジスタファイル1 204が第2のモードにあるべき(例えば、アクティブスレッドについて分岐予測情報を蓄積すべき)第6のそして最後のレジスタファイルであり、レジスタファイル2 206が第2のモードにあるべき第5のそして最後に最も近いレジスタファイルであり、レジスタファイル3 208が第2のモードにあるべき第4のレジスタファイルであり、レジスタファイル4 210が第2のモードにあるべき第3のレジスタファイルであり、レジスタファイル5 212が第2のモードにあるべき第2のそして第1に最も近いレジスタファイルであり、そしてレジスタファイル6 214が第2のモードにあるべき第1のレジスタファイルである。よって、もし2つのスレッドが命令を実行しているならば、その時レジスタファイル208〜214は第2のモードにあるように使用できる。もし2つのレジスタファイルが第2のモードにあるようであれば、その時レジスタファイル212〜214は第2のモードにある。1つの実施形態では、レジスタファイルが第1のモードにある(即ち、それぞれのスレッドがアクティブ/命令を実行中である)かどうかはレジスタファイルが第2のモードに切り替えるかどうかよりも優先度を有する。
再び図4を参照して、この例では、3つのスレッドがアクティブであるべきであり、そして3つのレジスタファイルが第2のモードにあるべきである。よって、レジスタファイル204〜208はアクティブスレッドについてのオペランドを蓄積している第1のモードにある。レジスタファイル210〜214は、例えば、3つのアクティブスレッドについての分岐予測情報を蓄積するために第2のモードにある。1つの実施形態では、分岐予測情報は第2のモード内のすべての蓄積装置402の間に分割または展開されることができる。従って、より多くのレジスタファイル204〜214が第2のモードにある時には、より多くの蓄積装置が分岐予測情報を蓄積するために存在し、したがってより多くの分岐命令の予測を可能とするために分岐履歴表および分岐ターゲットキャッシュをもっと大きく(例えば、各表内でより多くの列に)させる。
図5は図1〜3の1つのマルチモードレジスタファイル内に情報を蓄積するための例示的な方法500を示すフローチャートである。502で始まり、プロセッサ100はマルチモードレジスタファイル(例えば、図3におけるレジスタファイル1 204)が第1のモードにあるかどうかを決定する。レジスタファイル1 204が第1のモードにあるかどうかを決定する1つの実施形態では、プロセッサ100はRF1レジスタ302をアクセスし、それはレジスタファイル1 204と関連し、そしてレジスタファイル1 204がインであるモードに関する情報を含むことができる。もう1つの実施形態では、プロセッサ100はRF1レジスタ302の優先情報およびレジスタファイル1 204が第1のモードにあるかどうかを決定するためにアクティブスレッドの数を検討することができる。もう1つの実施形態では、プロセッサ100はレジスタファイル1 204についてのそれぞれのスレッド(例えば、スレッド0)を決定し、そしてそれぞれのスレッドがアクティブであるかどうかを決定することができる。もしレジスタファイル1 204が第1のモードにあれば、その時レジスタファイル1 204についてのそれぞれのスレッドはアクティブであり、そしてレジスタファイル1 204は504において書送りユニット220(図3)からオペランドを受信することができる。このオペランドを受信して、レジスタファイルは書送りユニット220によって識別されたレジスタ位置にこのオペランドを蓄積することができる(506)。
もし502でプロセッサ100がレジスタファイルは第1のモードにないことを決定すれば、508でプロセッサ100はマルチモードレジスタファイル1 204が第2のモードにあるかどうかを決定することができる。1つの実施形態では、プロセッサ100はもしレジスタファイル1 204が第1のモードにないならばこのレジスタファイル1 204は第2のモードにあると想定することができる。もう1つの実施形態では、レジスタファイル1 204はインアクティブであることができ、したがって第1または第2のモードにないかもしれない。このように、もしプロセッサ100がレジスタファイル1 204は第2のモードにないことを決定すれば、その時レジスタファイル1 204は第1または第2のモードのどちらにもなく、そして同時に情報を受け入れることはできない。もしマルチモードレジスタファイルが第2のモードにあれば、その時レジスタファイル1 204は510で書送りユニット220(図3)から補助情報(例えば、分岐予測情報)を受信する。補助情報を受信して、レジスタファイル1 204は書送りユニット220によって識別されたレジスタ位置にこの補助情報を蓄積することができる(512)。
図6のフローチャートはマルチモードレジスタファイル204〜214のおのおののモードによる図1〜3内のレジスタファイルユニット102の複数のマルチモードレジスタファイル204〜214内に情報を蓄積するための例示的な方法600を示す。602で始まり、プロセッサ100はレジスタファイルユニット102のどのマルチモードレジスタファイル204〜214が第1のモードにあるかを決定する。1つの実施形態では、プロセッサ100はどのスレッドがアクティブでありそして、レジスタファイルレジスタ302〜312から、どのレジスタファイル204〜214がこのアクティブスレッドと関連するかを決定する。もう1つの実施形態では、プロセッサ100は関連するレジスタファイルレジスタからどのレジスタファイルが第1のモードにあるかの情報を読み出すことができる。
どのレジスタファイル204〜214が第1のモードにあるかを決定して、604でプロセッサ100はどのレジスタファイル204〜214が第2のモードにあるかを決定することができる。1つの実施形態では、プロセッサ100はレジスタファイルが第2のモードにあるかどうかを決定するために第1のモードにないレジスタファイル204〜214のそれぞれのレジスタファイルレジスタ302〜312を読み出すことができる。もう1つの実施形態では、プロセッサ100は第1のモードにない全レジスタ204〜214が第2のモードにあると想定する。もう1つの実施形態では、プロセッサ100は第2のモードにあるべきレジスタファイル204〜214の数を決定し、そしてレジスタファイル204〜214のそれぞれのレジスタファイルレジスタ302〜312から第2のモードについての優先情報を読み出す。
606に進んで、プロセッサ100はオペランドを第1のモード内のレジスタファイル204〜214に送る。例えば、もしスレッド0が実行された命令からの結果としてのオペランドを含むならば、プロセッサ100は蓄積されるべきレジスタファイル1 204(図3)にこのオペランドを送る。このオペランドはその後608で第1のモード内の受信レジスタファイル204〜214によって蓄積される。
610に進んで、プロセッサ100は補助情報を第2のモード内のレジスタファイル204〜214に送る。例えば、プロセッサ100は最近実行した分岐命令についての分岐予測情報を送ることができ、それはあとで同じ分岐を予測する時に使用されることができる。1つの実施形態では、プロセッサ100は第2のモード内のどのレジスタファイル204〜214が補助情報のどの部分を蓄積すべきかを決定する。例えば、図4を再び参照して、プロセッサ100はレジスタファイル210〜212が分岐ターゲットキャッシュを蓄積すべきであり、そしてレジスタファイル6 214が実行命令ストリームについての分岐履歴表を蓄積すべきであることを決定することができる。再び図6を参照して、補助情報はその後612で第2のモード内の受信レジスタファイル204〜214によって蓄積される。
上記特徴を含んでいる実例の装置
マルチモードレジスタファイルは、ディジタル信号プロセッサのような、レジスタファイルを含む任意のプロセッサ内に含まれることができる。図7〜11の一般的な図は、例えば、第1のモード内のオペランドおよび実行している分岐命令の分岐を予測することについて使用されるために第2のモード内の分岐予測情報を組み込むことができる実例の装置を示す。
図7は携帯型通信装置700の例示的な実施形態を示す図である。図7の一般的な図に示されたように、携帯型通信装置はディジタル信号プロセッサ(DSP)704を含むオンチップシステム702を含む。図7の一般的な図はまたディジタル信号プロセッサ704およびディスプレイ708に結合されるディスプレイコントローラ706も示す。さらに、入力装置710はDSP704に結合される。示されたように、メモリ712はDSP704に結合される。その上、コーダ/デコーダ(CODEC)714はDSP704に結合されることができる。スピーカ716およびマイクロホン718はCODEC714に結合されることができる。
図7の一般的な図はさらにディジタル信号プロセッサ704および無線アンテナ722に結合された無線コントローラ720を示す。特定の実施形態では、電源724はオンチップシステム702に結合される。さらに、特定の実施形態では、図7に示されたように、ディスプレイ708、入力装置710、スピーカ716、マイクロホン718、無線アンテナ722、および電源724はオンチップシステム702の外部にある。しかしながら、おのおのはオンチップシステム702のコンポーネントに結合される。
特定の実施形態では、DSP704は、例えば、レジスタファイルが第1のモードにない(アクティブスレッドについてのオペランドを蓄積していない)時の分岐予測情報を蓄積するために1つまたは複数のマルチモードレジスタファイル726を含む。例えば、分岐命令がプロセッサ704によって出会われ、そしてマルチモードレジスタファイル726が分岐予測情報を蓄積している時には、その後プロセッサ704は分岐が必要とされるかあるいは必要とされないかを予測せねばならないかどうかを決定するためにマルチモードレジスタファイル726内の分岐予測情報を使用する。プロセッサ704はその後その分岐予測から次に予測された命令を処理し始める。
図8はセルラー電話機800の例示的な実施形態を示す図である。示されたように、セルラー電話機800は共に結合されるディジタルベースバンドプロセッサ804およびアナログベースバンドプロセッサ806を含むオンチップシステム802を含む。特定の実施形態では、ディジタルベースバンドプロセッサ804はディジタル信号プロセッサである。図8の一般的な図の中に示されたように、ディスプレイコントローラ808およびタッチスクリーンコントローラ810はディジタルベースバンドプロセッサ804に結合される。順番に、オンチップシステム802への外部のタッチスクリーンディスプレイ812はディスプレイコントローラ808およびタッチスクリーンコントローラ810に結合される。
図8の一般的な図はさらにビデオエンコーダ814、例えば、フェーズオルタネーティングライン(PAL)エンコーダ、シーケンシャルクーレールアメモアール(SECAM)エンコーダ、あるいはナショナルテレビジョンシステム委員会(NTSC)エンコーダは、ディジタルベースバンドプロセッサ804に結合される。さらに、ビデオ増幅器816はビデオエンコーダ814およびタッチスクリーンディスプレイ812に結合される。また、ビデオポート818はビデオ増幅器816に結合される。図8の一般的な図に描写されたように、ユニバーサルシリアルバス(USB)コントローラ820はディジタルベースバンドプロセッサ804に結合される。また、USBポート822はUSBコントローラ820に結合される。メモリ824および加入者アイデンティティモジュール(SIM)カード826もまたディジタルベースバンドプロセッサ804に結合されることができる。さらに、図8の一般的な図に示されたように、ディジタルカメラ828はディジタルベースバンドプロセッサ804に結合されることができる。例示的な実施形態では、ディジタルカメラ828は電荷結合デバイス(CCD)カメラまたは相補型金属酸化膜半導体(CMOS)カメラである。.
さらに図8の一般的な図に示されたように、ステレオオーディオCODEC830はアナログベースバンドプロセッサ806に結合されることができる。さらに、オーディオ増幅器832はステレオオーディオCODEC830に結合されることができる。例示的な実施形態では、第1のステレオスピーカ834および第2のステレオスピーカ836はオーディオ増幅器832に結合される。マイクロホン増幅器838はまたステレオオーディオCODEC830にも結合される。そのうえ、マイクロホン840はマイクロホン増幅器838に結合されることができる。特定の実施形態では、周波数変調(FM)無線チューナ842はステレオオーディオCODEC830に結合されることができる。また、FMアンテナ844はFM無線チューナ842に結合される。さらに、ステレオヘッドホン846はステレオオーディオCODEC830に結合されることができる。
図8の一般的な図はさらに無線周波数(RF)トランシーバ848がアナログベースバンドプロセッサ806に結合されうることを示す。RFスイッチ850はRFトランシーバ848およびRFアンテナ852に結合されることができる。キーパッド854はアナログベースバンドプロセッサ806に結合されることができる。さらに、バイブレータ装置858はアナログベースバンドプロセッサ806に結合されることができる。図8の一般的な図はまた電源860がオンチップシステム802に結合されうることを示す。特定の実施形態では、電源860はセルラー電話機800のいろいろなコンポーネントに電力を供給する直流(DC)電源である。さらに、特定の実施形態では、電源は2次直流電池あるいは交流(AC)電源からAC電源に結合されるDC変圧器に引き出されるDC電源である。
図8の一般的な図に描写されたように、タッチスクリーンディスプレイ812、ビデオポート818、USBポート822、カメラ828、第1のステレオスピーカ834、第2のステレオスピーカ836、マイクロホン840、FMアンテナ844、ステレオヘッドホン846、RFスイッチ850、RFアンテナ852、キーパッド854、バイブレータ858、および電源860はオンチップシステム802の外部にあってもよい。特定の実施形態では、ディジタルベースバンドプロセッサ804は、例えば、レジスタファイル862が第1のモード(アクティブスレッドについてのオペランドを蓄積していない)にない時に例えば分岐予測情報を蓄積するために1つまたは複数のマルチモードレジスタファイル862を含むことができる。
図9は無線インターネットプロトコル(IP)電話機900の例示的な実施形態を示す図である。示されたように、無線IP電話機900はディジタル信号プロセッサ(DSP)904を含むオンチップシステム902を含む。ディスプレイコントローラ906はDSP904に結合されることができ、そしてディスプレイ908はディスプレイコントローラ906に結合される。例示的な実施形態では、ディスプレイ908は液晶ディスプレイ(LCD)である。図9はさらにキーパッド910がDSP904に結合されることができることを示す。
フラッシュメモリ912はDSP904に結合されることができる。同期ダイナミックランダムアクセスメモリ(SDRAM)914、静的ランダムアクセスメモリ(SRAM)916、および電気的消去可能プログラマブルリードオンリメモリ(EEPROM)918もまたDSP904に結合されることができる。図9の一般的な図はまた発光ダイオード(LED)920がDSP904に結合されうることを示す。さらに、特定の実施形態では、ボイスCODEC922はDSP904に結合されることができる。増幅器924はボイスCODEC922に結合されることができ、そしてモノスピーカ926は増幅器924に結合されることができる。図9の一般的な図はさらにボイスCODEC922に結合されたモノヘッドセット928を示す。特定の実施形態では、モノヘッドセット928はマイクロホンを含む。
無線ローカルエリアネットワーク(WLAN)ベースバンドプロセッサ930はDSP904に結合されることができる。RFトランシーバ932はWLANベースバンドプロセッサ930に結合されることができ、そしてRFアンテナ934はRFトランシーバ932に結合されることができる。特定の実施形態では、ブルートゥース(登録商標)コントローラ936もDSP904に結合されることができ、そしてブルートゥース(登録商標)アンテナ938はコントローラ936に結合されることができる。図9の一般的な図はまたUSBポート940もまたDSP904に結合されることを示す。さらに、電源942はオンチップシステム902に結合され、そして無線IP電話機900のいろいろなコンポーネントに電力を供給する。
図9の一般的な図に示されたように、ディスプレイ908、キーパッド910、LED920、モノスピーカ926、モノヘッドセット928、RFアンテナ934、ブルートゥースアンテナ938、USBポート940、および電源942はオンチップシステム902の外部にあり、そしてオンチップシステム902の1つまたは複数のコンポーネントに結合されることができる。特定の実施形態では、DSP904は、例えば、レジスタファイル960が第1のモードにない(アクティブスレッドについてのオペランドを蓄積していない)時に、例えば、分岐予測情報を蓄積するために1つまたは複数のマルチモードレジスタファイル960を含むことができる。
図10は携帯型ディジタルアシスタント(PDA)900の例示的な実施形態を示す図である。示されたように、PDA1000はディジタル信号プロセッサ(DSP)1004を含むオンチップシステム1002を含む。タッチスクリーンコントローラ1006およびディスプレイコントローラ1008はDSP1004に結合される。さらに、タッチスクリーンディスプレイ1010はタッチスクリーンコントローラ1006におよびディスプレイコントローラ1008に結合される。図10の一般的な図はまたキーパッド1012がDSP1004に結合されうることも示す。
特定の実施形態では、ステレオオーディオCODEC1026はDSP1004に結合されることができる。第1のステレオ増幅器1028はステレオオーディオCODEC1026に結合されることができ、そして第1のステレオスピーカ1030は第1のステレオ増幅器1028に結合されることができる。そのうえ、マイクロホン増幅器1032はステレオオーディオCODEC1026に結合されることができ、そしてマイクロホン1034はマイクロホン増幅器1032に結合されることができる。図10の一般的な図はさらに第2のステレオ増幅器1036はステレオオーディオCODEC1026に結合されることができ、そして第2のステレオスピーカ1038は第2のステレオ増幅器1036に結合されることができることを示す。特定の実施形態では、ステレオヘッドホン1040もステレオオーディオCODEC1026に結合されることができる。
図10の一般的な図はまた802.11コントローラ1042がDSP1004に結合されることができ、そして802.11アンテナ1044が802.11コントローラ1042に結合されることができることも示す。さらに、ブルートゥース(登録商標)コントローラ1046はDSP1004に結合されることができ、そしてブルートゥース(登録商標)アンテナ1048はブルートゥース(登録商標)コントローラ1046に結合されることができる。USBコントローラ1050はDSP1004に結合されることができ、そしてUSBポート1052はUSBコントローラ1050に結合されることができる。そのうえ、スマートカード1054、例えば、マルチメディアカード(MMC)またはセキュアディジタルカード(SD)は、DSP1004に結合されることができる。さらに、電源1056はオンチップシステム1002に結合されることができ、そして電力をPDA1000のいろいろなコンポーネントに供給することができる。
図10の一般的な図に示されたように、ディスプレイ1010、キーパッド1012、IrDAポート1022、ディジタルカメラ1024、第1のステレオスピーカ1030、マイクロホン1034、第2のステレオスピーカ1038、ステレオヘッドホン1040、802.11アンテナ1044、ブルートゥース(登録商標)アンテナ1048、USBポート1052、および電源1056はオンチップシステム1002の外部にあり、そしてこのオンチップシステム上の1つまたは複数のコンポーネントに結合されることができる。特定の実施形態では、DSP1004は、例えば、レジスタファイル1060が第1のモードにない(アクティブスレッドのためのオペランドを蓄積していない)時の分岐予測情報を蓄積するために1つまたは複数のマルチモードレジスタファイル1060を含むことができる。
図11はオーディオファイルプレーヤー(例えば、MP3プレーヤー)1100の例示的な実施形態を示す図である。示されたように、オーディオファイルプレーヤー1100はディジタル信号プロセッサ(DSP)1104を含むオンチップシステム1102を含む。ディスプレイコントローラ1106はDSP1104に結合されることができ、そしてディスプレイ1108はディスプレイコントローラ1106に結合される。例示的な実施形態では、ディスプレイ1108は液晶ディスプレイ(LCD)である。キーパッド1110はDSP1104に結合されることができる。
図11の一般的な図にさらに描写されたように、フラッシュメモリ1112および読出し専用メモリ(ROM)1114はDSP1104に結合されることができる。さらに、特定の実施形態では、オーディオCODEC1116はDSP1104に結合されることができる。増幅器1118はオーディオCODEC1116に結合されることができ、そしてモノスピーカ1120は増幅器1118に結合されることができる。図11の一般的な図はさらにマイクホン入力1122およびステレオ入力1124もまたオーディオCODEC1116に結合されうることを示す。特定の実施形態では、ステレオヘッドホン1126もまたオーディオCODEC1116に結合されることができる。
USBポート1128およびスマートカード1130はDSP1104に結合されることができる。さらに、電源1132はオンチップシステム1102に結合されることができ、そしてオーディオファイルプレーヤー1100のいろいろなコンポーネントに電力を供給することができる。
図11の一般的な図に示されたように、ディスプレイ1108、キーパッド1110、モノスピーカ1120、マイクロホン入力1122、ステレオ入力1124、ステレオヘッドホン1126、USBポート1128、および電源1132はオンチップシステム1102の外部にあり、そしてオンチップシステム1102上の1つまたは複数のコンポーネントに結合される。特定の実施形態では、ディジタル信号プロセッサ1104は、例えば、レジスタファイル1160が第1のモードにない(アクティブスレッドについてのオペランドを蓄積していない)時の分岐予測情報を蓄積するために1つまたは複数のマルチモードレジスタファイル1160を含むことができる。
全般
この中に開示されたこの発明の概念の実施形態の前述の説明は図示および説明のためだけを示し、そしてこの中に開示された発明の概念を開示された正確な形式に徹底すべきことまたは限定すべきことを意味しない。多くの修正および改造はこの中に開示された発明の概念の精神および範囲から逸脱すること無しに当業者には明白である。
下記に出願時の請求項1−21に対応する記載を付記1−21として表記する。
付記1
第1のモード内に蓄積されたオペランド;および
補助情報、ここにおいて前記補助情報は第2のモード内の前記オペランドを置換する、
を具備するマルチモードレジスタファイル。
付記2
前記補助情報は分岐予測情報である、付記1記載のマルチモードレジスタファイル。
付記3
前記分岐予測情報は、
分岐ターゲットキャッシュ;および
分岐履歴表、
を具備する、付記2記載のマルチモードレジスタファイル。
付記4
前記レジスタファイルはマルチスレッドアーキテクチャ内の複数のレジスタファイル内にある、付記2記載のマルチモードレジスタファイル。
付記5
前記オペランドは前記マルチスレッドアーキテクチャによって実行されるべきオペレーションのパイプラインの1オペレーションからである、付記4記載のマルチモードレジスタファイル。
付記6
前記マルチスレッドアーキテクチャは、
前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定する;および
もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルが前記第2のモードにあるかどうかを決定する、
ように構成される、付記5記載のマルチモードレジスタファイル。
付記7
前記複数のレジスタファイルのおのおのはマルチモードレジスタファイルである、付記4記載のマルチモードレジスタファイル。
付記8
前記マルチスレッドアーキテクチャは前記第2のモードに入るべき前記レジスタファイルの優先度を決定するように構成される、付記7記載のマルチモードレジスタファイル。
付記9
前記複数のレジスタファイルは前記第2のモードにおいて複数のレジスタファイルの間で前記分岐予測情報を分割するように構成される、付記8記載のマルチモードレジスタファイル。
付記10
第1のモードの間マルチモードレジスタファイルによってオペランドを蓄積すること;および
第2のモード内の前記マルチモードレジスタファイルによって前記オペランドを補助情報で置換すること、
を具備する方法。
付記11
前記補助情報は分岐予測情報である、付記10記載の方法。
付記12
前記分岐予測情報は
分岐ターゲットキャッシュ;および
分岐履歴表、
を具備する、付記11記載の方法。
付記13
前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定すること;および
もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルは前記第2のモードにあるかどうかを決定すること、
をさらに具備する、付記11記載の方法。
付記14
前記レジスタファイルはマルチスレッドアーキテクチャ内の複数のマルチモードレジスタファイル内にある、付記11記載の方法。
付記15
前記複数のレジスタファイルのおのおのが前記第1のモードにあるかどうかを決定すること;および
前記第1のモードにない前記複数のレジスタファイルのおのおのについて各レジスタファイルが前記第2のモードにあるかどうかを決定すること、
をさらに具備する、付記14記載の方法。
付記16
前記第2のモード内の複数のレジスタファイル間で前記分岐予測情報を分割することをさらに具備する、付記15記載の方法。
付記17
第1のモードの間中オペランドを蓄積するための手段;および
前記オペランドを第2のモード内の補助情報で置換するための手段、
を具備する、マルチモードレジスタファイル。
付記18
前記補助情報は分岐予測情報である、付記17記載のマルチモードレジスタファイル。
付記19
前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定するための手段;および
もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルは前記第2のモードにあるかどうかを決定するための手段、
をさらに具備する、付記18記載のマルチモードレジスタファイル。
付記20
付記19記載のマルチモードレジスタファイル:
前記第2のモードに入るべき複数のマルチモードレジスタファイルのおのおのについて前記優先権を決定するための手段をさらに具備し、ここにおいて前記マルチモードレジスタファイルは複数のマルチモードレジスタファイルの1つである、付記19記載のマルチモードレジスタファイル。
付記21
マルチスレッドシステムであって、
前記マルチスレッドシステムの各スレッドについてのマルチモードレジスタファイル、ここにおいて前記マルチモードレジスタファイルは第1のモード内の前記スレッドについてのオペランドおよび第2のモード内の異なるスレッドについての分岐履歴表を蓄積するように構成される;および
前記マルチモードレジスタファイルが前記第1のモードまたは前記第2のモードにあるかどうかを決定するために各マルチモードレジスタファイルについてのマルチモードレジスタファイルレジスタ、
を具備するマルチスレッドシステム。

Claims (21)

  1. 第1のモードにおいて格納されるオペランドおよび
    第2のモードにおいて前記オペランドに代えて格納される補助情報を具備するマルチモードレジスタファイル。
  2. 前記補助情報は分岐予測情報である、請求項1記載のマルチモードレジスタファイル。
  3. 前記分岐予測情報は、
    分岐ターゲットキャッシュ;および
    分岐履歴表、
    を具備する、請求項2記載のマルチモードレジスタファイル。
  4. 前記レジスタファイルはマルチスレッドアーキテクチャ内の複数のレジスタファイル内にある、請求項2記載のマルチモードレジスタファイル。
  5. 前記オペランドは、パイプラインにおいて実行される1オペレーションであって前記マルチスレッドアーキテクチャにおいて実行される1オペレーションを実行する際に用いられる、請求項4記載のマルチモードレジスタファイル。
  6. 前記マルチスレッドアーキテクチャは、
    前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定する;および
    もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルが前記第2のモードにあるかどうかを決定する、
    ように構成される、請求項5記載のマルチモードレジスタファイル。
  7. 前記複数のレジスタファイルのおのおのはマルチモードレジスタファイルである、請求項4記載のマルチモードレジスタファイル。
  8. 前記マルチスレッドアーキテクチャは前記第2のモードに入ることに関する前記レジスタファイルの優先度を決定するように構成される、請求項7記載のマルチモードレジスタファイル。
  9. 前記複数のレジスタファイルは前記第2のモードになっている複数のレジスタファイルの間で前記分岐予測情報を分割するように構成される、請求項8記載のマルチモードレジスタファイル。
  10. 第1のモードのときにマルチモードレジスタファイルによってオペランドを格納すること;および
    第2のモードのときに前記マルチモードレジスタファイルによって前記オペランドを補助情報で置換すること、
    を具備する方法。
  11. 前記補助情報は分岐予測情報である、請求項10記載の方法。
  12. 前記分岐予測情報は
    分岐ターゲットキャッシュ;および
    分岐履歴表、
    を具備する、請求項11記載の方法。
  13. 前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定すること;および
    もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルは前記第2のモードにあるかどうかを決定すること、
    をさらに具備する、請求項11記載の方法。
  14. 前記レジスタファイルはマルチスレッドアーキテクチャ内の複数のマルチモードレジスタファイル内にある、請求項11記載の方法。
  15. 前記複数のレジスタファイルのおのおのが前記第1のモードにあるかどうかを決定すること;および
    前記第1のモードにない前記複数のレジスタファイルのおのおのについて各レジスタファイルが前記第2のモードにあるかどうかを決定すること、
    をさらに具備する、請求項14記載の方法。
  16. 前記第2のモード内の複数のレジスタファイル間で前記分岐予測情報を分割することをさらに具備する、請求項15記載の方法。
  17. 第1のモードのときにオペランドを格納するための手段;および
    第2のモードのときに前記オペランドを補助情報で置換するための手段、
    を具備する、マルチモードレジスタファイル。
  18. 前記補助情報は分岐予測情報である、請求項17記載のマルチモードレジスタファイル。
  19. 前記マルチモードレジスタファイルが前記第1のモードにあるかどうかを決定するための手段;および
    もし前記マルチモードレジスタファイルが前記第1のモードにないことを決定したならば前記マルチモードレジスタファイルは前記第2のモードにあるかどうかを決定するための手段、
    をさらに具備する、請求項18記載のマルチモードレジスタファイル。
  20. 前記第2のモードに入ることに関する、複数のマルチモードレジスタファイルのおのおの優先権を決定するための手段をさらに具備し、ここにおいて前記マルチモードレジスタファイルは複数のマルチモードレジスタファイルの1つである、請求項19記載のマルチモードレジスタファイル。
  21. マルチスレッドシステムであって、
    前記マルチスレッドシステムのそれぞれのスレッド毎に設けられたマルチモードレジスタファイルであって、第1のモードのときに、当該マルチモードレジスタに対応する前記スレッドのためのオペランドを格納し、第2のモードのときに、当該マルチモードレジスタに対応する前記スレッドとは異なるスレッドのための分岐履歴テーブル格納するように構成されたマルチモードレジスタファイル、および
    前記マルチモードレジスタファイルが前記第1のモードまたは前記第2のモードにあるかどうかを決定するため各マルチモードレジスタファイルについてのマルチモードレジスタファイルレジスタ、
    を具備するマルチスレッドシステム。
JP2011510563A 2008-05-21 2009-05-08 分岐予測における使用のためのマルチモードレジスタファイル Expired - Fee Related JP5280521B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/124,357 US8639913B2 (en) 2008-05-21 2008-05-21 Multi-mode register file for use in branch prediction
US12/124,357 2008-05-21
PCT/US2009/043331 WO2009142928A1 (en) 2008-05-21 2009-05-08 Multi-mode register file for use in branch prediction

Publications (2)

Publication Number Publication Date
JP2011521382A JP2011521382A (ja) 2011-07-21
JP5280521B2 true JP5280521B2 (ja) 2013-09-04

Family

ID=40908655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011510563A Expired - Fee Related JP5280521B2 (ja) 2008-05-21 2009-05-08 分岐予測における使用のためのマルチモードレジスタファイル

Country Status (7)

Country Link
US (1) US8639913B2 (ja)
EP (1) EP2304551B1 (ja)
JP (1) JP5280521B2 (ja)
KR (1) KR101302611B1 (ja)
CN (1) CN102037443B (ja)
TW (1) TW201013524A (ja)
WO (1) WO2009142928A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582275B2 (en) 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
US20140365749A1 (en) * 2011-12-29 2014-12-11 Venkateswara R. Madduri Using a single table to store speculative results and architectural results
GB201300608D0 (en) * 2013-01-14 2013-02-27 Imagination Tech Ltd Indirect branch prediction
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
CN105653472A (zh) * 2015-12-31 2016-06-08 北京中科晶上科技有限公司 缓存辅助的向量寄存器堆的缓冲方法
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
JP3776449B2 (ja) * 1992-12-23 2006-05-17 セントル エレクトロニク オルロジェール ソシエテ アノニム マルチタスク低電力制御装置
US5950012A (en) * 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US7017073B2 (en) * 2001-02-28 2006-03-21 International Business Machines Corporation Method and apparatus for fault-tolerance via dual thread crosschecking
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6954846B2 (en) * 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US6981113B2 (en) * 2003-04-21 2005-12-27 Intel Corporation Storage registers for a processor pipeline
US7120784B2 (en) 2003-04-28 2006-10-10 International Business Machines Corporation Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US7877587B2 (en) * 2006-06-09 2011-01-25 Arm Limited Branch prediction within a multithreaded processor
US7454596B2 (en) * 2006-06-29 2008-11-18 Intel Corporation Method and apparatus for partitioned pipelined fetching of multiple execution threads
US7760576B2 (en) * 2007-11-08 2010-07-20 Qualcomm Incorporated Systems and methods for low power, high yield memory

Also Published As

Publication number Publication date
KR20110019751A (ko) 2011-02-28
KR101302611B1 (ko) 2013-09-02
JP2011521382A (ja) 2011-07-21
US20090292906A1 (en) 2009-11-26
TW201013524A (en) 2010-04-01
EP2304551A1 (en) 2011-04-06
EP2304551B1 (en) 2017-03-29
CN102037443B (zh) 2014-07-09
US8639913B2 (en) 2014-01-28
WO2009142928A1 (en) 2009-11-26
CN102037443A (zh) 2011-04-27

Similar Documents

Publication Publication Date Title
JP5280521B2 (ja) 分岐予測における使用のためのマルチモードレジスタファイル
JP5318873B2 (ja) マルチステージデータ処理パイプラインにおける命令実行システム及び方法
US8429378B2 (en) System and method to manage a translation lookaside buffer
EP2259190A2 (en) Multithreaded processor with efficient processing for convergence device applications
US8464000B2 (en) Systems and methods for cache line replacements
US8688761B2 (en) Arithmetic logic and shifting device for use in a processor
KR101239272B1 (ko) 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110304

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130522

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5280521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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