JP2008165589A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2008165589A
JP2008165589A JP2006355762A JP2006355762A JP2008165589A JP 2008165589 A JP2008165589 A JP 2008165589A JP 2006355762 A JP2006355762 A JP 2006355762A JP 2006355762 A JP2006355762 A JP 2006355762A JP 2008165589 A JP2008165589 A JP 2008165589A
Authority
JP
Japan
Prior art keywords
instruction
branch
cache memory
program counter
destination 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.)
Withdrawn
Application number
JP2006355762A
Other languages
English (en)
Inventor
Yasuhiro Yamazaki
恭啓 山崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006355762A priority Critical patent/JP2008165589A/ja
Priority to US11/907,617 priority patent/US20080162903A1/en
Publication of JP2008165589A publication Critical patent/JP2008165589A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Abstract

【課題】分岐ペナルティを削減することができる小型及び/又は小消費電力の情報処理装置を提供することを課題とする。
【解決手段】命令を記憶するための命令キャッシュメモリ(102)と、入力された分岐命令内のプログラムカウンタ相対分岐先アドレス及びプログラムカウンタ値を加算し、絶対分岐先アドレスを出力する第1の加算器(301)と、前記入力された分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換してその置換した分岐命令を前記命令キャッシュメモリに書き込む書き込み回路(123)とを有することを特徴とする情報処理装置が提供される。
【選択図】図1

Description

本発明は、情報処理装置に関し、特に分岐命令を処理する情報処理装置に関する。
図11は、分岐命令を含む命令群1101の例を示す図である。第1行のAdd命令(加算命令)は、GR3=GR1+GR2を意味する。すなわち、このAdd命令は、レジスタGR1及びGR2の値を加算し、レジスタGR3に格納する命令である。
第2行のSubcc命令(減算命令)は、GR4=GR3−0x8(16進数)を意味する。すなわち、このSubcc命令は、レジスタGR3の値から0x8(16進数)を減算し、レジスタGR4に格納する命令である。その際、ゼロフラグは、演算結果が0であれば1になり、それ以外であれば0になる。
第3行のBEQ命令(分岐命令)は、ゼロフラグが1であればラベル名Target0のアドレスへ分岐し、0であれば分岐せずに次のアドレスに進む命令である。すなわち、ゼロフラグが1であれば第6行のAnd命令に分岐し、ゼロフラグが1であれば第4行のAnd命令に進む。
第4行のAnd命令(論理積命令)は、GR10=GR8 & GR4を意味する。すなわち、このAnd命令は、レジスタGR8及びGR4の値の論理積を演算し、レジスタGR10に格納する命令である。
第5行のSt命令(ストア命令)は、memory(GR6+GR7)=GR10を意味する。すなわち、このSt命令は、レジスタGR10の値を、レジスタGR6及びGR7を加算した値のアドレスのメモリにストア(格納)する命令である。
ラベル名Target0のアドレスには、第6行のAnd命令が記憶されている。第6行のAnd命令は、GR11=GR4 & GR9を意味する。すなわち、このAnd命令は、レジスタGR4及びGR9の値の論理積を演算し、レジスタGR11に格納する命令である。
第7行のLd命令(ロード命令)は、GR10=memory(GR6+GR7)を意味する。すなわち、このLd命令は、レジスタGR6及びGR7を加算した値のアドレスのメモリから値をロード(読み出)し、レジスタGR10に格納する命令である。
ここで、第3行のBEQ命令(分岐命令)は、ゼロフラグの値に応じて、分岐するか否かが決まる。したがって、BEQ命令(分岐命令)の実行後に命令実行されない時間(分岐ペナルティ)が生じる。通常、分岐ペナルティは、3〜5クロックサイクルであり、10クロックサイクル以上のものもある。分岐ペナルティは、命令群1101の実行速度低下の原因になる。
図12は、命令のパイプライン処理を示す図である。以下、分岐ペナルティが発生する理由を説明する。ステージ130〜134は、それぞれパイプラインステージを示す。まず、第1のステージ130では、命令読み出しのためのアドレスを計算する。次に、第2のステージ131では、命令キャッシュメモリから命令を読み出す。次に、第3のステージ132では、レジスタから値を読み出すと共に、命令の解釈(デコード)を行う。次に、第4のステージ133では、演算器により命令の演算実行を行う。次に、第5のステージ134では、演算結果をレジスタに書き込む。
図11の命令群1101の場合、BEQ命令(分岐命令)の演算実行ステージ133の結果、分岐するか否かが決定する。分岐する場合には、ステップS1201により、第1のステージ130に戻り、分岐先のラベル名Target0のアドレスを計算する。その後、ステージ131〜133を行う。このため、BEQ命令(分岐命令)の演算実行ステージ133の後、次の分岐先のAnd命令の演算実行ステージ133を行うまでの間に分岐ペナルティが発生する。
以上のように、近年のマイクロプロセッサは、パイプライン化されている。パイプライン化は各ステージ130〜134が独立していることを前提に命令を並列処理する方式である。しかし、分岐命令についてはステージ間に依存があり、演算実行ステージ133と命令読み出しアドレスの計算ステージ130が関係しているため、演算実行ステージ133後に命令実行されない時間が生じる。これが分岐ペナルティの発生原因である。
図13は、分岐方向予測を用いた分岐ペナルティ削減方法を示す図である。分岐方向予測は、ステージ131において命令キャッシュメモリから分岐命令を読み出した直後に、分岐するか否かを予測する。分岐すると予測した場合には、ステップS1302により、第1のステージ130に戻り、分岐先のラベル名Target0のアドレスを計算する。その後、分岐命令の演算実行ステージ133により、分岐するか否かが確定する。予測が外れた場合には、ステップS1303により、第1のステージ130に戻り、正しい次の命令読み出しアドレスを計算する。予測が当たった場合には、分岐ペナルティを削減することができる。分岐方向予測には、静的予測と動的予測がある。
次に、静的予測について説明する。分岐命令内にヒント情報を埋め込んでおき、ステージ131において命令キャッシュメモリから分岐命令を読み出した直後に、そのヒント情報を基に分岐するか否かを予測する。分岐すると予測した場合には、ステップS1302により、第1のステージ130に戻り、分岐先のラベル名Target0のアドレスを計算する。その後のステップS1303は上記と同様である。
次に、動的予測について説明する。過去に分岐したか否かの結果を履歴テーブルに記録し、その履歴テーブルを基に分岐するか否かを予測する。分岐すると予測した場合には、ステップS1302により、第1のステージ130に戻り、分岐先のラベル名Target0のアドレスを計算する。その後のステップS1303は上記と同様である。
図14は、BTB(Branch Target Buffer)を用いた分岐ペナルティ削減方法を示す図である。BTBは、分岐命令自身のアドレスと分岐先アドレスを記憶するバッファである。ステージ131において、ステップS1401により、読み出した分岐命令が分岐するか否かを予測する。分岐すると予測した場合には、ステップS1402において、BTBは、ステージ130で計算した「命令読み出しアドレス」を入力し、「分岐先アドレス」を出力する。次に、ステップS1403により、ステージ131において出力された分岐先アドレスの命令を命令キャッシュメモリから読み出す。これにより、アドレス計算ステージ130をバイパスし、分岐先アドレス計算時間を短縮することができる。
また、下記の特許文献1には、命令フェッチ器が分岐予測情報に基づいてキャッシュメモリから命令を先取りする情報処理装置が記載されている。
また、下記の特許文献2には、分岐方向を指定する分岐予測情報を含む複数の分岐命令を格納する記憶手段と、前記分岐予測情報に応じて前記記憶手段から次に実行すべき命令を先取りする先取り手段と、前記分岐命令の実行結果に応じて該分岐命令の分岐予測情報を更新する更新手段とを含むことを特徴とする情報処理装置が記載されている。
特開平10−228377号公報 特開昭63−075934号公報
上記の動的分岐方向予測及びBTBは効果が高いが、履歴テーブル及びバッファを使用するため、半導体チップ面積及び消費電力が増大する欠点がある。
本発明の目的は、分岐ペナルティを削減することができる小型及び/又は小消費電力の情報処理装置を提供することである。
本発明の情報処理装置は、命令を記憶するための命令キャッシュメモリと、入力された分岐命令内のプログラムカウンタ相対分岐先アドレス及びプログラムカウンタ値を加算し、絶対分岐先アドレスを出力する第1の加算器と、前記入力された分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換してその置換した分岐命令を前記命令キャッシュメモリに書き込む書き込み回路とを有することを特徴とする。
また、本発明の情報処理装置は、命令を記憶するための命令キャッシュメモリと、プログラムカウンタ相対分岐命令及びその他の命令を並んで入力すると、前記プログラムカウンタ相対分岐命令が特定の位置になるように前記プログラムカウンタ相対分岐命令及びその他の命令を並び替えて前記命令キャッシュメモリに書き込むと共に、前記並び替えの情報を前記命令キャッシュメモリに書き込む書き込み回路とを有することを特徴とする。
履歴テーブル又はバッファを使用せずに、分岐ペナルティを削減することができるので、半導体チップ面積及び/又は消費電力を小さくすることができる。
図1は、本発明の実施形態による情報処理装置の構成例を示す図である。この情報処理装置は、第1のステージ130、第2のステージ131、第3のステージ132、第4のステージ133、第5のステージ134の5ステージのパイプライン処理を行う。
図2は、本実施形態によるパイプライン処理を示す図である。ステージ130〜134は、それぞれパイプラインステージを示す。まず、第1のステージ130では、命令フェッチ制御部104が命令読み出しのためのアドレスを計算する。次に、第2のステージ131では、命令フェッチ制御部104が命令キャッシュメモリ102から命令キュー103に命令を読み出す。次に、第3のステージ132では、命令デコーダ105が、レジスタ109から値を読み出して演算器107に出力すると共に、命令の解釈(デコード)を行う。次に、第4のステージ133では、演算器107は、命令の演算実行を行う。次に、第5のステージ134では、演算器107の演算結果をレジスタ109に書き込む。
以下、詳細に説明する。CPU(中央演算処理装置)101は、マイクロプロセッサであり、バス120を介してメインメモリ121に接続される。メインメモリ121は、例えばSDRAMであり、バス122を介して外部バス120に接続される。CPU101は、命令キャッシュメモリ102、命令キュー(プリフェッチバッファ)103、命令フェッチ制御部104、命令デコーダ105、分岐ユニット106、演算器107、ロード及びストア部108、レジスタ109、変換回路123並びに選択回路124を有する。
変換回路123は、バス117aを介して外部バス120に接続され、バス117bを介して命令キャッシュメモリ102に接続される。命令キュー103は、命令用バス112を介して命令キャッシュメモリ102に接続される。命令キャッシュメモリ102は、頻繁に使用する命令(プログラム)の一部を予めメインメモリ121から読み込み記憶し、逆に使用されないものから追い出していく。CPU101が要求する命令が命令キャッシュメモリ102上にある場合をキャッシュヒットという。キャッシュヒットした場合には、CPU101は命令キャッシュメモリ102から命令を受け取ることができる。それに対し、CPU101が要求する命令が命令キャッシュメモリ102上にない場合をキャッシュミスという。キャッシュミスの場合は、命令キャッシュメモリ102がバスアクセス信号116によりメインメモリ121に命令の読み出し要求を行う。CPU101は、命令キャッシュメモリ102を介してメインメモリ121から命令を読み出すことができる。バス112の転送速度は、外部バス120の転送速度に比べて極めて速い。したがって、キャッシュヒットした場合には、キャッシュミスした場合に比べ、命令読み出し速度が極めて速い。また、命令(プログラム)がシーケンシャルに読み出される可能性が高いことからキャッシュヒット率が高くなるので、命令キャッシュメモリ102を設けることにより、CPU101の命令読み出し速度が全体的に速くなる。
変換回路123は、メインメモリ121及び命令キャッシュメモリ102間に接続され、メインメモリ121から読み出した命令が分岐命令である場合には、分岐命令内のプログラムカウンタ相対分岐先アドレスを絶対分岐先アドレスに置換してその置換した分岐命令を命令キャッシュメモリ102に書き込む書き込み回路を有する。その詳細は、後に図3を参照しながら説明する。
命令キュー103は、複数の命令を記憶可能であり、バス112を介して命令キャッシュメモリ102に接続され、バス115を介して命令デコーダ105に接続される。すなわち、命令キュー103は、命令キャッシュメモリ102からの命令を書き込み、その命令を読み出して命令デコーダ105に出力する。命令フェッチ制御部104は、命令キャッシュメモリ102に対してキャッシュアクセス制御信号110を入出力し、命令キュー103の入出力を制御する。命令デコーダ105は、命令キュー103に蓄えられた命令をデコードする。
演算器107は、複数の命令を同時実行可能である。選択回路124は、命令デコーダ105がデコードした命令のうち同時実行可能な命令があれば、同時実行させる複数の命令を選択して演算器107に出力する。演算器107は、レジスタ109から値を入力し、命令デコーダ105がデコードした命令を1命令単位で又は複数命令同時に演算実行する。レジスタ109には、演算器107の実行結果が書き込まれる。ロード及びストア部108は、命令デコーダ105がデコーダした命令がロード又はストア命令であるときに、レジスタ109及びメインメモリ121間でロード又はストアを行う。
命令フェッチ制御部104は、命令キャッシュメモリ102から読み出した命令が分岐命令であるとき、その分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う。具体的には、命令フェッチ制御部104は、キャッシュアクセス制御信号110を命令キャッシュメモリ102に出力することによりプリフェッチ要求する。プリフェッチ要求により、命令キャッシュメモリ102から命令キュー103に命令がプリフェッチされる。
このように分岐命令を実行する前の命令キャッシュメモリ102からの読み出しの段階で分岐先命令のプリフェッチ要求を行う。この後、分岐命令を実行した段階で、分岐の有無が決定する。すなわち、演算器107の演算により分岐命令の直前の命令が実行され、実行結果がレジスタ109に書き込まれる。このレジスタ109内の実行結果119は、分岐ユニット106に入力される。演算器107の演算により分岐命令が実行され、分岐条件が成立したかを示す情報が例えばレジスタ109内に設けられたフラグを介して分岐ユニット106に入力される。命令デコーダ105は、命令デコーダ105がデコードした命令が分岐命令であるとき、分岐命令デコード通知信号113を分岐ユニット106に出力する。分岐ユニット106は、分岐命令デコード通知信号113及び分岐命令実行結果119に応じて、分岐命令実行通知信号114を命令フェッチ制御部104に出力する。すなわち、分岐命令の実行結果に応じて、分岐命令実行通知信号114を用いて分岐するか否かを通知する。命令フェッチ制御部104は、分岐する場合には上記でプリフェッチ要求した分岐先命令を命令キュー102にプリフェッチし、分岐しない場合には上記でプリフェッチ要求した分岐先命令のプリフェッチを行わずに無視し、シーケンシャルの命令のプリフェッチ、デコード及び実行を行うと共に、アクセスキャンセル信号111を命令キャッシュメモリ102に出力する。命令キャッシュメモリ102は、既に上記の分岐先のプリフェッチ要求を受けており、キャッシュミスした場合にはメインメモリ121にアクセスしようとしている。命令キャッシュメモリ102は、アクセスキャンセル信号111を入力すると、メインメモリ121へのアクセスをキャンセルする。これにより、不要なメインメモリ121へのアクセスをなくし、性能低下を防止できる。
なお、実行結果119は、説明の簡単のために、レジスタ109から分岐ユニット106に入力されるように示したが、実際にはバイパス回路を用いることにより実行ステージ133の実行完了を待たずに、実行結果119を分岐ユニット106に入力することができる。
変換回路123は、メインメモリ121から命令キャッシュメモリ102に命令を読み出す際に、読み出した命令が分岐命令であれば、その絶対分岐先アドレスを計算して、命令キャッシュメモリ102に書き込んでおく。これにより、ステージ131において、ステップS201により命令キャッシュメモリ102から命令を読み出し、その命令が分岐命令でありかつ分岐すると予測した場合には、ステップS202によりステージ130をバイパスして、ステージ131により分岐先アドレスの命令を命令キャッシュメモリ102から読み出すことができる。この際、履歴テーブル又はバッファを使用せずに、ステージ130をバイパスし、分岐ペナルティを削減することができる。その後、分岐命令の演算実行ステージ133により、分岐するか否かが確定する。予測が外れた場合には、その予測した命令をキャンセルし、ステップS203により、第2のステージ131に戻り、命令キャッシュメモリ102から次の命令を読み出す。予測が当たった場合には、分岐ペナルティを削減することができる。
図3は、図1の変換回路123の構成例を示す図である。変換回路123は、メインメモリ121から入力した命令312が分岐命令である場合には、その分岐命令312内の相対分岐先アドレス324を絶対分岐先アドレス325に変換して、その変換した命令313を命令キャッシュメモリ102に出力する。変換回路123は、加算器301を有する。
プログラムカウンタ相対分岐命令312がメインメモリ121から入力された場合を説明する。プログラムカウンタ値311は、図1のレジスタ109内のプログラムカウンタから読み出した値であり、現在読み出して実行処理しているメインメモリ121内の32ビットのアドレスを示す。プログラムカウンタ相対分岐命令312が入力されると、プログラムカウンタ値311はプログラムカウンタ相対分岐命令312のアドレスと同じ値になる。
1命令は32ビット(4バイト)長である。分岐命令312は、条件321、オペコード322、ヒント情報323及びオフセット(プログラムカウンタ相対分岐先アドレス)324を含む。条件321、オペコード322及びヒント情報323は、分岐命令312の16ビット目から31ビット目までの16ビットである。オフセット324は、分岐命令312の0ビット目から15ビット目までの16ビットである。条件321は、分岐するか否かの判定条件であり、例えばゼロフラグ又はキャリフラグ等である。BEQ命令の条件321は、ゼロフラグである。オペコード322は、命令の種類を示す。変換回路123は、命令内のオペコード322を調べることにより、その命令が分岐命令であるか否かを判断することができる。ヒント情報323は、分岐命令312が分岐するか否かを予測するためのヒント情報である。オフセット324は、プログラムカウンタ相対分岐先アドレスであり、プログラムカウンタ値311を基準にした相対アドレスである。分岐命令312が分岐する場合には、プログラムカウンタ相対分岐先アドレス324が示すアドレスに分岐する。
変換回路123が入力命令が分岐命令であると判断したときには、加算器301は分岐命令312内の16ビットのオフセット324とプログラムカウンタ値311内の2ビット目から17ビット目までの16ビットとを加算し、絶対分岐先アドレスを出力する。なお、命令長は32ビット長であるので、プログラムカウンタ値311の0ビット目及び1ビット目は必ず「00(2進数)」になる。したがって、加算器301は、プログラムカウンタ値311の下位2ビットを加算する必要がない。また、加算器301はプログラムカウンタ値311の18ビット目から31ビット目までの14ビットを加算していないが、この14ビットは後に図6の処理において加算される。その詳細は、後に説明する。
加算器301の出力は、下位16ビットの絶対分岐先アドレス325及び2ビットのキャリ情報CBを含む。キャリ情報CBは、桁上がり及び桁下がりの情報を含む。変換回路123は、入力された分岐命令312内のプログラムカウンタ相対分岐先アドレス324を絶対分岐先アドレス325に置換してその置換した分岐命令313及びキャリ情報CBを命令キャッシュメモリ102に書き込む。すなわち、分岐命令313は、分岐命令312内のプログラムカウンタ相対分岐先アドレス324を絶対分岐先アドレス325に置換した分岐命令である。
以上のように、プログラムカウンタ値311は、上位14ビット及び下位18ビットに分割される。加算器301は、プログラムカウンタ値311の下位18ビットの全部又は一部のビットとプログラムカウンタ相対分岐先アドレス324を加算する。
加算器301が出力する絶対分岐先アドレスは、プログラムカウンタ相対分岐先アドレス324と同じビット数の絶対分岐先アドレス325及びキャリ情報CBに分割される。変換回路123は、分岐命令312内のプログラムカウンタ相対分岐先アドレス324を絶対分岐先アドレス325に置換し、その置換した分岐命令313及びキャリ情報CBを命令キャッシュメモリ102に書き込む書き込み回路を有する。
図4は、セットアソシアティブ方式の命令キャッシュメモリ102を説明するための図である。例として、2ウェイのセットアソシアティブ方式を説明する。命令キャッシュメモリ102は、第1のウェイのキャッシュデータRAM401及びそれに対応するキャッシュタグアドレスRAM411と、第2のウェイのキャッシュデータRAM402及びそれに対応するキャッシュタグアドレスRAM412とを有する。
キャッシュデータRAM401及び402には、メインメモリ121のデータがブロック単位で記憶される。キャッシュタグアドレスRAM411及び412には、それぞれキャッシュデータRAM401及び402に記憶されたデータブロックのアドレスが記憶される。メインメモリ121内の命令のアドレスは、例えば32ビット長であり、上記のプログラムカウンタ値311と同様に0ビット目及び1ビット目が必ず「00(2進数)」になる。そのアドレスの12ビット目から31ビット目までの20ビットがキャッシュタグアドレスRAM411及び412に記憶される。また、そのアドレスの5ビット目から11ビット目までの7ビットは、各キャッシュタグアドレスRAM411,412内の位置を表す。また、そのアドレスの2ビット目から4ビット目までの3ビットは、そのタグアドレスで示されるキャッシュデータRAM401及び402のブロック内の位置を表す。以上のように、命令キャッシュメモリ102は、キャッシュデータRAM401,402内の命令及びその命令のタグアドレス(キャッシュタグアドレスRAM411,412内)を対応付けて記憶する。
メインメモリ121内の同じ領域内のブロックデータは、第1のウェイのキャッシュデータRAM401及び第2のウェイのキャッシュデータRAM402の2箇所に記憶可能である。
キャッシュメモリには、フルアソシアティブ方式及びセットアソシアティブ方式がある。フルアソシアティブ方式は、ウェイに分かれておらず、メインメモリ121内の同じ領域内のブロックデータをキャッシュメモリ102に記憶可能な数の制限がない。セットアソシアティブ方式は、フルアソシアティブ方式に比べ、要求アドレスとキャッシュタグアドレスRAM411,412との比較数が少なくてすむ。
図5は、図1の命令キャッシュメモリ102及び命令フェッチ制御部104の構成例を示す図である。キャッシュデータRAM401,402及びキャッシュタグアドレスRAM411,412は、キャッシュメモリ102内に設けられる。フリップフロップ501及び比較器502は、命令フェッチ制御部104内に設けられる。
以下、命令フェッチ制御部104が、読み出しアドレスRAの命令が命令キャッシュメモリ102内に記憶されているか否かを検索し、記憶されていればその命令を命令キャッシュメモリ102から読み出して出力する手順を説明する。
命令フェッチ制御部104は、図2のステージ130で読み出しアドレスRAを計算する。読み出しアドレスRAは、メインメモリ121内の32ビットのアドレスである。タグアドレスRA1は、読み出しアドレスRAの12ビット目から31ビット目までの20ビットのアドレスである。インデックスアドレスRA2は、読み出しアドレスRAの5ビット目から11ビット目までの7ビットのアドレスである。ブロックアドレスRA3は、読み出しアドレスRAの2ビット目から11ビット目までの10ビットのアドレスである。
フリップフロップ501は、タグアドレスRA1を記憶し、比較器502に出力する。キャッシュタグアドレスRAM411は、インデックスアドレスRA2に対応する位置に格納されているタグアドレスを比較器502に出力する。キャッシュタグアドレスRAM412は、インデックスアドレスRA2に対応する位置に格納されているタグアドレスを比較器502に出力する。キャッシュデータRAM401は、ブロックアドレスRA3に対応する位置に格納されているデータをセレクタ503に出力する。キャッシュデータRAM402は、ブロックアドレスRA3に対応する位置に格納されているデータをセレクタ503に出力する。
比較器502は、フリップフロップ501が出力するタグアドレスRA1が、キャッシュタグアドレスRAM411又は412が出力するタグアドレスと同じであるか否かを比較し、その比較結果をセレクタ503に出力する。
セレクタ503は、キャッシュタグアドレスRAM411が出力するタグアドレスと同じであるときにはキャッシュデータRAM401が出力するデータを選択し、キャッシュタグアドレスRAM412が出力するタグアドレスと同じであるときにはキャッシュデータRAM402が出力するデータを選択し、命令キュー103に出力する。なお、タグアドレスRA1が、キャッシュタグアドレスRAM411及び412が出力するタグアドレスのいずれとも異なる場合には、キャッシュミスであり、命令キャッシュメモリ102がバスアクセス信号116によりメインメモリ121に命令の読み出し要求を行う。
図5の横軸は時間をも表す。期間T1は、読み出しアドレスRAのデータを命令キャッシュメモリ102から読み出すサイクル期間を示す。期間T11は、読み出しアドレスRAを入力してから比較器502での比較前までの期間を示す。タグアドレスRA1は、期間T11では使用せず、その後の比較器502の比較において使用する。そこで、この期間T11を用いて、図6の加算器603の加算を行う。以下、その詳細を説明する。
図6は、分岐命令読み出し期間T1及び分岐先命令読み出し期間T2の命令キャッシュメモリ102及び命令フェッチ制御部104の処理を示す図である。期間T1は、命令フェッチ制御部104が命令キャッシュメモリ102から分岐命令を読み出す期間である。期間T2は、期間T1で読み出した分岐命令が分岐すると予測した場合に、命令フェッチ制御部104が命令キャッシュメモリ102からその分岐先命令を読み出す期間である。
期間T1では、図5の説明と同様にして、命令フェッチ制御部104は、読み出しアドレスRAの分岐命令を命令キャッシュメモリ102から読み出し、セレクタ503から出力する。セレクタ503は、命令キャッシュメモリ102内の図3に示す分岐命令313及びキャリ情報CBを出力する。分岐命令313は、絶対分岐先アドレス325を含む。絶対分岐先アドレス325は、32ビットの絶対分岐先アドレスのうちの2ビット目から17ビット目までの16ビットのアドレスである。
タグアドレスAA1は、タグアドレスRA1(図5)に対応し、32ビットの絶対分岐先アドレスの12ビット目から17ビット目までの6ビットのアドレスである。インデックスアドレスAA2は、インデックスアドレスRA2(図5)に対応し、32ビットの絶対分岐先アドレスの5ビット目から11ビット目までの7ビットのアドレスである。ブロックアドレスAA3は、タグアドレスRA3(図5)に対応し、32ビットの絶対分岐先アドレスの2ビット目から11ビット目までの10ビットのアドレスである。
フリップフロップ601は、キャリ情報CBを記憶し、加算器603に出力する。プログラムカウンタ値311は、プログラムカウンタの値であり、現在、期間T1で読み出した分岐命令のアドレスになっている。加算器603は、プログラムカウンタ値311のうちの18ビット目から31ビット目までの14ビットのアドレスと、フリップフロップ601が出力するキャリ情報CBとを加算し、14ビットのタグアドレスを比較器604に出力する。フリップフロップ602は、タグアドレスAA1を記憶し、比較器604に出力する。比較器604は、加算器603及びフリップフロップ602から12ビット目から31ビット目までの20ビットのタグアドレスを入力する。
キャッシュタグアドレスRAM411は、インデックスアドレスAA2に対応する位置に格納されているタグアドレスを比較器604に出力する。キャッシュタグアドレスRAM412は、インデックスアドレスAA2に対応する位置に格納されているタグアドレスを比較器604に出力する。キャッシュデータRAM401は、ブロックアドレスAA3に対応する位置に格納されているデータをセレクタ605に出力する。キャッシュデータRAM402は、ブロックアドレスAA3に対応する位置に格納されているデータをセレクタ605に出力する。
比較器604は、加算器603及びフリップフロップ602が出力するタグアドレスが、キャッシュタグアドレスRAM411又は412が出力するタグアドレスと同じであるか否かを比較し、その比較結果をセレクタ605に出力する。
セレクタ605は、キャッシュタグアドレスRAM411が出力するタグアドレスと同じであるときにはキャッシュデータRAM401が出力するデータを選択し、キャッシュタグアドレスRAM412が出力するタグアドレスと同じであるときにはキャッシュデータRAM402が出力するデータを選択し、命令キュー103に出力する。これにより、セレクタ605は、分岐先命令を命令キュー103に出力することができる。
なお、加算器603及びフリップフロップ602が出力するタグアドレスが、キャッシュタグアドレスRAM411及び412が出力するタグアドレスのいずれとも異なる場合には、キャッシュミスであり、命令キャッシュメモリ102がバスアクセス信号116によりメインメモリ121に命令の読み出し要求を行う。
以上のように、比較器604は、命令キャッシュメモリ102に書き込まれた分岐命令が読み出されると、その分岐命令内の絶対分岐先アドレス325、キャリ情報CB及びプログラムカウンタ値311の上位ビットを基にしたタグアドレスと命令キャッシュメモリ102内のタグアドレスとを比較する。また、比較器604は、前記分岐命令が分岐するとの予測が行われた場合に前記比較を行う。命令フェッチ制御部104は、前記比較の結果、一致した場合には、その一致したタグアドレスに対応する分岐先命令を命令キャッシュメモリ102から読み出す読み出し回路を有する。
以上のように、図3の変換回路123ではプログラムカウンタ値311内の18ビット目から31ビット目までのタグアドレスの加算を行っていなかった。本実施形態では、加算器603が、その18ビット目から31ビット目までのタグアドレスの加算を分岐先命令の読み出し処理と並行して行う。
図7は、図1の変換回路123の構成例を示す図である。命令キャッシュメモリ102はメインメモリ121から複数の命令(例えば2個の命令)を並んで入力し、演算器107は命令キャッシュメモリ102内の複数の命令を同時実行可能である。その場合、変換回路123は、複数の命令のうちから分岐命令を選択し、分岐命令内の分岐先アドレスを決定する必要がある。
変換回路123は、プログラムカウンタ相対分岐命令及びその他の命令(例えばAdd命令)を並んで入力すると、セレクタ711及び712により、前記プログラムカウンタ相対分岐命令が特定の位置になるように前記プログラムカウンタ相対分岐命令及びその他の命令を並び替えて命令キャッシュメモリ102に書き込むと共に、その並び替えの情報703を命令キャッシュメモリ102に書き込む書き込み回路を有する。
命令群701は、メインメモリ121から変換回路123に並んで入力された2個の命令であり、分岐命令及びAdd命令を含む。分岐命令は32ビット目から63ビット目に位置し、Add命令は0ビット目から31ビット目に位置する。
セレクタ711及び712は、命令群701内の命令を並び替えて命令群702を出力する。変換回路123は、命令群702及び並び替え情報703を命令キャッシュメモリ102に書き込む。命令群702は、変換回路123が命令キャッシュメモリ102に書き込んだ2個の命令であり、Add命令及び分岐命令を含む。Add命令は32ビット目から63ビット目に位置し、分岐命令は0ビット目から31ビット目に位置する。
並び替え情報703は、分岐命令をどの命令と入れ替えたかを示す情報を含む。セレクタ711及び712は、命令キャッシュメモリ102に書き込む命令群701において分岐命令が必ず0ビット目から31ビット目に位置するように並び替えを行う。これにより、分岐命令は、必ず0ビット目から31ビット目までの位置から読み出されるので、分岐命令内の分岐先アドレスを決定する速度を速くすることができる。
図1の選択回路124は、命令キャッシュメモリ102内の並び替えの情報703を基にプログラムカウンタ相対分岐命令及びその他の命令を演算器107に出力する順番を制御する制御回路を有する。
演算器107は、複数の命令を同時実行可能である。選択回路124内の制御回路は、並び替えの情報703を基に同時実行させる命令キャッシュメモリ102内の複数の命令を選択して演算器107に出力する。
図8は、1個のメインメモリ121及び2個のCPU101a,101bがバス120に接続されている図である。CPU101aは命令キャッシュメモリ102aを有し、CPU101bは命令キャッシュメモリ102bを有する。CPU101a及び101bは図1のCPU101に対応し、命令キャッシュメモリ102a及び102bは図1の命令キャッシュメモリ102に対応する。
2個のCPU101a及び102bは、それぞれメインメモリ121から命令を読み出し、命令キャッシュメモリ102a及び102bに書き込むことができる。CPU101aは、上記の方法により、メインメモリ121内の分岐命令をプログラムカウンタ相対分岐先アドレスから絶対分岐先アドレスに置換して命令キャッシュメモリ102aに書き込む。CPU101bが一般的なCPUである場合、CPU101bは、メインメモリ121内の分岐命令をそのまま命令キャッシュメモリ102bに書き込む。
ここで、CPU101bは、直接、CPU101a内の命令キャッシュメモリ102aから命令を読み出し、命令キャッシュメモリ102bに書き込むことができる。その場合、CPU101aは、命令キャッシュメモリ102a内の分岐命令を絶対分岐先アドレスからプログラムカウンタ相対分岐先アドレスに戻し、CPU101bに出力する必要がある。また、CPU101a内の1次命令キャッシュメモリから2次命令キャッシュメモリに命令を戻す場合も同様である。以下、その処理回路を説明する。
図9は、CPU101a内の変換回路123の構成例を示す図であり、図3の変換の逆変換を行う回路を示す。変換回路123は、命令キャッシュメモリ102内の分岐命令313及びキャリ情報CBを元の分岐命令312に逆変換し、CPU101bに出力する。否定(NOT)回路901は、プログラムカウンタ値(分岐命令のアドレス)311の2ビット目から17ビット目までの16ビットのアドレスを論理反転し、加算器902に出力する。分岐先アドレス325は、分岐命令313内の16ビットの絶対分岐先アドレスである。加算器902は、NOT回路901が出力するアドレスと、絶対分岐先アドレス325と、1とを加算し、加算器903に出力する。その結果、加算器902の出力値は、絶対分岐先アドレス325から、プログラムカウンタ値311の2ビット目から17ビット目までの16ビットのアドレスを減算したアドレス値を出力する。次に、加算器903は、加算器902が出力するアドレス値とキャリ情報CBとを加算し、プログラムカウンタ相対分岐先アドレス324を出力する。
分岐命令312は、分岐命令313内の絶対分岐先アドレス325をプログラムカウンタ相対分岐先アドレス324に変換した命令である。変換回路123は、分岐命令312を他のCPU102bに出力する。
以上のように、変換回路123は、命令キャッシュメモリ102aに書き込まれた分岐命令313内の絶対分岐先アドレス325及びキャリ情報CBをプログラムカウンタ相対分岐先アドレス324に置換して元の分岐命令312を生成するために、分岐命令313内の絶対分岐先アドレス325、キャリ情報CB及びプログラムカウンタ値311を基にプログラムカウンタ相対分岐先アドレス324を演算する加算器902及び903を有する。図3の加算器301及び図9の加算器902,903は共用することができる。
図10は、図1の変換回路123の他の構成例を示す図である。以下、図10が図3と異なる点を説明する。変換回路123は、メインメモリ121から入力した命令312が分岐命令である場合には、その分岐命令312内のプログラムカウンタ相対分岐先アドレス312を絶対分岐先アドレス325に変換して、その変換した命令1001を命令キャッシュメモリ102に出力する。変換回路123は、加算器301及びプリデコーダ1011を有する。
加算器301は、図3と同様に、プログラムカウンタ値311の2ビット目から17ビット目までの16ビットのアドレスと、分岐命令312内のプログラムカウンタ相対分岐先アドレス324とを加算し、絶対分岐先アドレス325及びキャリ情報CBを出力する。
プリデコーダ1011は、分岐命令312内のオペコード322をプリデコードし、分岐命令であるか否かを示す1ビットの分岐命令情報1002及び分岐命令の種類を示すオペコード1003を出力する。
変換回路123は、変換後の分岐命令1001及び分岐命令情報1002を命令キャッシュメモリ102に書き込む。分岐命令312内のプログラムカウンタ相対分岐先アドレス324は、分岐命令1001内の絶対分岐先アドレス325に置換される。また、分岐命令312内のオペコード322は、分岐命令1001内のキャリ情報CB、オペコード1003及び未使用領域1004に置換される。その他については、分岐命令312及び1001は同じである。
以上のように、変換回路123は、分岐命令312内のオペコード322をキャリ情報CBに置換し、その置換した分岐命令1001及び分岐命令であることを示す情報1002を命令キャッシュメモリ102に書き込む書き込み回路を有する。
命令キャッシュメモリ102には、分岐命令1001とは別に分岐命令であることを示す情報1002が格納される。命令デコーダ105は、1ビットの分岐命令情報1002だけで分岐命令であることを判断することができるので、オペコード1003はオペコード322に比べて情報量(ビット数)を少なくすることができる。そこで、分岐命令312内のオペコード322を、分岐命令1001内のオペコード1003及びキャリ情報CBに置換する。これにより、キャリ情報CBを分岐命令1001内に配置することができる。
以上のように、本実施形態によれば、命令キャッシュメモリへプログラムカウンタ相対分岐命令を格納する際に、分岐命令内のプログラムカウンタ相対分岐先アドレスとプログラムカウンタ値(分岐命令のアドレス)とを加算し、プログラムカウンタ相対分岐先アドレスを絶対分岐先アドレスに置換することで、プログラムカウンタ相対分岐命令を読み出してから分岐先アドレスの命令へアクセスするまでの時間を短縮することができる。これにより、BTBを搭載することなく相対分岐命令が分岐すると予測した時の分岐ペナルティを短縮することができる。すなわち、履歴テーブル又はバッファを使用せずに、分岐ペナルティを削減することができるので、半導体チップ面積及び/又は消費電力を小さくすることができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、例えば以下のように種々の適用が可能である。
(付記1)
命令を記憶するための命令キャッシュメモリと、
入力された分岐命令内のプログラムカウンタ相対分岐先アドレス及びプログラムカウンタ値を加算し、絶対分岐先アドレスを出力する第1の加算器と、
前記入力された分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換してその置換した分岐命令を前記命令キャッシュメモリに書き込む書き込み回路と
を有することを特徴とする情報処理装置。
(付記2)
前記プログラムカウンタ値は、上位ビット及び下位ビットに分割され、
前記第1の加算器は、前記プログラムカウンタ値の前記下位ビットと前記プログラムカウンタ相対分岐先アドレスを加算することを特徴とする付記1記載の情報処理装置。
(付記3)
前記第1の加算器が出力する絶対分岐先アドレスは、前記プログラムカウンタ相対分岐先アドレスと同じビット数の絶対分岐先アドレス及びキャリ情報に分割され、
前記書き込み回路は、前記分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換し、その置換した分岐命令及び前記キャリ情報を前記命令キャッシュメモリに書き込むことを特徴とする付記2記載の情報処理装置。
(付記4)
前記命令キャッシュメモリは、命令及びその命令のタグアドレスを対応付けて記憶し、
さらに、前記命令キャッシュメモリに書き込まれた分岐命令が読み出されると、その分岐命令内の絶対分岐先アドレス、前記キャリ情報及び前記プログラムカウンタ値の上位ビットを基にしたタグアドレスと前記命令キャッシュメモリ内のタグアドレスとを比較する比較器と、
前記比較の結果、一致した場合には、その一致したタグアドレスに対応する分岐先命令を前記命令キャッシュメモリから読み出す読み出し回路とを有することを特徴とする付記3記載の情報処理装置。
(付記5)
前記比較器は、前記分岐命令が分岐するとの予測が行われた場合に前記比較を行うことを特徴とする付記4記載の情報処理装置。
(付記6)
前記書き込み回路は、プログラムカウンタ相対分岐命令及びその他の命令を並んで入力すると、前記プログラムカウンタ相対分岐命令が特定の位置になるように前記プログラムカウンタ相対分岐命令及びその他の命令を並び替えて前記命令キャッシュメモリに書き込むと共に、前記並び替えの情報を前記命令キャッシュメモリに書き込むことを特徴とする付記4記載の情報処理装置。
(付記7)
さらに、命令を演算実行するための演算器と、
前記命令キャッシュメモリ内の前記並び替えの情報を基に前記プログラムカウンタ相対分岐命令及びその他の命令を前記演算器に出力する順番を制御する制御回路を有することを特徴とする付記6記載の情報処理装置。
(付記8)
前記演算器は、複数の命令を同時実行可能であり、
前記制御回路は、前記並び替えの情報を基に同時実行させる前記命令キャッシュメモリ内の複数の命令を選択して前記演算器に出力することを特徴とする付記7記載の情報処理装置。
(付記9)
さらに、前記命令キャッシュメモリに書き込まれた分岐命令内の絶対分岐先アドレスをプログラムカウンタ相対分岐先アドレスに置換して元の分岐命令を生成するために、前記分岐命令内の絶対分岐先アドレス、前記キャリ情報及びプログラムカウンタ値を基にプログラムカウンタ相対分岐先アドレスを演算する第2の加算器を有することを特徴とする付記4記載の情報処理装置。
(付記10)
前記第1の加算器及び前記第2の加算器は共用されることを特徴とする付記9記載の情報処理装置。
(付記11)
前記書き込み回路は、前記分岐命令内のオペコードを前記キャリ情報に置換し、その置換した分岐命令及び分岐命令であることを示す情報を前記命令キャッシュメモリに書き込むことを特徴とする付記4記載の情報処理装置。
(付記12)
前記第1の加算器が出力する絶対分岐先アドレスは、前記プログラムカウンタ相対分岐先アドレスと同じビット数の絶対分岐先アドレス及びキャリ情報に分割され、
前記書き込み回路は、前記分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換し、その置換した分岐命令及び前記キャリ情報を前記命令キャッシュメモリに書き込むことを特徴とする付記1記載の情報処理装置。
(付記13)
前記命令キャッシュメモリは、命令及びその命令のタグアドレスを対応付けて記憶し、
さらに、前記命令キャッシュメモリに書き込まれた分岐命令が読み出されると、その分岐命令内の絶対分岐先アドレス及び前記プログラムカウンタ値を基にしたタグアドレスと前記命令キャッシュメモリ内のタグアドレスとを比較する比較器と、
前記比較の結果、一致した場合には、その一致したタグアドレスに対応する分岐先命令を前記命令キャッシュメモリから読み出す読み出し回路とを有することを特徴とする付記1記載の情報処理装置。
(付記14)
前記比較器は、前記分岐命令が分岐するとの予測が行われた場合に前記比較を行うことを特徴とする付記13記載の情報処理装置。
(付記15)
さらに、前記命令キャッシュメモリに書き込まれた分岐命令内の絶対分岐先アドレスをプログラムカウンタ相対分岐先アドレスに置換して元の分岐命令を生成するために、前記分岐命令内の絶対分岐先アドレス及びプログラムカウンタ値を基にプログラムカウンタ相対分岐先アドレスを演算する第2の加算器を有することを特徴とする付記1記載の情報処理装置。
(付記16)
前記第1の加算器及び前記第2の加算器は共用されることを特徴とする付記15記載の情報処理装置。
(付記17)
前記書き込み回路は、前記分岐命令内のオペコードを前記キャリ情報に置換し、その置換した分岐命令及び分岐命令であることを示す情報を前記命令キャッシュメモリに書き込むことを特徴とする付記3記載の情報処理装置。
(付記18)
命令を記憶するための命令キャッシュメモリと、
プログラムカウンタ相対分岐命令及びその他の命令を並んで入力すると、前記プログラムカウンタ相対分岐命令が特定の位置になるように前記プログラムカウンタ相対分岐命令及びその他の命令を並び替えて前記命令キャッシュメモリに書き込むと共に、前記並び替えの情報を前記命令キャッシュメモリに書き込む書き込み回路と
を有することを特徴とする情報処理装置。
(付記19)
さらに、命令を演算実行するための演算器と、
前記命令キャッシュメモリ内の前記並び替えの情報を基に前記プログラムカウンタ相対分岐命令及びその他の命令を前記演算器に出力する順番を制御する制御回路を有することを特徴とする付記18記載の情報処理装置。
(付記20)
前記演算器は、複数の命令を同時実行可能であり、
前記制御回路は、前記並び替えの情報を基に同時実行させる前記命令キャッシュメモリ内の複数の命令を選択して前記演算器に出力することを特徴とする付記19記載の情報処理装置。
本発明の実施形態による情報処理装置の構成例を示す図である。 本実施形態によるパイプライン処理を示す図である。 図1の変換回路の構成例を示す図である。 セットアソシアティブ方式の命令キャッシュメモリを説明するための図である。 図1の命令キャッシュメモリ及び命令フェッチ制御部の構成例を示す図である。 分岐命令読み出し期間及び分岐先命令読み出し期間の命令キャッシュメモリ及び命令フェッチ制御部の処理を示す図である。 図1の変換回路の構成例を示す図である。 1個のメインメモリ及び2個のCPUがバスに接続されている図である。 CPU内の変換回路の構成例を示す図である。 図1の変換回路の他の構成例を示す図である。 分岐命令を含む命令群の例を示す図である。 命令のパイプライン処理を示す図である。 分岐方向予測を用いた分岐ペナルティ削減方法を示す図である。 BTB(Branch Target Buffer)を用いた分岐ペナルティ削減方法を示す図である。
符号の説明
101 CPU
102 命令キャッシュメモリ
103 命令キュー
104 命令フェッチ制御部
105 命令デコーダ
106 分岐ユニット
107 演算器
108 ロード及びストア部
109 レジスタ
121 メインメモリ
123 変換回路
124 選択回路
301 加算器
311 プログラムカウンタ値
312,313 分岐命令
CB キャリ情報

Claims (10)

  1. 命令を記憶するための命令キャッシュメモリと、
    入力された分岐命令内のプログラムカウンタ相対分岐先アドレス及びプログラムカウンタ値を加算し、絶対分岐先アドレスを出力する第1の加算器と、
    前記入力された分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換してその置換した分岐命令を前記命令キャッシュメモリに書き込む書き込み回路と
    を有することを特徴とする情報処理装置。
  2. 前記プログラムカウンタ値は、上位ビット及び下位ビットに分割され、
    前記第1の加算器は、前記プログラムカウンタ値の前記下位ビットと前記プログラムカウンタ相対分岐先アドレスを加算することを特徴とする請求項1記載の情報処理装置。
  3. 前記第1の加算器が出力する絶対分岐先アドレスは、前記プログラムカウンタ相対分岐先アドレスと同じビット数の絶対分岐先アドレス及びキャリ情報に分割され、
    前記書き込み回路は、前記分岐命令内のプログラムカウンタ相対分岐先アドレスを前記絶対分岐先アドレスに置換し、その置換した分岐命令及び前記キャリ情報を前記命令キャッシュメモリに書き込むことを特徴とする請求項1又は2記載の情報処理装置。
  4. 前記命令キャッシュメモリは、命令及びその命令のタグアドレスを対応付けて記憶し、
    さらに、前記命令キャッシュメモリに書き込まれた分岐命令が読み出されると、その分岐命令内の絶対分岐先アドレス及び前記プログラムカウンタ値を基にしたタグアドレスと前記命令キャッシュメモリ内のタグアドレスとを比較する比較器と、
    前記比較の結果、一致した場合には、その一致したタグアドレスに対応する分岐先命令を前記命令キャッシュメモリから読み出す読み出し回路とを有することを特徴とする請求項1又は2記載の情報処理装置。
  5. さらに、前記命令キャッシュメモリに書き込まれた分岐命令内の絶対分岐先アドレスをプログラムカウンタ相対分岐先アドレスに置換して元の分岐命令を生成するために、前記分岐命令内の絶対分岐先アドレス及びプログラムカウンタ値を基にプログラムカウンタ相対分岐先アドレスを演算する第2の加算器を有することを特徴とする請求項1又は2記載の情報処理装置。
  6. 前記第1の加算器及び前記第2の加算器は共用されることを特徴とする請求項5記載の情報処理装置。
  7. 前記書き込み回路は、前記分岐命令内のオペコードを前記キャリ情報に置換し、その置換した分岐命令及び分岐命令であることを示す情報を前記命令キャッシュメモリに書き込むことを特徴とする請求項3記載の情報処理装置。
  8. 命令を記憶するための命令キャッシュメモリと、
    プログラムカウンタ相対分岐命令及びその他の命令を並んで入力すると、前記プログラムカウンタ相対分岐命令が特定の位置になるように前記プログラムカウンタ相対分岐命令及びその他の命令を並び替えて前記命令キャッシュメモリに書き込むと共に、前記並び替えの情報を前記命令キャッシュメモリに書き込む書き込み回路と
    を有することを特徴とする情報処理装置。
  9. さらに、命令を演算実行するための演算器と、
    前記命令キャッシュメモリ内の前記並び替えの情報を基に前記プログラムカウンタ相対分岐命令及びその他の命令を前記演算器に出力する順番を制御する制御回路を有することを特徴とする請求項8記載の情報処理装置。
  10. 前記演算器は、複数の命令を同時実行可能であり、
    前記制御回路は、前記並び替えの情報を基に同時実行させる前記命令キャッシュメモリ内の複数の命令を選択して前記演算器に出力することを特徴とする請求項9記載の情報処理装置。
JP2006355762A 2006-12-28 2006-12-28 情報処理装置 Withdrawn JP2008165589A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006355762A JP2008165589A (ja) 2006-12-28 2006-12-28 情報処理装置
US11/907,617 US20080162903A1 (en) 2006-12-28 2007-10-15 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006355762A JP2008165589A (ja) 2006-12-28 2006-12-28 情報処理装置

Publications (1)

Publication Number Publication Date
JP2008165589A true JP2008165589A (ja) 2008-07-17

Family

ID=39585719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006355762A Withdrawn JP2008165589A (ja) 2006-12-28 2006-12-28 情報処理装置

Country Status (2)

Country Link
US (1) US20080162903A1 (ja)
JP (1) JP2008165589A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155539A (ja) * 2011-01-26 2012-08-16 Fujitsu Ltd 処理装置
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8295266B2 (en) * 2006-10-25 2012-10-23 Lg Electronics Inc. Method for adjusting RACH transmission against frequency offset
ES2385168T3 (es) 2007-01-05 2012-07-19 Lg Electronics, Inc. Procedimiento para establecer el desplazamiento cíclico considerando el desplazamiento de la frecuencia
US7792212B2 (en) * 2007-01-05 2010-09-07 Lg Electronics, Inc. Method for setting cyclic shift considering frequency offset
JP6016689B2 (ja) * 2013-03-28 2016-10-26 ルネサスエレクトロニクス株式会社 半導体装置
JP2015201119A (ja) * 2014-04-10 2015-11-12 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR122199A (ja) * 1973-12-17
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
US5809271A (en) * 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
US5611065A (en) * 1994-09-14 1997-03-11 Unisys Corporation Address prediction for relative-to-absolute addressing
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US5734822A (en) * 1995-12-29 1998-03-31 Powertv, Inc. Apparatus and method for preprocessing computer programs prior to transmission across a network
TW380238B (en) * 1996-12-09 2000-01-21 Matsushita Electric Ind Co Ltd Information processing apparatus which accurately predicts whether a branch is taken for a conditional branch instruction, using small-scale hardware
EP0953898A3 (en) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US6609194B1 (en) * 1999-11-12 2003-08-19 Ip-First, Llc Apparatus for performing branch target address calculation based on branch type
US6810459B1 (en) * 2001-02-12 2004-10-26 Motorola, Inc. Reduced complexity computer system architecture
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
DE602006013515D1 (de) * 2006-02-28 2010-05-20 Fujitsu Ltd Verarbeitungseinrichtung durch vorhersage einer abzweigung aus komprimierten adresseninformationen

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155539A (ja) * 2011-01-26 2012-08-16 Fujitsu Ltd 処理装置
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Also Published As

Publication number Publication date
US20080162903A1 (en) 2008-07-03

Similar Documents

Publication Publication Date Title
JP6143872B2 (ja) 装置、方法、およびシステム
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US9367471B2 (en) Fetch width predictor
US20150186293A1 (en) High-performance cache system and method
CN112543916B (zh) 多表分支目标缓冲器
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US9753855B2 (en) High-performance instruction cache system and method
JP2008165589A (ja) 情報処理装置
US7831815B2 (en) Data processing apparatus and method for identifying sequences of instructions
US20190065205A1 (en) Variable length instruction processor system and method
JP5012084B2 (ja) 情報処理装置
US8635434B2 (en) Mathematical operation processing apparatus for performing high speed mathematical operations
EP1974254B1 (en) Early conditional selection of an operand
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
JP3683248B2 (ja) 情報処理装置及び情報処理方法
US20120173850A1 (en) Information processing apparatus
JP3345787B2 (ja) データ処理装置
CN112540792A (zh) 指令处理方法及装置
JP5902208B2 (ja) データ処理装置
JP2008071061A (ja) 情報処理装置
US7290120B2 (en) Microprocessor having a power-saving fetch and decoding unit for fetching and decoding compressed program instructions and having a program instruction sequencer
US20240036866A1 (en) Multiple instruction set architectures on a processing device
JP4002288B2 (ja) 情報処理装置
JP2009104614A (ja) 情報処理装置
JP2009009603A (ja) 情報処理装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080731

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090730

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100712