JP2015069649A - マイクロプロセッサ及びその命令ループキャッシュの使用方法 - Google Patents

マイクロプロセッサ及びその命令ループキャッシュの使用方法 Download PDF

Info

Publication number
JP2015069649A
JP2015069649A JP2014190244A JP2014190244A JP2015069649A JP 2015069649 A JP2015069649 A JP 2015069649A JP 2014190244 A JP2014190244 A JP 2014190244A JP 2014190244 A JP2014190244 A JP 2014190244A JP 2015069649 A JP2015069649 A JP 2015069649A
Authority
JP
Japan
Prior art keywords
tag
instruction
cache
processor core
loop
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.)
Granted
Application number
JP2014190244A
Other languages
English (en)
Other versions
JP5944458B2 (ja
Inventor
忠和 陳
Zhong-Ho Chen
忠和 陳
偉豪 喬
Wei-Hao Chiao
偉豪 喬
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.)
Andes Technology Corp
Original Assignee
Andes Technology 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 Andes Technology Corp filed Critical Andes Technology Corp
Publication of JP2015069649A publication Critical patent/JP2015069649A/ja
Application granted granted Critical
Publication of JP5944458B2 publication Critical patent/JP5944458B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30047Prefetch instructions; cache control instructions
    • 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

【課題】電力消費を低減すると共に命令フェッチの効率を向上させるための、命令ループキャッシュを含むマイクロプロセッサ、及び命令ループキャッシュを使用する方法を提供する。【解決手段】プロセッサコアは、命令ストリームのフェッチアドレスを提供する。フェッチアドレスは、タグ及びインデックスを含む。命令ループキャッシュ140は、プロセッサコアからフェッチアドレスを受信する。キャッシュアレイ320及びタグ記憶部340を含む。各キャッシュアレイは、タグ識別番号(ID)を含む。キャッシュアレイは、フェッチアドレスのインデックスが示すキャッシュエントリのタグIDを出力する。タグ記憶部は、複数のタグ値を記憶して、キャッシュアレイが出力するタグIDが示すタグ値を出力する。フェッチアドレスのタグと、タグ記憶部が出力するタグ値との比較に基づいて、キャッシュヒットが発生するかキャッシュミスが発生するかを判定する。【選択図】図3

Description

本発明は、命令キャッシング(キャッシュ記憶)に関するものである。特に、本発明は、マイクロプロセッサによって実行される命令ループをキャッシングする方法に関するものである。
命令キャッシュは、マイクロプロセッサに必須の構成要素である。マイクロプロセッサが命令をフェッチする必要がある際に、そのプロセッサコアが、その命令のフェッチアドレスを命令キャッシュに送信する。フェッチアドレスは、1つ以上の命令を含む命令ストリームに対応する。命令キャッシュは、命令が当該命令キャッシュ内に既に記憶されている際に、その命令を、当該命令キャッシュ自体からプロセッサコアに直接供給する。さもなければ、命令キャッシュは、その命令が存在するメモリから、その命令をフェッチして記憶すると共に、その命令をプロセッサコアに供給する。外部メモリから命令をフェッチすることは、命令キャッシュから命令をフェッチするよりも、ずっと長い時間を要し、かつ、すっと大きい電力を消費し、命令キャッシュは、電力消費を低減すると共に、マイクロプロセッサの処理速度を向上させる。
組込みシステム内のアプリケーションは、通常、最も内側のループ内で実行時間の大きな割合を費やす。従って、組込みシステムの電力消費及び命令フェッチは、最も内側のループに集中する。
従って、本発明は、電力消費を低減すると共に命令フェッチの効率を向上させるための、命令ループキャッシュを含むマイクロプロセッサ、及び命令ループキャッシュを使用する方法に指向したものである。
本発明の好適例によれば、マイクロプロセッサが提供される。このマイクロプロセッサは、プロセッサコア及び命令ループキャッシュを含む。プロセッサコアは、命令ストリームのフェッチアドレスを提供する。命令ストリームは1つ上の命令を含む。フェッチアドレスは、タグ及びインデックスを含む。命令ループキャッシュは、フェッチアドレスをプロセッサコアから受け取る。命令ループキャッシュは、キャッシュアレイ及びタグ記憶部を含む。キャッシュアレイは、プロセッサコアに結合されている。キャッシュアレイは、第1所定数のキャッシュエントリを記憶する。各キャッシュエントリは、タグ識別番号(ID)を含む。キャッシュアレイは、フェッチアドレスのインデックスが示すキャッシュエントリのタグIDを出力する。タグ記憶部は、プロセッサコア及びキャッシュアレイに結合されている。タグ記憶部は、第2所定数のタグ値を記憶して、キャッシュアレイが出力するタグIDが示すタグ値を出力するように構成されている。命令ループキャッシュは、フェッチアドレスのタグと、タグ記憶部が出力するタグ値との比較に基づいて、キャッシュヒットが発生するかキャッシュミスが発生するかを判定する。
本発明の他の好適例によれば、上述した命令ループキャッシュを使用する方法が提供される。この方法は次のステップを含む:命令ループキャッシュが、通常状態及び内側状態を含む有限状態マシンに関連し、最初に通常状態に入るステップ;現在状態が通常状態であり、タグ値が、命令ループキャッシュに前から記憶されているすべてのタグ値と異なる際に、命令ループキャッシュを、プロセッサコアから当該命令ループキャッシュに送信されたタグ値で更新するステップ;現在状態が内側状態であり、プロセッサコアから命令ループキャッシュに送信されたタグ値が、命令ループキャッシュに前から記憶されているすべてのタグ値と異なる際に、通常状態に入るステップ;現在状態が通常状態であり、内側信号を受信した際に、内側状態に入るステップ;及び、プロセッサコアから命令ループキャッシュに送信されたフェッチアドレスと、命令ループキャッシュに記憶されているタグ値の1つとの比較に基づいて、命令ループキャッシュにおいてキャッシュヒットが発生するかキャッシュミスが発生するかを判定するステップ。
本発明の他の好適例によれば、上述した命令ループキャッシュを使用する方法が提供される。この方法は、ヒント命令がフェッチされて認識される毎に、ヒント命令に関係するタグ値を命令ループキャッシュに送信するステップを含む。ヒント命令は、このタグ値を介して、当該ヒント命令が実行された後に実行される命令ループに関連する。命令ループキャッシュは、命令のフェッチアドレスのタグと、命令ループキャッシュに記憶されたタグ値の1つとの比較に基づいて、キャッシュヒットが発生するかキャッシュミスが発生するかを判定する。
本発明によって提供される命令ループキャッシュは、命令ループの命令を効果的にキャッシュ記憶することができる。この命令ループキャッシュは、微小サイズに構成して、電力及びチップ空間を節減することができる。この命令ループキャッシュは、命令ループの2回目の反復から命令を供給し始めることができ、このことは、ループ実行に対する非常に高速な応答となる。
添付する図面は、本発明のさらなる理解をもたらすために含め、本明細書に含まれ、本明細書の一部を構成する。これらの図面は、本発明の実施形態を図示し、その記述と共に、本発明の原理を説明する役割を果たす。
本発明の実施形態によるマイクロプロセッサを示す概略図である。 本発明の実施形態によるメモリ内のキャッシュラインを示す概略図である。 本発明の実施形態によるマイクロプロセッサの命令ループキャッシュを示す概略図である。 本発明の実施形態によるマイクロプロセッサの命令ループを示す概略図である。 本発明の実施形態による、命令ループキャッシュを使用する方法を示すフローチャートである。 本発明の実施形態による命令ループを示す概略図である。 本発明の実施形態による他の命令ループを示す概略図である。 本発明の実施形態による、命令ループキャッシュを使用する方法を示すフローチャートである。 本発明の実施形態による、命令ループキャッシュに関連する有限状態マシンを示す概略図である。 本発明の実施形態による命令ループを示す概略図である。 本発明の実施形態によるマイクロプロセッサの命令ループキャッシュを示す概略図である。 本発明の実施形態による命令ループを示す概略図である。
以下に、本発明の実施形態を詳しく参照し、それらの例を、添付する図面に示す。可能であれば常に、図面及び説明中では、同じ参照番号を用いて同一または同様の部分を参照する。
図1に、本発明の実施形態によるマイクロプロセッサ100を示す。マイクロプロセッサ100は、プロセッサコア120及び命令ループキャッシュ140を含む。命令ループキャッシュ140は、プロセッサ120及び外部メモリ160に結合されている。プロセッサコア120は、命令ストリームの1つ以上のフェッチアドレスを、命令ループキャッシュ140に与えることができる。命令ストリームは、1つ以上の命令を含むことができる。各フェッチアドレスは、タグ及びインデックスを含む。ここで、命令のフェッチアドレスとは、その命令がメモリ160に記憶されているアドレスを意味する。フェッチアドレスは、命令のオペランドに含まれるアドレスではない。
命令ループキャッシュ140は、プロセッサコア120が提供するフェッチアドレスを受信し、次に、このフェッチアドレスに応答して、キャッシュヒットが発生するかキャッシュミスが発生するかを判定する。キャッシュヒットが発生すると、命令ループキャッシュ140は、フェッチアドレスに対応する命令を、命令ループキャッシュ140自体からプロセッサコア120に直接提供する。キャッシュミスが発生すると、命令ループキャッシュ140は、フェッチアドレスに対応する命令をメモリ160からフェッチして、この命令を記憶すると共にプロセッサコア120に提供する。
プロセッサコア120は、後方分岐命令またはヒント命令に応答して、1つ以上のタグ値を、ループ−タグ信号125を介して命令ループキャッシュ140に提供することができる。ループ−タグ信号125で送信されるタグ値は、プロセッサコア120が命令ループキャッシュ140に送信するフェッチアドレスのタグと異なることができる。ループ−タグ信号125で送信されるタグ値は、プロセッサコア120が命令ループキャッシュ140に送信するフェッチアドレスに関連することもできる。こうした場合に、ループ−タグ信号を制御信号により実現して、フェッチアドレスがタグ値に関連することを示すことができる。より詳細なことは以下に開示する。
図2は、本発明の実施形態による、メモリ160内のキャッシュラインを示す概略図である。メモリ160のアドレスは、タグとインデックスに分割される。本実施形態では、アドレスが32ビットを有し、タグは30ビットを有し、インデックスは2ビットを有する。他の実施形態では、アドレスのビット数、タグのビット数、及びインデックスのビット数を異ならせることができる。同じキャッシュライン中のアドレスは、同じタグを有する。例えば、命令I0〜I3はアドレス0〜3に位置し、これらは同じキャッシュラインに属し、同じタグ0を有する。命令I4〜I7はアドレス4〜7に位置し、これらは同じキャッシュラインに属し、同じタグ1を有する。
図3は、本発明の実施形態による、マイクロプロセッサ100の命令ループキャッシュ140を示す概略図である。命令ループキャッシュ140は、キャッシュアレイ320、タグ記憶部340、比較器360、及びコントローラ380を含む。キャッシュアレイ320は、プロセッサコア120及びメモリ160に結合されている。タグ記憶部340は、プロセッサコア120及びキャッシュアレイ320に結合されている。比較器360は、キャッシュアレイ320及びタグ記憶部340に結合されている。コントローラ380は、プロセッサコア120、メモリ160、キャッシュアレイ320、タグ記憶部340、及び比較器360に結合されている。簡単のため、タグ記憶部340とコントローラ380との結合は、図3に示していない。
キャッシュアレイ320は2N個のキャッシュエントリを記憶することができ、ここにNは、プロセッサコア120が提供するフェッチアドレスのインデックスのビット数である。従って、本実施形態では、キャッシュアレイ320のサイズが、ちょうど1つのキャッシュラインである。キャッシュラインが小さいと、命令ループキャッシュは比較的微小である。
図3では、キャッシュアレイ320内の各キャッシュエントリを行として表す。各キャッシュエントリは、3つのフィールド、即ちタグ識別番号(ID)322、有効ビット324、及び命令326を含む。タグID322を用いて、タグ記憶部340に記憶されたタグ値のうち1つを選択する。有効ビット324は、キャッシュエントリが有効であるか否かを示す。キャッシュエントリは、その有効ビット324がセットされている際に有効である。命令326は、以前にメモリ160からフェッチされ、現在はキャッシュエントリに記憶されている命令である。キャッシュアレイ320は、プロセッサコア120が提供するフェッチアドレスのインデックスが示すキャッシュエントリのID322を出力する。換言すれば、キャッシュエントリは0〜2N−1の番号を付けることができ、キャッシュアレイ320は、フェッチアドレスのインデックスに一致する番号を有するキャッシュエントリのID322を出力することができる。
タグ記憶部340は、2M個のタグ値を記憶し、ここにMは、各キャッシュエントリのタグID322のビット数である。タグ記憶部340内のタグ値は、0から2M−1まで番号付けされている。本実施形態ではMが1である。タグ値はプロセッサコア120によって、上述したフェッチアドレスではなくループタグ信号125を介して提供される。タグ記憶部340は、アレイ320が出力したタグID322が示すタグ値を出力する。換言すれば、タグ記憶部30は、キャッシュアレイ320が出力するタグID322と値が一致するタグ値を出力する。
比較器360は、プロセッサコアが提供するフェッチアドレスのタグと、タグ記憶部340が出力するタグ値との、ビット単位の比較を実行する。キャッシュアレイ320は、フェッチアドレスのインデックスが示すキャッシュエントリの有効ビット324を比較器360に出力する。比較器360は、フェッチアドレスのタグが、キャッシュ記憶部340が出力するタグ値に等しく、かつ、キャッシュアレイ320が出力する有効ビット324がセットされている際に、ヒット信号365をアサート(「真」の値に)してキャッシュヒットを示す。さもなければ、比較器360は、ヒット信号365をデアサート(「偽」の値に)してキャッシュミスを示す。
コントローラ380は、ヒット信号365に応じて、フェッチアドレスに対応する命令をプロセッサコア120に提供する。図3では、コントローラ380をマルチプレクサとして表しているが、コントローラ380は、実際にはマルチプレクサだけではない。より詳細なことは以下に開示する。
図4は、本発明の実施形態によるメモリ160内の命令ループを示す概略図である。メモリ160内に5つの命令I0〜I4が存在する。命令I0〜I3のアドレスは、同じタグAを有する。命令I4のアドレスのタグはA+1である。命令I4は後方分岐命令であり、その分岐ターゲットは命令I2である。従って、この命令ループは3つの命令I2〜I4を含む。
プロセッサコア120が後方分岐命令を実行し、この後方分岐命令を取得する毎に、プロセッサ120は、この後方分岐命令に関係する少なくとも1つのタグ値を命令ループキャッシュ140に送信する。この後方分岐命令に関係する少なくとも1つの値は、この後方分岐命令のターゲットアドレスのタグから始まる1つ以上の連続したタグ値とすることができる。本実施形態では、プロセッサコア120が、2つの連続したタグ値を送信し、命令I4のターゲットアドレスが、I2のフェッチアドレスである。従って、プロセッサコア120は、タグ値A及びA+1を、ループタグ信号125によって命令ループキャッシュ140に送信する。
図5は、本発明の実施形態による、命令ループキャッシュを使用する方法を示すフローチャートである。図5の方法は、命令ループキャッシュ140のコントローラ380によって実行することができる。ステップ505では、マイクロプロセッサ100がリセットされると、コントローラ380が、すべてのキャッシュエントリの有効ビット324をクリアすることによって、すべてのキャッシュエントリを無効にする。ステップ510では、コントローラ380が、プロセッサコア120から送信された1つ以上のタグ値を受信して、プロセッサコア120から送信されたタグ値とタグ記憶部340に記憶されているタグ値とが異なるか否かを判定する。コントローラ380がプロセッサコア120から受信したタグ値のいずれかが、タグ記憶部340に前から記憶されているあらゆるタグ値と異なると、フローはステップ515に進む。さもなければ、フローはステップ520に進む。
ステップ515では、コントローラ380が、タグ記憶部340を、プロセッサコア120から受信した少なくとも1つのタグ値で更新する。タグ記憶部340が、プロセッサコア120から受信した少なくとも1つのタグ値用の空きを有する際には、コントローラ380は、プロセッサコア120から受信した少なくとも1つのタグ値を単にタグ記憶部340に追加することによってタグ記憶部340を更新する。さもなければ、コントローラ380は、記憶部340に前から記憶されているタグ値を、プロセッサコア120から受信した少なくとも1つのタグ値に置き換えて、各キャッシュエントリの有効ビット324をクリアすることによって、すべてのキャッシュエントリを無効にする。次に、フローはステップ510に戻る。
ステップ520では、コントローラ380が、命令のフェッチアドレスをプロセッサコア120から受信したか否かを判定する。フェッチアドレスを受信していないと、フローはステップ510に戻る。こうしたフェッチアドレスを受信すると、フローはステップ525に進む。ステップ525では、コントローラ380が、比較器360がヒット信号365をアサートしているか否かをチェックする。ヒット信号365がアサートされていないと、フローはステップ535に進む。ヒット信号365がアサートされていると、ステップ530では、コントローラ380が、プロセッサコア120が提供するフェッチアドレスのインデックスが示すキャッシュエントリの命令326を、プロセッサコア120に供給する。次に、フローはステップ510に戻る。
ステップ535では、コントローラ380が、フェッチアドレスに位置する命令をメモリ160からフェッチして、この命令をプロセッサコア120に供給する。ステップ540では、コントローラ380が、このフェッチアドレスのタグが、タグ記憶部340に記憶されているタグ値のいずれかに等しいか否か、及びこのフェッチアドレスのインデックスが示すキャッシュエントリが無効であるか否かをチェックする。ステップ540でチェックした条件が偽であると、フローはステップ510に戻る。ステップ540でチェックした条件が真であると、ステップ545では、コントローラ380が、メモリ160内のこのフェッチアドレスに位置する命令を、このフェッチアドレスのインデックスが示すキャッシュエントリに入れる。これに加えて、コントローラ380は、タグID322、及びこのキャッシュエントリの有効ビット324をセットする。次に、フローはステップ510に戻る。
次の表1は、マイクロプロセッサ100が、図4に示すループの命令をキャッシュ記憶する方法を示す。以下の説明については、図3、図4及び図5を参照されたい。
Figure 2015069649
表1中の「サイクル」は、マイクロプロセッサ100のクロックサイクルを意味する。サイクル4では、プロセッサ120が、後方分岐命令I4を実行してI4を取得する。その結果、プロセッサコア120がタグ値A及びA+1を命令ループキャッシュ140に送信し、コントローラ380は、タグ値A及びA+1をタグ記憶部340に記憶する。サイクル7、10及び13では、プロセッサコア120がタグ値A及びA+1の送信を反復し、コントローラ380は、同じタグ値が既にタグ記憶部340に記憶されているので、これらを無視するだけである。
サイクル5〜7では、即ち、命令ループの2回目の反復では、まだキャッシュミスが存在する。しかし、コントローラ380は、フェッチアドレスが記憶部340内のタグ値と一致するので、メモリ160からフェッチした命令をキャッシュアレイ320に入れ始める。サイクル8、即ち、命令ループの3回目の反復からは、命令I2〜I4が既にキャッシュアレイ320に記憶されているので、キャッシュヒットが発生する。命令ループの3回目の反復、及びその後の反復の命令は、メモリ160の代わりに命令ループキャッシュ140から供給される。
表1に示すように、命令ループキャッシュ140のキャッシュ機能は、命令ループの3回目の反復から始まる。この場合、命令ループを2回だけ実行するならば、命令ループキャッシュ140は無用になる。本発明の他のいくつかの実施形態では、ヒント命令を用いて、少数回反復される命令ループ向けの強化を提供することができる。
図6は、本発明の実施形態による命令ループを示す概略図である。ヒント命令「ヒントA」が、2つの命令I0及びI1を含む命令ループの前に配置され、I1は後方分岐命令である。本実施形態では、ヒント命令が条件分岐命令であり、ターゲットアドレス及び分岐条件を有する。ヒント命令の分岐条件は常に偽である。例えば、ヒント命令は、「レジスタ0の値がレジスタ0”の値より大きければ、あるターゲットアドレスに分岐する」という形式にすることができる。互換性のため、ヒント命令は、マイクロプロセッサによって、命令ループキャッシュなしで、何の結果も影響もなしに安全に実行することができる。
ヒント命令は、コンパイラによって自動的に、あるいはプログラマーが手作業で、命令ループを含む命令ストリーム内に追加することができる。ヒント命令は、対応する命令ループがプロセッサコア120によって実行される前に、プロセッサコア120によって実行すべきである。ヒント命令のターゲットアドレスは、対応する命令ループを指示する。ヒント命令は、対応する命令ループが当該ヒント命令のターゲットアドレスの範囲内で到達可能で有る限り、固定的に配置することができる。従って、ヒント命令を命令ループから遠くに配置して、パイプラインのレイテンシ(待ち時間)を解消することができる。
プロセッサコア120がヒント命令をフェッチして認識する毎に、プロセッサコア120は、ヒント命令に関係するタグ値を命令ループキャッシュ140に送信する。本実施形態では、ヒント命令に関係するタグ値が、このヒント命令のターゲットアドレスのタグである。次の表2は、マイクロプロセッサ100が図6に示す命令ループをキャッシュ記憶する方法を示す。
Figure 2015069649
サイクル0では、プロセッサコア120がヒント命令をフェッチして認識する。その結果、プロセッサコア120は、タグ値Aを命令ループキャッシュ140に送信し、コントローラ380は、タグ値Aをタグ記憶部340に記憶する。サイクル1及び2では、即ち、命令ループの1回目の反復では、キャッシュミスが存在する。しかし、フェッチアドレスのタグが、タグ記憶部340内のタグ値Aと一致するので、コントローラ380は、メモリ160からフェッチした命令をキャッシュアレイ320に入れ始める。サイクル2では、プロセッサコア120が後方分岐命令I1を実行してI1を取得する。その結果、プロセッサコア120は、タグ値A及びA+1を命令ループキャッシュに送信する。サイクル3、即ち、命令ループの2回目の反復からは、命令I0〜I1が既にキャッシュアレイ320に記憶されているので、キャッシュヒットが発生する。表2に示すように、命令ループキャッシュ140のキャッシュ機能は、表1に示す例よりも1回前の反復である2回目の反復から始まる。
本発明の他のいくつかの実施形態では、ヒント命令がターゲットアドレスを有する必要がない。これらの実施形態では、ヒント命令をノーオペレーション(無演算)命令とすることができる。互換性のため、このノーオペレーション・ヒント命令は、マイクロプロセッサによって、命令ループキャッシュなしで、何の結果も影響もなしに安全に実行することができる。ターゲットアドレスなしのヒント命令は、対応する命令ループの直前に配置すべきである。プロセッサコア120がターゲットアドレスなしのヒント命令をフェッチして認識する毎に、プロセッサコア120は、このターゲットアドレスなしのヒント命令に関係するタグ値を、命令ループキャッシュ140に送信し続ける。しかし、こうしたヒント命令に関係するタグ値は、対応する命令ループの最初の命令のフェッチアドレスのタグであり、即ち、このヒント命令のフェッチアドレスの次のフェッチアドレスのタグである。
図7は、本発明の実施形態による他の命令ループを示す概略図である。この実施形態は、関数呼出しを有する命令ループ向けの強化を提供する。図7に示す命令ストリームは、ヒント命令、命令ループ、及び関数を含む。このループの命令は同じタグAを有するのに対し、関数の命令のアドレスは同じタグBを有する。このループは2つの命令を有する。ループの第1命令が関数を呼び出す。ループの第2命令は後方分岐命令である。
本実施形態では、命令ループに関連するヒント命令「ヒントB」を用いて、プロセッサコア120がタグ値を事前に命令ループキャッシュ140に送信することができる。本実施形態では、ヒント命令が、分岐条件及びターゲットアドレスを有する条件分岐命令である。この分岐条件は常に偽である。ターゲットアドレスは、対応する命令ループ内で呼び出される関数を指示する。ヒント命令は、プロセッサコア120がこの命令ループを実行する前に、プロセッサコア120によって実行されるべきである。プロセッサコア120がヒント命令をフェッチして認識する毎に、プロセッサコア120は、このヒント命令に関係するタグ値を命令ループキャッシュ140に送信する。本実施形態では、ヒント命令に関係するタグ値が、対応する命令ループ内で呼び出される関数の第1命令のフェッチアドレスのタグである。
プロセッサコア120がヒント命令をフェッチして認識すると、プロセッサコア120は、タグ値Bを命令ループキャッシュ140に送信する。コントローラ380は、タグ値Bを命令ループキャッシュ140に記憶する。プロセッサコア120が1回目の反復において命令ループを実行すると、コントローラ380は、ループの命令をメモリ160からフェッチして、これらの命令をプロセッサコア120に提供する。1回目の反復では、タグAがまだタグ記憶部340に記憶されていないので、コントローラ380は、ループの命令をキャッシュアレイ320に記憶しない。しかし、タグ値Bは既にタグ記憶部340に記憶されているので、コントローラ380は、1回目の反復中に呼び出される関数の命令をキャッシュアレイ320に記憶する。1回目の反復において、プロセッサコア120が後方分岐命令を実行すると、プロセッサコア120はタグ値Aを命令ループキャッシュ140に送信し、コントローラ380は、タグ値Aをタグ記憶部340に記憶する。その結果、2回目の反復では、コントローラ380が、ループの命令をキャッシュアレイ320に記憶する。この瞬間から、コントローラ380は、ループ及び関数の命令を、キャッシュアレイ320からプロセッサコア120に直接提供する。
本実施形態では、タグ記憶装置340が、2つのタグ値、即ち命令ループのタグ値A及び関数のタグ値Bを記憶する。従って、キャッシュアレイ320は、ループの命令及び関数の命令を記憶することができる。
図8は、本発明の他の実施形態による、命令ループキャッシュ140を使用する方法を示すフローチャートである。この実施形態は、ネスト(入れ子)化されたループ、即ち、他のループ内のループ向けの強化を提供する。図8に示す方法は、コントローラ380によって実行することができる。本実施形態では、コントローラ380が、通常状態及び内側状態を含む有限状態マシンに関連する。内側状態が、ネスト化された(入れ子の)ループに相当する。図8のフローチャート内の一部のステップは、図5のフローチャート内の対応するものと同一である。これらのステップは、図5及び図8共に同じ番号を有し、ここではそれらの説明を省略する。以下の説明は、図5のフローチャートとは異なるステップに焦点を当てる。
ステップ805では、コントローラ380が通常状態に入り、キャッシュエントリの有効ビット324のすべてをクリアすることによって、キャッシュエントリを無効にする。ステップ812では、コントローラ380が、現在状態が通常状態であるか内側状態であるかをチェックする。コントローラ380が内側状態にある際には、ステップ818において、コントローラ380が通常状態に入り、フローはステップ510に戻る。コントローラ380が通常状態である際には、ステップ815において、コントローラ380が内側状態に入る。これに加えて、ステップ815では、コントローラ380が、ステップ515と同様の方法でタグ記憶部340を更新して、フローはステップ510に戻る。ステップ530後に、コントローラ380はステップ382において内側状態に入り、フローはステップ510に戻る。
図9は、本発明の実施形態によるコントローラ380に関連する有限状態マシンを示す概略図である。図8及び図9に示すように、ステップ805において、コントローラ380は最初に通常状態に入る。コントローラ380が内側信号を受信すると、コントローラ380は通常状態から内側状態に入る。内側信号は、内側ループが実行されていることを示すことを意図している。本実施形態では、コントローラ380がプロセッサコア120から受信した少なくとも1つのタグ値が、タグ記憶部340に前から記憶されているあらゆるタグ値と異なる際に、コントローラ380は、ステップ815において内側信号をアサートする。比較器360がヒット信号365をアサートすると、コントローラ380も、ステップ832において内側信号をアサートする。その代わりに、コントローラ380が受信したタグ値が、タグ記憶部340に前から記憶されているいずれかのタグ値と同一である際に、コントローラ380は内部側信号をアサートすることができる。2つの例を示しているが、他の多数の例が可能であり、こうした内側信号発生のすべてが、本開示の範囲内であることを意図している。
コントローラ380がプロセッサコア120から受信した少なくとも1つのタグ値が、タグ記憶部340に前から記憶されているあらゆるタグ値と異なる際に、ステップ818において、コントローラ380は内側状態から通常状態に入る。ステップ812及び818は、内側命令ループの命令を記憶しているキャッシュエントリを無効化することを回避する。ステップ812及び818により、コントローラ380は、内側状態においてタグ記憶部340に記憶されているタグ値を更新しない。コントローラ380は、通常状態のみにおいて、タグ記憶部340に記憶されているタグ値を更新する。
図10は、本発明の実施形態による命令ループを示す概略図である。図10の命令ループは、ネスト化された内側ループを含み、4つのキャッシュラインにわたり、それらのタグは、それぞれA、A+1、A+2及びA+3である。命令JBは、内側命令ループの後方分岐命令であるのに対し、命令JAは、外側命令ループの後方分岐命令である。次の表3は、マイクロプロセッサ100が図10の命令をキャッシュ記憶する方法を示す。
Figure 2015069649
サイクルC22では、プロセッサコア120が後方分岐命令JBを実行してJBを取得する。その結果、プロセッサコア120は、タグ値A+2及びA+3を命令ループキャッシュ140に送信し、コントローラ380は、タグ値A+2及びA+3をタグ記憶部340に記憶する。これに加えて、コントローラ330は、通常状態から内側状態に入る。サイクルC23及びC24では、即ち、内側命令ループの2回目の反復では、フェッチアドレスのタグがタグ記憶部340内のタグ値と一致するので、コントローラ380は、メモリ160からフェッチした命令をキャッシュアレイ320に入れる。
サイクルC31では、マイクロプロセッサ120が後方分岐命令JAをフェッチし、キャッシュミスが存在する。アレイのエントリが命令Bによって占有されているので、コントローラ380は、メモリ160からフェッチした命令JAをキャッシュアレイ320に入れない。プロセッサコア120が後方分岐命令JAを実行してJAを取得すると、プロセッサコア120は、タグA及びA+1を命令ループキャッシュ140に送信する。コントローラ380が内側状態であるので、コントローラ380は、これらのタグ値を無視して通常状態に入る。フェッチアドレスのタグAが、タグ記憶部340内のタグ値とは異なるので、サイクルC32ではキャッシュミスが存在する。
サイクルC41〜C44では、3回目及び4回目の反復において、内側命令ループが実行される。フェッチアドレスのタグが既にタグ記憶部340に記憶されているので、キャッシュヒットが存在する。サイクルC42では、このキャッシュヒットにより、コントローラ380が通常状態から内側状態に入る。
サイクルC51では、命令JAがキャッシュアレイ320に記憶されていないので、キャッシュミスが存在する。プロセッサコア120が後方分岐命令JAを実行してJAを取得すると、プロセッサコア120は、タグ値A及びA+1を命令ループキャッシュに送信する。コントローラ380は内側状態であるので、コントローラ380は、これらのタグ値を無視して通常状態に入る。フェッチアドレスのタグAがタグ記憶部340のタグ値と異なるので、サイクルC52ではキャッシュミスが存在する。
本実施形態では、最も内側のループの命令が、すべて命令ループキャッシュ140内にキャッシュ記憶される。最も内側のループが最も頻繁に実行されるので、このことは最も効率的な方法である。
図11は、本発明の他の実施形態による、マイクロプロセッサ100の命令ループキャッシュ140を示す概略図である。この実施形態は、複数のキャッシュライン境界にまたがるループ向けの強化を提供する。本実施形態では、命令ループキャッシュ140が、キャッシュアレイ1120、タグ記憶部1140、比較器1160、及びコントローラ1180を含む。
タグ記憶部1140は、より長い命令ループ用に、より多数のタグ値を記憶するための、より大きな容量を有する。従って、プロセッサコア120は、後方分岐命令を実行して取得する際に、より多数のタグ値を命令ループキャッシュ140に送信することができる。さらに、すべてのキャッシュエントリの有効ビットをまとめて、同じキャッシュエントリのタグIDにする。図11に示すように、キャッシュアレイ1120内の各キャッシュエントリが、2つのフィールド、即ちタグID1122及び命令1126を含む。命令フィールド1126は、図3の命令フィールド326と同じである。各キャッシュエントリのタグID1122はMビットを有するのに対し、タグ記憶部1140は2M−1個のタグ値の容量を有する。本実施形態では、Mが2に等しい。タグ記憶部1140内のタグ値は、1〜2M−1に番号付けされている。キャッシュエントリのタグID1122を用いて、タグID1122と同じ数を有するタグ値を選択する。キャッシュアレイ1120は、プロセッサコア120が提供するフェッチアドレスのインデックスが示すキャッシュエントリのタグID1122を、タグ記憶部1140に対して出力する。タグ記憶部1140は、キャッシュアレイ1120が出力するタグID1122が示すタグ値を出力する。
キャッシュアレイ1120が出力するタグID1122が、本実施形態では0である所定値に等しい際に、タグ記憶部1140は、所定の無効タグ値を出力する。この無効タグ値は、あらゆるフェッチアドレスのタグと異なる一意的な値であり、このため、タグ記憶装置1140がこの無効タグ値を出力する際には、キャッシュヒットが存在しない。キャッシュエントリのタグID1122のタグ値が、この無効タグ値に相当する所定値である際に、このことは、このキャッシュエントリが無効であることを意味する。従って、コントローラ1180がキャッシュエントリを無効化する際に、コントローラ1180は、このキャッシュエントリのタグID1122をクリアして、上記無効タグ値に相当する所定値にする
比較器1160は、タグ記憶部1140が出力するタグ値と、プロセッサコア120が提供するフェッチアドレスのタグとのビット単位の比較を実行する。比較器1160は、フェッチアドレスのタグが、タグ記憶部1140が出力するタグ値に等しい際に、ヒット信号365をアサートしてキャッシュヒットを示す。さもなければ、比較器1160は、ヒット信号365をデアサートしてキャッシュミスを示す。
図11の命令ループキャッシュ140についての他の詳細事項は、図3の命令ループキャッシュ140についての詳細事項と同じである。
図12は、本発明の実施形態による命令ループを示す概略図である。図12の命令ループは、分岐ターゲットが命令I2である前方分岐命令、及び分岐ターゲットが命令I0である後方分岐命令を含む。この実施形態は、図4に示す実施形態と似ているが、いくつかの相違がある。第1の相違は、タグ記憶部1140が、2つのタグ値の代わりに3つまでのタグ値を記憶することができる、ということである。第2の相違は、プロセッサコア120が後方分岐命令を実行して、この後方分岐命令を取得すると、プロセッサコア120は、2つの連続したタグ値の代わりに、3つの連続したタグ値を命令ループキャッシュ140に送信することである。従って、プロセッサコア120が図12の後方分岐命令を実行して、この後方分岐命令を取得すると、プロセッサコア120は、3つの連続したタグ値A、A+1及びA+2を命令ループキャッシュ140に送信する。従って、2回目の反復では、命令ループキャッシュ140が、命令I0及びI2、即ち前方分岐命令及び後方分岐命令を記憶する。次に、3回目の反復では、命令ループキャッシュ140は、これらの命令を、キャッシュアレイ1120から直接供給することができる。
本発明の範囲を逸脱することなしに、本発明の構造に種々の変更及び変形を加えることができることは、当業者にとって明らかである。以上を考慮すれば、本発明の変更及び変形が以下の特許請求の範囲及びその等価物の範囲内に入るのであれば、本発明は、これらの変更及び変形をカバーすることを意図している。
本発明が提供する命令ループキャッシュは、命令ループの命令を効果的にキャッシュ記憶する。この命令ループキャッシュは、微小サイズに構成して、電力及びチップ空間を節減することができる。この命令ループキャッシュは、関数呼出し、複数のキャッシュライン境界をまたぐ命令ループ、及びネスト化された命令ループに適用可能である。これに加えて、この命令ループキャッシュは、命令ループの2回目の反復から命令を供給し始めることができ、このことは、ループ実行に対する非常に高速な応答となる。
100:マイクロプロセッサ
120:プロセッサコア
125:ループタグ信号
140:命令ループキャッシュ
160:メモリ
320、1120:キャッシュアレイ
322、1122:タグID
324:有効ビット
326、1126:命令フィールド
340 1140:タグ記憶部
360、1160:比較器
365:ヒット信号
380、1180:コントローラ
I0〜I7、ヒントA、ヒントB、呼出しF、F、戻り、戻り、A、B、JA、JB:命令
505〜545、805、812〜818、832:方法のステップ

Claims (20)

  1. 命令ストリームのフェッチアドレスを提供するプロセッサコアであって、前記命令ストリームは1つ以上の命令を含み、前記フェッチアドレスは、タグ及びインデックスを含むプロセッサコアと;
    前記プロセッサコアから前記フェッチアドレスを受信する命令ループキャッシュと
    を具えたマイクロプロセッサであって、
    前記命令ループキャッシュは、
    前記プロセッサコアに結合され、第1所定数のキャッシュエントリを記憶するキャッシュアレイであって、前記キャッシュエントリの各々がタグ識別番号(ID)を含むキャッシュアレイと、
    前記プロセッサコア及び前記キャッシュアレイに結合されたタグ記憶部とを具え、
    前記キャッシュアレイは、前記フェッチアドレスの前記インデックスが示す前記キャッシュエントリの前記タグIDを出力し、
    前記タグ記憶部は、第2所定数のタグ値を記憶して、前記キャッシュアレイが出力する前記タグIDが示す前記タグ値を出力するように構成され、
    前記命令ループキャッシュは、前記フェッチアドレスの前記タグと、前記タグ記憶部が出力する前記タグ値とのビット単位の比較に基づいて、キャッシュヒットが発生するかキャッシュミスが発生するかを判定する
    ことを特徴とするマイクロプロセッサ。
  2. 前記プロセッサコアは、後方分岐命令を取得する毎に、当該後方分岐命令に関係する少なくとも1つの前記タグ値を、前記命令ループキャッシュに送信することを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 前記後方分岐命令に関係する前記少なくとも1つのタグ値が、前記後方分岐命令のターゲットアドレスのタグから始まる連続したタグ値であることを特徴とする請求項2に記載のマイクロプロセッサ。
  4. 前記プロセッサコアは、ヒント命令をフェッチして認識する毎に、当該ヒント命令に関係する前記タグ値を前記命令ループキャッシュに送信することを特徴とする請求項1に記載のマイクロプロセッサ。
  5. 前記ヒント命令は、分岐条件が常に偽である条件分岐命令であり、前記ヒント命令に関係する前記タグ値は、前記条件分岐命令のターゲットアドレスの前記タグであることを特徴とする請求項4に記載のマイクロプロセッサ。
  6. 前記ターゲットアドレスは、前記プロセッサコアが前記ヒント命令を実行した後に、前記プロセッサコアが実行すべき命令ループを指示することを特徴とする請求項5に記載のマイクロプロセッサ。
  7. 前記ターゲットアドレスは、前記プロセッサコアが前記ヒント命令を実行した後に、前記プロセッサコアが実行すべき命令ループによって呼び出される関数を指示することを特徴とする請求項5に記載のマイクロプロセッサ。
  8. 前記ヒント命令がノーオペレーション命令であり、前記ヒント命令は、前記プロセッサコアが実行する命令ループの直前に配置され、前記ヒント命令に関係する前記タグ値は、前記命令ループの最初の命令のフェッチアドレスの前記タグ値であることを特徴とする請求項4に記載のマイクロプロセッサ。
  9. 前記キャッシュアレイの各々が、さらに有効ビットを具え、前記命令ループキャッシュが、さらに、
    前記プロセッサコア、前記タグ記憶部、及び前記キャッシュアレイに結合された比較器を具え、この比較器は、前記フェッチアドレスの前記タグが、前記タグ記憶部が出力する前記タグ値に等しく、かつ前記フェッチアドレスの前記インデックスが示す前記キャッシュアレイの前記有効ビットがセットされている際に、ヒット信号をアサートしてキャッシュヒットを示し、さもなければ、前記ヒット信号をデアサートしてキャッシュミスを示すことを特徴とする請求項1〜8のいずれかに記載のマイクロプロセッサ。
  10. 前記キャッシュアレイが出力する前記タグIDが所定値に等しい際に、前記タグ記憶部が無効タグ値を出力し、この無効タグ値は、あらゆる前記フェッチアドレスの前記タグ値と異なる一意的な値であり、前記命令ループキャッシュが、さらに、
    前記プロセッサコア及び前記タグ記憶部に結合された比較器であって、前記フェッチアドレスの前記タグが、前記タグ記憶部が出力する前記タグ値に等しい際に、ヒット信号をアサートしてキャッシュヒットを示し、さもなければ、前記ヒット信号をデアサートしてキャッシュミスを示すことを特徴とする請求項1〜8のいずれかに記載のマイクロプロセッサ。
  11. 前記キャッシュエントリの各々が、さらに命令を含み、前記命令ループキャッシュが、さらに、
    前記プロセッサコア、前記キャッシュアレイ、前記タグ記憶部、及びメモリに結合されたコントローラを具え、このコントローラは、キャッシュヒットが発生した際に、前記フェッチアドレスの前記インデックスが示す前記キャッシュエントリの前記命令を、前記プロセッサコアに供給し、キャッシュミスが発生した際に、前記メモリ内の前記フェッチアドレスに位置する命令を、前記プロセッサコアに供給し、キャッシュミスが発生し、かつ、前記フェッチアドレスの前記タグが、前記タグ記憶部に記憶された前記タグ値の1つに等しく、かつ、前記フェッチアドレスの前記インデックスが示す前記キャッシュエントリが無効である際に、前記メモリ内の前記フェッチアドレスに位置する命令を、前記フェッチアドレスの前記インデックスが示す前記キャッシュエントリに入れることを特徴とする請求項1〜10のいずれかに記載のマイクロプロセッサ。
  12. 前記コントローラは、前記プロセッサコアから受信した前記タグ値が、前記タグ記憶部に前から記憶されているすべての前記タグ値と異なる際に、前記タグ記憶部を、前記プロセッサコアから受信した前記タグ値で更新することを特徴とする請求項11に記載のマイクロプロセッサ。
  13. 前記コントローラは、前記プロセッサコアから受信した前記タグ値を前記タグ記憶部内に追加することによって、あるいは、前記タグ記憶部に前から記憶されている前記タグ値を、前記プロセッサコアから受信したタグ値に置き換えて、前記キャッシュエントリの各々の前記タグIDまたは有効ビットをクリアすることによって、前記タグ記憶部を更新することを特徴とする請求項12に記載のマイクロプロセッサ。
  14. 前記コントローラが、通常状態及び内側状態を含む有限状態マシンに関連し、前記コントローラが前記通常状態であり、前記プロセッサコアから受信した前記タグ値が、前記タグ記憶部に前から記憶されているすべての前記タグ値と異なる際に、前記コントローラは、前記タグ記憶部を、前記プロセッサコアから受信した前記タグ値で更新し、前記コントローラが前記内側状態であり、前記プロセッサコアから受信した前記タグ値が、前記タグ記憶部に前から記憶されているすべての前記タグ値と異なる際に、前記コントローラは前記通常状態に入り、前記コントローラが前記通常状態であり、内側信号を受信すると、前記コントローラは前記内側状態に入ることを特徴とする請求項12または13に記載のマイクロプロセッサ。
  15. 命令ループキャッシュを使用する方法であって、前記命令ループキャッシュが、通常状態及び内側状態を含む有限状態マシンに関連する方法において、
    最初に通常状態に入るステップと、
    現在状態が前記通常状態であり、プロセッサコアから前記命令ループキャッシュに送信されたタグ値が、前記命令ループキャッシュに前から記憶されているすべてのタグ値と異なる際に、前記命令ループキャッシュを、前記送信されたタグ値で更新するステップと、
    現在状態が前記内側状態であり、前記プロセッサコアから前記命令ループキャッシュに送信されたタグ値が、前記命令ループキャッシュに前から記憶されているすべてのタグ値と異なる際に、前記通常状態に入るステップと、
    現在状態が前記通常状態である際に、内側信号に応答して、前記内側状態に入るステップと、
    前記プロセッサコアから前記命令ループキャッシュに送信されたフェッチアドレスのタグと、前記命令ループキャッシュに記憶されているタグ値の1つとの比較に基づいて、前記命令ループキャッシュにおいてキャッシュヒットが発生するかキャッシュミスが発生するかを判定するステップと
    を含むことを特徴とする方法。
  16. 前記命令ループキャッシュを更新するステップが、
    前記プロセッサコアから送信されたタグ値を、前記命令ループキャッシュ内に追加するか、あるいは、前記命令ループキャッシュ内に前から記憶されているタグ値を、前記プロセッサコアから送信された前記タグ値に置き換えることを含むことを特徴とする請求項15に記載の方法。
  17. 命令ループキャッシュを使用する方法であって、ヒント命令をフェッチして認識する毎に、当該ヒント命令に関係するタグ値を前記命令ループキャッシュに送信するステップを含み、前記ヒント命令は、前記タグ値を介して、当該ヒント命令が実行された後に実行される命令ループに関連し、前記命令ループキャッシュは、命令のフェッチアドレスのタグと、前記命令ループキャッシュに記憶されているタグ値の1つとの比較に基づいて、キャッシュヒットが発生するかキャッシュミスが発生するかを判定することを特徴とする方法。
  18. 前記ヒント命令は、分岐条件が常に偽である条件分岐命令であり、前記ヒント命令に関係するタグ値が、前記条件分岐命令のターゲットアドレスのタグであることを特徴とする請求項17に記載の方法。
  19. 前記ターゲットアドレスが、前記命令ループ、または前記命令ループ内で呼び出される関数を指示することを特徴とする請求項18に記載の方法。
  20. 前記ヒント命令がノーオペレーション命令であり、前記ヒント命令が前記命令ループの直前に配置され、前記ヒント命令に関係するタグ値が、前記命令ループの最初の命令のフェッチアドレスのタグであることを特徴とする請求項17に記載の方法。
JP2014190244A 2013-09-26 2014-09-18 マイクロプロセッサ及びその命令ループキャッシュの使用方法 Active JP5944458B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/037,395 US9183155B2 (en) 2013-09-26 2013-09-26 Microprocessor and method for using an instruction loop cache thereof
US14/037,395 2013-09-26

Publications (2)

Publication Number Publication Date
JP2015069649A true JP2015069649A (ja) 2015-04-13
JP5944458B2 JP5944458B2 (ja) 2016-07-05

Family

ID=52692055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014190244A Active JP5944458B2 (ja) 2013-09-26 2014-09-18 マイクロプロセッサ及びその命令ループキャッシュの使用方法

Country Status (4)

Country Link
US (1) US9183155B2 (ja)
JP (1) JP5944458B2 (ja)
CN (1) CN104516829B (ja)
TW (1) TWI483186B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632791B2 (en) * 2014-01-21 2017-04-25 Apple Inc. Cache for patterns of instructions with multiple forward control transfers
CN109426650B (zh) * 2017-08-28 2023-07-18 华为技术有限公司 处理器和处理标签的方法
US11176051B2 (en) * 2020-03-13 2021-11-16 Shenzhen GOODIX Technology Co., Ltd. Multi-way cache memory access
CN113900966B (zh) * 2021-11-16 2022-03-25 北京微核芯科技有限公司 一种基于Cache的访存方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JPH06274352A (ja) * 1993-03-19 1994-09-30 Hitachi Ltd コンパイラ、及びデータ処理装置
JPH10232830A (ja) * 1996-11-14 1998-09-02 Motorola Inc 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法
US20030056134A1 (en) * 2000-01-31 2003-03-20 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US20040193858A1 (en) * 2003-03-24 2004-09-30 Infineon Technologies North America Corp. Zero-overhead loop operation in microprocessor having instruction buffer
US20050015537A1 (en) * 2003-07-16 2005-01-20 International Business Machines Corporation System and method for instruction memory storage and processing based on backwards branch control information

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893142A (en) 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
EP1107110B1 (en) 1999-11-30 2006-04-19 Texas Instruments Incorporated Instruction loop buffer
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
US6757784B2 (en) * 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
EP1302775A1 (en) * 2001-10-16 2003-04-16 Italtel s.p.a. A clock generation system for a prototyping apparatus
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
CN102541510B (zh) * 2011-12-27 2014-07-02 中山大学 一种指令缓存系统及其取指方法
CN103019959B (zh) * 2012-11-21 2016-05-04 中国科学院声学研究所 一种指令高速缓冲存储器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JPH06274352A (ja) * 1993-03-19 1994-09-30 Hitachi Ltd コンパイラ、及びデータ処理装置
JPH10232830A (ja) * 1996-11-14 1998-09-02 Motorola Inc 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法
US20030056134A1 (en) * 2000-01-31 2003-03-20 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US20040193858A1 (en) * 2003-03-24 2004-09-30 Infineon Technologies North America Corp. Zero-overhead loop operation in microprocessor having instruction buffer
US20050015537A1 (en) * 2003-07-16 2005-01-20 International Business Machines Corporation System and method for instruction memory storage and processing based on backwards branch control information

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7015002591; 黒澤泰彦、渡辺幸男、田胡治之: '次世代プロセッサ Cell Broadband Engine' 東芝レビュー Vol.61 No.6, 200606, 第9-15ページ, 株式会社東芝 *

Also Published As

Publication number Publication date
CN104516829A (zh) 2015-04-15
CN104516829B (zh) 2017-07-21
TW201512986A (zh) 2015-04-01
US20150089141A1 (en) 2015-03-26
TWI483186B (zh) 2015-05-01
JP5944458B2 (ja) 2016-07-05
US9183155B2 (en) 2015-11-10

Similar Documents

Publication Publication Date Title
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
US9824016B2 (en) Device and processing method
KR101168544B1 (ko) 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템
US9390011B2 (en) Zero cycle clock invalidate operation
JP6022849B2 (ja) 共有キャッシュメモリ制御
JP5944458B2 (ja) マイクロプロセッサ及びその命令ループキャッシュの使用方法
US9396117B2 (en) Instruction cache power reduction
US8103831B2 (en) Efficient method and apparatus for employing a micro-op cache in a processor
CN111213131B (zh) 高速缓存器中的零时延预提取
US8782374B2 (en) Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
KR20070108939A (ko) 포워드 룩킹 브렌치 타겟 어드레스 캐싱
JP4843717B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6627629B2 (ja) 演算処理装置、および演算処理装置の制御方法
US20050120193A1 (en) Context look ahead storage structures
US20080016278A1 (en) Data Processing System, Processor and Method of Data Processing in which Local Memory Access Requests are Serviced on a Fixed Schedule
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
US8977821B2 (en) Parallel processing of multiple block coherence operations
JP2011013864A (ja) 命令制御装置、命令制御方法および演算回路
JP5669734B2 (ja) 効果的なロードキュー・スヌーピング
US20110022802A1 (en) Controlling data accesses to hierarchical data stores to retain access order
JP5793061B2 (ja) キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム
JP5916355B2 (ja) プログラムの命令を実行する装置および命令をキャッシュするシステム
JP3935871B2 (ja) パイプラインを有する計算回路のためのメモリ・システムおよびパイプラインの機能ユニットにデータを提供する方法
US8433850B2 (en) Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor
US7581042B2 (en) I/O hub resident cache line monitor and device register update

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160525

R150 Certificate of patent or registration of utility model

Ref document number: 5944458

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250