トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 キャッシュ制御装置及びプロセッサ
【発明者】 【氏名】牟田 俊之

【要約】 【課題】キャッシュメモリ参照命令の実行より先行して起動してデータリプレースを行い、キャッシュミス時のレーテンシを短縮する。

【解決手段】ロードストアユニットのキャッシュリプレース制御において、第1キュー選択論理回路41、第2キュー選択論理回路42、調停部43とを備え、前記第1キュー選択論理回路はキュー31に格納された前記キャッシュメモリへのアクセス命令を順次選択し、前記第2キュー選択論理回路は、前記キャッシュメモリへの前記アクセス命令において、前記キューに格納されている未発行のアクセス命令を前記第1キュー選択論理回路の選択に先行して選択し、前記調停部は前記第1キュー選択論理回路が選択した前記アクセス命令と、前記第2キュー選択論理回路が選択した前記先行アクセス命令とを調停して、前記キャッシュメモリにアクセスを行う。
【特許請求の範囲】
【請求項1】 キューのエントリに格納されたアクセス命令を選択して発行する手段と、発行された前記命令によりキャッシュメモリにアクセスする手段と、前記キャッシュメモリにアクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行する手段と、前記次メモリにアクセスして取得したデータを前記キャッシュメモリに登録するデータリプレース制御手段と、前記アクセス命令発行手段から前記アクセス命令が発行された後、前記キャッシュメモリに先行してアクセスすることができる先行アクセス手段とを有するプロセッサ。
【請求項2】 前記先行アクセス手段は、前記キャッシュメモリに先行アクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行できる請求項1に記載のプロセッサ。
【請求項3】 前記先行アクセス手段は、前記次メモリに先行アクセスして取得したデータを前記キャッシュメモリに登録しデータリプレースを行う請求項2に記載のプロセッサ。
【請求項4】 前記先行アクセス手段は、前記次メモリへの前記先行アクセスがエラーとなった場合には、前記先行アクセスを終了する請求項2に記載のプロセッサ。
【請求項5】 少なくとも第1キュー選択論理回路と、第2キュー選択論理回路と、調停部とを有し、キャッシュメモリへのアクセス発行制御を行うロードストアユニットにおけるキャッシュ制御装置であって、前記第1キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへのアクセス命令について、順次選択し、前記第2キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへの前記アクセス命令において、未発行のアクセス命令について前記第1キュー選択論理回路の選択に先行して選択し、前記調停部は、前記第1キュー選択論理回路が選択した前記アクセス命令と、前記第2キュー選択論理回路が選択した前記先行アクセス命令とを調停して、前記キャッシュメモリにアクセスを行うことを特徴とするキャッシュ制御装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、コンピュータのマイクロプロセッサに関し、特に、メモリ参照命令の実行より先行して起動してリプレースを行い、キャッシュミス時のレーテンシの短縮することができるキャッシュ制御装置及びプロセッサに関する。
【0002】
【従来の技術】マイクロプロセッサでは 命令順に処理を行うインオーダー処理をパイプライン構成で動作させている。そして、ソフトウエアに対しても、その命令はインオーダーで実行完了が保証されており、ソフトウエアもそれを期待したインプリメントになっていた。
【0003】近年、マイクロプロセッサでは、スーパースカラやレジスタリネーミング等の技術により命令間の依存関係がない限り、命令順に捕われないで実行するアウトオブオーダー実行を行いつつ、ソフトウエアから見ると順に完了しているように見せることが、実現されている。メモリに関するリードやライトにおいても、同じことが言える。しかし、別に考慮しなければならない点がある。メモリのリードやライトには 命令をデコードしただけでは判断できない依存関係が、プログラムによって意図されるケースがある。
【0004】ここで、次のように、2つ命令を含む2つの例を挙げて説明する。

例1)の場合命令(1)で、d0をアドレスとするメモリをリードし、d1にデータ格納し、命令(2)で、d1をアドレスとするメモリをリードし、d3にデータ格納するといものである。これらの2つの命令には、命令(1)の結果を命令(2) で使用している為、レジスタの依存関係がある。そこで、命令(1)及び(2) の順番に命令発行すべきことがハードウエアで判断可能である。
例2)の場合命令(3)では、d0をアドレスとするメモリをリードし、d1にデータ格納し、命令(4)では、d2をアドレスとするメモリをリードし、d3にデータ格納するというものである。しかし、これらの命令(3)及び(4)間の順序について、ハードウエアでは判断できないので、プログラムの意図によって、順序保証の要否を決める必要がある。そこで、次のように、2つのケースA、Bが考えられる。
ケースA命令(4)に到達したとき既に、2つのデータが変更されないことを保証されているなら、順序を変えて読み取っても結果に代わりはない。
ケースB命令(3)のデータが、命令(4)のデータの有効・無効を示すフラグの意味であるなら、ケースAとは異なってくる。他のプロセッサが、命令(4)のデータをライトし、後に命令(3)のデータに有効を示す値をライトした場合に、本命令列の順序を変えて実行すると命令(4)のライトの前にデータをリードし、命令(3)のデータのライト後のデータをリードし、結果として、有効と示されているデータが古いという現象を引き起こす。
【0005】この様に ケースAは、順序について入替え可能であるが、ケースBは入替え不可となり、ハードウエアでは判断できない。判断できるのは、プログラマだけということになる。その為、従来はケースBを想定して、順番に制御する方式をとっていた。しかし、近年は、ケースAを想定し、順序保証を緩和し、ケースBについては、順序保証を要求する命令間に、順序保証の為の専用命令をプログラマによってプログラム内に挿入しておき、ハードウエアは、その専用命令があるときに順序保証するという方式がとられている。
【0006】ここで、図1乃至図3を参照しながら、従来に用いられているハードウエアのシステム構成について説明する。図1には、コンピュータにおけるマイクロプロセッサとメモリとの関連部分について、その構成を概略ブロックで示した。マイクロプロセッサは、プリフェッチユニット1、命令発行ユニット2、リザベーションステーション3、ロードストアユニット4、各演算器81〜83、そして、レジスタファイル9を含んでいる。
【0007】リザベーションステーション3には、複数のキュー31〜34が用意されており、キュー31は、ロードストアユニット4に、そして、キュー32〜34は、それぞれ各演算器81〜83に対応しており、キュー31〜34から命令が供給される。マイクロプロセッサとシステムメモリ7との間に、一次キャッシュメモリ5、二次キャッシュメモリ6及び一次命令キャッシュメモリ10が設けられている。マイクロプロセッサは、ロードストアユニット4を介して一次キャッシュメモリ5に、更に二次キャッシュメモリ6にアクセスする。
【0008】次に、図1の破線で囲んだ部分について、より詳細を示す構成を、図2及び図3に示した。図2では、リザベーションステーション3のキュー31とロードストアユニット4を示している。そして、図3では、一次キャッシュメモリ5を示したが、二次キャッシュメモリ6の概略も示した。
【0009】キュー31は、リング構造で制御され、格納用のポインタレジスタとインオーダアクセス発行の為に命令取りだし用のポインタによって制御され、FIFO構成をなしている。キュー31のエントリは、「serial」「cmd 」「AV」「address 」「DV」「write data」「RDY 」の各フィールドからなる。
【0010】「serial」は、命令発行ユニットから発行される全命令に付与されるシリアル番号である。ロードストア命令が完了するとき、完了通知の再にシリアル番号が使用される。「cmd 」は、ロードとストアの区別など、アクセスの種類や、アクセスサイズ等を示している。「AV」は、アドレスの有効フラグである。「address 」は、アクセス先のアドレスである。「DV」は、ライトデータの有効フラグである。「write data」は、ライトデータフィールドである。「RDY 」は、アクセスの状態を示す。
【0011】リザベーションステーション3には、キュー31のエントリへの格納を制御するための格納先選択論理35が備えられている。この格納先選択論理35は、FIFO構成をとっている。その格納先は、ポインタによって指し示される。命令発行ユニットから当キューに対して命令が投入されると、本ポインタが指すキューエントリに、「serial」と「cmd 」を格納し、「RDY 」の状態遷移を行う。
【0012】アドレスの格納については、アドレスとシリアル番号の組合せで格納指示を受け、各キューのエントリでシリアル番号と「serial」フィールドの比較を行い一致したエントリの「address 」フィールドに格納し、「AV」をオンにするように制御する。ライトデータについても、「write data」フィールドと「DV」に対して同様な制御を行う。
【0013】ロードストアユニット4には、キュー選択論理41があり、キュー31から発行するエントリの選択方針を決めている。ここでは、インオーダーの方針に設定され、発行可能な古いものから選択するようになっている。そして、一次キャッシュメモリ5に選択されたエントリが送出される。次に、図3に示された一次キャッシュメモリ5の構成を説明する。
【0014】一次キャッシュメモリ5は、通常、タグ部51とデータ部52からなる。さらに、一次キャッシュメモリ5には リプレース制御部53があり、リプレース制御資源を4つ並列に動作させることができる。この資源は、一次キャッシュメモリ5にアクセスした際のキャッシュミスにより起動される。既に、リプレース起動中のアドレスについて、後続のアクセスが発行された場合には、リトライの指示を行う。
【0015】ここで、キュー31の「RDY 」フィールドに格納されるアクセス状態の遷移について、図4を参照して説明する。そのアクセス状態はRIDL、RWTAD、RWTI及びRWTRの4状態である。RIDLは、本エントリにコマンドが無効か、アクセスの発行を完了したことを示す。
【0016】RWTADは、本エントリのコマンドが有効で、かつアクセスの為のアドレス計算完了(「AV」オン)とライトならライトデータ(「DV」オン) を待ち合わせている状態を示す。RWTRは、本エントリのコマンドが有効で、アクセス発行を待ち合わせている状態を示す。
【0017】RWTRは、一次キャツシュからのリプライを待ち合わせている状態を示す。そして、それらの状態の遷移条件は 図4の矢印の符号(A) 〜(B) に示すように、次の通りとなる。
(A) 命令発行ユニット2からのロードストア命令発行により、本キューエントリが選択された。
(B) アドレス計算されてAVオン(ライトならDVオン)となる。
(C) アクセスとして本キューエントリが選択され、一次キャッシュにアクセス発行される。
(D) 発行したアクセスに対して、1次キャッシュよりリトライ応答を受ける。
(E) 発行したアクセスに対して、1次キャッシュより「Valid miss」応答を受ける。
【0018】次に、図5及び図6のフローチャートを参照して、インオーダー制御におけるロードストアユニット4の動作と、一次キャッシュ5へのアクセス、リプレース制御について説明する。図5及び図6のフローチャートにおける処理は 通常のロードストアの処理である。先ず、命令発行ユニット2からロードストア命令が発行される(ステップS101)。
【0019】ロードストア命令が発行されると、リザベーションステーション3の格納先選択論理35の動作により、ロードストアをキュー31に格納し(ステップS102)、次いで、ロードストアのアドレスを計算する(ステップS103)。アドレスの計算が終了したならば(Y)、ロード命令かストア命令かを区別して(ステップS104)、ストア命令の場合(N)は、ストアデータの計算終了を待ち合わせる(ステップS105)。
【0020】この段階で、インオーダーに発行するために、アクセス待ちのキューエントリ間の新旧を判定して、もっとも古いエントリーを選ぶ(ステップS106)。そこでは、既に発行済の命令で未完了のもがあるかが判定される。未完了のものがある場合(N)には、その完了を待ち合わせる。未完了のものがない場合(Y)には、一次キャッシュ5へのアクセスを発行する(ステップS107)。
【0021】ここで、ロードストアユニット4と一次キャッシュ5の階層が論理又は物理空間で構成され異なっている場合には、一次キャッシュ5へのアクセスアドレスを論理アドレス又は物理アドレスへと変換しなければならない。ところが、この変換においてエラーとなるときがあるため、アクセスを発行した際に、アドレス変換エラーであるかどうかが判断される(ステップS108)。
【0022】もし、変換エラーである場合(Y)には、エラー応答して終了する(ステップS118)。一方、変換エラーでない場合(N)には、アクセスが発行されるので、この一次キャッシュ5にアクセスされ、一次キャッシュを索引し(ステップS109)、キャッシュヒットであれば(Y)、データ応答して(ステップS117)、命令は、終了する。
【0023】もし、キャッシュミスした場合(N)には、既にリプレースが起動されているか判定され(ステップS110)、起動済であれば(Y)、ステップS106に戻り、ロードストアユニット4にリトライを指示する。ロードストアユニット4では、新旧判定から再度実行する。また、リトライ指示には、もう一つの要因がある。それは、一次キャッシュ5のリプレースの為の資源枯渇である(ステップS111)。資源が枯渇している場合(Y)には、ステップS106に戻り、ロードストアユニット4にリトライを指示する。
【0024】一方、資源が枯渇していない場合(N)には、二次キャッシュ6の索引を行う(ステップS112)。ここで、二次キャッシュヒットであれば(Y)、データを一次キャッシュ5ヘ登録してから(ステップS116)、データ応答し(ステップS117)、終了する。
【0025】また、ステップS112で二次キャッシュミスとなると(N)、メモリアクセスを起動する(ステップS113)。メモリ7にアクセスしたとき、アクセスエラーとなっているかどうかが判断される(ステップS114)。もし、アクセスエラーである場合(Y)には、エラー応答して終了する(ステップS118)。このとき、キューのエントリにおいて、キャッシュステートを無効状態にしておく。
【0026】アクセスエラーでなければ(N)、メモリ7からデータを取り出し、二次キャッシュ6にデータ登録する(ステップS115)。そして、更に、二次キャッシュ6に登録されたデータを一次キャッシュ5にデータ登録する(ステップS116)。そこで、データ応答して(ステップS117)、終了する。
【0027】以上が、通常のインオーダー制御におけるロードストアの処理フローである。しかし、ミスレイテンシを隠蔽する試みとして、従来より別の手段が考えられている。キャッシュミスを発生した場合に、次のキャッシュミスのアドレスを予測し、キャッシュを検索し、キャッシュミスであれば、リプレースを発生させるというものである。この最も単純な予測の仕方は、キャッシュミスの後では、次のキャッシュラインもミスすると予測する方式である。
【0028】この方式について、図7及び図8を参照しながら、その動作処理を説明する。この方式においても、図1乃至図3のシステム構成が使われ、基本的な処理フローは、図5及び図6に示したものと同様である。そのため、図7には、図5に示した処理フローを省略して図示していない。ただ、図7に示した処理フローにおいても、図6と同様のステップ部分については、同じステップ符号を示してある。
【0029】図7の処理フローが図6と異なるところは、ステップS111でリプレース資源が枯渇しているかどうかが判断された後において、ステップS112の二次キャッシュ6へのアクセスと同時に、次のミスアドレスを予測して、次のキャッシュラインについてリプレース制御を実行するようにしたことである。図7の処理フローと同時に並列動作するラインリプレース制御の処理フローについて、図8のフローを参照する。
【0030】並列動作するラインリプレース制御においても、基本的には、図7に示されたリプレース制御の処理と同様である。図8に示したステップS201からステップS206までの各ステップは、図7に示したステップS110からステップS116までの各ステップに対応している。ただ、図7のリプレース制御の処理においては、ステップS116で一次キャッシュ5にデータを登録した後、ステップS117でデータ応答しているのに対し、図8の並列動作するラインリプレース制御では、ステップS206において一次キャッシュ5にデータを登録すれば十分であり、その後に終了する。
【0031】この様にすれば、一次キャッシュにおいて連続してキャッシュミスする場合には、もう一つのアクセスを想定し、次のラインについて予測してリプレース制御されるので、キャッシュミスレイテンシを短縮できる。
【0032】
【発明が解決しようとする課題】これまで、インオーダー制御におけるリプレース制御の処理フローについて述べたが、上述したケースA、ケースBについて見ると、インオーダー制御の場合には、両ケースともにハードウェアはシリアライズして動作することになる。これは、ハードウェアでこの両ケースの区別がつかない為である。
【0033】ところで、上述の各命令をアウトオブオーダー制御で動作させる場合には、基本的に、ケースAを基本として動作させることになる。ケースBでアウトオブオーダー制御で動作させる場合には、メンバー命令を挿入することによって区別されなければならない。このメンバー命令があるときだけ、インオーダー制御を行うことができる。
【0034】つまり、メンバー命令によって、動作モードを切り替えるという制御が必要となる。アウトオブオーダ制御に性能の優位性があるものの、ケースBの場合のように、制御上2つの制御を切り換えるという複雑さを持つ。さらに、メンバー命令の挿入は、プログラムを制限することになる。一方、インオーダー制御は、性能面は劣るものの、制御が比較的簡単で、プログラムヘの制限がないという特徴を持っている。
【0035】また、図7及び図8を参照して上述した次ラインリプレース起動を含むリプレース制御のように、ミスレイテンシを隠蔽する試みが行われている。この次ラインリプレース起動は、キャッシュミスを発生した場合に、次のキャッシュラインもミスすると予測して、キャッシュを検索し、ミスであれば、リプレース起動を発生させているため、そのときどきのプログラムの特性をまったく無視して行われることになる。アクセスがランダムなアドレスに対して発生する場合は、逆効果になるという欠点がある。
【0036】従って、本発明は、インオーダー制御とアウトオブオーダ制御との両者の長所を有し、キャッシュミス時のレイテンシを改善したリプレース制御を行うことができ、プログラム制限のないインオーダー制御を目的とする。
【0037】
【課題を解決するための手段】以上の課題を解決するため、本発明では、コンピュータにおけるプロセッサにおいて、キューのエントリに格納されたアクセス命令を選択して発行する手段と、発行された前記命令によりキャッシュメモリにアクセスする手段と、前記キャッシュメモリにアクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行する手段と、前記次メモリにアクセスして取得したデータを前記キャッシュメモリに登録するデータリプレース制御手段と、前記アクセス命令発行手段から前記アクセス命令が発行された後、前記キャッシュメモリに先行してアクセスすることができる先行アクセス手段とを備えるようにした。
【0038】さらに、前記先行アクセス手段は、前記キャッシュメモリに先行アクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行でき、前記次メモリに先行アクセスして取得したデータを前記キャッシュメモリに登録しデータリプレースを行い、前記次メモリへの前記先行アクセスがエラーとなった場合には、前記先行アクセスを終了するようにした。
【0039】また、本発明によれば、コンピュータにおけるロードストアユニットのキャッシュ制御装置において、少なくとも第1キュー選択論理回路と、第2キュー選択論理回路と、調停部とを備え、前記第1キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへのアクセス命令について、順次選択し、前記第2キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへの前記アクセス命令において、未発行のアクセス命令について前記第1キュー選択論理回路の選択に先行して選択し、そして前記調停部は、前記第1キュー選択論理回路が選択した前記アクセス命令と、前記第2キュー選択論理回路が選択した前記先行アクセス命令とを調停して、前記キャッシュメモリにアクセスを行うようにした。
【0040】
【発明の実施の形態】本発明の実施形態について、図9乃至図16を参照して説明する。本実施形態では、メモリアクセスが何らかの条件を待ち合わせているとき、キャッシュのヒット判定とキャッシュミス時のリプレース動作の起動を行うための専用キャッシュアクセスを定義して、メモリアクセスの正式な実行に先立ち、先行アクセスを発行するように制御するようにした。もし、キャッシュミスが発生すれば、正式な実行の条件成立よりも前に、リプレース起動を行える。そして、アウトオブオーダー制御の性能を持ち、プログラム制限のないインオーダー制御を達成するものである。
【0041】本実施形態は、上述した従来技術と同様に、図1のコンピュータにおいて破線部分で示したハードウエアのシステム構成に適用されるものである。ここでは、同様のハードウエアを使用するため、そのシステム構成の説明を省略する。図9は、回路資源についてのブロック図を示し、本実施形態に係るリザベーションステーション3とロードストアユニット4のシステム構成を示した。図9に示した構成は、図1のコンピュータにおいて破線で示した部分内のリザベーションステーション3とロードストアユニット4を示している。
【0042】リザベーションステーション3とロードストアユニット4は、従来技術を示す図2と同様であり、同じ部分には同じ符号を付した。リザベーションステーション3は、キュー31、キューヘの格納を制御する格納先選択論理回路35とを有し、図1のリザベーションステーション3と構成上の差異はないが、ロードストアユニット4については、図2の場合に比較して、アクセス発行制御論理回路に、処理2用キュー選択論理回路42が追加されている。
【0043】図9のキュー31おいては、図2の従来におけるキュー31のエントリフィールドに比較して、「PRE 」の先行アクセスの状態を示すエントリフィールドが加えられていることが特徴である。その他、キュー31は、リング構造で制御され、格納用のポインタレジスタとインオーダアクセス発行の為に命令取りだし用のポインタによって制御され、FIFOをなすこと、そして、「serial」「cmd 」「AV」「address 」「DV」「write data」及び「RDY 」の各フィールドがあることは、図2の従来におけるキュー31と同様であるので、ここではそれらの説明を省略する。
【0044】また、格納先選択論理回路35についても、図2の格納先選択論理回路35と同様のものであるが、命令発行ユニット2から当キューに対して命令が投入されると、本ポインタが指すキューエントリに、「serial」と「cmd 」を格納して、「PRE 」と「RDY 」の状態遷移を行うようになっている。さらに、図2に示した従来のロードストアユニット4では、キュー選択論理回路41のみが備えられているのに対し、本実施形態のロードストアユニット4では、処理1用のキュー選択論理回路41の他に、処理2用のキュー選択論理回路42を備えたアクセス発行制御論理回路を有している点が異なっている。
【0045】ここで、アクセス発行には、アクセスと先行アクセスの2種類が用意されている。アクセスは、通常の本来的なのものであり、先行アクセスは、1次キャッシュミスまたは、1次と2次キャッシュミスに先行してリプレースを起動する為のキャッシュ参照である。それぞれのアクセスと先行アクセスにおいて、キュー31から発行すエントリの選択方針が異なる。アクセスは、インオーダーの方針であるが、先行アクセスに対しては、特にアクセス順について強い要請はなく、そのときに発行可能な、古いものを選択する方針である。そのため、ロードストアユニット4には、これらの方針に従う2つの選択回路として、処理1キュー選択論理回路41と処理2キュー選択論理回路42が備えられている。
【0046】次に、ロードストアユニット4には、2つの選択回路で選ばれたものを調停する調停部43があり、調停部43を介して一次キャッシュメモリ5を参照する。調停部43では、処理1キュー選択論理回路41とキュー選択論理回路42とで、同一クロックで2つのアクセスが有効な場合に処理1キュー選択論理回路41のアクセスを選択する論理を持っている。
【0047】さらに、図9では、一次キャッシュメモリ、二次キャッシュメモリについては図示してないが、図3に示したと同様の一次キャッシュメモリ5、二次キャッシュメモリ6がシステムメモリ7の間に接続されている。そして 二次キャッシュメモリ6では、4つのリプレース制御資源0〜3を並列に動作させることができる。これらの資源0〜3は、アクセスや先行アクセスにおけるキャッシュミスにより起動される。
【0048】既に起動中のアドレスに対して、後続のアクセスが発行された場合は、リトライの指示が出される。一方、先行アクセスが発行された場合は、正常応答を行い、無効データのまま正常応答する。先行アクセス時のデータは無効である。ただ、4つのリプレース制御資源0〜3の全てを先行アクセスに割り当てることは、アクセスに対して資源枯渇を引き起こすので、先行アクセスに割り当てを制限する。資源数nに対し、先行アクセスで使用できる資源数mを、m<nのようにし、例えば、m=2と設定しておく。
【0049】なお、先行アクセスで使用できる資源を制限することにより、先行リプレースが受理されない可能性が出てくるが、受理されない先行リプレースに対しては、再度のアクセス要求を生成するようにしておけば対処することができる。次に、キュー31のエントリフィールド「PRE 」で取り得る先行アクセスにおける状態について、図10を参照して説明する。
【0050】先行アクセスの状態を示す「PRE 」については、以下の4状態がある。PIDLは、本エントリにコマンドが無効か、先行アクセスの発行を完了したことを示す。PWTAは、本エントリのコマンドが有効で、かつ先行アクセスの為のアドレス計算完了(「AV」オン) を待ち合わせている状態を示す。
【0051】PWTIは、本エントリのコマンドが有効で、先行アクセス発行を待ち合わせている状態を示す。PWTRは、一次キャッシュからのリプライを待ち合わせている状態を示す。これらの状態についての遷移条件は、図10の矢印(a) 〜(f) に示され、次の通りである。
(a) 命令発行ユニットからのロードストア命令発行により、本キューエントリが選択された。
(b) 「AV」フラグがオンになった。
(c) 先行アクセスとして本キューエントリが選択され、一次キャッシュに発行された。
(d) 発行した先行アクセスに対して、1次キャッシュよりリトライ応答を受けた。
(e) 発行した先行アクセスに対して、1次キャッシュよりvalid 応答を受けた。
(f) 「RDY 」がRIDLに遷移した(アクセスの発行が成功した為、もはや先行アクセスが不要になった)。
【0052】次に、本実施形態におけるリプレース制御におけるアクセスと先行アクセスを発行するインオーダー制御の動作フローを、図11及び図12のフローチャートを参照して、説明する。ここで、上述したように、本実施形態によるリプレース制御においては、キャッシュメモリへの本来のアクセスと、1次キャッシュミスまたは、1次と2次キャッシュミスに先行してリプレースを起動する為に先行して発行される先行アクセスとが用意されているが、この本来のアクセス発行時のリプレース制御についての動作フローは、図5及び図6に示した動作フローと変わるところがない。そのため、図11においては、同様のステップに対しては、同じ符号を付した。そして、図11のステップS107の次は、図6のステップS108に続くものである。
【0053】先ず、命令発行ユニット2からロードストア命令が発行される(ステップS101)。ロードストア命令が発行されると、リザベーションステーション3の格納先選択論理回路35の動作により、ロードストアをキュー31に格納し(ステップS102)、次いで、ロードストアのアドレスを計算する(ステップS103)。
【0054】ここで、このアドレスの計算が終了した時点で(Y)、動作処理フローは、2つの処理に分かれ、並行して動作するようになっている。つまり、本来のアクセスに対する処理1と、本実施形態の特徴である先行アクセス起動のために新規に設けた処理2である。処理1では、アドレスの計算が終了したならば(Y)、ロード命令かストア命令かを区別して(ステップS104)、ストア命令の場合(N)は、ストアデータの計算終了を待ち合わせる(ステップS105)。これ以降のステップは、図5及び図6に示された各ステップと同様であるので、その説明を省略する。
【0055】一方、処理2では、処理1と並行して行なわれるため、処理1により既に本来のアクセスが起動されているかどうかがはんだんされる(ステップS301)。既にそのアクセスが起動されている場合(Y)には、処理2を実施する必要がないため、処理2を終了する。もし、そのアクセスが起動されていなければ(N)、先行アクセスを保留しているエントリ中で最古のものを選ぶ(ステップS302)。最古でない場合には(N)、発行を見合わせて、ステップS301に戻る。
【0056】最古である場合(Y)、先行アクセスの発行を試みる(ステップS302)。そこで、発行された先行アクセスと本来のアクセスの調停を行う必要がある。その調停は、ロードストアユニット4の調停部43で行われる(ステップS303)。調停の方針では、それらが競合した場合(Y)には、本来のアクセスが優先される。そのため、先行アクセスは見合わせられ、ステップS301に戻る。
【0057】見合わせた先行アクセスは再試行される。再試行は、該当する本来のアクセスが起動済か否かの判定まで戻って行われる。先行アクセスが調停の結果発行できた場合(ステップS303のN)は、先行アクセスが発行される(ステップS304)。ここで、キャッシュメモリの階層上の問題で、一次キャッシュ5へのアクセスアドレスを論理アドレス又は物理アドレスへと変換しなければならないが、この変換においてエラーとなるときがあるため、先行アクセスを発行した際に、アドレス変換エラーであるかどうかが判断される(ステップS305)。
【0058】もし、変換エラーである場合(Y)には、その先行アクセスを終了する。一方、変換エラーでない場合(N)には、先行アクセスが発行され、一次キャッシュ5にアクセスされる。そして、一次キャッシュ5を索引する(ステップS306)。このとき、キャッシュヒットした場合(Y)には、一次キャッシュ5にデータが登録されており、問題ないので、処理2を終了する。
【0059】先行アクセスが発行されて一次キャッシュ5を索引したとき、キャッシュミスした場合には(N)、既に、リプレースが起動されているかどうかが確認される(ステップS307)。既に、リプレースが起動されている場合(Y)には、この先行アクセスは必要がないので、処理2を終了する。もし、リプレースが起動されてない場合(N)には、リプレース用資源の枯渇を判定する(ステップS308)。リプレース用資源が枯渇している場合(Y)には、前述した再試行を行うため、ステップS301に戻る。
【0060】リプレース用資源が枯渇していない場合(N)には、2次キャッシュ6を索引する(ステップS309)。もし、ここで、キャッシュヒットした場合(Y)には、二次キャッシュ6のデータを、一次キャッシュ5にデータ登録して(ステップS313)、処理2を終了する。ところが、ステップS309で、二次キャッシュミスをした場合(N)には、システムメモリ7にアクセスを起動する(ステップS310)。
【0061】そして、メモリ7にアクセスしたとき、アクセスエラーとなっているかどうかが判断される(ステップS311)。もし、アクセスエラーである場合(Y)には、そのまま終了する。ここで、アクセスエラーでなければ(N)、システムメモリ7からデータを取り出し、二次キャッシュ6にデータ登録する(ステップS312)。さらに、一次キャッシュ5にデータ登録して(ステップS313)、処理2を終了する。
【0062】この様に、先行アクセスが本来のアクセスと並行して起動されるようになっているので、処理1で、あるアクセスがキャッシュミスした場合に、後続のアクセスに対しては、処理2で先行してリプレースされ、キャッシュヒットすることになる。また、あるアクセスが完了した後においては、後続のアクセスが再実行され、処理1では、キャッシュヒットするか、既にリプレース起動済状態となっている。
【0063】なお、リプレース起動動作の結果、アクセスは完了させないようにしておく。待ち合わせ条件が解除されたときに正式にアクセス発行するようにし、そのアクセスに正式に応答することで、順序を保つことができる。正式な発行はあくまで、インオーダーに実施する必要がある。正式な命令発行が順調にヒットしている間はキャッシュのバンド幅を高いレベルで使用しているので、先行アクセスは、かえってキャッシュのバンド幅を浪費してしまう。そのため、先行アクセスは、キャッシュミスを発生し、応答を待ち合わせている時間を利用して、発行するようにする。
【0064】また、以上の本実施例における処理フローでは、処理1と処理2のアクセスを排他的に行う場合について説明したが、一次キャッシュ5のTAG部51を多ポート化、あるいは、アドレスでハッシングして仮想的に多ポート化することによって、調停部43の調停や処理フローに様々なバリエーションを持たせることができる。
【0065】次に、図11及び図12に示した処理フローによるアクセスんの具体例について、図13乃至図15に、そのタイミングを、種々のケースに分けて図示した。図13乃至図15では、アドレス計算の完了タイミングA)、命令発行ユニット2の命令発行タイミングB)、キュー31の「RDY 」のキューエントリの状態の変遷C)及びD)、「PRE 」のキューエントリの状態の変遷E)及びF)そして一次キャッシュ5の動作タイミングG)を示しており、横軸は、クロック単位で表してある。
【0066】これらの図では、2つの連続ロードld1 、ld2 の場合を示しており、「RDY 」及び「PRE 」のキューエントリは、それぞれ0、1を用いており、図中においては、C)及びD)、E)及びF)に対応している。図13では、アドレス計算の後、インオーダー制御が完了し、かつ連続ヒットしたケースを示している。
【0067】命令発行ユニット2からロード命令ld1 、ld2 が発行されると、キューエントリの状態は、「RDY 」では、ld1 、ld2 に対応して、RWTADの状態が、エントリ0と1に、それぞれ1クロックずれたタイミングで設定され、「PRE 」についても、同様に、1クロックずれたタイミングで、それぞれPWTAがキューエントリ0と1に設定される。
【0068】ld1 、ld2 について、アドレス計算が順に完了したとき、「RDY 」のエントリ0と1の状態をそれぞれ1クロックずれたタイミングでRWTIに遷移させる。このRWTIに遷移したタイミングで、ld1 、ld2 の一次キャッシュへのアクセスが順に発行される。この後、「RDY 」キューエントリ0と1は、RWTRに遷移する。
【0069】次いで、一次キャッシュで索引が行われ、キャッシュヒットすれば、データ応答を行う。一方、「PRE 」では、ld1 、ld2 のアドレス計算が完了したタイミングで、PWTAからPWTIに遷移しているが、ld1 、ld2 の一次キャッシュへのアクセスにおいてキャッシュヒットしているために、先行アクセスが発行されるタイミングがない。
【0070】また、図14では、アドレス計算の後、アウトオブオーダー制御が完了し、かつ連続ヒットしたケースを示している。図14のタイミング表示の仕方は、図13の場合と同様である。ただ、図13では、インオーダーのため、ld1 、ld2 のアドレス計算は連続して完了したが、図14では、アウトオブオーダーであるため、ld1 とld2 のアドレス計算の完了のタイミングが異なり、ld1 の計算完了より、ld2 の計算完了の方が数クロック分早いタイミングとなっている。
【0071】先ず、命令発行ユニット2からロード命令ld1 、ld2 が発行されると、キューエントリの状態は、ld1 、ld2 に対応して、「RDY 」では、RWTADが、そして、「PRE 」についても、同様に、PWTAがキューエントリ0と1に設定される。ld2 のアドレス計算が完了したタイミングで、ld2 に対応する「RDY 」のキューエントリ1の状態をRWTADからRWTIに遷移する。このとき、先行アクセスを並行して起動するようになっているので、「PRE 」のキューエントリ1の状態も、PWTADからPWTIに遷移する。さらに、先行アクセスのための一次キャッシュ5へのアクセスが発行され、索引の結果としてキャッシュヒットする。
【0072】ただ、ここで、このヒットは先行アクセスによるものであるので、データ応答する必要がない。そこで、例えば、リードアクセスの場合、発行元が、データ応答しない、あるいは、ヒットしたデータの使用を無視するようにしてもよく、そのための専用コマンドを用意してあってもよい。さらに、この場合、キャッシュ制御によって、応答又はデータ転送を抑止することもできる。また、ライトアクセスの場合についても、リードアクセスの場合と同様に、データ応答が行われないようにすることができる。
【0073】次に、ld2 に遅れてld1 のアドレス計算が完了すると、ld1 に対する「RDY 」のキューエントリ0の状態が、RWTADからRWTIに遷移し、一次キャッシュ5へのアクセスが発行される。このアクセスが発行された後には、調停部43によって、先行アクセスは禁止される。ld1 による一次キャッシュ5へのアクセスが発行されると、索引の結果としてキャッシュヒットしてデータ応答する。そこで、ld1 に対する「RDY 」のキューエントリ0の状態が、RWTIからRWTRに遷移するタイミングで、待たされていたld2 による一次キャッシュ5へのアクセスが発行され、そして、索引の結果としてキャッシュヒットしてデータ応答する。さらに、ld2 に対応する「RDY」のキューエントリ1の状態は、RWTIからRWTRに遷移する。
【0074】一方、ld1 に対する「PRE 」のキューエントリ0では、ld1 のアドレス計算が完了し、その状態がPWTAからPWTIに遷移されても、ld1 のアクセスが起動されているので、先行アクセスは起動されない。図14のケースの場合、アドレスが先行して判明している為、先行アクセスが可能となったことが示されたが、キャッシュヒットの為、結果的にはそのヒットは不要であった。しかし、この不要アクセスは、本来のアクセスの空きをついて発行するものなので、性能面でのデメリットにはならない。
【0075】次に、図15では、アドレス計算の後、インオーダー制御が完了し、かつ連続キャッシュミスしたケースを示している。図15のタイミング表示の仕方は、図13又は図14の場合と同様である。ld1 及びld2 のアドレス計算が完了するまでは、図13に示したケースのタイミングと同様である。
【0076】しかし、図15のケースでは、ld1 のアドレス計算が完了したタイミングで、ld1 の一次キャッシュ5へのアクセスが発行されるが、一次キャッシュ5の索引の結果、キャッシュミスとなってしまう。このため、さらに、二次キャッシュ6へのアクセスが発行される。また、ld1 に続いてld2 のアドレス計算が完了すると、ld2 の一次キャッシュ5へのアクセスが発行される。このときには、ld1 のアクセスは、キャッシュミスとなっており、リプレースが起動済であるため、ロードストアユニット4にリトライの指示が出される。
【0077】しかし、ld2 に対しては、リトライの指示であり、調停部43の調停により、先行アクセスを起動することが可能である。そこで、ld2 の先行アクセスが発行され、一次キャッシュ5を索引するが、ここでも、キャッシュミスとなり、さらに、二次キャッシュ6へのアクセスが発行される。一方、前に、ld1 の二次キャッシュ6へのアクセス発行に対応して、キャッシュヒットすると、そこで、一次キャッシュ5にデータ登録し、データ応答が行われる。このタイミングで、ld2 の一次キャッシュ5へのアクセスが発行され、ld2 に対する「RDY 」のキューエントリ1の状態は、RWTIからRTWRに遷移する。しかし、まだ、このタイミングでは、ld2 の二次キャッシュ6へのアクセスが起動中であるため、ld2 の一次キャッシュ5へのアクセスに対して、ロードストアユニット4にリトライの指示が出される。
【0078】ここで、前に起動中であったld2 の二次キャッシュ6へのアクセスにおいて、キャッシュヒットしたときには、このヒットしたデータを一次キャッシュ5に登録する。このときには、データ応答を行わない。例えば、リードアクセスの場合、リプレースを行うが、キャッシュ制御によって、応答又はデータ返答を抑止することができ、専用コマンドによってそれらを抑止するようにしてもよい。また、ライトアクセスの場合も、キャッシュ制御により、ライト又は応答を抑止すことができ、専用コマンドによってそれらを抑止するようにしてもよい。
【0079】次に、このリトライの指示が出されたとき、ld2 に対する「RDY 」のキューエントリ1の状態が、RTWRからRTWIに遷移し、ld2 の一次キャッシュ5へのアクセス発行が行われる。そして、ld2 の先行アクセスで、一次キャッシュ5へのデータ登録が完了しているので、そのアクセス発行により、一次キャッシュ5を索引してデータ応答を行うことができる。
【0080】図15のケースでは、ld1 がキャッシュミスしており、ld2 は、ld1 のデータ登録の完了を待ち合わせている。しかし、そのバックグラウンドでは、先行アクセスが発行されており、二次キャッシュへのアクセスが並行して行われることが示されている。以上において、本実施形態について説明してきたが、本実施形態の制御と、インオーダー制御及びアウトオブオーダ制御とについて、前述のケースA及びBの場合の例について、それらの動作を比較する。これらの概略を、図16に纏めて示した。
【0081】図16中の線図について、横軸は時間を表している。例えば、この線図の意味を、インオーダー制御のケースAで説明すると、ロードストアユニット4から命令a1が発行されると、一次キャッシュ5にアクセスb1する。そして、ここでキャッシュミスとなると、二次キャッシュ6にアクセスc1する。この二次キャッシュ6でキャッシュヒットh1する。そこで、二次キャッシュ6から、一次キャッシュ5にデータ登録し、そして、データ応答d1を行う。さらに、次の命令a2についても同様に動作する。
【0082】ここで、インオーダー制御について見ると、ケースAとケースBとで、変わりはなく、2つの命令においてアクセスのオーバラップはなく、当然プログラムへの要求も必要としない。そのため、制御回路の構成には容易にできるが、性能の面で劣る。アウトオブオーダー制御では、性能面では優れているといえるが、ケースAにおいて、2つの命令に対してオーバラップが存在し、ケースBでは、メンバー命令を必要とするところから、既存プログラム資産を生かすことができなく、制御回路の構成上に難点があり、プログラムへの要求が必要となる。
【0083】しかし、本実施形態による制御では、ケースA及びケースBの場合ともに、命令a1が発行されても、命令a2に対しては、図中に破線で示したように、バックグラウンドで先行アクセスすることができる。命令a2の先行アクセスで一次キャッシュミスしても、命令a2がアクセスするまでに二次キャッシュから一次キャッシュにデータ登録が済んでいる。そのため、命令a2がアクセスするとき、確実にキャッシュヒットさせることができる。さらに、命令a1と命令a2とはインオーダーの関係を維持している。
【0084】そして、アクセスのオーバラップを可能にできるので、アウトオブオーダー制御とほぼ同様の性能を維持することができ、比較的簡単な制御で、しかも、プログラムに対して何ら制限を加えないという効果を持っている。インオーダー制御に比べても、性能面で、向上が期待される。アウトオブオーダー制御に対しては、制御回路面で容易なこと、プログラムに制限がないことなどが有利な点として挙げられる。
【0085】さらに、メモリアクセスが何らかの条件を待ち合わせている時、キャッシュのヒット判定とミス時のリプレース動作の起動を行うための、専用キャッシュアクセスを定義することにより、メモリアクセスの正式な実行に先立ち、発行するように制御する。もし、キャッシュミスが発生すれば、実行の条件成立よりも前において、リプレースを起動することができ、キャッシュミス時のレーテンシ短縮につながる。
(付記1) キューのエントリに格納されたアクセス命令を選択して発行する手段と、発行された前記命令によりキャッシュメモリにアクセスする手段と、前記キャッシュメモリにアクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行する手段と、前記次メモリにアクセスして取得したデータを前記キャッシュメモリに登録するデータリプレース制御手段と、前記アクセス命令発行手段から前記アクセス命令が発行された後、前記キャッシュメモリに先行してアクセスすることができる先行アクセス手段とを有するプロセッサ。
(付記2) 前記次メモリには、二次キャッシュメモリが含まれる付記1に記載のプロセッサ。
(付記3) 前記先行アクセス手段は、前記アクセスが前記キャッシュメモリに起動されていない場合に、先行アクセス命令を発行できる付記1に記載のプロセッサ。
(付記4) 前記先行アクセス手段は、前記キャッシュメモリに先行アクセスし、キャッシュミスしたとき、次メモリへのアクセス命令を発行できる付記1に記載のプロセッサ。
(付記5) 前記先行アクセス手段は、前記次メモリに先行アクセスして取得したデータを前記キャッシュメモリに登録しデータリプレースを行う付記3に記載のプロセッサ。
(付記6) 前記先行アクセス手段は、前記次メモリへの前記先行アクセスがエラーとなった場合には、前記先行アクセスを終了する付記3に記載のプロセッサ。
(付記7) 前記先行アクセス手段は、前記データリプレースした前記データについてデータ応答又はデータ返答を抑止する付記5に記載のプロセッサ。
(付記8) 前記先行アクセス手段は、リードアクセスで、応答及びデータを使用せず無視する手段を有する付記7に記載のプロセッサ。
(付記9) 前記先行アクセス手段は、リードアクセスで、前記キャッシュメモリを索引し、キャッシュヒット時に、応答及びデータ転送を抑止する手段を有する付記7に記載のプロセッサ。
(付記10) 前記先行アクセス手段は、リードアクセスで、前記キャッシュメモリを索引し、キャッシュミス時に、データリプレースを行い、応答及びデータ返答を抑止する手段を有する付記7に記載のプロセッサ。
(付記11) 前記先行アクセス手段は、ライトアクセスで、前記キャッシュメモリを索引し、キャッシュヒット時に、ライト及び応答を抑止する手段を有する付記7に記載のプロセッサ。
(付記12) 前記先行アクセス手段は、ライトアクセスで、前記キャッシュメモリを索引し、キャッシュミス時に、データリプレースを行い、ライト及び応答を抑止する手段を有する付記7に記載のプロセッサ。
(付記13) 前記先行アクセス手段は、リードアクセスで、前記キャッシュメモリを索引し、キャッシュヒット時に、応答及びデータ転送を行わないコマンドを発行する付記7に記載のプロセッサ。
(付記14) 前記先行アクセス手段は、リードアクセスで、前記キャッシュメモリを索引し、キャッシュミス時に、データリプレースを行い、応答及びデータ返答を行わないコマンドを発行する付記7に記載のプロセッサ。
(付記15) 前記先行アクセス手段は、ライトアクセスで 前記キャッシュメモリを索引し、キャッシュヒット時に、ライト及び応答を行わないコマンドを発行する付記7に記載のプロセッサ。
(付記16) 前記先行アクセス手段は、ライトアクセスで、前記キャッシュメモリを索引し、キャッシュミス時に、データリプレースを行い、ライト及び応答を行わないアクセス種を有する付記7に記載のプロセッサ。
(付記17) 前記先行アクセス手段は、前記先行アクセスのアドレス変換エラーが発生した場合に、キャッシュヒット判定及びデータリプレースを行わないことを特徴とする付記7乃至16のいずれかに記載のプロセッサ。
(付記18) 要求したデータアクセスがエラーで終了した場合、キャッシュステートを無効状態にすることを特徴とする付記10、12、14又は16に記載のプロセッサ。
(付記19) 前記先行アクセス手段は、前記キャッシュメモリのデータリプレース処理の最大数nの時、前記先行アクセスに関する起動リプレースの同時実行数をm(m<n)に制限する手段を有することを特徴とする付記10、12、14又は16に記載のプロセッサ。
(付記20) 前記先行アクセス手段は、受理されない先行アクセスのデータリプレースについて再度のキャッシュアクセス要求を生成することを特徴とする付記19に記載のプロセッサ。
(付記21) 前記先行アクセス手段は、受理されない先行アクセスのデータリプレースについて破棄することを特徴とする付記19に記載のプロセッサ。
(付記22) 少なくとも第1キュー選択論理回路と、第2キュー選択論理回路と、調停部とを有し、キャッシュメモリへのアクセス発行制御を行うキャッシュ制御装置であって、前記第1キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへのアクセス命令について、順次選択し、前記第2キュー選択論理回路は、命令発行ユニットからキューに格納された前記キャッシュメモリへの前記アクセス命令において、未発行のアクセス命令について前記第1キュー選択論理回路の選択に先行して選択し、前記調停部は、前記第1キュー選択論理回路が選択した前記アクセス命令と、前記第2キュー選択論理回路が選択した前記先行アクセス命令とを調停して、前記キャッシュメモリにアクセスを行うことを特徴とするキャッシュ制御装置。
【0086】
【発明の効果】以上のように、本発明によるキャッシュリプレース制御では、メモリアクセスが何らかの条件を待ち合わせているとき、キャッシュヒットの判定とキャッシュミス時のリプレース動作の起動を行うための専用キャッシュアクセスを定義し、メモリアクセスの正式な実行に先立ち、先行アクセスを発行するように制御するようにしたので、キャッシュミスが発生すれば、正式な実行の条件成立よりも前に、リプレース起動を行え、キャッシュミス時のレーテンシの短縮することができる。そして、そのキャッシュリプレース制御による命令処理では、インオーダー制御とアウトオブオーダ制御との両者の長所を有し、プログラム制限のないインオーダー制御を達成することができる。
【出願人】 【識別番号】000005223
【氏名又は名称】富士通株式会社
【出願日】 平成12年10月2日(2000.10.2)
【代理人】 【識別番号】100077517
【弁理士】
【氏名又は名称】石田 敬 (外4名)
【公開番号】 特開2002−108703(P2002−108703A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−302795(P2000−302795)