(57)【特許請求の範囲】
【請求項１】
キャッシュのキャッシュラインが有効且つロック状態であることを示す第１の状態にあるとき、前記キャッシュの外部にあり前記キャッシュラインに対応する第１の記憶位置がアクセス要求と関連付けられていることを示す表示を受信すること、
前記表示の受信に応答して、前記キャッシュラインの状態を前記第１の状態から前記キャッシュラインのデータが無効且つロック状態であることを示す第２の状態に他の制御設定によらず自動的に変更すること
を備え、前記キャッシュラインが無効且つロック状態にあるとき、当該キャッシュラインは前記第１の記憶位置に割り当てられたままであり、前記キャッシュの外部にあり前記第１の記憶位置とは異なる第２の記憶位置への割り当てに利用不可となる、方法。
【請求項２】
請求項１に記載の方法は更に、
プロセッサにおける第１の命令の実行に応じて、前記キャッシュラインの状態を前記キャッシュラインのデータが有効且つアンロック状態であることを示す第３の状態から前記第１の状態に変更することを備える、方法。
【請求項３】
請求項１に記載の方法は更に、
プロセッサにおける第２の命令の実行に応じて、前記キャッシュラインの状態を前記第２の状態から前記第１の状態に自動的に戻すことを備える、方法。
【請求項４】
請求項１に記載の方法は更に、
プロセッサにおける第１の命令の実行に応じて、前記キャッシュラインの状態を前記第２の状態から前記キャッシュラインが無効且つアンロック状態であることを示す第４の状態に自動的に変更することを備える、方法。
【請求項５】
プロセッサと、
前記プロセッサに結合されたキャッシュと
を備え、前記キャッシュが、
キャッシュラインを記憶するように構成されたデータアレイと、
前記キャッシュラインに関連付けられた状態情報を記憶するように構成された状態モジュールと、
前記状態モジュールに結合されたアレイ制御モジュールであって、前記プロセッサにおけるロック命令の実行に応じて、前記状態情報を前記キャッシュラインが有効且つロック状態であることを示す第１の状態に変更するとともに、前記キャッシュの外部にあり且つ前記キャッシュラインに対応する第１のデータ位置がアクセス要求と関連付けられているという表示の受信に応じて、前記状態情報を前記第１の状態から前記キャッシュラインのデータが無効且つロック状態であることを示す第２の状態に他の制御設定によらず自動的に変更するように構成されているアレイ制御モジュールと
を含み、前記キャッシュラインが無効且つロック状態にあるとき、当該キャッシュラインは前記第１のデータ位置に割り当てられたままであり、前記キャッシュの外部にあり前記第１のデータ位置とは異なる第２のデータ位置への割り当てに利用不可となる、装置。
【請求項６】
請求項５に記載の装置において、
前記アレイ制御モジュールは、前記プロセッサにおけるロード／ストア命令の実行に応じて、前記状態情報を前記第２の状態から前記第１の状態に自動的に変更するように構成されている、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、処理装置に関し、特に、処理装置用のキャッシュに関する。
【背景技術】
【０００２】
処理装置は、一時的な高速アクセス記憶位置をプロセッサに提供するために、１つ又は複数のキャッシュを用いることがある。プロセッサでストア命令が実行されると、キャッシュは、そのキャッシュのキャッシュラインが既にストアアドレスと関連付けられているかどうか判断する。キャッシュヒットの場合には、キャッシュは、ストアアドレスに関連付けられたキャッシュラインにデータを記憶（store）する。有効データを含むストアアドレスに関連付けられたキャッシュラインがない場合、キャッシュミスが発生する。キャッシュミスが生じると、キャッシュは、そのキャッシュの最近最も使われていない（ＬＲＵ）キャッシュラインを特定することによって、ストアデータを記憶するためのキャッシュラインを決定する。ＬＲＵキャッシュラインに記憶されていたデータは、記憶するデータで置き換えられ、キャッシュラインのタグが、そのストアアドレスに関連付けられる。重要データ用のキャッシュラインを保護するために、プロセッサ上のソフトウェアプログラム又はルーチンは、キャッシュに命令してキャッシュラインをロックさせ、それにより、そのキャッシュラインを強制的に特定のメモリアドレスに関連付けさせることによって、ロック済みキャッシュラインが、他のメモリアドレスに関連付けられたデータによってキャッシュ内で置き換えられないように保証する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データの記憶に加えて、キャッシュは、キャッシュにおけるデータとその処理システムの外部メモリ及び他のキャッシュとの一貫性を維持するために、各キャッシュラインの一貫性ステータス情報を記憶する。例えば、キャッシュラインに関連付けられた有効ビットは、そのキャッシュラインに関連付けられたメモリアドレスがキャッシュ外部の記憶位置をアクセスするために要求されているという表示が受信されたとき、無効化される。キャッシュラインに関連付けられたメモリアドレスへの外部メモリアクセスがあると、現在の処理装置は、自動的にキャッシュラインをアンロック状態にし、これによって、そのキャッシュラインを、任意のアドレスからのデータを記憶するために割り当てる。このため、無効にされたキャッシュラインのロック状態を維持するためには、ソフトウェアプログラム又はルーチンは、ロックしたキャッシュラインを監視して、それが無効になった場合には、そのキャッシュラインを再度ロックしなければならない。これにより、ソフトウェアプログラムのサイズが増大し、その効率が低下する。従って、新しい処理装置に対するニーズがある。
【図面の簡単な説明】
【０００４】
【図１】処理装置１００の特定の実施形態を示すブロック図。
【図２】処理装置１００の一部の特定の実施形態を示すブロック図。
【図３】図１のキャッシュの特定の実施形態を示すブロック図。
【図４】図１のキャッシュがとり得る状態の特定の実施形態を示す図。
【図５】図１のキャッシュのキャッシュラインがとり得る状態間の変化を示す特定の実施形態を表す図。
【図６】キャッシュにおけるデータのロード及びストア方法の特定の実施形態を示すフロー図。
【発明を実施するための形態】
【０００５】
以下、キャッシュのキャッシュラインをロックするための方法及び装置について説明する。本方法は、キャッシュの外部にありキャッシュラインに対応する記憶位置が、プロセッサ又は他のデータアクセスモジュールによるアクセス要求と関連付けられたという表示の受信に応じて、そのキャッシュラインの状態を有効ロック状態から無効ロック状態に自動的に変更することを備える。従って、キャッシュラインのロック状態は、ロックしたキャッシュラインのデータが無効になった後でも維持される。無効ロック状態を維持することによって、そのキャッシュラインは、キャッシュによる再割り当てに利用できない。これにより、無効になったロック状態のキャッシュラインは、ロック状態のままにできる。このことは、キャッシュラインの無効化によりロックが外されていないかどうかを定期的に判断する追加のソフトウェアを不要にする。
【０００６】
図１は、装置１００の特定の実施形態を示す。装置１００は、プロセッサ１０２、キャッシュ１０４、一貫性制御モジュール１１０、フロントサイド・キャッシュ１１２、プロセッサ１２０、メモリコントローラ１３０、Ｉ／Ｏコントローラ１３２、及びメモリ１３４を含む。装置１００は更に、バス１０３、フロントサイド・バス１０５、及びＩ／Ｏバス１０７を含む。プロセッサ１０２は、バス１０３を介してキャッシュ１０４にアクセスする。プロセッサ１０２、一貫性制御モジュール１１０、及びプロセッサ１２０は、フロントサイド・バス１０５を介して互いに接続されている。一貫性制御モジュール１１０、メモリコントローラ１３０、及びＩ／Ｏコントローラ１３２は、Ｉ／Ｏバス１０７を介して互いに接続されている。メモリコントローラ１３０はメモリ１３４に接続されている。図１に示すモジュールの他の構成も可能である。例えば、特定の一実施形態では、全モジュールが共通バス又はクロスバー交換機に接続される。
【０００７】
プロセッサ１０２は、マイクロプロセッサ、マイクロコントローラ等のプロセッサであってよい。同様に、プロセッサ１２０は、マイクロプロセッサ、コントローラ、マイクロコントローラ等のプロセッサであってよい。
【０００８】
キャッシュ１０４は、データキャッシュ、命令キャッシュ、ユニット・キャッシュ等であってよい。特定の一実施形態では、キャッシュ１０４は、８ウェイ・セット・アソシアティブ・キャッシュである。キャッシュ１０４はバス１０３を介してアクセスされ、プロセッサ１０２で実行される命令に関連したデータを記憶する。
【０００９】
キャッシュ１０４は、多数のキャッシュラインを含み、各々有効なキャッシュラインがメモリアドレスに関連付けられる。キャッシュ１０４は、各キャッシュラインの状態情報、例えば、一貫性状態情報を管理する。例えば、各キャッシュラインについて、キャッシュ１０４は、キャッシュラインに記憶したデータが有効であるかどうか、そのデータが共有データであるかどうか、そのデータがプロセッサ１０２によって変更されているかどうか等を示す。状態情報は更に、各キャッシュラインのロックステータスを示すことにより、キャッシュラインを異なるメモリアドレスに関連付け可能かどうか示す。特定の一実施形態では、キャッシュ１０４は、ライトバック・キャッシュ（write-back cache）である。他の特定の実施形態では、キャッシュ１０４は、ライトスルー・キャッシュ（write-through cache ）である。
【００１０】
メモリコントローラ１３０は、Ｉ／Ｏバスを介してメモリアクセス要求を受信し、そのメモリアクセス要求に基づいて、メモリ１３４等のメモリ、フロントサイド・キャッシュ１１２にアクセスし、あるいは、Ｉ／Ｏコントローラ１３２を介して、外部メモリアクセスを受信する。特定の一実施形態では、メモリコントローラ１３０によってアクセスされるメモリ１３４は、図１に示す他の要素と共に、パッケージ基板又は共通の集積回路基板等の共通基板上に一体化される。メモリ１３４は、揮発性又は不揮発性メモリであってよい。
【００１１】
Ｉ／Ｏコントローラ１３２は、装置１００の各モジュール間及び外部周辺装置（図示せず）との通信を円滑化するように構成されている。例えば、Ｉ／Ｏコントローラ１３２によって、メモリコントローラ１３０は、周辺のメモリ装置にアクセスする。従って、Ｉ／Ｏコントローラは、メモリを含む周辺装置と装置１００のモジュールとの間の情報通信を管理する。
【００１２】
フロントサイド・キャッシュ１１２は、データキャッシュ、命令キャッシュ、ユニット・キャッシュ等であってよい。フロントサイド・キャッシュ１１２は、フロントサイド・バス１０５にアクセスする装置１００のモジュール、例えば、プロセッサ１０２及びプロセッサ１２０等からアクセス可能である。
【００１３】
一貫性制御モジュール１１０は、フロントサイド・バス１０５及びＩ／Ｏバス１０７から一貫性情報を受信し、受信した一貫性情報に基づき、装置１００のモジュールに一貫性制御情報を提供することでデータの一貫性を補償する。
【００１４】
動作時、プロセッサ１０２及びプロセッサ１２０は、各々、メモリ１３４及びキャッシュ１１２にアクセスし得る。例えば、プロセッサ１０２は、メモリコントローラ１３０にメモリアドレスを送ることによって、メモリ１３４の或る位置を読み出すことができる。この場合、メモリコントローラ１３０は、そのメモリアドレスに関連付けられたデータをメモリ１３４から取得する。特定の一実施形態では、メモリコントローラ１３０は、キャッシュ１０４の１つのキャッシュラインを埋めるのに充分な量のデータを取得し、そのデータをプロセッサ１０２に提供する。プロセッサ１０２は、取得されたデータを受信し、それをキャッシュ１０４のキャッシュラインに記憶（store）する。更に、キャッシュ１０４は、メモリアドレスに関連付けられたタグ情報を記憶する。このタグ情報は、取得対象のキャッシュラインが、そのデータの取得元であるメモリ１３４のメモリアドレスに関連付けられていることを示す。プロセッサ１２０及びプロセッサ１０２は、メモリ１３４に同じ様にアクセスし、取得されたデータをフロントサイド・キャッシュ１１２に記憶することもできる。
【００１５】
一貫性制御モジュール１１０は、メモリ１３４、フロントサイド・キャッシュ１１２、キャッシュ１０４、及び装置１００の他のあらゆるメモリへのアクセスに関する情報を受信し、一貫性情報をフロントサイド・キャッシュ１１２、キャッシュ１０４、及び他のメモリに提供して、データの一貫性を維持する。例えば、キャッシュ１０４のキャッシュラインに関連付けられたメモリアドレスが、メモリ１３４において、外部プロセッサ又は他の装置によってアクセスされた場合、一貫性制御モジュール１１０は、キャッシュ１０４にそのメモリアクセスについて通知する。
【００１６】
メモリアドレスに関連付けられたメモリアクセスについてキャッシュ１０４に通知するために、一貫性制御モジュール１１０は、プロセッサ１０２を介して、キャッシュ１０４に一貫性制御情報を提供し得る。この情報に基づき、メモリアドレスに関連付けられたキャッシュ１０４のキャッシュラインに関する一貫性情報の状態が維持される。例えば、メモリアドレスにアクセス要求があったことを示す一貫性制御情報に応じて、キャッシュ１０４は、そのメモリアドレスに関連付けられたキャッシュラインの一貫性状態情報を変更して、そのキャッシュラインに記憶されたデータが無効であることを示し得る。
【００１７】
プロセッサ１０２は、プログラム又はオペレーティング・システムのユーザ命令に基づき、各キャッシュラインのロック状態を設定する命令を実行することによって、キャッシュラインのロック状態を制御する。例えば、ソフトウェアは、キャッシュ１０４の特定のキャッシュラインを明示的にロック又はアンロックする命令を発行する。ロック状態にあるキャッシュラインは、プロセッサ１０２におけるメモリアクセスに応じたキャッシュ１０４による再割り当てに利用することができない。すなわち、ロックされたキャッシュラインは、ロック状態である限り、特定のアドレスに割り当てられたままである。
【００１８】
一旦ロックされた後は、キャッシュ１０４のキャッシュラインのロック状態は、一貫性制御モジュール１１０によって生じるキャッシュラインの一貫性状態の変化に応じて変わることはない。つまり、ロック状態は、プロセッサ１０２の命令によって明示的に変更されるまで、キャッシュ１０４において維持される。従って、ロックされたキャッシュラインの一貫性状態がメモリ１３４でのメモリアクセスにより有効状態から無効状態に変化しても、キャッシュラインはロックされたままである。キャッシュライン上のロックを自動的に保持することは、ソフトウェアの介在がロック維持に必要ないことから、従来技術に対する優位点である。
【００１９】
図２は、プロセッサ２０２（図１のプロセッサ１０２に対応）、バス２０３（図１のバス１０３に対応）、キャッシュ２０４（図１のキャッシュ１０４に対応）、及びキャッシュ一貫性モジュール２１０（図１のキャッシュ一貫性モジュール１１０に対応）の特定の実施形態のブロック図を示す。プロセッサ２０２及びキャッシュ２０４は各々、バス２０３に接続されている。キャッシュ一貫性モジュール２１０及びプロセッサ２０２は、フロントサイド・バス２０５に接続されているが、これは、図１のフロントサイド・バス１０５に対応する。
【００２０】
バス２０３は、アドレスバス２８０、データバス２８１、制御バス２８２（ＣＴＲＬ）、及びヒット／ミス・バス２８３（Ｈ／Ｍ）を含む。アドレスバス２８０は、プロセッサ２０２とキャッシュ２０４との間でアドレス情報を伝達し、一方、データバス２８１は、ロード又はストア対象のデータを伝達する。制御バス２８２は制御情報を伝達し、ヒット／ミス・バス２８３は、プロセッサ２０２とキャッシュ２０４との間でキャッシュヒット情報を伝達する。
【００２１】
プロセッサ２０２は、ロード／ストア制御モジュール２２０、メモリサブシステム（ＭＳＳ）２２２、及びバス・インターフェイス・ユニット（ＢＩＵ）２２４を含む。ロード／ストア制御モジュール２２０は、メモリサブシステム２２２に接続されている。このメモリサブシステム２２２は、プロセッサ２０２のモジュール用のインターフェイスをバス２０３に提供し、一方、バス・インターフェイス・ユニット２２４は、プロセッサ２０２のモジュール用のインターフェイスをバス２０５に提供する。
【００２２】
ロード／ストア制御モジュール２２０は、メモリサブシステム２２２と通信を行って、プロセッサ２０２のロード及びストア動作を制御する。メモリサブシステム２２２は、必要に応じて、制御情報をＣＴＲＬバス２８２及びバス２０５に提供することによって、ロード及びストア動作を実行する。メモリサブシステム２２２は、バス・インターフェイス・ユニット２２４を介して、キャッシュ一貫性モジュール２１０との間で一貫性制御情報を提供したり受信したりする。
【００２３】
キャッシュ２０４は、アレイ制御モジュール２３０、データアレイ２３２、ＬＲＵ（Least Recently Used ）アレイ２３４、及びタグ／ステータスアレイ２３６を含む。データアレイ２３２は、キャッシュ２０４のキャッシュラインを含む。キャッシュラインは、複数のキャッシュライン群として格納されており、各キャッシュライン群が、インデックスと称されるメモリアドレスの特定部分に関連付けられている。ＬＲＵアレイ２３４は、キャッシュライン群におけるどのキャッシュラインが、最近最も使われていないか（Least Recently Used ）を示す情報を記憶する。特定の一実施形態では、ＬＲＵアレイ２３４は、疑似ＬＲＵとして実装する。
【００２４】
タグ／ステータスアレイ２３６は、各キャッシュラインのタグ情報及び一貫性情報を記憶する。アレイ制御モジュール２３０は、ＣＴＲＬバス２８２を介して、ロード及びストア制御情報を受信する。そのロード及びストア制御情報に基づき、アレイ制御モジュールは、タグ／ステータスアレイ２３６、ＬＲＵアレイ２３４、及びデータアレイ２３２にアクセスして、ロード及びストア動作を実行する。
【００２５】
動作時、メモリサブシステム２２２は、制御バス２８２を介して、キャッシュ２０４のキャッシュラインのステータス制御情報を提供する。ステータス制御情報は、キャッシュ一貫性モジュール２１０から受信された一貫性情報に基づいていてもよいし、あるいはロード／ストアモジュール２２０によって処理される命令、例えば、ロード／ストア命令やキャッシュ２０４の或る位置をロックすべきであることを明示的に示す命令等に基づいていてもよい。このステータス制御情報に基づき、アレイ制御モジュール２３０は、タグ／ステータスアレイ２３６における関連するキャッシュラインのステータス情報を変更する。
【００２６】
ロード／ストア制御モジュール２２０は、メモリサブシステム２２２とインターフェイス接続されており、ソフトウェアプログラム又はルーチンをプロセッサ２０２で実行されることによって提供されるロード又はストア命令を実行する。ロード命令を実行するために、メモリサブシステム２２２は、アドレスバス２８０を介して、キャッシュ２０４にアドレスを提供する。アドレスを受信すると、アレイ制御モジュール２３０は、そのアドレスに基づくインデックス値をタグ／ステータスアレイ２３６に提供し、このアレイ２３６は、インデックスに対応するキャッシュライン群のキャッシュラインに関連付けられたタグ値及びステータス情報を提供する。受信されたタグ及びステータス値に基づき、アレイ制御モジュール２３０は、キャッシュラインがアドレスに割り当てられたかどうか、また、キャッシュラインが有効データを記憶しているかどうかを判断する。有効データを記憶するキャッシュラインがアドレスに割り当てられている場合（即ち、キャッシュヒットの場合）、アレイ制御モジュール２３０は、ヒット／ミス・バス２８３上でヒットを示し、要求されたデータをデータアレイ２３２から取得する。取得されたデータは、データバス２８１を介してプロセッサ２０２に提供される。
【００２７】
タグ／ステータスアレイ２３６が、提供されたアドレスに関連するデータアレイ２３２のキャッシュラインが無いことを示す場合、又は、提供されたアドレスに関連するデータアレイ２３２のキャッシュラインが無効データを有している場合、ロード命令に関してキャッシュミスが発生する。キャッシュミスの場合、アレイ制御モジュール２３０は、ヒット／ミス・バス２８３上でミスを示し、メモリサブシステム２２２に対して、要求されたデータをメモリから取得すべきであることを通知する。また、このキャッシュミス時には、メモリサブシステム２２２は、その要求されたデータを他の位置から取得し、そのデータを受信すると、ストア動作を実行することによって、そのデータをキャッシュ２０４に記憶する。
【００２８】
キャッシュミスの場合にデータを取得した後、又はロード／ストア制御モジュール２２０でのストア命令に応じて、ストア動作を実行するために、メモリサブシステムは、アドレスバス２８０を介して、記憶するデータに関連付けられたアドレスをキャッシュ２０４に提供する。記憶するデータはデータバス２８１を介して提供される。このデータを記憶するために、アレイ制御モジュール２３０は、タグ／ステータスアレイにアクセスして、データアレイ２３２の有効な又はロック状態のキャッシュラインが、受信したアドレスに既に割り当てられているかどうかを判断する。割り当てられている場合には、アレイ制御モジュール２３０は、キャッシュヒットを生じさせるものとしてそのアクセスを取り扱い、タグ／ステータスアレイ２３６によって示されたデータアレイ２３２のキャッシュラインに受信データを記憶する。アドレスに既に関連付けられたデータアレイ２３２のキャッシュラインがない場合、アレイ制御モジュール２３０は、ＬＲＵアレイ２３４にアクセスし、データアレイ２３２においてデータを記憶するキャッシュラインを決定する。
【００２９】
メモリアドレスを明示的にロックする命令が実行されると、ロード／ストア制御モジュール２２０は、メモリサブシステム２２２に対して、メモリアドレスに関連付けられたキャッシュラインをロックすべきであることを示す。キャッシュラインをロックするために、メモリサブシステム２２２は、ＣＴＲＬバス２８２を介して制御情報を送り、アドレスバス２８０を介してメモリアドレスを送る。メモリアドレスを受信すると、アレイ制御モジュール２３０は、データアレイ２３２のキャッシュラインがメモリアドレスと関連付けられているかどうかを判断する。関連付けられている場合、アレイ制御モジュールは、キャッシュラインがロックされていることを示すために、タグ／ステータスアレイ２３６に記憶されたキャッシュラインと関連するステータス情報の状態を設定する。図４で述べた専用ロック・ビット等のロックステータス表示は、タグ／ステータスアレイ２３６におけるキャッシュラインのロック状態を示し得る。
【００３０】
ロックされるメモリアドレスにキャッシュラインが関連付けられていない場合、アレイ制御モジュール２３０は、メモリサブシステム２２２に要求を送り、メモリアドレスに関連付けられたデータをキャッシュ２０４以外の位置から取得する。このデータを取得してデータアレイ２３２のキャッシュラインに記憶した後、アレイ制御モジュール２３０は、キャッシュラインがロックされていることを示すために、そのキャッシュラインに関連付けられたステータス情報の状態を設定する。
【００３１】
ロックされたキャッシュ位置は、ストア動作中に他の記憶位置と関連付けるためにＬＲＵアレイ２３４によって特定されることはない。更に、キャッシュ位置のロック状態は、その位置のデータが無効であることをタグ／ステータスアレイ２３６が示す場合であっても、タグ／ステータスアレイ２３６において維持される。従って、ロックされたキャッシュラインは、ロード／ストア制御モジュール２２０における命令によって明示的にアンロックされるまで、ロック状態のままとなる。
【００３２】
図３は、図２のキャッシュ２０４の具体的な実施例に対応するキャッシュ３０４の特定の実施形態のブロック図を示す。キャッシュ３０４は、アレイ制御モジュール３３０、データアレイ３３２、ＬＲＵアレイ３３４、及びタグ／ステータスアレイ３３６を含む。アレイ制御モジュール３３０は、状態（way）計算モジュール３４０、タグ比較モジュール３４２、及びインデックス生成モジュール３４４を含む。状態計算モジュール３４０は、ヒット／ミス（Ｈ／Ｍ）バス３８３に接続された入力部と、バス３９６（Ｔ）に接続された入力部と、バス３８２（ＣＴＲＬ）に接続された入力部と、バス３９８（ＷＡＹ＿Ｔ）に接続された入力部と、バス３９３（ＬＲＵ）に接続された入力部とを含む。状態計算モジュール３４０は更に、バス３９４（ＷＡＹ）に接続された出力部を含む。
【００３３】
タグ比較モジュール３４２は、バス３９５（ＴＡＧ）に接続された入力部と、バス３９２（ＳＴＡＴＵＳ／ＴＡＧ×８）に接続された入力部とを含む。タグ比較モジュール３４２は更に、Ｈ／Ｍバス３８３に接続された出力部と、Ｔバス３９６に接続された出力部と、ＷＡＹ＿Ｔバス３９８に接続された出力部とを含む。インデックス生成モジュール３４４は、バス３８０（ＡＤＤＲＥＳＳ）に接続された入力部と、バス３８２（ＣＴＲＬ）に接続された入力部とを含む。インデックス生成モジュール３４４は更に、バス３９１（ＩＮＤＥＸ）に接続された出力部と、ＴＡＧバス３９５に接続された出力部とを含む。
【００３４】
データアレイ３３２は、ＷＡＹバス３９４に接続された入力部と、ＩＮＤＥＸバス３９１に接続された入力部とを含む。データアレイ３３２は更に、バス３８１（ＤＡＴＡ）への入出力接続部を含む。ＬＲＵアレイ３３４は、ＩＮＤＥＸバス３９１に接続された入力部と、ＬＲＵバス３９３に接続された出力部とを含む。
【００３５】
タグ／ステータスアレイ３３６は、ＩＮＤＥＸバス３９１に接続された入力部と、ＣＴＲＬバス３８２に接続された入力部と、ＳＴＡＴＵＳ／ＴＡＧ×８バス３９２に接続された出力部とを含む。タグ／ステータスアレイ３３６は、タグ／ステータス情報、例えば、特定のキャッシュラインに関するタグ情報とステータス情報を表すタグ／ステータス情報３５０等を記憶する。タグ／ステータス情報３５０は、タグ情報３５２、有効性情報３５４、変更情報３５６、共有情報３５８、及びロック情報３６０を含む。
【００３６】
タグ／ステータスアレイ３３６のステータス情報は、一貫性情報に基づき又はプロセッサで実行された命令に基づきＣＴＲＬバス３８２上で提供される制御情報により変更される。例えば、一貫性制御モジュール２１０（図２）は、タグ情報３５０に関連付けられたキャッシュラインが無効であることを示すように有効情報３５４のステータスを設定すべきであることを、ＣＴＲＬバス３８２を介して表示する。同様に、読込み／書込み制御モジュール２２０（図２）で実行される命令によって、ロック情報３６０のステータスがＣＴＲＬバス３８２を介して明示的に設定される。
【００３７】
インデックス生成モジュール３４４は、ＡＤＤＲＥＳＳバス３８０上で提供されたアドレスをデコードする。そのアドレスに基づき、インデックス生成モジュール３４４は、ＴＡＧバス３９５上にタグを提供し、ＩＮＤＥＸバス３９１上にインデックスを提供する。インデックス生成モジュール３４４は、更に、ＣＴＲＬバス３８２を介して、受信アドレスがロード動作とストア動作のどちらに関連するかを示す情報等の制御情報を受信する。インデックス生成モジュールは、ＴＡＧバス３９５を介して、この制御情報を提供する。
【００３８】
タグ／ステータスアレイ３３６は、ＩＮＤＥＸバス３９１を介してインデックス情報を受信する。このインデックス情報に基づき、タグ／ステータスアレイ３３６は、ＳＴＡＴＵＳ／ＴＡＧＸ８バス３９２を介して、そのインデックス情報に関連付けられた各キャッシュラインのタグ情報及びステータス情報を提供する。特定の一実施形態では、キャッシュ３０４は、８ウェイ・アソシエイティブ・キャッシュであり、従って、８組のタグ及びステータス情報が、ＳＴＡＴＵＳ／ＴＡＧ×８バス３９２を介して提供される。
【００３９】
タグ比較モジュール３４２は、ＴＡＧバス３９５を介して受信したタグ情報と、ＳＴＡＴＵＳ／ＴＡＧ×８バス３９２を介して受信したタグ情報とを比較して、キャッシュヒットとキャッシュミスのどちらが起こったかを判断する。タグ比較モジュール３４２は、Ｈ／Ｍバス３８３を介して、キャッシュヒット又はキャッシュミスを表示する。更に、キャッシュヒットの場合、タグ比較モジュール３４２は、ＷＡＹ＿Ｔバス３９８を介して、ヒットタグに関連付けられたキャッシュラインを示す情報を提供する。更に、タグ比較モジュール３４２は、そのヒットタグに関連して受信したステータス情報に基づき、そのキャッシュヒットに関連付けられたキャッシュラインが無効且つロック状態のキャッシュラインかどうか判断し、Ｔバス３９６を介して、キャッシュラインの無効且つロック状態のステータスを示す情報を提供する。
【００４０】
ＬＲＵアレイ３３４は、ＩＮＤＥＸバス３９１を介して提供されたインデックスを受信する。受信したインデックスに基づき、ＬＲＵアレイ３３４は、そのインデックスに関連付けられた最近最も使われていないキャッシュラインを決定し、ＬＲＵバス３９３を介して、そのキャッシュラインを提示する。特定の一実施形態では、ＬＲＵアレイ３３４は、疑似ＬＲＵ手順を用いて、最近最も使われていないキャッシュラインを決定する。
【００４１】
状態計算モジュール３４０は、ロード動作とストア動作のどちらを実施しているかを示す情報をＣＴＲＬバス３８２上で受信するとともに、ロード又はストア動作が、結果的にキャッシュヒットとキャッシュミスのどちらになったかを示す情報をＨ／Ｍバス３８３上で受信する。キャッシュヒットの場合、状態計算モジュール３４０は、ＷＡＹ＿Ｔバス３９８を介して受信したキャッシュライン情報にアクセスして、どのキャッシュラインをロード又はストアすべきかを決定する。ストア動作でキャッシュミスの場合、状態計算モジュール３４０は、ＬＲＵバス３９３を介して提供される情報にアクセスして、どのキャッシュラインに記憶すべきかを決定する。状態計算モジュール３４０は、Ｈ／Ｍバス３８３によって提供されたヒット／ミス情報、ＣＴＲＬバス３８２によって提供されたロード／ストア情報、及びＴバス３９６によって提供された有効・ロック状態情報に基づき、キャッシュラインを選択する。
【００４２】
例えば、受信情報がロード動作且つキャッシュヒットを示す場合、状態計算モジュール３４０は、ＷＡＹ＿Ｔバス３９８を介して提供されたキャッシュライン情報を選択する。一方、受信情報がロード動作且つキャッシュミスを示す場合、要求データが、キャッシュに記憶されておらず、メモリから取得しなければならないため、状態計算モジュール３４０は、キャッシュライン情報を選択しない。
【００４３】
受信情報がストア動作且つキャッシュミスを示し、更に、無効且つロック状態のキャッシュラインが受信アドレスに関連付けられていないことをＴバス３９６が示す場合、状態計算モジュールは、ＬＲＵバス３９３を介して提供されたキャッシュライン情報を選択する。受信情報がストア動作且つキャッシュミスを示し、更に、無効且つロック状態の状況が受信アドレスに関連付けられていることをＴバス３９６が示す場合、状態計算モジュール３４２は、ＷＡＹ＿Ｔバス３９８を介して提供されたキャッシュライン情報を選択する。受信情報がキャッシュヒットを示す場合、状態計算モジュール３４２は、ＷＡＹ＿Ｔバス３９８を介して提供されたキャッシュライン情報を選択する。
【００４４】
データアレイ３３２は、ロードとストア動作のどちらが実施されているかを示す情報と共に、ＷＡＹバス３９４を介して、キャッシュライン情報を受信する。ロード動作の場合、データアレイ３３２は、指示されたキャッシュラインに記憶されたデータをＤＡＴＡバス３８１上で提供する。ストア動作の場合、データアレイ３３２は、ＤＡＴＡバス３８１上で提供されたデータを示されたキャッシュラインに記憶する。
【００４５】
キャッシュラインのステータスビットを用いると、どのようにキャッシュラインをアレイ制御モジュール３３０によって処理すべきか決定することができる。例えば、図４において、有効（Ｖ）、変更（Ｍ）、共有（Ｓ）、及びロック（Ｌ）用のキャッシュ・ステータスビットを、表４００の列４０１〜４０４に列挙する。図示するように、一組のステータスビット値が、本明細書に用いる複数の状態表現に対応し得ることが分かる。例えば、表４００の行４１０に示したステータスビット値を有するキャッシュラインは、有効状態、変更状態、共有状態、及びアンロック状態、並びにその組合せの状態にあると言える。同様に、表４００の行４１２に示したステータスビット値を有するキャッシュラインは、無効状態、未変更状態、占有状態、及びロック状態にあると言える。従って、特定の組のステータスビット状態に基づき、キャッシュラインは、列４０５に示すように、有効且つアンロック（有効／アンロック）状態にあるか、列４０６に示すように、有効且つロック（有効／ロック）状態にあるか、列４０７に示すように、無効且つアンロック（無効／アンロック）状態にあるか、又は列４０８に示すように、無効且つロック状態（無効／ロック）にあると言えることが分かる。なお、表に記載した全ての状態が、全ての一貫性方式に対して有効でなくてもよい。
【００４６】
キャッシュラインの状態を用いると、どのようにキャッシュがキャッシュラインを処理するかを決定することができる。例えば、キャッシュラインの状態が、列４０８に示すように、無効で且つロック状態の場合、キャッシュは、そのキャッシュラインが、異なるメモリアドレスに関連付けられたデータによって置換されることを防止し、これによって、キャッシュラインのロック状態を保持し得る。
【００４７】
図５は、キャッシュにあるキャッシュラインがとり得る状態の特定の実施形態の状態図５００を示す。状態図５００は、キャッシュラインの特定の４つの状態を示す。即ち、未割当て状態５０２、有効／ロック状態５０４、無効／ロック状態５０６、及び有効／ロック状態５０８である。図示するように、キャッシュラインは、リセット動作の後などのように、キャッシュラインがメモリアドレスに割り当てられていないことを示す未割当て状態５０２で始めることができる。未割当て状態は、キャッシュラインが無効／アンロック状態である状態にも対応し得る。
【００４８】
未割当て状態５０２において、キャッシュラインがロード又はストア動作によってメモリアドレスに割り当てられると、キャッシュラインの状態は、有効／アンロック状態５０４に移行する。例えば、キャッシュラインの有効ビット（Ｖ）がアサートされ、キャッシュラインのロックビットがネゲートされる。未割当て状態５０２において、ソフトウェアロック命令を受信すると、キャッシュラインはメモリアドレスに割り当てられ、メモリアドレスに関連するデータは、キャッシュ以外のメモリから取得されてキャッシュラインに記憶され、キャッシュラインの状態は有効／ロック状態５０８に設定され、例えば、キャッシュラインの有効ビット（Ｖ）及びロックビット（Ｌ）が、双方共アサートされる。他の一実施形態（図示せず）では、データはソフトウェアロックに応じて取得されず、キャッシュラインの状態は無効／ロック状態５０６に設定され、例えば、キャッシュラインの有効ビット（Ｖ）がネゲートされ、キャッシュラインのロックビット（Ｌ）がアサートされる。
【００４９】
有効／アンロック状態５０４では、例えば、メモリアドレスに関連付けられたデータへの外部モジュールによるアクセスにより、又はソフトウェアの無効化命令によって、無効化の表示を受信すると、キャッシュラインの状態が無効／アンロック状態５０２に設定され、例えば、キャッシュラインの有効ビット（Ｖ）がネゲートされる。有効／アンロック状態５０４において、ソフトウェアロック命令を受信すると、キャッシュラインの状態が有効／ロック状態５０８に設定され、例えば、キャッシュラインのロックビット（Ｌ）がアサートされる。
【００５０】
有効／ロック状態５０８において、メモリアドレスをアンロックするソフトウェア命令を受信すると、キャッシュラインの状態が有効／アンロック状態５０４に設定され、例えば、キャッシュラインのロックビット（Ｌ）がネゲートされる。有効／ロック状態５０８において、例えば、メモリアドレスに関連付けられたデータへの外部モジュールによるアクセス又は無効化ソフトウェア命令等の無効化イベントが示されると、キャッシュラインの状態が無効ロック状態５０６に設定され、例えば、キャッシュラインの有効ビット（Ｖ）がアサートされる。
【００５１】
無効／ロック状態５０６において、ロード／ストア動作を受信すると、キャッシュラインの状態が有効／ロック状態に設定され、例えば、キャッシュラインの有効ビット（Ｖ）がアサートされる。無効／ロック状態５０６において、キャッシュラインをアンロックするソフトウェア命令が受信されると、キャッシュラインの状態が無効／アンロック状態５０２に設定され、例えば、キャッシュラインのロックビット（Ｌ）がネゲートされる。
【００５２】
図６は、キャッシュアクセスを処理する方法の特定の実施形態のフロー図を示す。ブロック６０２では、キャッシュアクセスがロード動作とストア動作のどちらであるかが判断される。ロード動作の場合、本方法のフローはブロック６０４に進み、ロード動作がキャッシュヒットかキャッシュミスのどちらになるかが判断される。キャッシュヒットの場合、本方法のフローはブロック６０６に進み、キャッシュヒットの発生したキャッシュラインからデータが提供される。そして、本方法のフローはブロック６２４に進み、本方法が終了する。
【００５３】
ブロック６０４において、キャッシュミスと判断した場合、本方法のフローはブロック６０８に進み、キャッシュ以外のメモリからデータが取得される。一旦データが取得されると、本方法のフローはブロック６１０に進み、取得されたデータがキャッシュに記憶される。
【００５４】
ブロック６０２において、キャッシュアクセスがストア動作であると判断された場合、本方法のフローはブロック６１０に進み、ストア動作に関連付けられたアドレスが、キャッシュヒット、キャッシュミス、又はキャッシュ・ステールヒットのどれになるかが判断される。キャッシュ・ステールヒットとは、ストア動作に関連付けられたアドレスに対応するロックされたキャッシュラインがあるが、そのロックされたキャッシュラインが無効データを記憶していることを示す。
【００５５】
キャッシュヒットの場合、本方法のフローはブロック６２０に進み、キャッシュヒットに関連するキャッシュラインが決定される。そして、本方法のフローはブロック６２２に進み、ストアに関連付けられたデータがキャッシュラインに記憶される。その後、本方法のフローはブロック６２４に進み、本方法が終了する。
【００５６】
ブロック６１０において、キャッシュアクセスがステールヒットになる場合、本方法のフローはブロック６１８に進み、アドレスに関連付けられた無効／ロックのキャッシュラインが決定される。そして、本方法のフローはブロック６２２に進み、そこで、データがキャッシュラインに記憶される。
【００５７】
ブロック６１０において、キャッシュミスと判断された場合、本方法のフローはブロック６１２に進み、キャッシュライン群のうちどのキャッシュラインが最近最も使われていない（ＬＲＵ）かに基づいてキャッシュラインが決定される。ブロック６２２では、キャッシュアクセスに関連付けられたデータが、決定されたキャッシュラインに記憶される。
【００５８】
従って、本方法によれば、キャッシュラインに関連付けられたデータが無効の場合でも、キャッシュラインのロック状態が維持される。このことは、データが無効になった場合に、前にロック状態のキャッシュラインをソフトウェアが再ロックする必要性を低減し、これによって、ソフトウェア効率を改善する。
【００５９】
本明細書では、「第１の」「第２の」等の関係語は、１つの実体又は動作を他の実体又は動作と区別するためだけに用い得るものであり、そのような実体又は動作間において必ずしも実際のそのような何らかの関係又は順序を要求又は暗示するものではない。用語「備える」「備えている」又はその他のあらゆる変形語は、非排他的包含を網羅しようとするものであり、これにより、一連の要素を含むプロセス、方法、物、又は装置が、それらの要素を含むだけでなく、明示的に列記されていない他の要素や、このようなプロセス、方法、物、又は装置に固有の他の要素も含み得る。或る要素を備える場合、更なる制約条件無しに、その要素を含むプロセス、方法、物品、又は装置における追加の同様な要素の存在を除外しない。用語「又は」は、包括的な「又は」を網羅しようとするものであり、これにより、「又は」条件節の両条件を満たした場合にも、その条件節が満たされる。用語「範囲」は、単一の値だけが含まれる範囲を含み得る。
【００６０】
本明細書に用いる用語「他の」は、少なくとも２番目又はそれ以降と定義する。本明細書に用いる用語「含む」「有する」又は他の何らかの変形語は、「備える」と定義する。電気光学技術に言及して本明細書に用いる用語「結合される」は、接続されると定義するが、必ずしも直接にとは限らず、また、必ずしも機械的にとは限らない。
【００６１】
用語「アサートする」又は「設定する」及び「ネゲートする」（又は「ディアサートする」又は「クリアする」）は、信号、ステータスビット、又は同様のものを、それぞれその論理的に真又は論理的に偽の状態にすることを引用する際に用いる。論理的に真の状態が論理レベル１である場合、論理的に偽の状態は論理レベルゼロである。また、論理的に真の状態が論理レベルゼロである場合、論理的に偽の状態は論理レベル１である。
【００６２】
本明細書に用いる用語「バス」は、１つ又は複数の様々な種類の情報、例えば、データ、アドレス、制御、又は状態等の情報の伝達に用い得る複数の信号又は導体を指すために用いる。本明細書で述べる導体は、単一の導体、複数の導体、単方向の導体、又は双方向の導体であることを指して例示又は記述している。しかしながら、異なる実施形態では、導体の実装が異なり得る。例えば、双方向導体よりもむしろ別々の単方向導体を用いることがあり、またその逆もあり得る。更に、複数の導体は、多数の信号を直列に又は時分割多重で伝達する単一の導体で置き換えてよい。同様に、複数の信号を搬送する単一導体は、これらの信号の複数の部分を搬送する様々な異なる導体に分離し得る。従って、信号を伝達するための多くの適用例が存在する。
【００６３】
本開示の他の実施形態、用途、及び利点は、本明細書を考慮して、また本明細書に開示した開示内容から当業者には明らかである。例えば、キャッシュにおける書込み動作は、キャッシュラインにデータを直接書き込むものとして述べたが、他のキャッシュは、キャッシュからキャッシュラインを読み出し、記憶するデータでキャッシュラインを変更し、そして、変更したキャッシュラインをキャッシュに書き込むことによって、書込み動作を実施してもよい。従って、明細書及び図面は単なる代表例と見なすべきであり、従って、本開示の範囲は、請求項及びその等価物によってのみ限定されるものである。
【図１】
0005419102.tif 000002
【図２】
0005419102.tif 000003
【図３】
0005419102.tif 000004
【図４】
0005419102.tif 000005
【図５】
0005419102.tif 000006
【図６】
0005419102.tif 000007