JP4837305B2 - マイクロプロセッサ及びマイクロプロセッサの制御方法 - Google Patents

マイクロプロセッサ及びマイクロプロセッサの制御方法 Download PDF

Info

Publication number
JP4837305B2
JP4837305B2 JP2005137750A JP2005137750A JP4837305B2 JP 4837305 B2 JP4837305 B2 JP 4837305B2 JP 2005137750 A JP2005137750 A JP 2005137750A JP 2005137750 A JP2005137750 A JP 2005137750A JP 4837305 B2 JP4837305 B2 JP 4837305B2
Authority
JP
Japan
Prior art keywords
load
instruction
data
register
microprocessor
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
JP2005137750A
Other languages
English (en)
Other versions
JP2006318051A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2005137750A priority Critical patent/JP4837305B2/ja
Priority to US11/409,996 priority patent/US7565510B2/en
Publication of JP2006318051A publication Critical patent/JP2006318051A/ja
Application granted granted Critical
Publication of JP4837305B2 publication Critical patent/JP4837305B2/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、マイクロプロセッサのアーキテクチャに関し、特に、ノンブロッキング・ロードを行うマイクロプロセッサに関する。
マイクロプロセッサ開発者の主要な目標の1つは、マイクロプロセッサの命令処理速度を向上することにある。マイクロプロセッサの処理速度を向上する技術として、キャッシュメモリを使用することが知られている。キャッシュメモリは、マイクロプロセッサの処理速度とDRAM等のメインメモリのデータ転送速度との速度差を解消するために用いられる。
しかしながら、キャッシュメモリ内に演算に使用するデータが格納されてない場合は、プロセッサ外部の低速なメインメモリからキャッシュメモリに対してデータを転送してこなければならない。このように、マイクロプロセッサで使用するデータがキャッシュメモリ内でヒットしない場合をミスヒット又はキャッシュミスと言う。キャッシュミスが生じると、メインメモリからキャッシュメモリへのデータ転送が行なわれている間キャッシュメモリへのアクセスができず、キャッシュミスのあったロード命令だけでなく後続のロード命令及びストア命令の実行も停止してしまう。パイプライン処理を行うマイクロプロセッサでは、キャッシュミスはパイプラインストールし、性能低下の原因となる。
このようなキャッシュミスによるパイプラインストールの発生を回避するため、ノンブロキング・ロード機能を備えたマイクロプロセッサが知られている。ノンブロッキング・ロード機能とは、先行して実行されたロード命令においてキャッシュミスが発生した場合に、キャッシュミスが発生した命令を一時的に退避し、後続のロード命令によるキャッシュメモリへのアクセスを継続して実行できるものである(例えば非特許文献1を参照)。
一方、マイクロプロセッサは、所定のデータ長を単位としてデータを取り扱うこととしており、現在の多くのプロセッサは、この取り扱い単位を32ビット(4バイト)単位又は64ビット(8バイト)単位としている。また、この取り扱い単位を「ワード」と定義している。以下では、32ビット単位を1ワード、64ビット単位をダブル・ワードと呼ぶ。キャッシュメモリなどの周辺の装置もマイクロプロセッサのデータ単位に従ってデータ長を統一することにより、高速処理が可能となる。例えば、キャッシュメモリのライン幅は、マイクロプロセッサのデータ長にあわせて、1ワード又はその倍数として構成されており、1回のキャッシュアクセスにより、効率よく1ワード又は1ダブル・ワードのデータをロードできるものとされている。さらにロード・ストアできるデータの単位としては8ビット(1バイト)と16ビット(2バイト、もしくはハーフワード)があり、ワードロード、ダブルワードロードと同じようにキャッシュメモリもしくはメインメモリにアクセスすることができる。
1ワード未満のデータと、その他の1ワード単位のデータをキャッシュメモリに格納すると、1ワード単位の境界(ワード境界)あるいはキャッシュメモリのライン境界(キャッシュライン境界)を跨いでデータが格納される場合が生じる。以下では、ワード境界を跨いで格納されたデータを非整列データと呼ぶ。
このような非整列データを整列化してロードするためは、2回のキャッシュアクセス、2つ以上のレジスタ及び2回以上の論理演算処理が必要となる。しかし、例えば、代表的なRISC(Reduced Instruction Set Computer)型命令セットであるMIPS(登録商標)命令セットでは、LWL(Load Word Left)命令、LWR(Load Word Right)命令、LDL(Load Double-word Left)命令、LDR(Load Double-word Right)命令等の命令を備えており、これらの命令を組み合わせて実行することによって、非整列データのロードを2回のキャッシュアクセスのみで実行可能としている。さらに使用するレジスタを1つにすることができ効率的である。
一例として、LWL命令及びLWR命令による非整列データをロードする場合について、図7を用いて説明する。図7は、ビックエンディアン方式でデータを格納したキャッシュメモリから、非整列データ(Y1〜Y4)をロードする場合の操作を示している。
図7に示したLWL命令のニーモニック"LWL R18 , 0x2(R0)"は、ベースレジスタR0の値にオフセット値0x2を加算して得られるキャッシュメモリの実効アドレスからワード境界までのデータを、ロード先レジスタR18の左側に格納する命令である。具体的には、ベースレジスタR0の値を0x0とすると、実効アドレスで指定された0x2番地から左側のワード境界である0x3番地までのデータY1、Y2と、ターゲットレジスタR18に元々格納されていたデータB2、B3とがマージされ、再びレジスタR18に格納される。
また、LWR命令のニーモニック"LWR R18 , 0x5(R0)"は、キャッシュメモリのワード境界からベースレジスタR0の値にオフセット値0x5を加算して得られるキャッシュメモリの実効アドレスまでのデータを、ロード先レジスタR18の右側に格納する命令である。具体的には、ベースレジスタR0の値を0x0とすると、実効アドレスで指定された0x5番地と、番地の小さい側のワード境界である0x3番地との間のデータY3、Y4が、ロード先レジスタR18に元々格納されていたデータY1、Y2とマージされ、再びレジスタR18に格納される。
このように、MIPS(登録商標)命令セットであれば、1ワード未満のデータを元のデータとマージしてロードする命令であるLWL命令とLWR命令を実行することによって、非整列データ(Y1〜Y4)のロードを行うことができる。同様に、LDL命令とLDR命令を実行することによって、非整列に格納されたダブル・ワード単位のデータを整列化してロードすることができる。
なお、以下では上述したMIPS(登録商標)命令セットにおけるLWL命令、LWR命令、LDL命令、LDR命令のような命令を非整列ロード命令と呼ぶ。つまり、非整列ロード命令とは、マイクロプロセッサの処理データ単位である1ワード未満又は1ダブル・ワード未満のデータをキャッシュメモリから読み出してロード先レジスタに格納する命令であって、キャッシュメモリから読み出したデータをロード先レジスタが保持していた元のデータ(マージ用データ)とマージし、マージ後のデータを前記ロード先レジスタに格納する命令である。
非整列ロード命令を実行可能であり、かつノンブロッキング・ロード機能を備えた従来のマイクロプロセッサ8の構成を図8及び図9に示す。図8はマイクロプロセッサ8の全体構成を示す図である。
命令フェッチ部12は、プログラムカウンタ(不図示)の内容を命令キャッシュ11に与え、命令を命令レジスタ(不図示)にロードする。なお、命令キャッシュ11は、命令を格納するキャッシュメモリである。
命令デコード部13は、命令をデコードし、命令の種類に応じてリザベーションステーション15乃至18のいずれかに命令を発行する。また、命令デコード部13は、オペランドで指定されたレジスタ番号をレジスタファイル14に与え、レジスタファイル14から出力されたオペランドレジスタの内容がリザベーションステーション15乃至18に格納される。
リザベーションステーション15乃至18において全てのオペランドが有効になると、ロード・ストア・ユニット(LSU)80を含む各実行ユニットにおいて、命令が実行される。
非整列ロード命令を含むロード命令は、LSU80において実行される。ロード命令を実行するLSU80の構成を図9に示す。
LSU80でのロード命令の実行時には、リザベーションステーション18が保持している3つの命令オペランドの内容がSopレジスタ101、オフセットレジスタ102、Topレジスタ103にセットされる。Sopレジスタ101には、キャッシュメモリの実効アドレスを生成するためのベースレジスタの値がセットされる。オフセットレジスタ102には、実効アドレス演算のためのオフセット値がセットされる。また、Topレジスタ103には、ロードしたデータの格納先であるロード先レジスタに、ロード命令の実行前に格納されている内容がセットされる。
アドレス生成部107は、Sopレジスタ101及びオフセットレジスタ102の値を加算して、データキャッシュ23の実効アドレスを生成する。
キャッシュ制御部108は、アドレス生成部107が生成した実効アドレスを参照し、キャッシュミスである場合は、そのロード命令をフェッチキュー109に退避する。これにより、メインメモリ24からのデータロードを待たずに、後続のロード命令を実行可能になり、パイプラインストールの発生を回避できる。なお、図9では、フェッチキューに4命令を積むことができる構成を示しており、4つのキャッシュミスが発生しても、後続命令によるキャッシュアクセスを継続することができる。なお、フェッチキュー109に退避可能な命令数を超えるキャッシュミスが同時に発生した場合、キャッシュ制御部108は命令デコード部13、リザベーションステーション18にビジー信号を出力し、後続命令の発行が中断される。
上述したLWL命令、LWR命令等の非整列ロード命令を実行する場合には、データキャッシュ23からのリターンデータとTopレジスタ103にセットされたマージ用データがデータマージ部810においてマージされ、マージ後のデータがレジスタファイル14のロード先レジスタに格納される。なお、非整列ロード命令を除く通常のロード命令の場合、データマージ部810は、データキャッシュ23からのリターンデータをレジスタファイル14に格納する。
John Paul Shen、Mikko H.Lipasti著、「Modern Processor Design : Fundamentals of Superscalar Processors : Beta Edition」、(米国)、McGraw-Hill、2002年7月22日、p.201-204
従来のマイクロプロセッサ8では、非整列ロード命令を実行すると、パイプラインストールが発生するという課題がある。このパイプラインストールは、非整列ロード命令においてキャッシュミスが発生した場合、メインメモリからのロード若しくはアンキャッシュ・ロードを行う場合だけでなく、キャッシュヒット時にも発生する。
上述したように、非整列ロード命令を除く通常のロード命令であれば、キャッシュミスがあった場合にも、フェッチキュー109に命令を退避することにより、データキャッシュの入れ替え中にも後続ロード命令によるキャッシュにアクセスすることが可能である。
しかし、LWL命令、LWR命令等の非整列ロード命令を実行する場合、Topレジスタ103は、データマージ部810によってマージ用データの参照が行われるまでマージ用データとして保持しておく必要がある。このため、非整列ロード命令を実行する場合、キャッシュヒット時でもデータキャッシュ23からリターンデータが返ってくるまでに通常2サイクル以上かかるので、データキャッシュ23から参照データが得られるまでの間、非整列ロード命令と後続命令との間でTopレジスタ103の競合が生じ、後続命令の実行が停止することになる。キャッシュミス時やアンキャッシュ・ロードを行う場合には、さらに長時間のパイプラインストールを生ずることになる。このように、非整列ロード命令を実行すると、ノンブロッキング・ロードのためのフェッチキュー109を備えている場合であっても、ノンブロッキング動作を継続することができず、パイプラインストールを生じてしまう。
なお、上述した従来のマイクロプロセッサ8では、非整列命令判定部804が非整列ロード命令の発行を判定すると、フェッチキュー109の状態に関わらず命令デコード部13、リザベーションステーション18にビジー信号を出力し、後続命令の実行を中断する構成となっている。
本発明にかかるマイクロプロセッサは、ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてデータキャッシュからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサである。ここで、前記ロードユニットは、前記ロード先レジスタのロード前の値を格納する第1の入力レジスタと、前記命令発行部より発行されたロード命令が、前記データキャッシュから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、前記第1の入力レジスタに保持されたデータを格納可能な退避レジスタとを備え、前記判定部が非整列ロード命令と判定した場合に、前記第1の入力レジスタの格納データを前記退避レジスタに格納し、前記第1の入力レジスタを前記命令発行部が発行する後続命令に使用可能とするものである。
このような構成により、ロード先レジスタのロード前の値を格納する第1の入力レジスタを後続命令に開放できるため、非整列ロード命令と後続命令との間で第1の入力レジスタの資源競合が生じない。したがって、キャッシュミスの有無やアンキャッシュ・ロードであるかに関わらず、非整列ロード命令の実行時におけるパイプラインストールの発生を回避することができる。
一方、本発明にかかるマイクロプロセッサの制御方法は、ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてデータキャッシュからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサの制御方法である。まず、前記命令発行部より発行されたロード命令が、前記データキャッシュから読み出したデータと前記ロード先レジスタのロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する。次に、非整列ロード命令と判定した場合に、前記ロードユニットの入力レジスタに格納された前記ロード先レジスタのロード前の値を退避レジスタに格納し、前記第入力レジスタを前記命令発行部が発行する後続命令に使用可能とするものである。
このような制御方法によって、非整列ロード命令の実行時にロード先レジスタのロード前の値を格納する第1の入力レジスタを後続命令に開放できるため、非整列ロード命令と後続命令との間で第1の入力レジスタの資源競合が生じない。したがって、キャッシュミスの有無やアンキャッシュ・ロードであるかに関わらず、非整列ロード命令の実行時におけるパイプラインストールの発生を回避することができる。
本発明により、非整列ロード命令実行時のパイプラインストールの発生を回避できるマイクロプロセッサ及びマイクロプロセッサの制御方法を提供することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
発明の実施の形態1.
本実施の形態にかかるマイクロプロセッサ1の構成を図1及び図2を用いて説明する。図1は、マイクロプロセッサ1の全体構成を示す図である。マイクロプロセッサ1は、非整列ロード命令においてキャッシュミスがあった場合にパイプラインストールの発生を回避するよう構成されたロード・ストア・ユニット(LSU)22を備えていることを特徴としている。なお、ロード・ストア・ユニット22を除くその他の部分は、従来のマイクロプロセッサ8が備える構成と同様であるため、図8のマイクロプロセッサ8と同一の記号を付して説明を省略する。
図2は、マイクロプロセッサ1が備えるLSU22の構成を示す図である。LSU22は、退避レジスタ106及び退避レジスタ監視部105を備えている。非整列命令判定部104が非整列ロード命令の発行を判定すると、Topレジスタ103にセットされたマージ用データを退避レジスタ106に格納する。
退避レジスタ106が使用中である時にLSU22に対して新たな非整列ロード命令が発行されると、パイプラインストールが生じることになる。したがって、退避レジスタ監視部105は、退避レジスタ106の使用状態を監視し、退避レジスタ106が使用中である場合、新たな非整列ロード命令の発行を停止するよう命令デコード部13、リザベーションステーション18にビジー信号を出力する。退避レジスタ106に新たなマージ用データの格納が可能になると、ビジー信号の出力を解除する。
データマージ部110は、非整列ロード命令の場合、データキャッシュ23からのリターンデータと退避レジスタ106に格納されたマージ用データをマージし、マージ後のデータをレジスタファイル14のロード先レジスタに格納する。非整列ロード命令を除く通常のロード命令の場合は、データキャッシュ23からのリターンデータをレジスタファイル14に格納する。
続いてマイクロプロセッサ1のロード命令処理手順を図3のフローチャートを用いて説明する。まず、ビジー信号がなければ、命令デコード部13、リザベーションステーション18から、LSU22に対してロード命令が発行される(ステップS101、S102)。ステップS103では、非整列命令判定部14が発行された命令が非整列ロード命令であるか否かを判定し、非整列ロード命令でなければ、従来のマイクロプロセッサと同様に通常のロード命令を実行する(ステップS104)。一方、非整列ロード命令であった場合は、Topレジスタにセットされたマージ用データを退避レジスタ106に格納する(ステップS105)。退避レジスタ監視部105は、退避レジスタ106が空き領域があれば、S101に戻り新たな命令を受け付ける(ステップS106)。
退避レジスタ106が空き領域がなく、新たにマージ用データを格納できない状態になると、退避レジスタ監視部105は、ビジー信号を出力する(ステップS106、S107)。その後、データキャッシュ23からデータを取得できた場合、ビジー信号の出力が解除される(ステップS108、S109)。また、データマージ部110は、退避レジスタ106に格納されたマージ用データとデータキャッシュ23からのリターンデータをマージして、レジスタファイル14に格納する。
以上に述べたように、本実施の形態にかかるマイクロプロセッサ1では、非整列ロード命令でのデータマージに使用するマージ用データは退避レジスタ106に格納される。このため非整列ロード命令の実行時に、当該非整列ロード命令と後続のロード・ストア命令との間でTopレジスタ103の資源競合を生じることがない。これにより、非整列ロード命令の実行時に、パイプラインストールを生じることなく後続命令を継続して実行できる。
マイクロプロセッサ1におけるパイプライン処理を図4に示す。図4(a)は従来のマイクロプロセッサ8のパイプライン処理であり、図4(b)が本実施の形態にかかるマイクロプロセッサ1のパイプライン処理である。ここで、図のIFは、命令フェッチステージ、RFはオペランドレジスタのフェッチを含む命令デコードステージ、EXは実行ステージを示している。また、DCはデータキャッシュへのアクセスを行うステージであり、WBはデータキャッシュからのリターンデータをレジスタファイル14に格納するライトバックを行うステージである。
図4(a)に示すように、従来のマイクロプロセッサ8では、LWL命令1においてキャッシュミスがあると、データキャッシュ23ではなくメインメモリ24からデータを取得しなければならない。図のMEMステージは、メインメモリからデータを取得するステージを示している。従来のマイクロプロセッサ8では、非整列ロード命令にキャッシュミスがあると、通常のロード命令を含む全てのロード命令が発行できない状態となる。このため、図4(a)の場合には、LWL命令1に続く通常のロード命令(LW命令1)及びLWL命令2にパイプラインストールが生じてしまう。
これに対して、本実施の形態にかかるマイクロプロセッサ1であれば、LWL命令1においてキャッシュミスがあっても、後続のLW命令1にストールは生じない。なお、退避レジスタ106が1命令分のマージ用データを退避できる構成である場合は、後続の非整列ロード命令であるLWL命令2にはストールが生じることになる。
このように、退避レジスタ106は、少なくとも1命令分のマージ用データを格納可能な構成とすることにより、通常のロード命令に対するパイプラインストールの発生を回避することができる。なお、退避レジスタ106に複数命令分のマージ用データを退避可能とすれば、複数の非整列ロード命令が連続して発行される場合であっても、パイプラインストールの発生を回避することが可能である。この場合は、マージ用データを退避レジスタ106に格納する際に、非整列ロード命令を識別する命令IDと対応付けて格納するとよい。
発明の実施の形態2.
本実施の形態にかかるマイクロプロセッサと前述したマイクロプロセッサ1との差分は、マージ用データを格納する退避用レジスタに、少なくともフェッチキュー109に退避可能な命令数分のマージ用データを退避可能とした点である。
本実施の形態のマイクロプロセッサが備えるLSU32の構成を図5に示す。なお、LSU32を除くその他の部分は発明の実施の形態1のマイクロプロセッサ1と同様であるため、図面及び詳細な説明を省略する。
LSU32が備える退避用レジスタ206は、キャッシュミスのあった命令を退避するフェッチキュー109の退避可能数と同数のマージ用データを格納できるものである。図5では4命令分としている。
このような構成によって、フェッチキューに退避可能な命令数と同数の非整列ロード命令が連続した場合にも、退避用レジスタ206にマージ用データを退避することができる。例えば、フェッチキューに対比可能な命令数が4命令であれば、図6に示すように、4つの非整列ロード命令が連続しても、パイプラインストールを生じることなく実行可能である。このように、本実施の形態にかかるマイクロプロセッサは、非整列ロード命令を通常のロード命令と同様のサイクルで実行することができる。
また、本実施の形態では、ロード命令によるパイプラインストールが生じる要因は、フェッチキュー109に退避可能な命令数を超えて非整列ロード命令が発行された場合であり、非整列ロード命令の連続が固有のストール要因となることはない。したがって、図5に示したLSU32では、フェッチキュー109の状態監視によりビジー信号の出力及び出力解除を行えばよく、退避レジスタ206に特有の状態監視は不要となる。このため、LSU32では、発明の実施の形態1のLSU22が備えていた退避レジスタ監視部105を省略することができる。これにより、制御回路の構成を簡素化でき、マイクロプロセッサ設計を容易に行うことが可能となる。
なお、退避レジスタ206には、フェッチキューに格納された命令を識別するFtqID及び命令IDに対応付けて保存することとしてもよい。さらに、退避レジスタ206とフェッチキュー109を統合して、FtqID、命令ID及びマージ用データを対応付けて格納することしてもよい。これにより、従来から用いられているフェッチキュー109の拡張によって退避レジスタ206を容易に構成することができる。また、退避レジスタ206の配置に必要なマイクロプロセッサ上の領域を節約することができる。
本発明にかかるマイクロプロセッサの構成図である。 本発明にかかるマイクロプロセッサの構成図である。 本発明にかかるマイクロプロセッサのロード命令の処理手順を示すフローチャートである。 本発明にかかるマイクロプロセッサにおけるパイプライン処理を説明する図である。 本発明にかかるマイクロプロセッサの構成図である。 本発明にかかるマイクロプロセッサにおけるパイプライン処理を説明する図である。 非整列ロード命令を説明するための図である。 従来のマイクロプロセッサの構成図である。 従来のマイクロプロセッサの構成図である。
符号の説明
1 マイクロプロセッサ
11 命令キャッシュ
12 命令フェッチ部
13 命令デコード部
14 レジスタファイル
15〜18 リザベーションステーション
19 分岐ユニット
20 整数演算ユニット
21 浮動小数点演算ユニット
22 ロード・ストア・ユニット(LSU)
23 データキャッシュ
24 メインメモリ
101 Sopレジスタ
102 オフセットレジスタ
103 Topレジスタ
104 非整列命令判定部
105 退避レジスタ監視部
106、206 退避レジスタ
107 アドレス生成部
108 キャッシュ制御部
109 フェッチキュー
110 データマージ部

Claims (4)

  1. ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてメモリからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサであって、
    前記ロードユニットは、
    前記ロード先レジスタのロード前の値を格納する第1の入力レジスタと、
    前記命令発行部より発行されたロード命令が、前記メモリから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、
    前記第1の入力レジスタに保持されたデータを格納可能な退避レジスタとを備え、
    前記判定部が非整列ロード命令と判定した場合に、前記第1の入力レジスタの格納データを前記退避レジスタに格納し、前記第1の入力レジスタを前記命令発行部が発行する後続命令に使用可能とすることを特徴とし、
    前記メモリは、前記マイクロプロセッサ外部のメインメモリであるか、又は前記マイクロプロセッサと前記メインメモリの間に設けられたデータキャッシュであり、
    前記データキャッシュへのアクセス時にキャッシュミスが生じたロード命令を退避するフェッチキューをさらに備え、
    前記退避レジスタに退避可能なデータ数は、前記フェッチキューに退避可能な命令数以上であり、
    前記命令発行部に対して新たなロード命令の発行を停止するためのビジー信号を、前記フェッチキューに新たにロード命令を退避する空き領域が無いことを条件として生成し、前記退避レジスタに新たにデータを退避する空き領域がないことを条件としては生成しないよう構成されている、マイクロプロセッサ。
  2. ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてメモリからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサであって、
    前記ロードユニットは、
    前記ロード命令のオペランドで指定された前記ロード先レジスタのロード前の値を格納する第1の入力レジスタと、
    前記ロード命令のオペランドで指定された前記メモリの実効アドレスの生成情報を格納する第2の入力レジスタと、
    前記命令発行部より発行されたロード命令が、前記メモリから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、
    前記第1の入力レジスタに保持されたデータを格納可能な退避レジスタと、
    前記第2の入力レジスタに格納された入力値に基づいて実効アドレスを生成するアドレス生成部と、
    前記実効アドレスに基づいて前記メモリから取得したデータと、前記退避レジスタに格納されたデータとをマージするデータマージ部とを備え、
    前記メモリは、前記マイクロプロセッサ外部のメインメモリであるか、又は前記マイクロプロセッサと前記メインメモリの間に設けられたデータキャッシュであり、
    前記データキャッシュへのアクセス時にキャッシュミスが生じたロード命令を退避するフェッチキューをさらに備え、
    前記退避レジスタに退避可能なデータ数は、前記フェッチキューに退避可能な命令数以上であり、
    前記命令発行部に対して新たなロード命令の発行を停止するためのビジー信号を、前記フェッチキューに新たにロード命令を退避する空き領域が無いことを条件として生成し、前記退避レジスタに新たにデータを退避する空き領域がないことを条件としては生成しないよう構成されている、マイクロプロセッサ。
  3. 前記判定部が非整列ロード命令と判定した場合に、前記第1の入力レジスタの格納データを前記退避レジスタに退避し、前記第1の入力レジスタを前記命令発行部が発行する後続命令に使用可能とすることを特徴とする請求項2に記載のマイクロプロセッサ。
  4. 前記退避レジスタに退避可能なデータ数は1データであることを特徴とする請求項1又は2に記載のマイクロプロセッサ。
JP2005137750A 2005-05-10 2005-05-10 マイクロプロセッサ及びマイクロプロセッサの制御方法 Expired - Fee Related JP4837305B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005137750A JP4837305B2 (ja) 2005-05-10 2005-05-10 マイクロプロセッサ及びマイクロプロセッサの制御方法
US11/409,996 US7565510B2 (en) 2005-05-10 2006-04-25 Microprocessor with a register selectively storing unaligned load instructions and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005137750A JP4837305B2 (ja) 2005-05-10 2005-05-10 マイクロプロセッサ及びマイクロプロセッサの制御方法

Publications (2)

Publication Number Publication Date
JP2006318051A JP2006318051A (ja) 2006-11-24
JP4837305B2 true JP4837305B2 (ja) 2011-12-14

Family

ID=37420566

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005137750A Expired - Fee Related JP4837305B2 (ja) 2005-05-10 2005-05-10 マイクロプロセッサ及びマイクロプロセッサの制御方法

Country Status (2)

Country Link
US (1) US7565510B2 (ja)
JP (1) JP4837305B2 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219785B1 (en) * 2006-09-25 2012-07-10 Altera Corporation Adapter allowing unaligned access to memory
US8505824B2 (en) * 2007-06-28 2013-08-13 Symbol Technologies, Inc. Bar code readers having multifold mirrors
JP4629750B2 (ja) * 2008-03-31 2011-02-09 日立オートモティブシステムズ株式会社 組み込み制御装置
US8639886B2 (en) 2009-02-03 2014-01-28 International Business Machines Corporation Store-to-load forwarding mechanism for processor runahead mode operation
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9454367B2 (en) * 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US8819342B2 (en) * 2012-09-26 2014-08-26 Qualcomm Incorporated Methods and apparatus for managing page crossing instructions with different cacheability
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US10146546B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Load replay precluding mechanism
KR101819314B1 (ko) 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 오프­다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치
US9703359B2 (en) 2014-12-14 2017-07-11 Via Alliance Semiconductor Co., Ltd. Power saving mechanism to reduce load replays in out-of-order processor
WO2016097814A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
WO2016097792A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
WO2016097791A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
KR101837816B1 (ko) 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 i/o­의존 로드 리플레이를 불가능하게 하는 메커니즘
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
WO2016097804A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Programmable load replay precluding mechanism
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10133579B2 (en) 2014-12-14 2018-11-20 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
JP6286067B2 (ja) * 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
EP3376371A1 (en) 2017-03-16 2018-09-19 Nxp B.V. Microprocessor system and method for load and unpack and store and pack instructions
CN107066238A (zh) * 2017-04-18 2017-08-18 上海兆芯集成电路有限公司 执行高速缓存行未对齐加载指令的***和方法
EP3676710A4 (en) * 2017-08-31 2021-07-28 Rail Vision Ltd SYSTEM AND METHOD FOR IMPROVING THE FLOW RATE IN MANY CALCULATIONS
US20190138308A1 (en) * 2017-09-15 2019-05-09 MIPS Tech, LLC Unaligned memory accesses
CN111142941A (zh) * 2019-11-27 2020-05-12 核芯互联科技(青岛)有限公司 一种非阻塞高速缓存缺失处理方法及装置
US11755324B2 (en) * 2021-08-31 2023-09-12 International Business Machines Corporation Gather buffer management for unaligned and gather load operations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5835745A (en) * 1992-11-12 1998-11-10 Sager; David J. Hardware instruction scheduler for short execution unit latencies
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US6085289A (en) * 1997-07-18 2000-07-04 International Business Machines Corporation Method and system for load data formatting and improved method for cache line organization
US6202126B1 (en) * 1997-10-24 2001-03-13 Compaq Computer Corporation Victimization of clean data blocks
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6336168B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for merging multiple outstanding load miss instructions
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
US7340495B2 (en) * 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
US6721866B2 (en) * 2001-12-21 2004-04-13 Intel Corporation Unaligned memory operands
US7293160B2 (en) * 2004-06-14 2007-11-06 Sun Microsystems, Inc. Mechanism for eliminating the restart penalty when reissuing deferred instructions
JP5068597B2 (ja) * 2007-08-01 2012-11-07 ルネサスエレクトロニクス株式会社 プロセッサ及びプロセッサによるデータ読み出し方法

Also Published As

Publication number Publication date
US7565510B2 (en) 2009-07-21
JP2006318051A (ja) 2006-11-24
US20060259746A1 (en) 2006-11-16

Similar Documents

Publication Publication Date Title
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
JP6143306B2 (ja) アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
EP2674856B1 (en) Zero cycle load instruction
JP3815507B2 (ja) コンピュータシステム
JP3820261B2 (ja) データ処理システムの外部および内部命令セット
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
US9317285B2 (en) Instruction set architecture mode dependent sub-size access of register with associated status indication
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
JPH0496825A (ja) データ・プロセッサ
CN112395000B (zh) 一种数据预加载方法和指令处理装置
CN113568663A (zh) 代码预取指令
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
GB2580426A (en) Controlling use of data determined by a resolve-pending speculative operation
US11347506B1 (en) Memory copy size determining instruction and data transfer instruction
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP4528993B2 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP3102399B2 (ja) データ処理装置及び方法
JP3748191B2 (ja) 計算機とその制御方法
US9164761B2 (en) Obtaining data in a pipelined processor
JP2023500604A (ja) スレッドを格納するためのシャドウラッチ構成レジスタファイル内のシャドウラッチ
JPWO2004036416A1 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110825

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: 20110927

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141007

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees