JP4071886B2 - ブロック・サイズを変更可能なキャッシュ・メモリ・システム - Google Patents
ブロック・サイズを変更可能なキャッシュ・メモリ・システム Download PDFInfo
- Publication number
- JP4071886B2 JP4071886B2 JP07102199A JP7102199A JP4071886B2 JP 4071886 B2 JP4071886 B2 JP 4071886B2 JP 07102199 A JP07102199 A JP 07102199A JP 7102199 A JP7102199 A JP 7102199A JP 4071886 B2 JP4071886 B2 JP 4071886B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- address
- block size
- tag
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、キャッシュ・メモリを有する半導体回路において、キャッシュ・メモリと主記憶との間でデータを置き換える回数を低減するためのキャッシュ・メモリ・システムに関する。
【0002】
【従来の技術】
従来のキャッシュ・メモリ・システムは図11のような構成をしている。
キャッシュ・メモリ100はデータを記憶するデータ・アレイ102を備え、プロセッサ130と主記憶106と接続している。データ・アレイ102と主記憶106との間で転送するデータのサイズは設計時に決定されており、このサイズに従って、メモリ・アクセス制御手段111が両者の間でデータを転送する。このように、従来のキャッシュ・メモリ・システムでは、主記憶106とキャッシュ・メモリ100との間で転送するデータのサイズが任意の大きさに固定されていた。
なお、これ以降は、主記憶とキャッシュ・メモリとの間でデータを置き換える操作をリプレイスと呼び、置き換えるデータのサイズをブロック・サイズと呼ぶことにする。
【0003】
ブロック・サイズが任意の値に固定されていると、プログラムの振舞いの特性次第ではリプレイスの回数が増加する場合が2通りある。
一つは、主記憶106からキャッシュ・メモリ100に転送すべきデータの大きさに比べて、一度の転送でリプレイスできるブロック・サイズが小さい場合である。
このときは、プロセッサが必要とするデータを主記憶106からキャッシュ・メモリ100に転送する回数と、不必要とするデータをキャッシュ・メモリ100から主記憶106に転送する回数とが増加する。
なお、以降は、データを主記憶からキャッシュ・メモリに転送する操作をリプレイス・インと呼び、データをキャッシュ・メモリから主記憶に転送する操作をリプレイス・アウトと呼ぶことにする。
【0004】
もう一つは、主記憶106からキャッシュ・メモリ100に転送すべきデータの大きさに比べて、一度の転送でリプレイス・インできるブロック・サイズが大きい場合である。このときは、元来キャッシュ・メモリ100内に記憶しておくべきデータを、キャッシュ・メモリ100から主記憶106にリプレイス・アウトすべきデータと一緒にリプレイス・アウトする可能性がある。
そのため、元来キャッシュ・メモリ100内に記憶しておくべきでありながらもリプレイス・アウトしたデータをプロセッサが参照しようとするときに、再度リプレイス・インする手間が生じる。
【0005】
これらの問題を解決するために、特開昭62−118456号公報や特開昭63−157249号公報に記載されたような構成のキャッシュメモリが提案された。
いずれも、初期化時あるいはプログラム実行中に、命令等によってブロック・サイズを予め定めた一つの値に設定するものであった。
これにより、プログラム毎に異なる空間局所性の及ぶ範囲の違い、あるいは、ある一つのプログラムの実行中における空間局所性の及ぶ範囲の変化に対応して、ブロック・サイズを変更することが可能となった。
【0006】
しかしながら、従来のコンピュータ・システムはプロセッサとキャッシュ・メモリとが別個のLSIであったために、LSIのピン制約の理由から、プロセッサとキャッシュ・メモリとの間のデータ・バス幅を広く設計することが出来ず、データ・バス幅に比べてブロック・サイズを大きく設計していた。
しかし、データ・バス幅に比べてブロック・サイズを大きく設計することで、データ転送に要するクロック・サイクル数が増加する問題があった。
【0007】
これらの問題を解決するために、可変ラインサイズ・キャッシュ・メモリ(情報処理学会アーキテクチャ研究会報告書、ARC−119−28、1996年8月)が提案された。
このキャッシュ・メモリは、プロセッサとキャッシュ・メモリと主記憶であるDRAMとを1つのLSIに混載することを前提としており、キャッシュ・メモリと主記憶とをLSI内で直接接続するので、両者間を接続するデータ・バス幅を広く設計できることが特徴であった。さらに、ブロック・サイズをキャッシュ全体のモードとして、予め定めた一つの値に設定することが可能であった。
そのため、データ・バス幅に比べてブロック・サイズが小さい範囲では、データ転送に要するサイクルを増やすことなくブロック・サイズを設定することが可能となった。
【0008】
【発明が解決しようとする課題】
一般に、キャッシュ・メモリは、一度アクセスされたデータが近い時間内に再度アクセスされる可能性が高い性質(時間局所性)と、アクセスされたデータの近傍のデータが間もなくアクセスされる可能性が高い性質(空間局所性)とを利用して、プロセッサが近い将来に参照する可能性の高いデータを記憶するための記憶装置である。
【0009】
特に空間局所性に着目すると、空間局所性の及ぶ範囲がプログラム毎に異なるだけでなく、単一のプログラムであってもアドレス空間によって異なっている。これは、ある時間内において、互いに離れたアドレス空間に記憶している、大きさの異なる2つの配列の各要素に、それぞれ同じ回数だけアクセスする例を考えれば明らかである。すなわち、大きい方の配列が記憶される広いアドレス空間と、小さい方の配列が記憶される狭いアドレス空間とを比較すると、前者の方が空間局所性が高いと言える。
【0010】
しかし、前述の提案されたアーキテクチャは、いずれもブロック・サイズをキャッシュ全体のモードとして一意に定めるだけなので、アドレス空間中における空間局所性の及ぶ範囲の違いに対応することは難しい。
設定されたブロック・サイズが適切でないと、前述したように不必要なリプレイスを起こす原因となる。
【0011】
そこで、本発明が解決しようとする第1の課題は、アドレス空間中における空間局所性の及ぶ範囲の違いに対応するために、アドレス空間毎にブロック・サイズを適切に設定する手段を提供し、不必要なリプレイスの発生を抑えることである。
【0012】
さらに、プログラムの実行が進むにつれて、同じアドレス空間に対するプロセッサの参照頻度が変化する。
この例としては、あるデータが、ある時間には頻繁に参照されていたものが、プログラムの実行が進むにつれて、稀に(あるいは、より頻繁に)アクセスされる場合などがある。
【0013】
そこで、本発明が解決しようとする第2の課題は、プログラムの実行に伴う空間局所性の及ぶ範囲の変化に対応するために、第1の課題への対応に加えて、プログラムの実行中にアドレス空間毎にブロック・サイズを更新する手段を備えることにより、不必要なリプレイスの発生を抑えることである。
【0014】
【課題を解決するための手段】
前記第1の課題を解決するため、本発明のキャッシュ・メモリ・システムは、主記憶に記憶しているデータを一時的に記憶するキャッシュ・メモリを備え、プロセッサが前記キャッシュ・メモリにアクセスするキャッシュ・メモリ・システムにおいて、前記キャッシュ・メモリと前記主記憶との間で置き換えるデータのサイズを、前記キャッシュ・メモリ内の予め定めた大きさの複数の記憶空間毎に記憶するブロック・サイズ情報記憶手段を備え、前記キャッシュ・メモリ内の前記記憶空間に対する前記プロセッサのアクセスがキャッシュ・ミスを起こした時に、前記キャッシュ・メモリ内の前記キャッシュ・ミスを起こした前記記憶空間と前記主記憶との間で、前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、データを置き換える手段を備えたものである。
【0015】
そして、請求項1の発明は、前記キャッシュ・メモリ・システムにおいて、前記プロセッサが出力するアクセス・アドレスは、タグ・アドレスとインデックス・アドレスとバンク・アドレスとバンク内オフセットの各フィールドを備え、前記キャッシュ・メモリは少なくとも二つのキャッシュ・バンクから成り、前記の各キャッシュ・バンクは、前記バンク内オフセットで指定する語数のデータを記憶するエレメントの集合から成るデータ・アレイと、前記データ・アレイの各エレメントに記憶しているデータが有効であるか否かを記憶する有効フラグの集合から成る有効フラグ・アレイと、前記データ・アレイの各エレメントに記憶しているデータの各タグ・アドレスを記憶するタグ・アレイを有し、前記データ・アレイと前記有効フラグ・アレイと前記タグ・アレイとは、それぞれ、前記インデックス・アドレスによって指定された前記エレメントのデータと、当該データの有効フラグの値と、当該データのタグ・アドレスとを出力するものであり、さらに前記の各キャッシュ・バンクは、前記有効フラグの値が前記エレメントに有効なデータを記憶していることを示すときに、前記タグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する比較器を備え、前記バンク・アドレスによって指定された前記キャッシュ・バンクの比較器の比較結果を選択して出力する第1のマルチプレクサと、前記キャッシュ・メモリ内の前記記憶空間毎の前記サイズを、前記インデックス・アドレスで参照する前記ブロック・サイズ情報記憶手段と、前記キャッシュ・メモリと前記主記憶との間でデータを置き換える制御を行うメモリ・アクセス制御回路とを備え、前記メモリ・アクセス制御回路が、前記プロセッサが前記アクセス・アドレスを出力した時に、前記第1のマルチプレクサの出力によってキャッシュ・ミスが起きたか否かを判定し、キャッシュ・ミスが起きた時には、前記メモリ・アクセス制御回路が、前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換えることを特徴とする。
【0016】
また、前記第2の課題を解決する請求項2のキャッシュ・メモリ・システムは、前記キャッシュ・メモリ・システムにおいて、前記プロセッサが出力するアクセス・アドレスは、タグ・アドレスとインデックス・アドレスとバンク・アドレスとバンク内オフセットの各フィールドを備え、前記キャッシュ・メモリは少なくとも二つのキャッシュ・バンクから成り、前記の各キャッシュ・バンクは、前記バンク内オフセットで指定する語数のデータを記憶するエレメントの集合から成るデータ・アレイと、前記データ・アレイの各エレメントに記憶しているデータが有効であるか否かを記憶する有効フラグの集合から成る有効フラグ・アレイと、前記データ・アレイの各エレメントに記憶しているデータの各タグ・アドレスを記憶するタグ・アレイと、前記データ・アレイの各エレメントに記憶している各データが、それぞれ前記エレメントに読み込まれてから、これまでの間に前記プロセッサによって参照されたか否かを記憶するアクセス・ビットの集合から成るアクセス・ビット・アレイとを有し、前記データ・アレイと前記有効フラグ・アレイと前記タグ・アレイと前記アクセス・ビット・アレイとは、それぞれ、前記インデックス・アドレスによって指定された前記エレメントのデータと、当該データの有効フラグの値と、当該データのタグ・アドレスと、当該データのアクセス・ビットの値とを出力するものであり、さらに前記の各キャッシュ・バンクは、前記有効フラグの値が前記エレメントに有効なデータを記憶していることを示すときに、前記タグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する比較器を備え、前記バンク・アドレスによって指定された、前記キャッシュ・バンクの比較器の比較結果を選択して出力する第1のマルチプレクサと、前記インデックス・アドレスによって指定された、前記キャッシュ・メモリ内の前記記憶空間毎の前記サイズを出力する前記ブロック・サイズ情報記憶手段と、前記の全てのキャッシュ・バンクの比較器が出力する比較結果と、前記の全てのキャッシュ・バンクのアクセス・ビットが出力する値とが入力されると、前記比較結果が一致しており、かつ、前記出力されたアクセス・ビットの値が前記プロセッサによって参照されたことを示す時に、当該キャッシュ・バンクを指す信号を出力するライン利用状況判定回路と、前記インデックス・アドレスによって指定された前記キャッシュ・メモリ内の前記記憶空間の前記サイズと、前記バンク・アドレスと、前記ライン利用状況判定回路の出力とが入力されると、当該記憶空間の新たな前記サイズを決定するブロック・サイズ決定回路と、前記キャッシュ・メモリと前記主記憶との間でデータを置き換える制御を行うメモリ・アクセス制御回路とを備え、前記メモリ・アクセス制御回路が、前記プロセッサが前記アクセス・アドレスを出力した時に、前記第1のマルチプレクサの出力によってキャッシュ・ミスが起きたか否かを判定し、キャッシュ・ミスが起きた時には、前記メモリ・アクセス制御回路が、前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換え、前記ブロック・サイズ決定回路が、前記ブロック・サイズ情報記憶手段に記憶する前記サイズを更新することを特徴とする。
【0017】
前記ブロック・サイズ情報記憶手段は、前記キャッシュ・メモリ内の各エレメント毎に前記サイズを記憶し、前記バンク・アドレスによって指定されたキャッシュ・バンクの前記サイズを選択して出力する第2のマルチプレクサを有し、前記メモリ・アクセス制御回路が、キャッシュ・ミスが起きた時には、前記第2のマルチプレクサが出力した前記サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換える構成とすることができる。
【0018】
前記ブロック・サイズ情報記憶手段は、前記主記憶に書き戻したデータの、タグ・アドレスを記憶する第2のタグ・アレイと前記サイズを記憶するテーブルとを備え、前記インデックス・アドレスで前記第2のタグ・アレイと前記テーブルとを参照すると前記タグ・アドレスと前記サイズとが出力され、前記第2のタグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する第2の比較器と、前記の全てのキャッシュ・バンクのタグ・アレイの出力から、前記第2のタグ・アレイに入力するタグ・アドレスを前記バンク・アドレスで選択するタグ選択回路とを具備し、前記メモリ・アクセス制御回路は、キャッシュ・ミスが起きた時に、前記第2の比較器による、前記アクセス・アドレスのタグ・アドレスと前記第2のタグ・アレイが出力したタグ・アドレスとの比較結果が一致していれば、前記インデックス・アドレスで指定される前記テーブルに記憶している前記サイズで、前記主記憶に書き戻したデータを再度キャッシュ・メモリに読み込み、前記タグ選択回路で選択されたタグ・アドレスと、前記キャッシュ・ミスを起こした前記インデックス・アドレスによって指定される、前記キャッシュ・メモリ内の前記記憶空間に該当する前記サイズとを、それぞれ前記第2のタグ・アレイと前記テーブルとに記憶する構成とすることができる。
【0019】
【発明の実施の形態】
以下、本発明のブロック・サイズを変更可能なキャッシュ・メモリ・システムの実施の形態について、図1から図10を参照しながら説明する。
【0020】
[第1の実施の形態]
図1は、本発明のブロック・サイズを変更可能なキャッシュ・メモリと、キャッシュ・メモリと接続する主記憶とプロセッサとを示す、第1の実施の形態を示すブロック図である。
第1の実施の形態において、キャッシュ・メモリ・システムはキャッシュ・メモリ100と、メモリ・アクセス制御手段111と、ブロック・サイズ情報記憶手段109とで構成される。
このブロック・サイズ情報記憶手段109は、キャッシュ・メモリ100内にあるデータ・アレイ102を予め定めた大きさを単位として分割した、複数の記憶空間毎にブロック・サイズを記憶している。
【0021】
さらに、キャッシュ・メモリ100は、プロセッサ130と主記憶106と接続している。
プロセッサ130は、アクセス・アドレスによってキャッシュ・メモリ100を参照する。
プロセッサ130によるキャッシュ・メモリ100の参照がキャッシュ・ミスを起こしたときには、メモリ・アクセス制御手段111が、アクセス・アドレスによってブロック・サイズ情報記憶手段109からリプレイスするデータのブロック・サイズを読み出し、キャッシュ・メモリ100と主記憶106との間でデータをリプレイスする。
【0022】
キャッシュ・メモリ100がダイレクト・マップ方式の場合は、キャッシュ・メモリ100内の任意の記憶空間には、主記憶100内においてタグ・アドレスが異なりインデックス・アドレスが等しい個々のデータが、互いに排他的に記憶される。よって、この第1の実施の形態に示すように、ブロック・サイズ情報記憶手段109がキャッシュ・メモリ内の任意の記憶空間毎にブロック・サイズを記憶することで、アドレス空間中における空間局所性の及ぶ範囲の違いに対応したブロック・サイズの設定を行うことができる。
なお、キャッシュ・メモリ100がセット・アソシアティブ方式の場合においても、ブロック・サイズ情報記憶手段109がキャッシュ・メモリ内の任意の記憶空間毎にブロック・サイズを記憶することで、アドレス空間中における空間局所性の及ぶ範囲の違いに対応したブロック・サイズの設定を行うことができる。
【0023】
[第2の実施の形態]
図2に示す第2の実施の形態において、プロセッサ130が出力するアクセス・アドレスでキャッシュ・メモリ100を参照する。アクセス・アドレスは、タグ・アドレスと、インデックス・アドレスと、バンク・アドレスと、バンク内オフセットの各フィールドを備えている。
また、キャッシュ・メモリ100は、データ・アレイ102−1〜102−4と、有効フラグ・アレイ105−1〜105−4と、タグ・アレイ103−1〜103−4と、比較器104−1〜104−4とから成る複数のキャッシュ・バンク101−1〜101−4で構成されている。
【0024】
データ・アレイ102−1〜102−4は、アクセスアドレスの一部である、バンク内オフセットで指定する語数を単位として、各バンク毎に、それぞれデータを記憶している。
有効フラグ・アレイ105−1〜105−4は、データ・アレイ102−1〜102−4に記憶している各データが、それぞれ有効であるか否かを記憶している。
タグ・アレイ103−1〜103−4は、データ・アレイ102−1〜102−4に記憶している各データの、それぞれのタグ・アドレスを記憶している。
データ・アレイ102−1〜102−4と、有効フラグ・アレイ105−1〜105−4と、タグ・アレイ103−1〜103−4とは、インデックス・アドレスによって指定され、プロセッサからアクセスされると、それぞれが記憶している値を出力する。
バンク・アドレスで指定されたキャッシュ・バンクの比較器は、当該キャッシュ・バンクの有効フラグ・アレイの出力値が有効を示すときに、タグ・アレイが出力するタグ・アドレスと、アクセス・アドレス中のタグ・アドレスとを比較する。
【0025】
さらに、比較器は、タグ・アレイが出力するタグ・アドレスとアクセス・アドレス中のタグ・アドレスとが一致したときにはキャッシュ・ヒットを示す信号を出力し、不一致、あるいは、バンク・アドレスで指定されたキャッシュ・バンクの有効フラグ・アレイの値が無効を示すときにはキャッシュ・ミス・ヒットを示す信号を出力する。
マルチプレクサ110は、バンク・アドレスで指定された比較器の出力値を選択して出力する。
【0026】
メモリ・アクセス制御回路111は、マルチプレクサ110の出力値によってキャッシュ・ミスが起きたか否かを判断する。キャッシュ・ミスが起きたときは、メモリ・アクセス制御回路111が、ブロック・サイズ情報記憶部109に記憶しているブロック・サイズに従って、キャッシュ・メモリ100と主記憶106との間でデータをリプレイスする。
キャッシュ・ヒットしたときは、メモリ・アクセス制御回路111はリプレイスしない。
実施の形態2を示す例では、主記憶106は4個のメモリ・バンク106−1〜106−4で構成され、前記各キャッシュ・バンク101−1〜101−4と前記各メモリ・バンク106−1〜106−4とが、それぞれ接続されている。
【0027】
図3は、実施の形態2におけるキャッシュ・メモリ100内のデータ・アレイ102−1〜102−4と主記憶106との接続を示している。
この例では、キャッシュ・メモリ100と主記憶106は、いずれも4つのバンクから成っている。データ・アレイはバンク・アドレスによって指定される。各データ・アレイはキャッシュ・ライン・エレメントと呼ぶ記憶要素の集合であり、キャッシュ・ライン・エレメント内のデータに対する参照は、バンク内オフセットを用いて行う。キャッシュ・ラインは、インデックス・アドレスが共通するキャッシュ・ライン・エレメントの集合として定義される。図3では、各キャッシュ・ライン・エレメントは32バイトのデータを記憶する例を示している。
一方、主記憶106の各メモリ・バンク106−1〜106−4は、メモリ・ライン・エレメントと呼ぶ記憶要素の集合である。
【0028】
同一アクセス・アドレス中のタグ・アドレスとインデックス・アドレスとで参照するメモリ・ライン・エレメントの集合をメモリ・ラインと呼ぶ。図3では、同一メモリ・ライン内において最も左のバンク・アドレスが最下位となるアドレシングの例を示している。
ブロック・サイズとキャッシュ・ラインの大きさとは必ずしも一致しないので、任意のキャッシュ・ラインには、同一のメモリ・ラインのデータ同士を記憶する場合もあれば、異なるメモリ・ラインのデータ同士を記憶する場合もある。
【0029】
この実施の形態2を示す例では、ブロック・サイズ情報記憶部109が、まず、各キャッシュ・ライン毎にブロック・サイズを記憶するブロック・サイズ情報テーブル112を持つ例について説明する。
キャッシュ・ミスが起きたときに、ブロック・サイズ情報テーブル112に記憶したブロック・サイズでリプレイスが実行される。ブロック・サイズ情報テーブル112には、プログラムの実行前に、予め見積もっておいたブロック・サイズを記憶しておく。各キャッシュ・ライン毎に任意の大きさのブロック・サイズを設定することが可能である。この実施の形態2では、ブロック・サイズとして大(キャッシュ・ライン全体の大きさ)、中(同一キャッシュ・ライン内で、偶数番地のバンク・アドレスから連続する2個のキャッシュ・ライン・エレメント分)、小(1つのキャッシュ・ライン・エレメント分)の異なる3つが存在する例について説明する。
【0030】
ブロック・サイズ情報テーブル112の任意のキャッシュ・ラインに該当するフィールドに、ブロック・サイズが大と設定された場合、プロセッサの当該キャッシュ・ライン内の、いずれかのキャッシュ・ライン・エレメントへのアクセスがキャッシュ・ミスを起こすと、当該キャッシュ・ライン全体がリプレイスの対象になる。
ブロック・サイズが中と設定された場合、キャッシュ・ミスを起こしたアクセスのバンク・アドレスによってリプレイスの対象になるキャッシュ・ライン・エレメントが異なる。
【0031】
キャッシュ・バンクが4つに分割される実施の形態2の例では2とおりがある。
一つはキャッシュ・バンク101−1または101−2へのアクセスがキャッシュ・ミスを起こした場合で、このときは、キャッシュ・バンク101−1と101−2のキャッシュ・ライン・エレメントがリプレイスの対象になる。
もう一つは、キャッシュ・バンク101−3または101−4へのアクセスがキャッシュ・ミスを起こした場合で、このときは、キャッシュ・バンク101−3と101−4のキャッシュ・ライン・エレメントがリプレイスの対象になる。
最後に、ブロック・サイズが小であると設定された場合には、キャッシュ・ミスを起こしたキャッシュ・ライン・エレメントのみがリプレイスの対象になる。
このように、キャッシュ・ライン毎にブロック・サイズを設定する方式を採ることで、アドレス空間中における空間局所性の及ぶ範囲の違いに対応したブロック・サイズの設定を簡易に行いながら、不必要なリプレイスの発生を抑えることができる。
【0032】
前述の第2の実施の形態の説明では、特定の実施例を挙げたが、これに限定されるものではなく、次に挙げる実施例とすることもできる。
(1)前述のキャッシュ・メモリ・システムがダイレクト・マップ方式を採る場合の例のほか、セット・アソシアティブ方式を採る場合でも、ブロック・サイズ情報テーブル112の各フィールドに設定したブロック・サイズをウェイ間で共用することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。
【0033】
(2)前述のキャッシュ・ライン・エレメントの語長が32バイトの例のほか、異なるサイズでもバンク内オフセットに割り当てる語長を変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0034】
(3)前述のキャッシュ・メモリが、4つのバンクから成る例のほか、バンク数が異なる場合でも、バンク・アドレスに割り当てる語長を変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0035】
(4)前述のブロック・サイズの種類が3つである場合のほか、ブロック・サイズの種類が3つ以外でも、リプレイスの対象となるキャッシュ・ライン・エレメントの組合せを変更することで、また、ブロック・サイズの種類が3つである場合でも、リプレイスの対象となるキャッシュ・ライン・エレメントの組合せを変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0036】
(5)前述のキャッシュ・メモリ100の各キャッシュ・バンクが、前述の主記憶の各メモリ・バンクと、それぞれ直接にデータ・バスで接続している例のほか、キャッシュ・メモリ100と主記憶106との間を接続するデータ・バスの幅が前述の例より狭い場合においても、マルチプレクサとデ・マルチプレクサとをデータ・バスのインタフェースに設けることで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。
【0037】
(6)前述の主記憶とキャッシュ・メモリのバンク数が等しい例のほか、互いのバンク数が異なっても、データ線をマルチプレクスあるいはデ・マルチプレクスすることで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0038】
(7)前述のブロック・サイズ情報記憶部109が、キャッシュ・ライン毎にブロック・サイズを記憶するブロック・サイズ情報テーブル112を持つ場合のほか、任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定しても、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。図4に、2つのキャッシュ・ライン毎にブロック・サイズを共有するブロック・サイズ情報テーブル212を持つ例を示す。このように、ブロック・サイズをキャッシュ・ライン間で共有することで設定の粒度が大きくなるので、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することが困難になるが、ブロック・サイズ情報テーブルの容量が小さくて済むので、ハードウェア量を削減する効果がある。
【0039】
[第3の実施の形態]
図5は、本発明のブロック・サイズを変更可能なキャッシュ・メモリと、キャッシュ・メモリと接続する主記憶とプロセッサとを示す、第3の実施の形態を示すブロック図である。
図5に示すように、ブロック・サイズ情報記憶部109が、キャッシュ・ライン・エレメント毎にブロック・サイズを記憶しているブロック・サイズ情報テーブル312−1〜312−4を持つ。
【0040】
さらに、キャッシュ・ミスが起きたバンクのブロック・サイズをバンク・アドレスによって選択する第2のマルチプレクサ117を具備し、選択されたブロック・サイズをメモリ・アクセス制御回路111に入力している点が第2の実施の形態と異なる。その他の構成は第2の実施の形態と同様であるので同一の符号を付して説明を省略する。
【0041】
この第3の実施の形態の特徴は、キャッシュ・ミスが起きたキャッシュ・ライン・エレメントに設定されたブロック・サイズが、リプレイス時のデータ転送のサイズとして用いられることである。ブロック・サイズをキャッシュ・ライン・エレメント毎に設定することで、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することができる。
【0042】
第2の実施の形態と異なる点は、同一のキャッシュ・ライン内において互いに異なるブロック・サイズが設定され得ることである。リプレイス時には、キャッシュ・ミスが起きたキャッシュ・バンクのブロック・サイズ情報テーブルに設定されたブロック・サイズが使用され、他のキャッシュ・ライン・エレメントに記憶しているブロック・サイズは使用されない。
このように、ブロック・サイズ情報テーブルの容量が増えハードウェア量が増加するが、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することができるため、元来リプレイスを行う必要のないデータをリプレイスすることを抑える効果が高まる。
【0043】
なお、図5が示す第3の実施の形態では、全てのキャッシュ・バンク毎にブロック・サイズ情報テーブルを設ける例を示しているが、複数のキャッシュ・バンク毎にブロック・サイズ情報テーブルを共有しても良い。このとき、ブロック・サイズ情報テーブルの数を1つまで縮退すると、第2の実施の形態と同様になる。
また、第2の実施の形態における任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定する方法と組み合わせ、各バンク毎に、任意の複数個のキャッシュ・ライン毎にブロック・サイズを共有し、ブロック・サイズ情報テーブルの容量を削減しても良い。
【0044】
[第4の実施の形態]
図6は、本発明のブロック・サイズを変更可能なキャッシュ・メモリと、キャッシュ・メモリと接続する主記憶の全体構成を示す、第4の実施の形態を示すブロック図である。
図6に示すように、アクセス・ビット・アレイ105−1〜105−4と、ライン利用状況判定回路107と、ブロック・サイズ決定回路108とを備える点が第2の実施の形態と異なる。その他の構成は第2の実施の形態と同様であるので、同一の符号を付して説明を省略する。
【0045】
アクセス・ビット・アレイ105−1〜105−4は、データ・アレイ102−1〜102−4の各キャッシュ・ライン・エレメントに記憶しているデータが、それぞれ当該キャッシュ・ライン・エレメントに読み込まれてから、これまでの間にプロセッサ130によってアクセスされたか否かを記憶するものである。ライン利用状況判定回路107は、同一のキャッシュ・ライン内において、現在プロセッサ130がアクセスしているキャッシュ・ライン・エレメントとは別のキャッシュ・ライン・エレメントの中で、キャッシュ・ライン・エレメントが有効であり、かつ、親データのタグ・アドレスと等しいタグ・アドレスを持つデータを記憶しており、かつ、当該データがリプレイス・インされてから、これまでの間にアクセスされたキャッシュ・ライン・エレメントを判定するものである。
この判定は、ライン利用状況判定回路107に比較器104−1〜104−4の出力とアクセス・ビット・アレイ105−1〜105−4の出力とを入力して、その論理積をキャッシュ・バンク毎に求めることで行うことができる。
【0046】
なお、これ以降では、現在プロセッサ130によってアクセスされているキャッシュ・ライン・エレメントが記憶しているデータを親データと呼び、ライン利用状況判定回路107によって、データがリプレイス・インしてから、これまでの間にアクセスされたと判断されたキャッシュ・ライン・エレメントに記憶しているデータの中で、親データ以外のデータを子データと呼ぶことにする。
もし、親データと子データの関係にある各データが同一キャッシュ・ライン内に存在しているならば、両者は既に同一ブロックとして取り扱われているか、または、将来同一ブロックとして取り扱われる可能性がある。
ただし、親データと同一キャッシュ・ライン内で他のキャッシュ・ライン・エレメントに記憶しているデータのタグ・アドレスが、親データのタグ・アドレスと一致したとしても、当該データが一度もアクセスされていないならば、当該データは子データと判定されない。
【0047】
ブロック・サイズ決定回路108は、親データが属するキャッシュ・バンクをバンク・アドレスによって判断し、さらに、ライン利用状況判定回路107の出力により親データと子データの関係にある全てのキャッシュ・ライン・エレメントを判断し、これに並行して、親データが属するキャッシュ・ラインの現在のブロック・サイズをブロック・サイズ情報記憶部109から得て、親データが属するキャッシュ・ラインの新たなブロック・サイズを決定し、ブロック・サイズ情報記憶テーブル112を更新する。
【0048】
ブロック・サイズ決定回路108がブロック・サイズを決定するアルゴリズムは次のとおりである。
ブロック・サイズを決定する方法は2つあり、第1の方法は親データと子データの総数と位置関係とに基づいて決定するもので、第2の方法は親データと子データの総数だけで決定するものである。
【0049】
第1の方法では、親データと子データの総数に加えて、両者の位置関係によりブロック・サイズが決定される。
ここで、キャッシュのバンク数が4で、ブロック・サイズの種類として第2の実施の形態で説明した3種類が存在し、最も左のバンクのバンク・アドレスが0番地となるようにアドレスを割り当てる例を用いて説明する。
まず、現在のブロック・サイズが小のときには、親データと子データとが偶数番地のバンク・アドレスから上位の番地に連続する2個以上のキャッシュ・ライン・エレメントに記憶されているときにブロック・サイズを拡大する。
【0050】
次に、現在のブロック・サイズが中のときには、親データと子データの総数が4個であればブロック・サイズを拡大する。
一方、親データだけのとき、または、親データと子データとが隣接しないとき、または、親データと子データとが奇数番地のバンク・アドレスから上位の番地に2個だけ連続するときにはブロック・サイズを縮小する。
最後に、現在のブロック・サイズが大のときには、親データと子データの総数が2以下のときにブロック・サイズを縮小する。
各ブロック・サイズにおいて、該当しない条件のときにはブロック・サイズを変更しない。
【0051】
このように、親データと子データの総数に加えて両者の位置関係を用いることで、ブロック・サイズを適切に設定することができる。
なお、第1の方法を説明する上記の例以外にも、ブロック・サイズを変更するか否かを決める閾値となる親データと子データの総数と、各データの位置関係を変更することでブロック・サイズを更新する条件を適宜変更することができる。第2の方法では、親データと子データの総数が予め定めた数よりも大きければブロック・サイズが拡大され、一方、予め定めた数よりも小さければブロック・サイズが縮小される。
【0052】
ここで、キャッシュのバンク数が4で、ブロック・サイズの種類として第2の実施の形態で説明した3種類がある場合を例に挙げて説明する。
まず、現在のブロック・サイズが小のときには、親データと子データの総数が2個以上であればブロック・サイズを拡大する。
次に、現在のブロック・サイズが中のときには、親データと子データの総数が4個であればブロック・サイズを拡大し、親データだけであれば縮小する。
最後に、現在のブロック・サイズが大のときには、親データと子データの総数が2個以下であれば縮小する。
各ブロック・サイズにおいて、該当しない条件のときにはブロック・サイズを変更しない。
このように、親データと子データの総数だけを用いることで、ブロック・サイズの決定を簡易に行うことができる。
【0053】
なお、第2の方法を説明する上記の例以外にも、ブロック・サイズを変更するか否かを決める閾値となる親データと子データの総数を変更することで、ブロック・サイズを更新する条件を適宜変更することができる。
さらに、第1または第2の方法では、キャッシュ・バンクの数の増減に関わらず、閾値となる親データと子データの総数と、それらの位置関係を適宜設定することで、ブロック・サイズを変更できる。
また、第1または第2の方法では、キャッシュ・バンクの数の増減に関わらず、閾値となる親データと子データの総数と、それらの位置関係を適宜設定することでブロック・サイズの種類を変更できる。
【0054】
さらに、ブロック・サイズの変化を段階的に行うか否かについて2つの方法があり、第3の方法は現在の親データのブロック・サイズを基に新たなブロック・サイズを決定するもので、第4の方法は現在の親データのブロック・サイズに関わらずに新たなブロック・サイズを決定するものである。
【0055】
ここで、キャッシュのバンク数が4で、ブロック・サイズの種類として第2の実施の形態で説明した3種類がある場合を例に挙げて説明する。
第3の方法では、ブロック・サイズが大から中へ、または、中から小へと段階的に更新し、大から小へといった非連続な変化を行わない。
これにより、空間局所性が及ぶ範囲が大きく異なるデータに稀にアクセスすることによるブロック・サイズの急激な変化を防ぎ、リプレイスに要するサイクル数を平均化することで、プロセッサの処理性能を安定させることができる。
【0056】
一方、第4の方法では、現在のブロック・サイズに無関係に、新たなブロック・サイズを決定するので、小から大へ、または、大から小への変更も起き得る。現在のブロック・サイズを用いないために、新たなブロック・サイズを簡易に決定することができる。
なお、第3または第4の方法では、ブロック・サイズの数の増減に関わらず、いずれのブロック・サイズを更新する方法を採ることができる。
【0057】
ここまでの第1の手法または第2の手法と、第3の手法または第4の手法とを任意に組み合せることで、ブロック・サイズを決定するアルゴリズムとして4通りがある。
また、ブロック・サイズ決定回路108がブロック・サイズを更新する時期として、全てのメモリ参照時、キャッシュにヒットした参照時のみ、キャッシュにミス・ヒットした参照時のみなどがある。
さらに、これらの4通りの手法に対して、ブロック・サイズの更新に過去の参照履歴を利用するか否かを組み合わせても良い。過去の参照履歴を利用するとは、ブロック・サイズを更新するきっかけとなる事象の発生回数を累算し、累算した値が予め定めた値になったときにブロック・サイズを更新するものである。
【0058】
例えば、ブロック・サイズ情報記憶テーブル112のブロック・サイズを記憶する個々のフィールド毎に初期値を0とするカウンタを持たせ、ブロック・サイズ決定回路108が、任意のフィールドのブロック・サイズを大きくすると判断したときに当該カウンタがインクリメントされ、ブロック・サイズを小さくすると判断したときに当該カウンタがデクリメントされる。このようにして、カウンタの値が予め定めた値を越えたときに、当該キャッシュ・エレメントのブロック・サイズを大きくし、カウンタの値が予め定めた値を下回ったときにブロック・サイズを小さくする。
このようにすることで、例外処理などの稀な処理を行うことによるブロック・サイズの急激な変化を抑える効果が高まる。
【0059】
なお、リセット直後のコールド・スタート時等において、キャッシュ・メモリに初めてデータをリプレイス・インする時のブロック・サイズとしては、予め定めた所定のブロック・サイズを用いれば良い。
このように、プログラムの実行中にブロック・サイズ情報記憶テーブル112に記憶するブロック・サイズを随時更新することで、時間の経過に伴って変化する空間局所性の及ぶ範囲の変化に対応することが可能となり、不必要なリプレイスの発生を抑えることができる。
【0060】
ここで、この第4の実施の形態を説明する例では、ブロック・サイズ情報記憶部109が、キャッシュ・ライン毎にブロック・サイズを記憶するブロック・サイズ情報テーブル112を持っていたが、任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定しても同様である。
図7に、2つのキャッシュ・ライン毎にブロック・サイズを共有するブロック・サイズ情報テーブル212を持つ例を示す。
【0061】
このように、ブロック・サイズをキャッシュ・ライン間で共有することで設定の粒度が大きくなるので、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することが困難になるが、ブロック・サイズ情報テーブルの容量が小さくて済むので、ハードウェア量を削減する効果がある。
【0062】
前述の第4の実施の形態の説明では、特定の実施例を挙げたが、これに限定されるものではなく、次に挙げる実施例とすることもできる。
【0063】
(1)前述のキャッシュ・メモリ・システムがダイレクト・マップ方式を採る場合の例のほか、セット・アソシアティブ方式を採る場合でも、ブロック・サイズ情報テーブル112の各フィールドに設定したブロック・サイズをウェイ間で共用することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。
【0064】
(2)前述のキャッシュ・ライン・エレメントの語長が32バイトの例のほか、異なるサイズでもバンク内オフセットに割り当てる語長を変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0065】
(3)前述のキャッシュ・メモリが、4つのバンクから成る例のほか、バンク数が異なる場合でも、バンク・アドレスに割り当てる語長を変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0066】
(4)前述のブロック・サイズの種類が3つである場合のほか、ブロック・サイズの種類が3つ以外でも、リプレイスの対象となるキャッシュ・ライン・エレメントの組合せを変更することで、また、ブロック・サイズの種類が3つである場合でも、リプレイスの対象となるキャッシュ・ライン・エレメントの組合せを変更することで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0067】
(5)前述のキャッシュ・メモリ100の各キャッシュ・バンクが、前述の主記憶の各メモリ・バンクと、それぞれ直接にデータ・バスで接続している例のほか、キャッシュ・メモリ100と主記憶106との間を接続するデータ・バスの幅が前述の例より狭い場合においても、マルチプレクサとデ・マルチプレクサとをデータ・バスのインタフェースに設けることで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。
【0068】
(6)前述の主記憶とキャッシュ・メモリのバンク数が等しい例のほか、互いのバンク数が異なっても、データ線をマルチプレクスあるいはデ・マルチプレクスすることで、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現することができる。
【0069】
(7)前述のブロック・サイズ情報記憶部109が、キャッシュ・ライン毎にブロック・サイズを記憶するブロック・サイズ情報テーブル112を持つ場合のほか、任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定しても、本発明の、データのブロック・サイズを変更可能なキャッシュ・メモリ・システムを実現できる。図4に、2つのキャッシュ・ライン毎にブロック・サイズを共有するブロック・サイズ情報テーブル212を持つ例を示す。このように、ブロック・サイズをキャッシュ・ライン間で共有することで設定の粒度が大きくなるので、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することが困難になるが、ブロック・サイズ情報テーブルの容量が小さくて済むので、ハードウェア量を削減する効果がある。
【0070】
[第5の実施の形態]
図8は、本発明のブロック・サイズを変更可能なキャッシュ・メモリと、キャッシュ・メモリと接続する主記憶とプロセッサとを示す、第5の実施の形態を示すブロック図である。
【0071】
図8に示すように、ブロック・サイズ情報記憶部109が、キャッシュ・ライン・エレメント毎にブロック・サイズを記憶しているブロック・サイズ情報テーブル312−1〜312−4を持つ。
さらに、キャッシュ・ミスが起きたバンクのブロック・サイズをバンク・アドレスによって選択する第2のマルチプレクサ117と、更新しようとするブロック・サイズ情報テーブル312−1〜312−4をバンク・アドレスによって選択するデ・マルチプレクサとを具備している点が第4の実施の形態と異なる。
その他の構成は第4の実施の形態と同様であるので、同一の符号を付して説明を省略する。
【0072】
この第5の実施の形態の特徴は、第3の実施の形態と同様にキャッシュ・ミスが起きたキャッシュ・ライン・エレメントに設定されたブロック・サイズが、リプレイス時のデータ転送のサイズとして用いられることである。ブロック・サイズをキャッシュ・ライン・エレメント毎に設定することで、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することができる。
第5の実施の形態と異なる点は、第3の実施の形態と同様に同一のキャッシュ・ライン内において互いに異なるブロック・サイズが設定され得ることである。リプレイス時には、キャッシュ・ミスが起きたキャッシュ・バンクのブロック・サイズ情報テーブルに設定されたブロック・サイズが使用され、他のキャッシュ・ライン・エレメントに記憶しているブロック・サイズは使用されない。
【0073】
このように、キャッシュ・ライン・エレメント毎にブロック・サイズを設定することで、ブロック・サイズ情報テーブルの容量が増えハードウェア量が増加するが、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することができるため、元来リプレイスを行う必要のないデータをリプレイスすることを抑える効果が高まる。
なお、図8が示す第5の実施の形態では、全てのキャッシュ・バンク毎にブロック・サイズ情報テーブルを設ける例を示しているが、複数のキャッシュ・バンク毎にブロック・サイズ情報テーブルを共有しても良い。このとき、ブロック・サイズ情報テーブルの数を1つまで縮退すると、第4の実施の形態と同様になる。
なお、第4の実施の形態における任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定する方法と組み合わせ、各バンク毎に、任意の複数個のキャッシュ・ライン毎にブロック・サイズを共有し、ブロック・サイズ情報テーブルの容量を削減しても良い。
【0074】
[第6の実施の形態]
図9は、本発明のブロック・サイズの変更可能なキャッシュ・メモリと、キャッシュ・メモリと接続する主記憶の全体構成を示す第6の実施の形態を示すブロック図である。
【0075】
基本的には図6に示す第4の実施の形態と同様であるが、ブロック・サイズ情報記憶部109が、キャッシュ・ライン毎にブロック・サイズを記憶するヒストリ・テーブル113と、ヒストリ・テーブル113に記憶したブロック・サイズに該当するキャッシュ・ラインのタグ・アドレスを記憶する第2のタグ・アレイ119と、アクセス・アドレス中のタグ・アドレスと第2のタグ・アレイ119の出力を比較する第2の比較器120とを備え、さらに、アクセス・アドレス中のバンク・アドレスによって第2のタグ・アレイ119に入力するタグ・アドレスを選択する、タグ選択回路114とを具備し、データを主記憶にリプレイス・アウトする場合に、キャッシュ・ライン全体がリプレイス・アウトの対象となる点が、第4の実施の形態と異なる。
その他の構成は図6に示す第4の実施の形態と同様であるので、同一の符号を付して説明を省略する。
【0076】
この第6の実施の形態では、データを主記憶にリプレイス・アウトするときに、タグ選択回路114が選択したキャッシュ・バンクのタグ・アドレスを第2のタグ・アレイ119に記憶し、主記憶にリプレイス・アウトするデータのブロック・サイズをヒストリ・テーブル113に記憶する。
データを主記憶からキャッシュ・メモリにリプレイス・インするときには、当該データが過去にキャッシュ・メモリから主記憶にリプレイス・アウトされた時にヒストリ・テーブル113に記憶した、当該データのブロック・サイズが、現在もヒストリ・テーブル113内に記憶されているか否かを調べる。
【0077】
これは、アクセス・アドレスのインデックス・アドレスとタグ・アドレスとを用い、キャッシュ・メモリ中に記憶しているデータを検索する方法と同様の方法で実現することができる。つまり、アクセス・アドレス中のインデックス・アドレスでヒストリ・テーブル113と第2のタグ・アレイとを検索し、アクセス・アドレス中のタグ・アドレスと第2のタグ・アレイが出力したタグ・アドレスとが一致した場合、当該データのブロック・サイズがヒストリ・テーブルに記憶されていると判断する。当該データのブロック・サイズがヒストリ・テーブル113に記憶されていた場合には、メモリ・アクセス制御回路111が、そのブロック・サイズでデータをリプレイス・インする。当該データのブロック・サイズがヒストリ・テーブルに記憶されていない場合には、予め定めた所定のブロック・サイズで、当該データを含むメモリ・ラインのデータをキャッシュ・メモリにリプレイス・インする。
【0078】
なお、この第6の実施の形態を説明する例では、リプレイス・アウトするときに、キャッシュ・ミスを起こしたキャッシュ・ライン全体をリプレイス・アウトしていたが、ダーティになっているキャッシュ・ライン・エレメントのデータのみをリプレイス・アウトしても良い。これは、更新されていないキャッシュ・ライン・エレメントのデータをリプレイス・アウトする必要はないからである。
【0079】
また、この第6の実施の形態を説明する例では、ブロック・サイズ情報記憶部109が、キャッシュ・ライン毎にブロック・サイズを記憶するブロック・サイズ情報テーブル112を持っていたが、任意の複数個のキャッシュ・ライン毎に共通のブロック・サイズを設定しても同様である。図10に、2つのキャッシュ・ライン毎にブロック・サイズを共有するブロック・サイズ情報テーブル212を持つ例を示す。
【0080】
このように、ブロック・サイズをキャッシュ・ライン間で共有することで設定の粒度が大きくなるので、アドレス空間中における空間局所性の及ぶ範囲の違いに細かく対応することが困難になるが、ブロック・サイズ情報テーブルの容量が小さくて済むので、ハードウェア量を削減する効果がある。
【0081】
【発明の効果】
以上に述べたように、本発明によれば下記の効果を奏する。
(1)第1の課題を解決するための、第1の実施の形態によれば、キャッシュ・メモリと主記憶との間でリプレイスするデータのブロック・サイズをキャッシュ・メモリ内の任意の記憶空間毎に設定する手段を設けることで、アドレス空間中における空間局所性の及ぶ範囲の違いに対応してブロック・サイズを設定することが可能となり、不必要なリプレイスの発生を抑えることができる。
【0082】
(2)特に、第2または第3の実施の形態によれば、キャッシュ・メモリと主記憶との間でリプレイスするデータのブロック・サイズをキャッシュ・メモリ内の任意の記憶空間毎に設定する手段を設け、プログラムの実行前に解析しておいた記憶空間毎のブロック・サイズを設定することで、アドレス空間中における空間局所性の及ぶ範囲の違いに対応してブロック・サイズを設定することを実現する。
【0083】
(3)第2の課題を解決するための、第4または第5または第6の実施の形態によれば、キャッシュ・メモリと主記憶との間でリプレイスするデータのブロック・サイズをキャッシュ・メモリ内の任意の記憶空間毎に設定する手段と、このブロック・サイズを設定する手段に設定するブロック・サイズを、キャッシュ・メモリに記憶しているデータに対してプロセッサが参照した履歴を基に決定する手段とを設けて、随時ブロックサイズを更新することで、プログラムの実行に伴う空間局所性の及ぶ範囲の変化に対応することが可能となる。
【図面の簡単な説明】
【図1】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの概念を示す、第1の実施の形態のブロック図である。
【図2】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの、キャッシュ・ライン毎にブロック・サイズを設定する第2の実施の形態を示すブロック図である。
【図3】 本発明におけるアドレッシングを示すブロック図である。
【図4】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの第2の実施の形態を基に、複数のキャッシュ・ライン毎にブロック・サイズを設定する形態に変更した例を示すブロック図である。
【図5】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの、キャッシュ・ライン・エレメント毎にブロックサイズを設定する第3の実施の形態を示すブロック図である。
【図6】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの、キャッシュ・ライン毎にブロック・サイズを更新可能な第4の実施の形態を示すブロック図である。
【図7】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの、第4の実施の形態を基に、複数のキャッシュ・ライン毎にブロック・サイズを更新可能な形態に変更した例を示すブロック図である。
【図8】 本発明のブロック・サイズを変更可能なキャッシュ・メモリの、キャッシュ・ライン・エレメント毎にブロック・サイズを更新可能な第5の実施の形態を示すブロック図である。
【図9】 本発明のブロック・サイズを変更可能なキャッシュ・メモリにおいて、第4の実施の形態を基に、キャッシュ・メモリから主記憶にリプレイス・アウトしたデータのブロック・サイズを記憶する手段を設け、当該データをリプレイス・インするときに当該ブロック・サイズに従って行うことを特徴とする第6の実施の形態を示すブロック図である。
【図10】 本発明のブロック・サイズを変更可能なキャッシュ・メモリにおいて、第6の実施の形態を基に、複数のキャッシュ・ライン毎にブロック・サイズを更新可能な形態に変更した例を示すブロック図である。
【図11】 従来のキャッシュ・メモリの実施例を示すブロック図である。
【符号の説明】
100 キャッシュ・メモリ
101−1〜101−4 キャッシュ・バンク
102−1〜102−4 データ・アレイ
103−1〜103−4 タグ・アレイ
104−1〜104−4 比較器
105−1〜105−4 有効フラグ・アレイ
106 主記憶
106−1〜106−4 メモリ・バンク
107 ライン利用状況判定回路
108 ブロック・サイズ決定回路
109 ブロック・サイズ情報記憶部
110 第1のマルチ・プレクサ
111 メモリ・アクセス制御回路
112、212、312−1〜312−4 ブロック・サイズ情報テーブル
113 ヒストリ・テーブル
114 タグ選択回路
116−1〜116−4 アクセス・ビット・アレイ
117 第2のマルチプレクサ
118 デ・マルチプレクサ
119 第2のタグ・アレイ
120 第2の比較器
130 プロセッサ
Claims (4)
- 主記憶に記憶しているデータを一時的に記憶するキャッシュ・メモリを備え、プロセッサが前記キャッシュ・メモリにアクセスするキャッシュ・メモリ・システムであって、
前記キャッシュ・メモリと前記主記憶との間で置き換えるデータのサイズを、前記キャッシュ・メモリ内の予め定めた大きさの複数の記憶空間毎に記憶するブロック・サイズ情報記憶手段を備え、
前記キャッシュ・メモリ内の前記記憶空間に対する前記プロセッサのアクセスがキャッシュ・ミスを起こした時に、
前記キャッシュ・メモリ内の前記キャッシュ・ミスを起こした前記記憶空間と前記主記憶との間で、
前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、
データを置き換える手段を備えたキャッシュ・メモリ・システムにおいて、
前記プロセッサが出力するアクセス・アドレスは、タグ・アドレスとインデックス・アドレスとバンク・アドレスとバンク内オフセットの各フィールドを備え、
前記キャッシュ・メモリは少なくとも二つのキャッシュ・バンクから成り、
前記の各キャッシュ・バンクは、前記バンク内オフセットで指定する語数のデータを記憶するエレメントの集合から成るデータ・アレイと、前記データ・アレイの各エレメントに記憶しているデータが有効であるか否かを記憶する有効フラグの集合から成る有効フラグ・アレイと、前記データ・アレイの各エレメントに記憶しているデータの各タグ・アドレスを記憶するタグ・アレイを有し、
前記データ・アレイと前記有効フラグ・アレイと前記タグ・アレイとは、それぞれ、前記インデックス・アドレスによって指定された前記エレメントのデータと、当該データの有効フラグの値と、当該データのタグ・アドレスとを出力するものであり、
さらに前記の各キャッシュ・バンクは、前記有効フラグの値が前記エレメントに有効なデータを記憶していることを示すときに、前記タグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する比較器を備え、
前記バンク・アドレスによって指定された前記キャッシュ・バンクの比較器の比較結果を選択して出力する第1のマルチプレクサと、
前記キャッシュ・メモリ内の前記記憶空間毎の前記サイズを、前記インデックス・アドレスで参照する前記ブロック・サイズ情報記憶手段と、
前記キャッシュ・メモリと前記主記憶との間でデータを置き換える制御を行うメモリ・アクセス制御回路とを備え、
前記メモリ・アクセス制御回路が、前記プロセッサが前記アクセス・アドレスを出力した時に、前記第1のマルチプレクサの出力によってキャッシュ・ミスが起きたか否かを判定し、キャッシュ・ミスが起きた時には、前記メモリ・アクセス制御回路が、前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換えることを特徴とするキャッシュ・メモリ・システム。 - 主記憶に記憶しているデータを一時的に記憶するキャッシュ・メモリを備え、プロセッサが前記キャッシュ・メモリにアクセスするキャッシュ・メモリ・システムであって、
前記キャッシュ・メモリと前記主記憶との間で置き換えるデータのサイズを、前記キャッシュ・メモリ内の予め定めた大きさの複数の記憶空間毎に記憶するブロック・サイズ情報記憶手段を備え、
前記キャッシュ・メモリ内の前記記憶空間に対する前記プロセッサのアクセスがキャッシュ・ミスを起こした時に、
前記キャッシュ・メモリ内の前記キャッシュ・ミスを起こした前記記憶空間と前記主記憶との間で、
前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、
データを置き換える手段を備えたキャッシュ・メモリ・システムにおいて、
前記プロセッサが出力するアクセス・アドレスは、タグ・アドレスとインデックス・アドレスとバンク・アドレスとバンク内オフセットの各フィールドを備え、
前記キャッシュ・メモリは少なくとも二つのキャッシュ・バンクから成り、
前記の各キャッシュ・バンクは、前記バンク内オフセットで指定する語数のデータを記憶するエレメントの集合から成るデータ・アレイと、前記データ・アレイの各エレメントに記憶しているデータが有効であるか否かを記憶する有効フラグの集合から成る有効フラグ・アレイと、前記データ・アレイの各エレメントに記憶しているデータの各タグ・アドレスを記憶するタグ・アレイと、前記データ・アレイの各エレメントに記憶している各データが、それぞれ前記エレメントに読み込まれてから、これまでの間に前記プロセッサによって参照されたか否かを記憶するアクセス・ビットの集合から成るアクセス・ビット・アレイとを有し、
前記データ・アレイと前記有効フラグ・アレイと前記タグ・アレイと前記アクセス・ビット・アレイとは、それぞれ、前記インデックス・アドレスによって指定された前記エレメントのデータと、当該データの有効フラグの値と、当該データのタグ・アドレスと、当該データのアクセス・ビットの値とを出力するものであり、
さらに前記の各キャッシュ・バンクは、前記有効フラグの値が前記エレメントに有効なデータを記憶していることを示すときに、前記タグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する比較器を備え、
前記バンク・アドレスによって指定された、前記キャッシュ・バンクの比較器の比較結果を選択して出力する第1のマルチプレクサと、
前記インデックス・アドレスによって指定された、前記キャッシュ・メモリ内の前記記憶空間毎の前記サイズを出力する前記ブロック・サイズ情報記憶手段と、
前記の全てのキャッシュ・バンクの比較器が出力する比較結果と、前記の全てのキャッシュ・バンクのアクセス・ビットが出力する値とが入力されると、前記比較結果が一致しており、かつ、前記出力されたアクセス・ビットの値が前記プロセッサによって参照されたことを示す時に、当該キャッシュ・バンクを指す信号を出力するライン利用状況判定回路と、
前記インデックス・アドレスによって指定された前記キャッシュ・メモリ内の前記記憶空間の前記サイズと、前記バンク・アドレスと、前記ライン利用状況判定回路の出力とが入力されると、当該記憶空間の新たな前記サイズを決定するブロック・サイズ決定回路と、
前記キャッシュ・メモリと前記主記憶との間でデータを置き換える制御を行うメモリ・アクセス制御回路とを備え、
前記メモリ・アクセス制御回路が、前記プロセッサが前記アクセス・アドレスを出力した時に、前記第1のマルチプレクサの出力によってキャッシュ・ミスが起きたか否かを判定し、
キャッシュ・ミスが起きた時には、前記メモリ・アクセス制御回路が、前記ブロック・サイズ情報記憶手段に記憶している前記サイズの中で、前記キャッシュ・ミスを起こした前記記憶空間に該当するブロック・サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換え、
前記ブロック・サイズ決定回路が、前記ブロック・サイズ情報記憶手段に記憶する前記サイズを更新することを特徴とするキャッシュ・メモリ・システム。 - 前記ブロック・サイズ情報記憶手段は、前記キャッシュ・メモリ内の各エレメント毎に前記サイズを記憶し、前記バンク・アドレスによって指定されたキャッシュ・バンクの前記サイズを選択して出力する第2のマルチプレクサを有し、
前記メモリ・アクセス制御回路が、キャッシュ・ミスが起きた時には、前記第2のマルチプレクサが出力した前記サイズで、前記キャッシュ・ミスを起こした前記記憶空間と前記アクセス・アドレスによって指定された前記主記憶との間でデータを置き換えることを特徴とする請求項1または2記載のキャッシュ・メモリ・システム。 - 前記ブロック・サイズ情報記憶手段は、
前記主記憶に書き戻したデータの、タグ・アドレスを記憶する第2のタグ・アレイと前記サイズを記憶するテーブルとを備え、
前記インデックス・アドレスで前記第2のタグ・アレイと前記テーブルとを参照すると前記タグ・アドレスと前記サイズとが出力され、前記第2のタグ・アレイが出力したタグ・アドレスと前記アクセス・アドレス中のタグ・アドレスとを比較して比較結果を出力する第2の比較器と、
前記の全てのキャッシュ・バンクのタグ・アレイの出力から、前記第2のタグ・アレイに入力するタグ・アドレスを前記バンク・アドレスで選択するタグ選択回路とを具備し、
前記メモリ・アクセス制御回路は、
キャッシュ・ミスが起きた時に、前記第2の比較器による、前記アクセス・アドレスのタグ・アドレスと前記第2のタグ・アレイが出力したタグ・アドレスとの比較結果が一致していれば、前記インデックス・アドレスで指定される前記テーブルに記憶している前記サイズで、前記主記憶に書き戻したデータを再度キャッシュ・メモリに読み込み、
前記タグ選択回路で選択されたタグ・アドレスと、前記キャッシュ・ミスを起こした前記インデックス・アドレスによって指定される、前記キャッシュ・メモリ内の前記記憶空間に該当する前記サイズとを、それぞれ前記第2のタグ・アレイと前記テーブルとに記憶する構成としたことを特徴とする請求項2記載のキャッシュ・メモリ・システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP07102199A JP4071886B2 (ja) | 1998-03-20 | 1999-03-16 | ブロック・サイズを変更可能なキャッシュ・メモリ・システム |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10-72655 | 1998-03-20 | ||
JP7265598 | 1998-03-20 | ||
JP7266198 | 1998-03-20 | ||
JP10-72661 | 1998-03-20 | ||
JP07102199A JP4071886B2 (ja) | 1998-03-20 | 1999-03-16 | ブロック・サイズを変更可能なキャッシュ・メモリ・システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11328014A JPH11328014A (ja) | 1999-11-30 |
JP4071886B2 true JP4071886B2 (ja) | 2008-04-02 |
Family
ID=27300511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP07102199A Expired - Fee Related JP4071886B2 (ja) | 1998-03-20 | 1999-03-16 | ブロック・サイズを変更可能なキャッシュ・メモリ・システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4071886B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010116735A1 (ja) * | 2009-04-10 | 2010-10-14 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002360640A1 (en) * | 2002-12-17 | 2004-07-29 | International Business Machines Corporation | Selectively changeable line width memory |
JP4529501B2 (ja) * | 2004-03-18 | 2010-08-25 | セイコーエプソン株式会社 | プリンタ、画像印刷システムおよび印刷方法 |
KR100833178B1 (ko) * | 2005-08-26 | 2008-05-28 | 삼성전자주식회사 | 캐시 메모리에 저장되는 블록개수를 제어할 수 있는 캐시메모리 시스템 및 동작 방법 |
JP5978814B2 (ja) * | 2012-07-09 | 2016-08-24 | 富士通株式会社 | メモリ装置、演算処理装置、及びキャッシュメモリの制御方法 |
-
1999
- 1999-03-16 JP JP07102199A patent/JP4071886B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010116735A1 (ja) * | 2009-04-10 | 2010-10-14 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路 |
Also Published As
Publication number | Publication date |
---|---|
JPH11328014A (ja) | 1999-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6349364B1 (en) | Cache memory system with variable block-size mechanism | |
US7694077B2 (en) | Multi-port integrated cache | |
US8055681B2 (en) | Data storage method and data storage structure | |
WO1994003856A1 (en) | Column-associative cache | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
US20030154351A1 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
US6701417B2 (en) | Method and apparatus for supporting multiple cache line invalidations per cycle | |
CN104572494A (zh) | 存储系统及标记存储器 | |
US20130132678A1 (en) | Information processing system | |
KR100395768B1 (ko) | 멀티 레벨 캐쉬 시스템 | |
EP1537485B1 (en) | Reverse directory for facilitating accesses involving a lower-level cache | |
JP4071886B2 (ja) | ブロック・サイズを変更可能なキャッシュ・メモリ・システム | |
US7555610B2 (en) | Cache memory and control method thereof | |
US7010649B2 (en) | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache | |
US20020019912A1 (en) | Multi-port cache memory | |
CN104778132A (zh) | 一种多核处理器目录缓存替换方法 | |
US6901450B1 (en) | Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors | |
US7917700B2 (en) | Method and cache control circuit for replacing cache lines using alternate PLRU algorithm and victim cache coherency state | |
TW201101028A (en) | Cache controller, a method for controlling the cache controller, and a computing system | |
CN115563029A (zh) | 一种基于两层缓存结构的缓存方法及装置 | |
US20030204665A1 (en) | High performance architecture with shared memory | |
CN113722244B (zh) | 一种高速缓存结构、访问方法和电子设备 | |
US20240070073A1 (en) | Page cache and prefetch engine for external memory | |
CN118672967A (zh) | 权重可配置的片上网络缓存系统、方法、数据更新方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050603 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050603 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050603 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050603 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071001 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071012 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071211 |
|
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: 20071221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080118 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120125 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130125 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |