JP2010044682A - 命令フェッチ機構、プロセッサおよびコンピュータシステム - Google Patents
命令フェッチ機構、プロセッサおよびコンピュータシステム Download PDFInfo
- Publication number
- JP2010044682A JP2010044682A JP2008209599A JP2008209599A JP2010044682A JP 2010044682 A JP2010044682 A JP 2010044682A JP 2008209599 A JP2008209599 A JP 2008209599A JP 2008209599 A JP2008209599 A JP 2008209599A JP 2010044682 A JP2010044682 A JP 2010044682A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- storage unit
- cache
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】 不連続なメモリ空間に対する命令フェッチが発生しない場合の命令フェッチ性能を向上させる。
【解決手段】 アドレス比較部(112)は、第1アドレス格納部(104)および第2アドレス格納部(111)の命令アドレスを比較し、命令アドレスが一致するか否かを判定する。アドレス算出部(110)は、アドレス比較部(112)でアドレス一致と判定されると、第2アドレス格納部(111)の命令アドレスに命令キャッシュ(106)のラインサイズに対応する値を加算した結果を用いて第2アドレス格納部(111)の命令アドレスを更新する。コード取得部(114)は、アドレス比較部(112)でアドレス一致と判定された場合、第2アドレス格納部(111)の更新後の命令アドレスに対応する命令コードをメインメモリ(200)から取得して命令キャッシュ(106)に送出する。
【選択図】 図1
【解決手段】 アドレス比較部(112)は、第1アドレス格納部(104)および第2アドレス格納部(111)の命令アドレスを比較し、命令アドレスが一致するか否かを判定する。アドレス算出部(110)は、アドレス比較部(112)でアドレス一致と判定されると、第2アドレス格納部(111)の命令アドレスに命令キャッシュ(106)のラインサイズに対応する値を加算した結果を用いて第2アドレス格納部(111)の命令アドレスを更新する。コード取得部(114)は、アドレス比較部(112)でアドレス一致と判定された場合、第2アドレス格納部(111)の更新後の命令アドレスに対応する命令コードをメインメモリ(200)から取得して命令キャッシュ(106)に送出する。
【選択図】 図1
Description
本発明は、プロセッサおよびメインメモリを含むコンピュータシステムにおけるプロセッサ内の命令キャッシュを用いた命令フェッチ処理に関する。
一般に、汎用プロセッサやDSP(Digital Signal Processor)等においては、命令フェッチ処理(命令コードをメモリから取得する処理)に要する時間を短縮するために、命令キャッシュを用いて命令フェッチ処理が実現されている。また、命令フェッチ処理に要する時間を更に短縮するための技術として、ネクストラインプリフェッチと称される技術が知られている。ネクストラインプリフェッチは、分岐命令等が実行されない限りメモリアドレス順に命令コードが取得されるという命令フェッチ処理の特徴を利用した技術である。ネクストラインプリフェッチを導入した命令フェッチ処理では、命令フェッチの際に、命令キャッシュでキャッシュミスと判定された場合、所望のキャッシュラインに対応する命令コードがメインメモリから取得されて命令キャッシュに送出された後、自動的に次のキャッシュラインに対応する命令コードがメインメモリから取得されて命令キャッシュに送出される。
また、命令フェッチ処理に関しては、分岐予測ミスによる遅延を低減するための技術が考案されている(例えば、特許文献1を参照)。
特開平10−187442号公報
ネクストラインプリフェッチを導入した命令フェッチ処理では、命令フェッチの際に、命令キャッシュでキャッシュミスと判定された場合にのみ、フェッチ対象の命令アドレスの次のキャッシュラインに対応する命令コードがプリフェッチされる。従って、分岐命令等が実行されず、不連続なメモリ空間に対する命令フェッチが発生しない場合には、1キャッシュライン分の命令フェッチ毎に命令キャッシュでキャッシュミスとキャッシュヒットとが交互に発生することになる。キャッシュミス時には命令フェッチ時間が非常に長くなるため、不連続なメモリ空間に対する命令フェッチが発生しない場合に関して、ネクストラインプリフェッチの導入により命令フェッチ性能の向上が十分に実現されているとは言い難い。
本発明は、このような問題に鑑みてなされたものであり、不連続なメモリ空間に対する命令フェッチが発生しない場合の命令フェッチ性能を向上させることを目的とする。
本発明の一態様では、命令を実行するプロセッサおよび命令コードを格納するメインメモリを含むコンピュータシステムにてプロセッサ内で命令キャッシュを用いて命令フェッチ処理を実現する命令フェッチ機構は、第1アドレス格納部、第2アドレス格納部、アドレス比較部、アドレス算出部およびコード取得部を備える。第1アドレス格納部は、フェッチ対象の命令アドレスを格納する。第2アドレス格納部は、プリフェッチ対象の命令アドレスを格納する。アドレス比較部は、第1アドレス格納部および第2アドレス格納部の命令アドレスを比較し、命令アドレスが一致するか否かを判定する。アドレス算出部は、アドレス比較部でアドレス一致と判定されると、第2アドレス格納部の命令アドレスに命令キャッシュのラインサイズに対応する値を加算した結果を用いて第2アドレス格納部の命令アドレスを更新する。コード取得部は、アドレス比較部でアドレス一致と判定された場合、第2アドレス格納部の更新後の命令アドレスに対応する命令コードをメインメモリから取得して命令キャッシュに送出する。
不連続なメモリ空間に対する命令フェッチが発生しない場合の命令フェッチ性能を向上させることができる。
以下、本発明の実施形態について図面を用いて説明する。
図1は、本発明の一実施形態を示している。図2は、図1のプロセッサの命令フェッチ処理を示している。図3は、図1のプロセッサにおける命令プリフェッチの発生状況を示している。
図1に示すように、本発明の一実施形態のコンピュータシステム10は、プロセッサ100およびメインメモリ200を用いて具現されている。プロセッサ100においては、パイプライン方式が採用されており、命令キャッシュを用いて命令フェッチ処理を実現する命令フェッチ機構が設けられている。例えば、プロセッサ100は、プログラムカウンタ部101、オフセット値格納部102、アドレス算出部103、アドレス格納部104、命令キャッシュタグ部105、命令キャッシュデータ部106、ヒット/ミス判定結果格納部107、フェッチ用アドレス格納部108、コード格納部109、プリフェッチ用アドレス算出部110、プリフェッチ用アドレス格納部111、アドレス比較部112、一致/不一致判定結果格納部113および命令フェッチ部114を有している。なお、図1には、プロセッサ100の命令フェッチ処理に関連する部分のみが示されている。
アドレス算出部103は、プログラムカウンタ部101およびオフセット値格納部102の値を加算してフェッチ対象の命令アドレスを算出し、算出した命令アドレスをアドレス格納部104に格納する。命令キャッシュタグ部105は、アドレス格納部104の命令アドレスに対応する命令コードが命令キャッシュデータ部106に格納されているか否かを判定し、キャッシュヒット/キャッシュミスを示す判定結果情報をヒット/ミス判定結果格納部107に格納する。また、命令キャッシュタグ部105は、アドレス格納部104の命令アドレスに対応する命令コードが命令キャッシュデータ部106に格納されていないと判定した場合、アドレス格納部104の命令アドレスをフェッチ用アドレス格納部108に格納する。
命令キャッシュデータ部106は、命令キャッシュタグ部105でキャッシュヒットと判定された場合、アドレス格納部104の命令アドレスに対応する命令コードを内部から読み出してコード格納部109に格納する。また、命令キャッシュデータ部106は、命令キャッシュタグ部105でキャッシュミスと判定された場合、命令フェッチ部114から供給されるデータ転送通知に応答して命令フェッチ部114から供給される命令コード(1キャッシュライン分)を内部に格納した後、アドレス格納部104の命令アドレスに対応する命令コードを内部から読み出してコード格納部109に格納する。コード格納部109に格納された命令コードは、プロセッサ100内の命令実行部(図示せず)に供給される。
プリフェッチ用アドレス算出部110は、アドレス比較部112から供給される命令アドレスに命令キャッシュ(命令キャッシュタグ部105および命令キャッシュデータ部106)のラインサイズに対応する値(例えば、0x40(64バイトに相当))を加算してプリフェッチ対象の命令アドレスを算出し、算出した命令アドレスをプリフェッチ用アドレス格納部111に格納する。アドレス比較部112は、アドレス格納部104およびプリフェッチ用アドレス格納部111の命令アドレスを比較して命令コードが一致するか否かを判定し、アドレス一致/アドレス不一致を示す判定結果情報を一致/不一致判定結果格納部113に格納する。また、アドレス比較部112は、プリフェッチ用アドレス算出部110に対して、アドレス格納部104およびプリフェッチ用アドレス格納部111の命令アドレスが一致すると判定した場合にプリフェッチ用アドレス格納部111の命令アドレスを出力し、アドレス格納部104およびプリフェッチ用アドレス格納部111の命令アドレスが一致しないと判定した場合にアドレス格納部104の命令アドレスを出力する。
命令フェッチ部114は、一致/不一致判定結果格納部113の判定結果情報がアドレス不一致を示す場合と一致/不一致判定結果格納部113の判定結果情報がアドレス一致を示す場合とで異なる動作を実施する。一致/不一致判定結果格納部113の判定結果情報がアドレス不一致を示す場合、命令フェッチ部114は、ヒット/ミス判定結果格納部107の判定結果情報がキャッシュミスを示していれば、メインメモリ200に対して、データ転送要求move_in_reqを出力するとともに、フェッチ用アドレス格納部108の命令アドレスを転送要求アドレスmove_in_addressとして出力する。そして、命令フェッチ部114は、メインメモリ200からデータ転送通知move_in_ackおよび転送データmove_in_data(1キャッシュライン分の命令コード)を受けると、これらを命令キャッシュデータ部106に出力する。続いて、命令フェッチ部114は、メインメモリ200に対して、データ転送要求move_in_reqを出力するとともに、プリフェッチ用アドレス格納部111の命令アドレスを転送要求アドレスmove_in_addressとして出力する。そして、命令フェッチ部114は、メインメモリ200からデータ転送通知move_in_ackおよび転送データmove_in_dataを受けると、これらを命令キャッシュデータ部106に出力する。一致/不一致判定結果格納部113の判定結果情報がアドレス一致を示す場合、命令フェッチ部114は、メインメモリ200に対して、データ転送要求move_in_reqを出力するとともに、プリフェッチ用アドレス格納部111の命令アドレスを転送要求アドレスmove_in_addressとして出力する。そして、命令フェッチ部114は、メインメモリ200からデータ転送通知move_in_ackおよび転送データmove_in_dataを受けると、これらを命令キャッシュデータ部106に出力する。
メインメモリ200には、プロセッサ100で実行されるプログラム(命令コード)が格納されている。メインメモリ200は、プロセッサ100内の命令フェッチ部114から供給されるデータ転送要求move_in_reqに応答して、プロセッサ100内の命令フェッチ部114から供給される転送要求アドレスmove_in_adressに対応する命令コード(1キャッシュライン分)を内部から読み出す。そして、メインメモリ200は、プロセッサ100内の命令フェッチ部114に対して、データ転送通知move_in_ackを出力するとともに、読み出した命令コードを転送データmove_in_dataとして出力する。
ここで、プロセッサ100の命令フェッチ処理について説明する。図2に示すように、プロセッサ100の命令フェッチ処理では、まず、アドレス算出部103により、プログラムカウンタ部101の値(PC値)およびオフセット値格納部102の値(オフセット値)が加算されることでフェッチ対象の命令アドレスが算出され、算出された命令アドレスがアドレス格納部104に格納される(ステップS101)。
次に、命令キャッシュタグ部105により、アドレス格納部104の命令アドレスに基づいてキャッシュヒット/キャッシュミスが判定される(ステップS102)。命令キャッシュタグ部105でキャッシュミスと判定された場合、命令キャッシュタグ部105により、フェッチ対象の命令アドレスがアドレス格納部104からフェッチ用アドレス格納部108に転送される(ステップS103)。一方、命令キャッシュタグ部105でキャッシュヒットと判定された場合、命令キャッシュデータ部106により、アドレス格納部104の命令アドレスに対応する命令コードがコード格納部109に格納されて命令実行部に出力される(ステップS104)。そして、命令キャッシュタグ部105により、キャッシュヒット/キャッシュミスを示す判定結果情報がヒット/ミス判定結果格納部107に格納される(ステップS105)。
続いて、アドレス比較部112により、アドレス格納部104およびプリフェッチ用アドレス格納部111の命令アドレスについてアドレス一致/アドレス不一致が判定される(ステップS106)。アドレス比較部112でアドレス不一致と判定された場合、プリフェッチ用アドレス算出部110により、アドレス格納部104の命令アドレス(フェッチ対象の命令アドレス)および命令キャッシュのラインサイズに対応する値が加算されることで新たなプリフェッチ対象の命令アドレスが算出され、算出された命令アドレスがプリフェッチ用アドレス格納部111に格納される(ステップS107)。一方、アドレス比較部112でアドレス一致と判定された場合、プリフェッチ用アドレス算出部110により、プリフェッチ用アドレス算出部110の命令アドレス(プリフェッチ対象の命令アドレス)および命令キャッシュのラインサイズに対応する値が加算されることで新たなプリフェッチ対象の命令アドレスが算出され、算出された命令アドレスがプリフェッチ用アドレス格納部111に格納される(ステップS108)。そして、アドレス比較部112により、アドレス一致/アドレス不一致を示す判定結果情報が一致/不一致判定結果格納部113に格納される(ステップS109)。
この後、命令フェッチ部114により、一致/不一致判定結果格納部113の判定結果情報が確認される(ステップS110)。命令フェッチ部114でアドレス不一致が認識された場合、命令フェッチ部114により、ヒット/ミス判定結果格納部107の判定結果情報が確認される(ステップS111)。命令フェッチ部114でキャッシュヒットが認識された場合、命令フェッチ処理は終了する。一方、命令フェッチ部114でキャッシュミスが認識された場合、命令フェッチ部114により、メインメモリ200に対して、データ転送要求move_in_reqが出力されるとともに、フェッチ用アドレス格納部108の命令アドレス(フェッチ対象の命令アドレス)が転送要求アドレスmove_in_addressとして出力される(ステップS112)。そして、命令フェッチ部114がメインメモリ200からデータ転送通知move_in_ackおよび転送データmovo_in_data(1キャッシュライン分の命令コード)を受けると、命令フェッチ部114により、これらが命令キャッシュデータ部106に出力される(ステップS113)。この結果、命令フェッチ部114から供給される1キャッシュライン分の命令コードが命令キャッシュデータ部106に格納される(ステップS114)。そして、命令キャッシュデータ部106により、アドレス格納部104の命令アドレスに対応する命令コードがコード格納部109に格納されて命令実行部に出力される(ステップS115)。
ステップS110において命令フェッチ部114でアドレス一致が認識された後あるいはステップS115が実施された後には、命令フェッチ部114により、メインメモリ200に対して、データ転送要求move_in_reqが出力されるとともに、プリフェッチ用アドレス格納部111の命令アドレス(プリフェッチ対象の命令アドレス)が転送要求アドレスmove_in_addressとして出力される(ステップS116)。そして、命令フェッチ部114がメインメモリ200からデータ転送通知move_in_ackおよび転送データmovo_in_dataを受けると、命令フェッチ部114により、これらが命令キャッシュデータ部106に出力される(ステップS117)。この結果、命令フェッチ部114から供給される1キャッシュライン分の命令コードが命令キャッシュデータ部106に格納される(ステップS118)。これにより、命令フェッチ処理は終了する。
次に、プロセッサ100に関して、例えば、メインメモリ200のアドレス「0x8000」〜「0x8140」に対してアドレス順に命令フェッチが発生する場合について考える。なお、プロセッサ100内の命令キャッシュのラインサイズは64バイト(0x40)であるものとする。
図3に示すように、アドレス「0x8000」に対する命令フェッチの際には、アドレス比較部112でアドレス不一致と判定されるとともに、命令キャッシュタグ部105でキャッシュミスと判定され、その結果、アドレス「0x8000」のキャッシュラインに対応する命令コードがフェッチされた後に、次のキャッシュライン(アドレス「0x8040」のキャッシュライン)に対応する命令コードがプリフェッチされるものとする。このような場合、アドレス「0x8040」に対する命令フェッチの際には、アドレス「0x8040」のキャッシュラインに対応する命令コードがプリフェッチされており、アドレス比較部112でアドレス一致と判定されるとともに、命令キャッシュタグ部105でキャッシュヒットと判定されるため、次のキャッシュライン(アドレス「0x8080」のキャッシュライン)に対応する命令コードがプリフェッチされる。アドレス「0x8080」〜「0x8140」に対する命令フェッチの際にも、アドレス「0x8080」〜「0x8140」のキャッシュラインに対応する命令コードがプリフェッチされており、アドレス比較部112でアドレス一致と判定されるとともに、命令キャッシュタグ部105でキャッシュヒットと判定されるため、次のキャッシュライン(アドレス「0x80C0」〜「0x8180」のキャッシュライン)に対応する命令コードがプリフェッチされる。
このように、(A)を付したキャッシュラインに関しては、アドレス比較部112でアドレス不一致と判定されるとともに、命令キャッシュタグ部105でキャッシュミスと判定されることで、対応する命令コードがプリフェッチされる。また、(B)を付したキャッシュラインに関しては、アドレス比較部112でアドレス一致と判定されることで、対応する命令コードがプリフェッチされる。即ち、メインメモリ200のアドレス「0x8040」〜「0x8140」に対して命令プリフェッチが連続して実施される。
図4は、本発明の比較例を示している。図5は、図4のプロセッサの命令フェッチ処理を示している。図6は、図4のプロセッサにおける命令プリフェッチの発生状況を示している。なお、本発明の比較例(図4〜図6)を説明するにあたって、本発明の一実施形態(図1〜図3)で説明した要素と同一の要素については、本発明の一実施形態(図1〜図3)で使用した符号と同一の符号を使用し、詳細な説明を省略する。
図4に示すように、本発明の比較例のコンピュータシステム10aは、プロセッサ100aおよびメインメモリ200を用いて具現されている。プロセッサ100aは、プロセッサ100(図1)において、アドレス比較部112および一致/不一致判定結果格納部113を取り除くとともに、プリフェッチ用アドレス算出部110および命令フェッチ部114をプリフェッチ用アドレス算出部110aおよび命令フェッチ部114aに置き換えたものである。
プリフェッチ用アドレス算出部110aは、命令キャッシュタグ部105でキャッシュミスと判定された場合、アドレス格納部104の命令アドレスに命令キャッシュのラインサイズに対応する値を加算してプリフェッチ対象の命令アドレスを算出し、算出した命令アドレスをプリフェッチ用アドレス格納部111に格納する。命令フェッチ部114aは、ヒット/ミス判定結果格納部107の判定結果情報がキャッシュミスを示す場合、メインメモリ200に対して、データ転送要求move_in_reqを出力するとともに、フェッチ用アドレス格納部108の命令アドレスを転送要求アドレスmove_in_addressとして出力する。そして、命令フェッチ部114aは、メインメモリ200からデータ転送通知move_in_ackおよび転送データmove_in_dataを受けると、これらを命令キャッシュデータ部106に出力する。続いて、命令フェッチ部114aは、メインメモリ200に対して、データ転送要求move_in_reqを出力するとともに、プリフェッチ用アドレス格納部111の命令アドレスを転送要求アドレスmove_in_reqとして出力する。そして、命令フェッチ部114aは、メインメモリ200からデータ転送通知move_in_ackおよび転送データmove_in_dataを受けると、これらを命令キャッシュデータ部106に出力する。
図5に示すように、プロセッサ100aの命令フェッチ処理は、プロセッサ100の命令フェッチ処理(図2)において、ステップS103、S105の間にステップS119を挿入するとともに、ステップS106〜S110を省略したものである。ステップS119においては、プリフェッチ用アドレス算出部110aにより、アドレス格納部104の命令アドレス(フェッチ対象の命令アドレス)および命令キャッシュのラインサイズに対応する値が加算されることで新たなプリフェッチ対象の命令アドレスが算出され、算出された命令アドレスがプリフェッチ用アドレス格納部111に格納される。
ここで、プロセッサ100aに関して、プロセッサ100と同様に、メインメモリ200のアドレス「0x8000」〜「0x8140」に対してアドレス順に命令フェッチが発生する場合について考える。なお、プロセッサ100a内の命令キャッシュのラインサイズは64バイト(0x40)であるものとする。
図6に示すように、アドレス「0x8000」に対する命令フェッチの際には、命令キャッシュタグ部105でキャッシュミスと判定され、その結果、アドレス「0x8000」のキャッシュラインに対応する命令コードがフェッチされた後に、次のキャッシュライン(アドレス「0x8040」のキャッシュライン)に対応する命令コードがプリフェッチされるものとする。このような場合、アドレス「0x8040」に対する命令フェッチの際には、アドレス「0x8040」のキャッシュラインに対応する命令コードがプリフェッチされており、命令キャッシュタグ部105でキャッシュヒットと判定されるため、次のキャッシュライン(アドレス「0x8080」のキャッシュライン)に対応する命令コードはプリフェッチされない。アドレス「0x8080」に対する命令フェッチの際には、アドレス「0x8080」のキャッシュラインに対応する命令コードがプリフェッチされておらず、命令キャッシュタグ部105でキャッシュミスと判定されるため、アドレス「0x8080」のキャッシュラインに対応する命令コードがフェッチされた後に、次のキャッシュライン(アドレス「0x80C0」のキャッシュライン)に対応する命令コードがプリフェッチされる。
アドレス「0x80C0」に対する命令フェッチの際には、アドレス「0x80C0」のキャッシュラインに対応する命令コードがプリフェッチされており、命令キャッシュタグ部105でキャッシュヒットと判定されるため、次のキャッシュライン(アドレス「0x8100」のキャッシュライン)に対応する命令コードはプリフェッチされない。アドレス「0x8100」に対する命令フェッチの際には、アドレス「0x8100」のキャッシュラインに対応する命令コードがプリフェッチされておらず、命令キャッシュタグ部105でキャッシュミスと判定されるため、アドレス「0x8100」のキャッシュラインに対応する命令コードがフェッチされた後に、次のキャッシュライン(アドレス「0x8140」に対応する命令コードがプリフェッチされる。アドレス「0x8140」に対する命令フェッチの際には、アドレス「0x8140」のキャッシュラインに対応する命令コードがプリフェッチされており、命令キャッシュタグ部105でキャッシュヒットと判定されるため、次のキャッシュライン(アドレス「0x8180」のキャッシュライン)に対応する命令コードはプリフェッチされない。
このように、本発明の比較例のプロセッサ100aでは、メインメモリ200のアドレス順に命令フェッチが発生する場合には、1キャッシュライン分の命令フェッチ毎にキャッシュミスとキャッシュヒットとが交互に発生し、命令プリフェッチが1キャッシュラインおきに実施される。キャッシュミス時には命令フェッチ時間が非常に長くなるため、命令フェッチ性能が十分に高いとは言い難い。
これに対して、本発明の一実施形態のプロセッサ100では、プリフェッチ対象の命令アドレスが保持されており、その命令アドレスに対する命令フェッチが発生した場合には、フェッチ対象の命令アドレスの次のキャッシュラインに対応する命令コードがプリフェッチされる。これにより、メインメモリ200に対して命令プリフェッチを連続して実施することが可能になる。従って、分岐命令等による不連続なメモリ空間に対する命令フェッチが発生しない場合の命令フェッチ性能を大幅に向上させることができる。
以上、本発明について詳細に説明してきたが、前述の実施形態は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
10‥コンピュータシステム;100‥プロセッサ;101‥プログラムカウンタ部;102‥オフセット値格納部;103‥アドレス算出部;104‥アドレス格納部;105‥命令キャッシュタグ部;106‥命令キャッシュデータ部;107‥ヒット/ミス判定結果格納部;108‥フェッチ用アドレス格納部;109‥コード格納部;110‥プリフェッチ用アドレス算出部;111‥プリフェッチ用アドレス格納部;112‥アドレス比較部;113‥一致/不一致判定結果格納部;114‥命令フェッチ部;200‥メインメモリ
Claims (5)
- 命令を実行するプロセッサおよび命令コードを格納するメインメモリを含むコンピュータシステムにて前記プロセッサ内で命令キャッシュを用いて命令フェッチ処理を実現する命令フェッチ機構であって、
フェッチ対象の命令アドレスを格納する第1アドレス格納部と、
プリフェッチ対象の命令アドレスを格納する第2アドレス格納部と、
前記第1アドレス格納部および前記第2アドレス格納部の命令アドレスを比較し、命令アドレスが一致するか否かを判定するアドレス比較部と、
前記アドレス比較部でアドレス一致と判定されると、前記第2アドレス格納部の命令アドレスに前記命令キャッシュのラインサイズに対応する値を加算した結果を用いて前記第2アドレス格納部の命令アドレスを更新するアドレス算出部と、
前記アドレス比較部でアドレス一致と判定された場合、前記第2アドレス格納部の更新後の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出するコード取得部とを備えることを特徴とする命令フェッチ機構。 - 請求項1に記載の命令フェッチ機構において、
前記命令キャッシュでキャッシュミスと判定されると、前記第1アドレス格納部の命令アドレスを格納する第3アドレス格納部を備え、
前記アドレス算出部は、前記アドレス比較部でアドレス不一致と判定されると、前記第1アドレス格納部の命令アドレスに前記命令キャッシュのラインサイズに対応する値を加算した結果を用いて前記2アドレス格納部の命令アドレスを更新し、
前記コード取得部は、前記アドレス比較部でアドレス不一致と判定され、前記命令キャッシュでキャッシュミスと判定された場合、前記第3アドレス格納部の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出した後、前記第2アドレス格納部の更新後の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出することを特徴とする命令フェッチ機構。 - 命令を実行するプロセッサおよび命令コードを格納するメインメモリを含むコンピュータシステムにて使用され、命令キャッシュを用いて命令フェッチ処理を実現する命令フェッチ機構を備えるプロセッサであって、
前記命令フェッチ機構は、
フェッチ対象の命令アドレスを格納する第1アドレス格納部と、
プリフェッチ対象の命令アドレスを格納する第2アドレス格納部と、
前記第1アドレス格納部および前記第2アドレス格納部の命令アドレスを比較し、命令アドレスが一致するか否かを判定するアドレス比較部と、
前記アドレス比較部でアドレス一致と判定されると、前記第2アドレス格納部の命令アドレスに前記命令キャッシュのラインサイズに対応する値を加算した結果を用いて前記第2アドレス格納部の命令アドレスを更新するアドレス算出部と、
前記アドレス比較部でアドレス一致と判定された場合、前記第2アドレス格納部の更新後の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出するコード取得部とを備えることを特徴とするプロセッサ。 - 請求項3に記載のプロセッサにおいて、
前記命令フェッチ機構は、前記命令キャッシュでキャッシュミスと判定されると、前記第1アドレス格納部の命令アドレスを格納する第3アドレス格納部を備え、
前記アドレス算出部は、前記アドレス比較部でアドレス不一致と判定されると、前記第1アドレス格納部の命令アドレスに前記命令キャッシュのラインサイズに対応する値を加算した結果を用いて前記2アドレス格納部の命令アドレスを更新し、
前記コード取得部は、前記アドレス比較部でアドレス不一致と判定され、前記命令キャッシュでキャッシュミスと判定された場合、前記第3アドレス格納部の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出した後、前記第2アドレス格納部の更新後の命令アドレスに対応する命令コードを前記メインメモリから取得して前記命令キャッシュに送出することを特徴とするプロセッサ。 - 命令を実行するプロセッサおよび命令コードを格納するメインメモリを含むコンピュータシステムであって、
前記プロセッサは、請求項1または請求項2に記載の命令フェッチ機構を備えることを特徴とするコンピュータシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008209599A JP2010044682A (ja) | 2008-08-18 | 2008-08-18 | 命令フェッチ機構、プロセッサおよびコンピュータシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008209599A JP2010044682A (ja) | 2008-08-18 | 2008-08-18 | 命令フェッチ機構、プロセッサおよびコンピュータシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010044682A true JP2010044682A (ja) | 2010-02-25 |
Family
ID=42016000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008209599A Pending JP2010044682A (ja) | 2008-08-18 | 2008-08-18 | 命令フェッチ機構、プロセッサおよびコンピュータシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010044682A (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004038345A (ja) * | 2002-06-28 | 2004-02-05 | Fujitsu Ltd | プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法 |
WO2007099582A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ制御装置 |
-
2008
- 2008-08-18 JP JP2008209599A patent/JP2010044682A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004038345A (ja) * | 2002-06-28 | 2004-02-05 | Fujitsu Ltd | プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法 |
WO2007099582A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248570B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
KR101168544B1 (ko) | 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템 | |
TW201407348A (zh) | 微處理器的轉譯位址快取記憶體 | |
JP2013520748A5 (ja) | ||
JP2009217827A (ja) | マイクロタグを使用するキャッシュ・アクセッシング | |
CN102857483A (zh) | 预取数据的方法、设备和装置 | |
US20230273797A1 (en) | Processor with adaptive pipeline length | |
WO2017185395A1 (zh) | 一种用于执行向量比较运算的装置和方法 | |
JP2015133126A5 (ja) | ||
TW201730775A (zh) | 在晶片多核心結構上區域地和跨核心地最小化窺探流量 | |
TW201732566A (zh) | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 | |
JP6252348B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
EP1942416B1 (en) | Central processing unit, information processor and central processing method | |
TWI729033B (zh) | 控制轉移強制執行中的非追蹤控制轉移的方法及處理器 | |
JP2010044682A (ja) | 命令フェッチ機構、プロセッサおよびコンピュータシステム | |
TW201512986A (zh) | 微處理器及其使用指令迴圈快取記憶體的方法 | |
US20150242211A1 (en) | Programmable controller | |
TW201005633A (en) | Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
TW201019217A (en) | Instruction mode identification apparatus and instruction mode identification method | |
JP5446719B2 (ja) | 演算処理装置及び演算処理方法 | |
US20090240918A1 (en) | Method, computer program product, and hardware product for eliminating or reducing operand line crossing penalty | |
JP5099133B2 (ja) | 処理装置 | |
TWI606393B (zh) | 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110513 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121225 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130416 |