説明

可変長命令の固定数を持つ命令キャッシュ

【課題】可変長命令の存在のもとで命令キャッシュアクセスを改善する。
【解決手段】可変長命令の固定数が、命令キャッシュの各ライン200,260に記憶される。可変長命令I1〜I8は予め定められた境界に沿って整列される。ラインの各命令の長さ、従って命令が占めるメモリのスパンが知られていないので、次に続く命令のアドレス240,300が計算され、キャッシュラインで記憶される。命令境界を確認し、命令を整列させ、次のフェッチアドレスを計算することは、キャッシュに命令を置く前にプレデコーダで行なわれる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にプロセッサの分野に係り、特に可変長命令の固定数を記憶する命令キャッシュを持つプロセッサに関する。
【背景技術】
【0002】
マイクロプロセッサは、携帯用電子機器を含む種々様々のアプリケーションにおいて計算上のタスクを行なう。多くの場合、プロセッサの性能を最大限にすることは、補助機能と特徴が携帯用電子機器および他のアプリケーションで実施されることを可能にするために主な設計目標である。さらに、電力消費は、制限されたバッテリー容量を持つ携帯用電子機器において特別の関係である。従って、性能を増加させて、電力消費を減少させるプロセッサ設計は望ましい。
【0003】
最も現代のプロセッサは1つ以上の命令実行パイプラインを使用し、多くのマルチステップの逐次命令の実行が全面的なプロセッサの性能を改善するために重複される。ほとんどのプログラムの空間的かつ時間的局所参照性特例を利用して、最近、実行される命令が実行パイプラインによって即座のアクセスのために、キャッシュ(高速、通常オンチップ・メモリ)に記憶される。
【0004】
多くのプロセッサの命令セット・アーキテクチャ(ISA)が可変長命令を含んでいる。すなわち、メモリから読み出された命令オペレーションコードは、必ずしもすべて同じ量のスペースを占めない。これは、算術または論理命令を用いたオペランドの包含、非常に長い命令語(VLIW)への多重オペレーションの融合、あるいは他のアーキテクチャの特徴に起因するかもしれない。可変長命令にとって1つの不利は、命令キャッシュから命令を取り込む際、プロセッサは各命令の境界を確認しなければならないということであり、その計算上のタスクは電力を消費し、性能を減少させる。
【0005】
可変長命令の存在のもとで命令キャッシュアクセスを改善することへの技術における既知のアプローチは、キャッシュにそれらを記憶する前に命令を「プレデコード」し、さらに、命令と共にキャッシュラインにおけるある命令境界情報を記憶することである。これは、デコードタスクに置かれる命令境界を確認する付加的な計算上の負担を減少させるが、しかし除去しない。
【0006】
また、同じコンパクトな形式のキャッシュにそれらがメモリから読み出される命令を詰め込むことによって、命令は1つのキャッシュラインの終わりに命令の一部が記憶され、残りが連続したキャッシュラインの初めに記憶されることによって、時々誤整列される。この命令を取り込むことは2つのキャッシュアクセスを必要とし、特に2つのアクセスが命令実行するごとに必要とされるので、さらに性能を減少し、電力消費を増加させる。
【0007】
図1は可変長命令(I1−I9)を記憶する先行技術命令キャッシュの2つのライン100、140の代表的な図を示す。この代表的な例において、各キャッシュラインは16バイトを含み、32ビットの語長が仮定される。ほとんどの命令は一語幅、即ち4バイトである。いくつかの命令は2バイトを含む半語幅である。第1のキャッシュライン100および関連するタグフィールド120は、命令I1ないしI4、および命令I5の半分を含んでいる。関連するタグフィールド160を有する第2のキャッシュライン140は、命令I5の後半および命令I6ないしI9を含んでいる。命令長とそれらのアドレスは次の表で要約される:
【表1】

【0008】
キャッシュライン100、140からこれらの命令を読み出すために、プロセッサは、命令境界を決定する付加的な計算上の労力(電力消費と遅れを犠牲にして)を消費しなければならない。命令をプレデコードし、かつキャッシュライン100、140中の、またはそれに関係した境界情報を記憶することにより、このタスクが支援されてもよいが、補足計算は除去されない。さらに、命令I5の取り込みは2つのキャッシュアクセスを要求するだろう。キャッシュから誤整列された命令を取り込むこの2重のアクセスは付加的な電力消費およびプロセッサ遅れを引き起こす。
【発明の概要】
【0009】
可変長命令の固定数が命令キャッシュの各ラインに記憶される。可変長命令は予め定められた境界に沿って整列される。ラインにおける各命令の長さ、従って命令が占めるメモリのスパンが知られていないので、次に続く命令のアドレスが計算され、キャッシュラインで記憶される。命令境界を確認し、命令を整列させて、次のフェッチアドレスを計算することは、キャッシュに命令を置く前にプレデコーダで行なわれる。
【0010】
一実施例では、可変命令長を持つプロセッサにおいてキャッシュ管理の方法はキャッシュラインごとに命令の固定数を記憶することを含む。
【0011】
別の実施例では、プロセッサは、可変長の命令を実行するように作動する命令実行パイプラインと、キャッシュラインごとに可変長命令の固定数を記憶するように作動する命令キャッシュを含んでいる。プロセッサはさらに、キャッシュラインに命令を書き込む前に予め定められた境界に沿って可変長命令を整列させるように作動するプレデコーダを含んでいる。
【図面の簡単な説明】
【0012】
【図1】可変長命令を記憶する先行技術命令キャッシュの図である。
【図2】プロセッサの機能ブロック図である。
【図3】予め定められた境界に沿って整列された可変長命令の固定数を記憶する命令キャッシュの図である。
【発明を実施するための形態】
【0013】
図2は、パイプラインアーキテクチャと階層的記憶構造の両方を使用する、代表的なプロセッサ10の機能ブロック図を示す。プロセッサ10は制御論理14にしたがって命令実行パイプライン12で命令を実行する。パイプラインはパイプ段階に組織化された様々なレジスタあるいはラッチ16、および1つ以上の論理演算装置(ALU)18を含んでいる。多目的レジスタ(GPR)ファイル20は、記憶階層のトップを含むレジスタを提供する。
【0014】
パイプラインは命令側変換索引バッファ(ITLB)24によって管理されたメモリアドレッシングとパーミッションで命令キャッシュ(I-キャッシュ)22から命令を取り込む。プレデコーダ21は、I-キャッシュ22にそれらを記憶する前にメモリから取り込まれた命令を検査する。下に議論されるように、プレデコーダ21は命令境界を確認し、命令を整列させて、命令をI-キャッシュ22に記憶する次のフェッチアドレスを計算する。
【0015】
データは主変換索引バッファ(TLB)28によって管理されたメモリアドレッシングとパーミッションでデータキャッシュ26からアクセスされる。様々な実施例では、ITLB24はTLB28の一部のコピーを含んでもよい。代わりに、ITLB24およびTLB28は統合されてもよい。同様に、プロセッサ10の様々な実施例では、I-キャッシュ22およびD-キャッシュ26は統合、即ち一体にされてもよい。I-キャッシュ22および/またはD-キャッシュ26におけるミスは、メモリインタフェース30の制御の下で、主(オフチップ)メモリ32へのアクセスを引き起こす。
【0016】
プロセッサ10は様々な周辺機器36へのアクセスを制御する、入力/出力(I/O)インターフェース34を含んでいてもよい。当業者はプロセッサ10の多くの変形が可能であることを認識するだろう。例えば、プロセッサ10はIおよびD-キャッシュ22、26のいずれかあるいは両方について第2のレベル(L2)キャッシュを含んでいてもよい。さらに、プロセッサ10で示された機能ブロックの1つ以上は、特別の実施例から省略されてもよい。
【0017】
ここに示された1つ以上の実施例によれば、プロセッサ10は各キャッシュラインに可変長命令の固定数を記憶する。その命令は、好ましくは、例えば語境界のような予め定められた境界に沿って整列される。これは、命令境界を計算し、高速演算を可能にし、したがってプロセッサの性能を改善する必要から、デコードパイプ段階を緩和する。I-キャッシュ22にこのように命令を記憶することは、また命令長検査および一度整列動作を行なうことにより電力消費を減少させる。I-キャッシュ22のヒット率が一般に高い90%であるので、毎回命令がI-キャッシュ22から実行される命令境界を確認する必要の除去により、相当な省電力が実現され得る。
【0018】
プレデコーダ21は主メモリ32およびI-キャッシュ22間のパス中に挿入された論理を含む。プレデコーダ21の論理は、メモリから検索されたデータを検査し、命令の数および長さを確認する。プレデコーダは、キャッシュラインに記憶されるキャッシュへの整列された命令を渡す前に、予め定められた、例えば語、境界に沿って命令を整列させる。
【0019】
図3は、図1からの可変長命令の固定数をそれぞれ含んでいる、I-キャッシュ22の2つの代表的ライン200および260を示す(この例において、4つの命令が各キャッシュライン200、260に記憶される)。キャッシュライン200および260は16バイトである。語境界が破線によって示される;半語境界は点線によって示される。命令は語境界に沿って整列される(即ち、各命令は語アドレスから開始する)。命令がパイプライン12によってI-キャッシュ22から取り込まれる場合、デコードパイプ段階は、キャッシュライン200、260から適切な語を単に多重化し、直ちにオペレーションコードをデコードし始める。半語命令(例えばI3とI8)の場合には、キャッシュライン200、260中のスペースの半語はそれぞれ未使用であり、図3で陰影により示される。
【0020】
図1で示された先行技術キャッシュと比較して、図3のキャッシュ22は2つのキャッシュラインに、9つではなく、8つの命令しか記憶しないことに注意を要す。I9の長さに対応する語スペース(オフセット0×0Aおよび0×1Eにおける半語)は利用されない。キャッシュ22に命令を記憶する効率のこの減少は、図3で示されたキャッシュ利用の単純性、改善されたプロセッサ・パワーおよびより低い電力消費の代償である。
【0021】
さらに、キャッシュライン200、260に可変長命令の固定数を割り当て、予め定められた境界に沿って命令を整列させることによって、命令は図1のI5のように、キャッシュラインを横切って誤整列されて記憶されない。したがって、単一命令を検索するため2つのキャッシュ22のアクセスによって起される性能ペナルティおよび過大電力消費は、完全に除去される。
【0022】
既知の全体長さ(キャッシュラインの長さ)を持つ命令の可変数ではなく、可変長命令の固定数が記憶されるので、次の逐次命令のアドレスはキャッシュライン200のメモリサイズによって、1つのキャッシュライン200のタグ220を単にインクリメントすることによって確認することができない。従って、一実施例では、命令が整列されるとき(I-キャッシュ22にそれらを記憶する前に)、次のフェッチアドレスがプレデコーダ21によって計算され、次のフェッチアドレスはキャッシュライン200と共にフィールド240に記憶される。
【0023】
次のフェッチアドレスの計算および記憶の代わりとして、一実施例によれば、タグ220からのオフセットが計算され、オフセットフィールド240におけるようにキャッシュライン200と共に記憶される。したがって、次のフェッチアドレスはタグアドレスにオフセットを加えることにより容易に計算され得る。この実施例は、連続のアドレスフェッチがキャッシュラインを横切るたびごとにこの加算を行なうため処理遅延および電力消費を招く。他の実施例では、次のフェッチアドレスの計算を助けるために他の情報が記憶されてもよい。例えば、キャッシュライン240中の命令の固定数と等しい一組のビットが、例えば、全語長命令を示す1と半語長命令を示す0が対応する命令「スロット」に記憶されることにより、記憶されてもよい。メモリ中の命令のアドレス、従って次の逐次命令のアドレスは、その後この情報から計算されてもよい。当業者は、追加の次のアドレス計算援助が次の命令フェッチアドレスを計算するために工夫され記憶されることを容易に認識するだろう。
【0024】
様々な実施例が、語および半語命令長を含む代表的なISAに関してここに詳説されたが、本発明はこれらの実施例に制限されていない。一般に、どんな可変長命令も予め定められた境界に沿って整列され、命令キャッシュ22に固定数で有利に記憶され得る。さらに、ここに示されたそれとは異なっているサイズのキャッシュライン240、300が様々な実施例の実行において利用されてもよい。
【0025】
本発明の実施例は、ここに特別の特徴、その態様および実施例に関して記述されたが、多数の変形、修正および他の実施例が本発明の広い範囲内で可能であることは明白であり、従って、すべての変形、修正および実施例は発明の範囲内であると見なされるべきである。それ故、本実施例は例証され限定的でないものとしてすべての態様で解釈され得、添付請求項の意味および均等範囲内に入るすべての変更は、そこに包含されるように意図される。

【特許請求の範囲】
【請求項1】
キャッシュラインごとに命令の固定数を記憶することを含む、可変命令長を持つプロセッサにおけるキャッシュ管理の方法。
【請求項2】
それらの長さを決定する命令を検査し、キャッシュにそれらを置く前に予め定められた境界に沿って命令を整列させることをさらに含む請求項1の方法。
【請求項3】
各キャッシュラインを用いて次のフェッチアドレスを記憶することをさらに含む請求項1の方法。
【請求項4】
キャッシュに命令を置く前に次のフェッチアドレスを決定することをさらに含む請求項3の方法。
【請求項5】
各キャッシュラインを用いてオフセットを記憶し、オフセットはキャッシュライン・タグに加えられた時、次のフェッチアドレスを生じることをさらに含む請求項1の方法。
【請求項6】
可変長の命令を実行するように作動する命令実行パイプラインと、
キャッシュラインごとに可変長命令の固定数を記憶するように作動する命令キャッシュと、
キャッシュラインに命令を書き込む前に予め定められた境界に沿って可変長命令を整列させるように作動するプレデコーダを含むプロセッサ。
【請求項7】
各キャッシュラインに関連した次のフェッチアドレスフィールドをさらに含む請求項6のプロセッサ。
【請求項8】
プレデコーダがキャッシュラインに書き込まれた最後の命令に従う命令のアドレスを計算し、かつキャッシュラインの次のフェッチアドレスフィールドにアドレスを記憶するように作動する、請求項7のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−74046(P2012−74046A)
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−237313(P2011−237313)
【出願日】平成23年10月28日(2011.10.28)
【分割の表示】特願2008−524216(P2008−524216)の分割
【原出願日】平成18年7月26日(2006.7.26)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】