JPH09282225A - キャッシュ競合の識別、及び解決のための方法及びその装置 - Google Patents

キャッシュ競合の識別、及び解決のための方法及びその装置

Info

Publication number
JPH09282225A
JPH09282225A JP8342856A JP34285696A JPH09282225A JP H09282225 A JPH09282225 A JP H09282225A JP 8342856 A JP8342856 A JP 8342856A JP 34285696 A JP34285696 A JP 34285696A JP H09282225 A JPH09282225 A JP H09282225A
Authority
JP
Japan
Prior art keywords
cache
array
contention
main memory
memory
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.)
Pending
Application number
JP8342856A
Other languages
English (en)
Inventor
David R Wallace
デイヴィッド・アール・ウォレイス
Gary Oblock
ゲイリー・オブロック
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09282225A publication Critical patent/JPH09282225A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 メインメモリとマイクロプロセッサとに接続
されるメモリキャッシュを有するコンピュータシステム
において、メインメモリ中に格納されるデータアレイ間
のキャッシュ競合を識別し解決するための方法及び装置
を提供する。 【解決手段】 本発明に係る方法によれば、キャッシュ
の大きさ、及び次元を特徴付けるキャッシュ形状ベクト
ルが決定される。メインメモリ中に格納されているアレ
イ間におけるキャッシュ競合が判定され、競合するアレ
イに対応するキャッシュ中の競合領域が決定される。そ
して、競合するアレイからのデータを、メインメモリか
らキャッシュへ転送する際のキャッシュ競合を防ぐため
に、メインメモリ中に格納されているアレイに対応する
パディング値が決定され、そのパディング値に従って、
アレイのメモリロケーションが調整される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピューティン
グシステム、及びコンピューティングシステムにおける
コンパイラ設計の技術分野に関連する。より詳細には、
本発明は、コンピューティングシステムのメモリに格納
されたデータ配列(アレイ)間に供給されるべき、パデ
ィング量を決定するための装置、及び方法に関する。
【0002】
【従来の技術】マイクロプロセッサの演算速度の向上、
及びメモリ容量の増加の組み合わせは、科学的、及び工
学的な演算の応用に対して大きな利益をもたらしてき
た。今日の最速のマイクロプロセッサを使用すれば、膨
大なデータ量が比較的短期間に処理され得る。したがっ
て、画像処理、及び流体力学や天気予報のような自然現
象のコンピュータシミュレーションといった分野におい
て、非常に正確な演算結果を得ることができる。
【0003】着実にコストが低下する状況の中、演算速
度は、飛躍的に増大してきたが、マイクロプロセッサの
データ処理能力に匹敵する速度でデータ供給可能なコン
ピュータメモリは、依然として相対的に高価である。し
たがって、多くの高性能コンピュータシステムは、処理
されるべき大きなデータ集合を格納するために、依然と
して安価で、遅いメモリに依存している。
【0004】システムの能力を向上させるために、コン
ピュータ設計者は、マイクロプロセッサによって頻繁に
アクセスされるデータを格納するために用いられる、多
少高価であるが非常に高速なメモリ、例えば、静的ラン
ダムアクセスメモリ(SRAM)を妥協的な解決策とし
て開発してきた。
【0005】安価で、遅いランダムアクセスメモリ(R
AM)中には、データの大部分が存在している。データ
は、マイクロプロセッサの要求に応じて、高速メモリと
低速メモリの間でスワップされる。このような設計は、
一般的に「キャッシング」と呼ばれている。
【0006】一般的に、キャッシュは、固定数のいくつ
かの連続メモリロケーションによって構成される行に分
割される。キャッシュにおける各行は、そのキャッシュ
行の内容に対応するメインメモリアドレスを保持する関
連タグレジスタを有している。マイクロプロセッサは、
データアクセスを実行すると、メインメモリアドレスを
いくつかの固定キャッシュ行上にマップする。
【0007】そして、アドレスが、行に対応するいずれ
かのタグと一致していないかを決定するためにチェック
が実行される。アドレスとタグとの一致が見つかった場
合には、その行がマイクロプロセッサによってアクセス
され、データが処理される。これに対して、一致が見つ
からなかった場合には、そのデータアクセス操作は、
「ミス」といわれる。
【0008】一般的には、ミスが発生した場合には、セ
ット中の行の1つがメインメモリの他のセクションから
のデータに置き換えられる。ミスが発生したときに、ど
のキャッシュ行を置き換えるべきかを決定するために、
いくつかの方式を利用することができる。キャッシュ行
の内容を置換するために用いられる一般的な2つの方式
には、最後に使用した時刻が最も古いデータを置換する
LRU方式、1つのキャッシュ行を無作為に置換するラ
ンダム方式がある。
【0009】これらの方式は、ほとんどの状況で有効に
機能するが、実行されているソフトウェアによりもたら
される異なるアレイに対するアクセスパターンが、アレ
イを同一キャッシュ行上にマップさせる場合には、問題
が発生するおそれがある。この場合には、プロセッサ
が、競合するアレイからのデータにアクセスしようとす
る際、同一キャッシュ行が継続的に置換されるので、シ
ステムの能力は、著しく低下するおそれがある。
【0010】このような事象は、「キャッシュ競合」と
呼ばれ、データ処理操作中にデータスワップが繰り返し
実行されるので、プロセッサ性能を著しく低下させるお
それがある。この競合は、アレイからのデータに対する
アクセスパターンの競合により現れるので、キャッシュ
競合は、大きなアレイに格納されているデータに依存す
ることが多い、科学的、及び工学的な応用演算を実行す
る際に最も頻繁に発生する傾向がある。とはいえ、アレ
イ中のデータを処理するソフトウェアであれば、皆キャ
ッシュ競合を発生させる可能性がある。
【0011】いくつかの場合には、連想キャッシュを使
用することにより、キャッシュ競合は軽減されるが、連
想キャッシュは高価であるとともに、実現が困難であ
り、未だ、キャッシュ競合の問題を解決するための一般
的な解決方法としては提供されていない。しかしなが
ら、一般的に、キャッシュ競合が発生する場合には、競
合するデータアクセスパターンを取り除くために、競合
するアレイ間にどれぐらいのスペースが要求されるか決
定するために試行錯誤法が用いられる。このスペーシン
グはまた、「パディング」と呼ばれる。必要なパディン
グを分析して決定することによりキャッシュ競合の問題
を解決するために、いくつかの試みが実行されてきた。
【0012】そのような試みの一つに、いくつかのキャ
ッシュ競合の生ずるアドレスに対するアレイパディング
を決定する方法がある。
【0013】
【発明が解決しようとする課題】しかしながら、この方
法は、記憶の使用に大きく依存しており、また、競合を
検出し、並びにパディングを決定するため、アレイが同
一キャッシュ行上にマップされているか否かを決定する
ために、アレイに対応する参照基準アレイをペア形式で
比較するという幾らか乱暴な方法を使用している。いず
れか2つのアレイの第1次元の差がキャッシュサイズの
倍数の場合には、競合がそれらのアレイ間に発生し、そ
れらのアレイ間にパディングが与えられなければならな
い。都合の悪いことに、キャッシュ競合を検出し、解決
するためのスカラ解法は、構成上、非効率的である。
【0014】大容量データ、特に、演算、及び工学的、
科学的応用演算にて一般的に実行される大きなアレイに
格納されているデータを処理するための高性能コンピュ
ータシステムの使用は、最も高いレベルのシステム能力
を要求する。しかしながら、キャッシュ競合に起因し
て、現在、そのような高いレベルを達成することは、非
常に困難である。これら競合を解決するためにいくつか
の方法が利用可能であるが、それらは、相変わらす非効
率であり利用に耐えない。
【0015】本発明は、上記した従来技術の問題点を解
決するためになされたものであり、キャッシュ競合を予
想することが可能であり、効率的な方法で、適当なアレ
イパディングを決定し、実行することができる装置、及
び方法を提供することを目的とする。
【0016】
【課題を解決するための手段】上記目的を達成するため
に請求項1に記載の発明に係るキャッシュ競合の識別、
及び解決のための方法は、マイクロプロセッサに接続さ
れるメモリキャッシュと、メモリキャッシュに接続され
るメインメモリと、メインメモリ中に格納されるととも
に、マイクロプロセッサによる処理のためにメモリキャ
ッシュ中へローディングするのに好適なデータアレイと
を備えるコンピュータシステムにおける、キャッシュ競
合の識別、及び解決のための方法であって、前記メモリ
キャッシュの大きさ、及び次元を特徴付けるキャッシュ
形状ベクトルを決定するステップと、前記メインメモリ
中に格納されている前記アレイ間における、1以上のキ
ャッシュ競合を判定するステップと、前記メインメモリ
中に格納されている競合する前記アレイに対応する競合
領域を決定するステップと、前記メインメモリ中に格納
されている競合する前記アレイに対応するパディング値
を決定するステップと、前記格納されているアレイを、
前記メモリキャッシュ中に転送し、ロードする際のキャ
ッシュ競合を防止するために、前記メインメモリ中に格
納され、競合している前記アレイのロケーションを前記
パディング値に従って調整するステップとを備えること
を特徴とする。
【0017】請求項2に記載の発明に係る方法は、請求
項1に記載の方法において、前記キャッシュ形状ベクト
ル決定ステップが、前記キャッシュの大きさに対応する
数値を決定するステップと、前記キャッシュ形状ベクト
ルを導出するために、前記キャッシュの大きさを示す数
値を、格納されているアレイの次元により定義される数
値基準に変換するステップとを備えることを特徴とす
る。
【0018】請求項3に記載の発明に係る方法は、請求
項2に記載の方法において、前記キャッシュ競合判定ス
テップが、前記メインメモリ中に格納されている2つの
アレイに対応する衝突ベクトルを決定するステップと、
前記衝突ベクトルが前記キャッシュ形状ベクトルの倍数
の近似値であるか否かを決定するステップとを備えるこ
とを特徴とする。
【0019】請求項4に記載の発明に係る方法は、請求
項3に記載の方法において、前記競合領域決定ステップ
が、前記メインメモリ中における各アレイのペア形式の
組み合わせに対応する競合間隔を決定するステップと、
前記競合領域を決定するために、全競合間隔の和演算を
するステップと、前記競合領域をラッピングするステッ
プとを備えることを特徴とする。
【0020】請求項5に記載の発明に係る方法は、請求
項4に記載の方法において、前記衝突ベクトル決定ステ
ップが、各アレイ呼出しの写しの数を決定するステップ
と、前記メインメモリ中におけるアレイの変位を決定す
るステップと、前記変位の数値を、前記衝突ベクトルと
同一の数値基準に変換するステップとを備えることを特
徴とする。
【0021】請求項6に記載の発明に係る方法は、請求
項5に記載の方法において、前記パディング決定ステッ
プが、前記競合領域の和演算の補数の最小値を決定する
ステップを備えることを特徴とする。
【0022】請求項7に記載の発明に係る方法は、請求
項6に記載の方法において、前記調整ステップが、前記
パディング値を、前記メインメモリ中に格納されている
各アレイの第1メインメモリアドレスに加えるステップ
を備えることを特徴とする。
【0023】請求項8に記載の発明に係るコンピュータ
システムは、マイクロプロセッサに接続されるメモリキ
ャッシュと、メモリキャッシュに接続されるメインメモ
リと、メインメモリ中に格納されるとともに、マイクロ
プロセッサによる処理のためにメモリキャッシュ中へロ
ーディングするのに好適なデータアレイとを備えるコン
ピュータシステムであって、前記メインメモリ中に格納
されている前記データアレイに対応する前記メモリアド
レスが、前記請求項1に記載の方法を用いて決定された
パディング領域によって分離されることを特徴とする。
【0024】請求項9に記載の発明に係るキャッシュ競
合の識別、及び解決のためのプログラムを記録した媒体
は、メインメモリと接続されるとともに、メインメモリ
中に格納されているアレイをその中にロードしてマイク
ロプロセッサで処理するために、マイクロプロセッサと
も接続されるメモリキャッシュを備えるコンピュータシ
ステムにおけるキャッシュ競合の識別、及び解決のため
のプログラムを記録した媒体であって、このプログラム
が、前記請求項1に記載の方法を用いて決定されるパデ
ィング領域によって、前記メインメモリ中に位置する2
以上の前記アレイのロケーションを分離することを特徴
とする。
【0025】請求項10に記載の発明に係るコンピュー
タシステムは、メモリキャッシュに接続されるメインメ
モリ中に格納されているアレイ間におけるキャッシュ競
合を防ぐように構成されたコンピュータシステムであっ
て、前記メモリキャッシュに接続されるマイクロプロセ
ッサと、前記メインメモリ中に格納されている2以上の
データアレイと、前記メインメモリ中に格納されている
アレイの少なくとも一部を前記メモリキャッシュに転送
し、また、前記アレイの転送済部分を前記メモリキャッ
シュにロードするためのデータパス、及びデータローデ
ィング機構と、キャッシュ形状ベクトル決定機構を備え
るとともに、前記メインメモリ中に格納されているアレ
イ間におけるキャッシュ競合の存在を判定するためのキ
ャッシュ競合検出機構と、前記格納されているアレイを
前記メモリキャッシュに転送、及びロードする際のキャ
ッシュ競合を防止するために、前記格納されているアレ
イのメインメモリロケーションを調整するためのパディ
ング機構とを備えることを特徴とする。
【0026】請求項11に記載の発明に係るコンピュー
タシステムは、請求項10に記載のコンピュータシステ
ムにおいて、前記キャッシュ競合検出機構が、競合領域
決定機構を有することを特徴とする。
【0027】請求項12に記載の発明に係るコンピュー
タシステムは、請求項11に記載のコンピュータシステ
ムにおいて、前記キャッシュ形状決定機構が、前記キャ
ッシュの大きさを決定するためのキャッシュ大きさ評価
器、及び前記キャッシュ形状ベクトルを導出するため
に、前記キャッシュの大きさを格納されているアレイの
次元によって定義される前記数値基準で表すためのキャ
ッシュ大きさ変換器を備えることを特徴とする。
【0028】請求項13に記載の発明に係るコンピュー
タシステムは、請求項11に記載のコンピュータシステ
ムにおいて、前記競合領域決定機構が、さらに、ラッピ
ング機構を備えることを特徴とする。
【0029】請求項14に記載の発明に係るコンピュー
タシステムは、請求項11に記載のコンピュータシステ
ムにおいて、前記キャッシュ競合検出機構が、さらに、
キャッシュベクトル決定機構を備えることを特徴とす
る。
【0030】請求項15に記載の発明に係るコンピュー
タシステムは、請求項14に記載のコンピュータシステ
ムにおいて、前記キャッシュ競合検出機構が、前記衝突
ベクトルが前記キャッシュ形状ベクトルの倍数の近似値
であるか否かを決定する競合弁別器を備えることを特徴
とする。
【0031】請求項16に記載の発明に係るキャッシュ
競合の識別、及び解決のためのプログラムを記録した媒
体は、コンピュータシステムのメインメモリに格納され
るとともに、マイクロプロセッサによる処理のためにメ
モリキャッシュ中にロードされるデータアレイ間におけ
るキャッシュ競合の識別、及び解決のためのプログラム
を記録した媒体であって、このプログラムは、前記メモ
リキャッシュの大きさ、及び次元を特徴付けるキャッシ
ュ形状ベクトルを決定するステップと、前記メインメモ
リ中に格納されている前記アレイ間における1以上のキ
ャッシュ競合を判定するステップと、前記メインメモリ
中に格納されており競合している前記アレイに対応する
競合領域を決定するステップと、前記メインメモリ中に
格納されている前記アレイに対応するパディング値を決
定するステップと、前記格納されているアレイを前記メ
インメモリ中に転送し、ロードする際のキャッシュ競合
を防止するために、前記メインメモリ中に格納され、競
合しているアレイのロケーションを前記パディング値に
従って調整するステップとを備えることを特徴とする。
【0032】
【発明の実施の形態】以下、図面を参照して本発明に係
るいくつかの発明の実施の形態を詳細に説明する。
【0033】図1において100は、本発明に従う一般
的なコンピュータベースシステムを表す。中央処理装置
(CPU)102は、リードオンリメモリ(ROM)1
04、及びランダムアクセスメモリ(RAM)106を
備える記憶装置と接続されている。当業者によって良く
知られているように、ROM104は、データ、及び命
令をCPU102に対して単一方向に転送し、RAM1
06は、一般的にデータ、及び命令を双方向に転送す
る。
【0034】大容量記憶装置108もまた、双方向に転
送可能であるようにCPU102と接続されており、追
加のデータ記憶容量を与える。大容量記憶装置108
は、プログラム、データ等を記憶するために用いられ、
また、磁気又は紙テープリーダ、あるいは、他の良く知
られている装置(例えば、CD−ROM)の形を採るこ
とができる。大容量記憶装置108内に残されている情
報は、適当な場合に、一般的な方法により仮想メモリの
形でRAM106の一部として組み込まれるであろうこ
とが理解される。
【0035】CPU102はまた、これらに限定される
ものではないが、ビデオモニタ、トラックボール、マウ
ス、キーボード、マイクロホン、接触感応ディスプレ
イ、トランスジューサカードリーダ、磁気又は紙テープ
リーダ、タブレット、音声又は手書き認識装置、当然の
ことながら他のコンピュータといった他の一般的な入力
装置を含む、1つ以上の入出力装置(I/O)110と
接続されている。
【0036】さらに、CPU102は、あるいは112
として概念的に示されているネットワーク接続回路を使
用して通信ネットワークやコンピュータと接続され得
る。上述の装置、及び機器は、コンピュータハードウェ
ア、及びソフトウェアの技術分野における当業者に馴染
みのあるものであろう。
【0037】図2は、本発明に係るコンピュータシステ
ム200における、図1に示すRAM104のようなメ
インメモリ、メモリキャッシュ204、及びマイクロプ
ロセッサ202との間の関係を詳細に示している。CP
U102は、メモリキャッシュ204と双方向に通信す
るマイクロプロセッサ202、及びマッピングロジック
回路206を備えている。ここで、メモリキャッシュに
は、例えば、静的ランダムアクセスメモリ(SRAM)
が用いられる。
【0038】SRAM204は、当業者によって良く知
られている標準的な設計、及び構造のものである。マッ
ピングロジック回路206は、メインメモリ(例えば、
RAM104)からのアドレスを、メモリキャッシュ2
04にマップするために用いられるハードウェア装置で
あり、当業者によって良く知られている。
【0039】図示されているように、マッピングロジッ
ク回路206は、一般的にSRAM204(一次キャッ
シュと呼ばれる)よりも遅いが、動的ランダムアクセス
メモリ(DRAM)210よりは速いメモリである選択
的2次キャッシュ208に加えて、SRAM204と双
方向に通信する。DRAM210は、マイクロプロセッ
サ202によって処理されたデータを保持する複数のア
ドレス212を備えている。ここに記載された構成要素
は、全て標準的な構造を備え、当業者によって良く知ら
れているものであり、また、標準的な文献に記載されて
いるものである。
【0040】図3には、キャッシュ競合の原理が模式的
に図示されている。図示されているように、キャッシュ
競合は、メインメモリ210中の2つの異なるアドレス
306、308がメモリキャッシュ204の同一行にマ
ップされるときに発生する。キャッシュ204は、1以
上のデータ304のワードを保持するキャッシュ行30
2を備えている。アドレス306は、データ領域「X」
を備えており、アドレス308は、データ領域「Y」を
備えている。
【0041】したがって、両メモリアドレス306,3
08に対応する各アレイは、同一キャッシュ行302上
にマップされ、競合するおそれがあることが判る。ここ
で、これまでの説明は、どのようなアドレス指定方式に
対しても適用可能であるとともに、どのような大きさの
メモリキャッシュ、及びどのような大きさのアドレス
(例えば、64ビットアドレス)に対しても適用可能で
あることは当業者によって理解されるべきである。
【0042】いかなる特定の動作理論によっても拘束さ
れない場合には、相互に、及びキャッシュと類似する形
態を備える(すなわち、アレイとキャッシュが、類似す
る次元及び要素大きさを有している)2つ以上のアレイ
は、次元に関して他のアレイ、及びキャッシュの少なく
とも一方と異なるアレイと比較して、同一キャッシュ行
上に、よりマップされ易いことが知られている。
【0043】競合するアレイからのデータが、同一キャ
ッシュ行上に繰り返し書き込まれ、また、上書きされる
ので、同一キャッシュ行上にマップされ易いというこの
傾向は、上述のキャッシュ競合をもたらす。また、必要
なデータがメインメモリとプロセッサ間を繰り返し往復
させられるので、プロセッサのサイクルが浪費される。
【0044】前述のキャッシュ競合を避けるために、本
発明は、キャッシュ競合を確実に防止するように、キャ
ッシュ競合、及びアレイに対するパディングをもたらす
可能性のあるアレイ構造の存在を検出するための装置、
及び方法を提供する。図4及び図5を参照して、本発明
に係る方法の発明の実施の形態の一形態を説明する。
【0045】この発明の実施の形態においては、本発明
に係る方法は、コンパイラによって既にコンパイルされ
ているマシンコードに対して適用される。なお、この方
法は、どのような言語型(例えば、FORTRAN、B
ASIC、C、C++、LISP等)をコンパイルする
コンパイラに対しても適用可能であることは理解される
べきであり、また、他のコード生成処理レベルにおいて
も適用され得ることが理解されるべきである。例えば、
ここに記載されている方法は、ソースコード、及びソー
スコードディレクトリ中に適当なパディングアレイを含
むことによって生成されるパディング、に対して適用す
ることが可能である。
【0046】図4について説明すると、ステップ402
から始まり、ステップ404にて、メモリキャッシュの
キャッシュの大きさを取得し、ステップ406にて、コ
ンパイルコードで表された全アレイAi(i=
1,...,N)に対応する参照基準が決定される。
【0047】404、及び406の両ステップは、当業
者に知られている方法を使用して実行することが可能で
ある。例えば、キャッシュの大きさを提供する一つの方
法は、ユーザによる値の入力であり、他の方法として
は、オペレーティングシステムに対する適当な呼び出し
の実行、適当なハードウェアレジスタのチェックが含ま
れる。アレイの参照基準は、他にも、標準的方法を使用
したコンパイル済マシンコードの解析、及び、再度、当
業者に良く知られている方法を使用したソースコードの
解析によって決定される。
【0048】ステップ408では、次元、及びキャッシ
ュの「形状」を特徴付ける、キャッシュ形状ベクトルC
SVが決定される。
【0049】発明の実施の形態の一形態では、ベクトル
CSVは、比較対象アレイの(ワードに関する)幅次元
により定義される数値基準に対応する(アレイ要素大き
さの構成単位に関する)、キャッシュの大きさCの膨張
係数を決定することにより導き出される。例えば、Mは
D×D(正方形)アレイであり、DはMの(ワードに関
する)幅次元であり、Dに基づく膨張Cは、以下の式1
を用いて決定される。
【0050】
【式1】 ここで、p1、p2、p3は、膨張係数である。ベクトルCS
Vは、式1における膨張係数(p1,p2,p3)を要素とする
ベクトルで定義される。例えば、Dが257、Cが6
5,536の値を採る場合には、値(1,-2,1)のベクトル
CSVに対応して、Cは1-2・(256+1)+1・(256+1)2として
表される。
【0051】任意次元のアレイの場合には、ベクトルC
SVは、式:C=ベクトルB・ベクトルCSVを満たす
ベクトルとして定義される。ここで、ベクトルBは以下
の式2により定義される数値基準ベクトルである。
【0052】
【式2】 式2において、値Diはデータワードの構成単位で表示
されるアレイの個々の次元値である。
【0053】図4に続いて、図5におけるステップ41
2では、アレイAi及びAjの各ペア形式の組み合わせに
対応する衝突ベクトルを決定するために、入れ子型ルー
プの2重ループの内、第1ループが実行される。ステッ
プ414では、第2ループが実行される。ステップ41
6では、標準的手法を用いて、各アレイAi及びAjの第
1アレイ要素間のメモリアドレスに関する差が決定され
る。ステップ418では、以下に説明する図6に記載さ
れた方法を用いて、この差から衝突ベクトルCVijが決
定される。
【0054】次に、ステップ420では、以下に図8を
参照して説明されているようにしてアレイAi及びAj
対応する競合領域が決定される。ステップ422では、
競合領域がtotalと和演算され、そして、jがiよりも
小さい場合には、ループ414が実行される。jがi以
上になると、ステップ424、426が実行され、ステ
ップ412では、次のアレイに対するパディング処理が
実行される。iがNに達すると、アレイの総数がステッ
プ428にて決定され、処理が終了する。
【0055】図5中のステップ418にて実行されるベ
クトルCVijの決定手順を詳細に示すフローチャートが
図6に示されている。ステップ502から始まり、ステ
ップ504では、キャッシュの大きさに対するアレイA
i及びAj(relativedisp)の相対変位率(すなわち、re
lativedisp/Cの絶対値)の最低値が決定され、また、
変数copiesとして格納される。ステップ506では、変
数upper、及び変数lowerの値が以下の公式(式3)を用
いて決定される。
【0056】
【式3】 ここで、変数copiesは、ステップ504にて決定された
変位率であり、Cは、(アレイ要素大きさの構成単位に
関する)キャッシュの大きさであり、(同一構成単位に
関する)relativedispは、先のステップ416において
アレイAi及びAjに対応して決定された相対変位であ
る。ステップ508では、変数upperの値が変数lowerの
絶対値よりも小さいか否かが決定される。
【0057】変数lowerの絶対値が変数upperの値よりも
小さい場合には(ステップ508:No)、ステップ5
10にて変数dispijに変数lowerが代入される。これに
対して、変数lowerの絶対値が変数upperの値よりも大き
い場合には(ステップ508:Yes)、ステップ51
2にて変数dispijに変数upperが代入される。
【0058】ステップ514では、ベクトルCSVの決
定に用いた上述の手順を使用してベクトルCV(dis
pij)=ベクトルCVijの値が決定され、ステップ51
6にて処理は終了する。
【0059】上述の(Cの値を含む)一連の操作は、必
然的にキャッシュ形状ベクトルを使用することは当業者
に理解されるべきである。この一連の操作は、本発明に
係る方法のより有効な実施形態を表している。キャッシ
ュ形状ベクトルを明示的に利用する、本発明に係る発明
の実施の形態を以下に説明する。
【0060】上記方法の1つの実施形態を以下に示す。
「calc_collision」手順は、次元「n」のアレイに対応
する「basis」を用いて、変位「disp」から衝突ベクト
ル「collision」を算出する。
【0061】変数basis、及び変数collisionは、n+1
の長さのアレイである。変数basisの内容は、図7に示
すようにして衝突ベクトルが算出されたアレイの各次元
の大きさを含むアレイ「sizes」の用語によって定義さ
れる。ここで、basis[0]=1;basis[i]=basis[i-1]*size
s[i-1]。
【0062】ベクトルCSV、及びベクトルCV(disp
ij)が決定されると、アレイAi及びAj間に生ずるキャ
ッシュ競合の可能性が決定され得る。アレイAi及びAj
の相対変位から導き出される衝突ベクトルCVijが、キ
ャッシュ形状ベクトルCSVの倍数の場合に衝突の発生
が予想され得る。この他、衝突ベクトルは、アレイアド
レスの相対変位から衝突ベクトルを算出する代わりに、
以下に説明するように、各アレイAi及びAjに関して個
々に導き出され得る。個々の衝突ベクトルの差がベクト
ルCSVの倍数の場合には、衝突の可能性がある。
【0063】また、いかなる特定の操作理論にも束縛さ
れない場合には、類似するアクセスパターンに加えて、
キャッシュの形状に類似する形状を有するアレイは、キ
ャッシュ競合を被る可能性があることが知られている。
これらの条件は、衝突は、一般的に、アレイアドレスが
メモリ中において一定距離をおいて離間され、また、ア
レイがループ内から呼び出されているときにしばしば発
生するような、類似するアクセスパターンに陥る場合に
だけ、繰り返し発生するであろうという観測結果から生
ずる。上述の方法は、これらの要因を説明し、また、当
該アレイの大きさに関して、衝突が起こりそうなキャッ
シュ内のロケーションを決定するための方法を提供す
る。
【0064】各々がD=257の次元の正方形アレイで
あり、各々が64ビットキャッシュ中に格納されるアレ
イX及びYについて考える。この場合、各アレイX、及
びYは、長さに関して66,049ワードであり、キャ
ッシュは65,536ワードである。上述の演算をこの
条件に適用すると、ベクトルCSVは(1,-2,1)となる。
アレイXとアレイYとの変位は2572なので、ベクト
ルCVYは、(0,0,1)となる。
【0065】アレイ要素X(i,j)は、X0(i,j,0)と、ア
レイ要素Y(i,j)は、X0(i,j,1)とそれぞれ書き換えら
れ得る。同様にして、Y(i+1,j-2)は、X0(i+1,j-2,1)
と書き換えられ得る。X0(i,j,0)とX0(i+1,j-2,1)との
差は、(1,-2,1)であり、これはベクトルCSVの値であ
る。したがって、これらのアレイ要素間においてキャッ
シュ競合が予期され得る。
【0066】同様にして、X(i,j+1)とY(i+1,j-1)、X
(i-1,j+1)とY(i,j-1)の差も(1,-2,1)であり、ベクトル
CSVの値と等しいので、これらの間においても衝突が
予期され得る。この望ましくないパターンを終結させる
ためには、適当なパディングが要求される。
【0067】必要なパディングを決定するために、キャ
ッシュ中に競合領域を形成する範囲が決定される。アレ
イ間における競合領域の決定手順を示すフローチャート
が図8に記載されている。
【0068】ステップ602から始まり、ステップ60
4では、変数conflict regionが0に設定される。ステ
ップ606では、一連の入れ子型ループの内、最初のル
ープが開始される。すなわち、変数top2に関して、ルー
プインデックスk2が、初期値k2=bottom2から、第1ル
ープの単位増分条件に従いループされる。入れ子型ルー
プは、変数topnに関して、ループインデックスknが、初
期値kn=bottomnから、単位増分条件に従いループされ
る、608で示されるn番目ループまで続行される。変
数topi及びbottomiは、次の式4により決定される。
【0069】
【式4】 式4において、MaxIndex(X,i)、及びMinIndex(X,i)は、
それぞれアレイXのi番目のインデックスに対するアド
レス指定方式における一定値の最大値、及び最小値を表
している。CViは、アレイX及びYに関する衝突ベク
トルのi番目の要素の値である。これらの値は、当業者
に良く知られている方法を用いて導出され得る。
【0070】ループ608中の変数conflict region
は、ステップ610にて変数conflictintervalと和演算
され、ループはループ606にリターンする。変数conf
lict intervalは、以下の式5によって定義される。
【0071】
【式5】 lineは、キャッシュ行の長さであり、この長さは、使用
される特定のキャッシュ固有のものであり、また、標準
的な方法によって決定され得る。変数conflict interva
l中に因数±(line-1)を含むことにより、アレイ間の変
位値に関するいかなる不確定もが調節される。関数d(bo
ttomi,i2,...,in,CVn+1)、及びd(topi,i2,...,in,C
n+1)は、以下の式6によって定義される。
【0072】
【式6】 ここで、Biは、上記式2により定義される数値基準ベ
クトルBのi番目の要素である。
【0073】入れ子型ループが終了すると、競合範囲が
キャッシュの先頭から末尾まであふれる状況を調節する
ために(逆の場合も同様)、メモリキャッシュに対応す
る競合範囲のラッピングが、ステップ612にて決定さ
れ、処理はステップ614にて終了する。
【0074】発明の実施の形態の一形態では、ラッピン
グは以下の方法を用いて実行される。l<0であり、u<
0の場合には、変数conflict regionに含まれるlower
(l)及び、upper(u)の指定された全ペア[l,u]が、取得さ
れ、また、[C+l,C+u]に置換される。これに対して、u
≧0の場合には、ペア[l,u]は、[C+l,C-l]に置換され
る。
【0075】図9には、図5中のステップ424にて実
行されるアレイパディングの決定手順を詳細に示すフロ
ーチャートが示されている。ステップ702から始ま
り、ステップ704では、図8に示す手順に従い決定さ
れた変数conflict regionの補数が決定される。ステッ
プ706では、アレイ間に挿入されるパディングが、変
数conflict regionの補数の最小値に設定される。ステ
ップ708では、パディング値が、メインメモリ中の特
定されたアレイの初期アドレスに加えられる。そして、
ステップ710にて処理が終了する。上記ステップは、
当該技術分野における標準的な技術を用いて実行され得
る。
【0076】本発明に係るアレイパディングの決定方法
の使用例を以下に説明する。この例は、単に説明のため
に用いられるものであり、いかなる場合にも、本発明の
範囲の限定解釈に用いられるものではない。
【0077】各々、257×257ワードの次元、周知
のTomcatvベンチマークにおいて同様に取り扱われ、及
び8個のダブルワードを保持する行を有する65Kキャ
ッシュ(ダブルワード)を備える、3つのアレイA,B
及びCを想定する。アレイA、B間の衝突ベクトル(1,-
2,0)は、キャッシュ競合が起こりそうな範囲を生成する
ために上記のように導出される。この例において、コー
ド中に生じるオフセットは{-2,-1,0,1,2}であると推測
される。(一般的に、オフセットは小さな数である。) 第1次元[-11,+11]に対応する拡張間隔は、8に(第1
次元に関するオフセット範囲を効率的に増加させる)ソ
フトウェアのパイプライン化によりもたらされる追加オ
フセットを足し合わせた大きさのキャッシュ行の考察に
用いられる。
【0078】これらの範囲を衝突ベクトル(1,-2,0)に対
して適用すると、257進法形式の範囲の数字([-10,1
2],[-4,0])が得られる。これらの範囲は、10進法形式
に変換される。この場合には、1±11,-256±11,-513±1
1,-770±11,及び-1027±11となる。すなわち、{[-10,1
2],[-267,-245],[-524,-502],[-781,-759],[-1038,-101
6]}である。負の範囲のオフセットは、避けられるべき
範囲の間隔の組み合わせを与えるキャッシュ大きさを法
として調整され、{[65525,65535],[0,12],[65269,6529
1],[65012,65034],[64755,64777],[64498,64520]}とな
る。
【0079】避けられるべき範囲を定めることにより、
有効なパディングセットを得るための補数が得られる。
したがって、アレイAに対してアレイBは、次のパディ
ングセット、{(64520,64755),(64777,65012),(65034,65
269),(65291,65525),(12,64498)}をもたらす。閉間隔を
得るための終点の調整は、{[64521,64754],[64778,6501
1],[65035,65268],[65292,65524],[13,64497]}をもたら
す。したがって、アレイA、B間に挿入されるべきパデ
ィング量は、13ダブルワードである。
【0080】上述の手順を用いることにより、アレイA
に対してアレイCは、次のパディングセット、{[0,6397
1],[63995,64228],[64252,64485],[64509,64742],[6476
6,64999],[65023,65535]}をもたらす。同様にして、ア
レイBに対してアレイCは、次のパディングセット、
{[13,64497],[64521,64754],[64778,65011],[65035,652
68],[65292,65525]}をもたらす。これらのパディングの
交点は、{[13,63971],[63995,64228],[64252,64485],[6
4521,64742],[64778,64999],[65035,65268],[65292,655
25]}である。したがって、アレイB、C間に挿入される
べきパディング量は、13ダブルワードである。
【0081】他の発明の実施の形態においては、サブア
レイ間におけるキャッシュ競合を防ぐため、本発明に係
る方法及び装置が用いられる。X(j1,...,jm)と表され
るアレイは、m<nであり、iが1からmji=kiの値域
にある場合には、Y(k1,...,kn)と表される他のアレイ
のサブアレイである。ここで与えらた方法は、アレイY
は、各々がアレイXとして同一形状を有するr個のアレ
イY1,...,Yrの集合として表され得るという利点をも
たらす。ここで、rは次の式7により定義される。
【0082】
【式7】 本発明に係るこの発明の実施の形態では、r個の衝突ベ
クトルは、アレイXを各アレイY1,...,Yrと比較する
ことにより構成され、また、アレイX、Y間の有効なパ
ディングベクトル集合の交点にr個の可能なパディング
を見いだす。パディングは、形状が等しいアレイ、又は
上述のサブアレイ関係を満たすアレイに対してだけ適用
される。
【0083】さらに、他の発明の実施の形態では、本発
明に係る方法、及び装置が、2の累乗以外の大きさを有
する調整不良の対象を処理するために用いられる。この
発明の実施の形態では、基準アレイ要素をいくつかの2
の累乗の記憶単位に分割することができるように、進数
が調整単位を示す新しい第1要素まで拡張される。この
発明の実施の形態では、上記upper及びlowerの値は、以
下の式8を用いて修正される。
【0084】
【式8】 ここで、V及びBは、新調整単位に対応する新しい0番
目要素を有している。調整不良のアレイは、各範囲の上
限に1を加えることによって取り扱われる。このパディ
ング処理は、基準記憶単位に対してアレイを調整する。
【0085】上述の各発明の実施の形態は、直接マッピ
ングを使用するキャッシュ、または連想キャッシュに適
用することができる。連想キャッシュが用いられる場合
には、有効キャッシュ大きさは、実キャッシュ大きさを
連想因数で割った値である。上記発明の実施の形態は、
衝突を最小化するためにアドレスハッシングを使用する
キャッシュに対して用いることはできない。
【0086】上述した発明の実施の形態の計算能力は、
同時使用される(すなわち、同一ループにおける)アレ
イに対してだけ与えられるアレイのパディングを算出す
るときに考慮されるアレイ数を限定することによって向
上され得る。さらに、2つのアレイのアクセスパターン
が異なる場合には(例えば、カラムアクセス、及びロー
アクセス)、アレイは衝突しないであろう。したがっ
て、計算能力は、アレイのアクセスパターンを確認する
ことによりさらに向上され得る。さらに、実行速度を向
上させるための他の手段は、インデックス範囲に関する
改善された情報を使用することにより、競合領域の大き
さを減少させることである。この情報は、当業者にとっ
て良く知られた標準的な方法を使用して、ソースコード
を検証することにより決定され得る。
【0087】したがって、本発明は、アレイがメモリキ
ャッシュ中にロードされるコンピュータシステムのメイ
ンメモリに格納されたアレイ間におけるキャッシュ競合
を検出し、解決するための効率的な方法を提供する。本
発明に係る方法、及び装置を使用することにより、キャ
ッシュの特定の大きさのみならず、キャッシュの次元を
も表すキャッシュ大きさベクトルが決定され得る。キャ
ッシュ大きさベクトルの倍数の差を有する衝突ベクトル
を有するアレイは、パディングを要求するために決定さ
れる。パディングは、総競合領域を決定することによ
り、またキャッシュの大きさを調節することにより提供
され得る。したがって、本発明は、乱暴な計算、及び記
憶を必要としない、キャッシュ競合を効率的に解決する
方法を提供する。
【0088】以上、発明の実施の形態に基づき本発明を
説明したが、本発明の趣旨から逸脱しない範囲で種々の
変更改良が可能である。
【0089】例えば、本発明は、コンピュータシステム
に格納されているデータを必要とする多くのステップを
使用し、これらのステップは、物理量の物理的処理を必
要とする。そして、必ずしも必要なことではないが、通
常、これら物理量は、記憶、伝送、結合、比較、及び他
の処理が可能である、電気信号又は磁気信号の形を採
る。また、一般に使用されていることを主たる理由とし
て、これらの信号は、便宜上、ビット、値、要素、変
数、文字、データ構造等と呼ばれることがある。しかし
ながら、これらの用語、及び同様な用語の全ては、適当
な物理量と関連付けられ、また、単にこれらの物理量に
適用される都合の良いラベルでしかないことは理解され
るべきである。
【0090】さらに、実行される処理は、しばしば、識
別、実行、あるいは比較といった用語で呼ばれる。上述
した操作は、どれも本発明の一部を成し、これらの操作
は機械操作である。
【0091】本発明の操作を実行するために有用な機械
には、一般的用途のディジタルコンピュータ、あるいは
他の同様な装置が含まれる。全ての場合において、コン
ピュータの操作方法と、演算の方法そのものとは、明確
に区別されるべきである。そして、本発明は、他の所望
の物理信号を生成するために、電気信号、又は他の物理
信号を処理するコンピュータの操作方法に関するもので
ある。
【0092】本発明はまた、これらの操作を実行する装
置に関連している。この装置は、特に特定用途のために
構成されたコンピュータであり、あるいは、コンピュー
タに記憶されているコンピュータプログラムによって選
択的に起動され、または再構成される一般用途のコンピ
ュータである。
【0093】上述の処理は、どのような特定のコンピュ
ータ、あるいは他の装置に対しても、本来的に関連付け
られるものではない。特に、一般的用途の個々の機械
は、ここにおける説明に従って書かれたプログラムと共
に使用されるであろうし、あるいは要求されるステップ
を実行するために、より専用化された装置を構成するこ
とは、より都合が良いであろう。これら多くの機械に要
求される構造は、記述されている。
【0094】さらに、本発明は、コンピュータを作動さ
せる種々のプログラム命令を含むコンピュータプログラ
ムの記録媒体に関連している。媒体、及びプログラム命
令は、本発明の目的のために特別に設計され、構成され
るであろうし、また、コンピュータソフトウェア技術分
野の当業者にとって良く知られ、利用可能なものであろ
う。
【0095】コンピュータプログラムの記録媒体の例と
しては、これらに限られるものではないが、ハードディ
スク、フロッピーディスク、磁気テープのような磁気媒
体、CD−ROMディスクのような光媒体、フロプティ
カルディスクのような光磁気媒体、及び、消去再書込み
可能リードオンリメモリ(EPROM)を含むリードオ
ンリメモリ(ROM)、及び動的ランダムアクセスメモ
リ(DRAM)、静的ランダムアクセスメモリ(SRA
M)、及びネットワークランダムアクセスメモリ(NR
AM)を含むランダムアクセスメモリ(RAM)のよう
なプログラム命令を記憶し、実行するために特別に構成
されたハードウェア装置がある。
【0096】プログラム命令には、例えば、コンパイラ
によって生成される機械コード、及びインタプリタを使
用するコンピュータによって実行され得る高レベルコー
ドを含むファイル、の双方が含まれる。
【0097】なお、本発明は、特許請求の範囲に記載さ
れた請求項の他に、以下のようにデータアレイ間におけ
るキャッシュ競合の識別、及び解決のためのプログラム
を記録した媒体としても記載され得る。
【0098】(1)請求項16に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記キャッシュ形状ベ
クトルの決定ステップが、前記キャッシュの大きさに対
応する数値を決定するステップと、前記キャッシュ形状
ベクトルを導出するために、前記キャッシュの大きさ対
応数値を、前記格納済アレイの次元によって定義される
数値基準に変換するステップとを備えることを特徴とす
るデータアレイ間におけるキャッシュ競合の識別、及び
解決のためのプログラムを記録した媒体。
【0099】(2)上記(1)に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記1以上のキャッシ
ュ競合の判定ステップが、前記メインメモリ中に格納さ
れている2つのアレイに対応する衝突ベクトルを決定す
るステップと、その衝突ベクトルが前記キャッシュ形状
ベクトルの倍数の近似値であるか否かを決定するステッ
プとを備えることを特徴とするデータアレイ間における
キャッシュ競合の識別、及び解決のためのプログラムを
記録した媒体。
【0100】(3)上記(2)に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記競合領域の決定ス
テップが、前記メインメモリ中に格納されているアレイ
のペア形式の組み合せに対応する競合間隔を決定するス
テップと、全競合間隔の和演算を決定するステップと、
前記競合領域をラップするステップとを備えることを特
徴とするデータアレイ間におけるキャッシュ競合の識
別、及び解決のためのプログラムを記録した媒体。
【0101】(4)上記(3)に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記衝突ベクトルの決
定ステップが、各マトリクス呼出しの写しの数を決定す
るステップと、前記アレイの変位を決定するステップ
と、前記変位の数値を前記衝突ベクトルと同一基準に変
換するステップとを備えることを特徴とするデータアレ
イ間におけるキャッシュ競合の識別、及び解決のための
プログラムを記録した媒体。
【0102】(5)上記(4)に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記パディング決定ス
テップが、前記競合領域の和演算の補数の最小値を決定
するステップを備えることを特徴とするデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体。
【0103】(6)上記(5)に記載のデータアレイ間
におけるキャッシュ競合の識別、及び解決のためのプロ
グラムを記録した媒体において、前記アレイロケーショ
ンの決定ステップが、前記パディング値を、前記メイン
メモリに格納されている各アレイの第1メインメモリア
ドレスに加えるステップを備えることを特徴とするデー
タアレイ間におけるキャッシュ競合の識別、及び解決の
ためのプログラムを記録した媒体。
【0104】
【発明の効果】以上説明したように、本発明に係るキャ
ッシュ競合の識別、及び解決のための方法及びその装置
によれば、キャッシュ競合を予想することが可能であ
り、効率的な方法で、適当なアレイパディングを決定
し、実行することができる。
【図面の簡単な説明】
【図1】 本発明に従う一般的なコンピュータベースシ
ステムの概略構成図である。
【図2】 図1に示すメインメモリ、メモリキャッシ
ュ、及びマイクロプロセッサとの関係を模式的に示す説
明図である。
【図3】 キャッシュ競合の原理を模式的に示す説明図
である。
【図4】 本発明の実施の形態に係るキャッシュ競合の
存在、及び適当なアレイパディングを決定するためのフ
ローチャートである。
【図5】 図4に続く、本発明の実施の形態に係るキャ
ッシュ競合の存在、及び適当なアレイパディングを決定
するためのフローチャートである。
【図6】 図5中のステップ418にて実行されるベク
トルCVijの決定手順を詳細に示すフローチャートで
ある。
【図7】 衝突ベクトルを決定するための決定手順を示
す説明図である。
【図8】 図5中のステップ420にて実行されるアレ
イ間における競合領域の決定手順を示すフローチャート
である。
【図9】 図5中のステップ424にて実行されるアレ
イパディングの決定手順を詳細に示すフローチャートで
ある。
【符号の説明】
100…コンピュータベースシステム、102…中央処
理装置(CPU)、104…リードオンリメモリ(RO
M)、106…ランダムアクセスメモリ(RAM)、1
08…大容量記憶装置、110…入出力装置(I/
O)、112…ネットワーク接続回路、202…マイク
ロプロセッサ、204…メモリキャッシュ、206…マ
ッピングロジック回路、208…2次キャッシュ、21
0…動的ランダムアクセスメモリ(DRAM)、212
…アドレス、302…キャッシュ行、304…データ、
306、308…メモリアドレス。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ゲイリー・オブロック アメリカ合衆国カリフォルニア州94114, サンフランシスコ,ジョーンズ・ストリー ト 1960

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサに接続されるメモリ
    キャッシュと、メモリキャッシュに接続されるメインメ
    モリと、メインメモリ中に格納されるとともに、マイク
    ロプロセッサによる処理のためにメモリキャッシュ中へ
    ローディングするのに好適なデータアレイとを備えるコ
    ンピュータシステムにおける、キャッシュ競合の識別、
    及び解決のための方法であって、 a) 前記メモリキャッシュの大きさ、及び次元を特徴付
    けるキャッシュ形状ベクトルを決定するステップと、 b) 前記メインメモリ中に格納されている前記アレイ間
    における、1以上のキャッシュ競合を判定するステップ
    と、 c) 前記メインメモリ中に格納されている競合する前記
    アレイに対応する競合領域を決定するステップと、 d) 前記メインメモリ中に格納されている競合する前記
    アレイに対応するパディング値を決定するステップと、 e) 前記格納されているアレイを、前記メモリキャッシ
    ュ中に転送し、ロードする際のキャッシュ競合を防止す
    るために、前記メインメモリ中に格納され、競合してい
    る前記アレイのロケーションを前記パディング値に従っ
    て調整するステップとを備えることを特徴とするキャッ
    シュ競合の識別、及び解決の方法。
  2. 【請求項2】 請求項1に記載の方法において、前記キ
    ャッシュ形状ベクトル決定ステップが、 a) 前記キャッシュの大きさに対応する数値を決定する
    ステップと、 b) 前記キャッシュ形状ベクトルを導出するために、前
    記キャッシュの大きさを示す数値を、格納されているア
    レイの次元により定義される数値基準に変換するステッ
    プとを備えることを特徴とするキャッシュ競合の識別、
    及び解決のための方法。
  3. 【請求項3】 請求項2に記載の方法において、前記キ
    ャッシュ競合判定ステップが、 a) 前記メインメモリ中に格納されている2つのアレイ
    に対応する衝突ベクトルを決定するステップと、 b) 前記衝突ベクトルが前記キャッシュ形状ベクトルの
    倍数の近似値であるか否かを決定するステップとを備え
    ることを特徴とするキャッシュ競合の識別、及び解決の
    ための方法。
  4. 【請求項4】 請求項3に記載の方法において、前記競
    合領域決定ステップが、 a) 前記メインメモリ中における各アレイのペア形式の
    組み合わせに対応する競合間隔を決定するステップと、 b) 前記競合領域を決定するために、全競合間隔の和演
    算をするステップと、 c) 前記競合領域をラッピングするステップとを備える
    ことを特徴とするキャッシュ競合の識別、及び解決のた
    めの方法。
  5. 【請求項5】 請求項4に記載の方法において、前記衝
    突ベクトル決定ステップが、 a) 各アレイ呼出しの写しの数を決定するステップと、 b) 前記メインメモリ中におけるアレイの変位を決定す
    るステップと、 c) 前記変位の数値を、前記衝突ベクトルと同一の数値
    基準に変換するステップとを備えることを特徴とするキ
    ャッシュ競合の識別、及び解決のための方法。
  6. 【請求項6】 請求項5に記載の方法において、前記パ
    ディング決定ステップが、前記競合領域の和演算の補数
    の最小値を決定するステップを備えることを特徴とする
    キャッシュ競合の識別、及び解決のための方法。
  7. 【請求項7】 請求項6に記載の方法において、前記調
    整ステップが、前記パディング値を、前記メインメモリ
    中に格納されている各アレイの第1メインメモリアドレ
    スに加えるステップを備えることを特徴とするキャッシ
    ュ競合の識別、及び解決のための方法。
  8. 【請求項8】 マイクロプロセッサに接続されるメモリ
    キャッシュと、メモリキャッシュに接続されるメインメ
    モリと、メインメモリ中に格納されるとともに、マイク
    ロプロセッサによる処理のためにメモリキャッシュ中へ
    ローディングするのに好適なデータアレイとを備えるコ
    ンピュータシステムであって、 前記メインメモリ中に格納されている前記データアレイ
    に対応する前記メモリアドレスが、前記請求項1に記載
    の方法を用いて決定されるパディング領域によって分離
    されることを特徴とするコンピュータシステム。
  9. 【請求項9】 メインメモリと接続されるとともに、メ
    インメモリ中に格納されているアレイをその中にロード
    してマイクロプロセッサで処理するために、マイクロプ
    ロセッサとも接続されるメモリキャッシュを備えるコン
    ピュータシステムにおけるキャッシュ競合の識別、及び
    解決のためのプログラムを記録した媒体であって、この
    プログラムが、 前記請求項1に記載の方法を用いて決定されるパディン
    グ領域によって、前記メインメモリ中に位置する2以上
    の前記アレイのロケーションを分離することを特徴とす
    るキャッシュ競合の識別、及び解決のためのプログラム
    を記録した媒体。
  10. 【請求項10】メモリキャッシュに接続されるメインメ
    モリ中に格納されているアレイ間におけるキャッシュ競
    合を防ぐように構成されたコンピュータシステムであっ
    て、 a) 前記メモリキャッシュに接続されるマイクロプロセ
    ッサと、 b) 前記メインメモリ中に格納されている2以上のデー
    タアレイと、 c) 前記メインメモリ中に格納されているアレイの少な
    くとも一部を前記メモリキャッシュに転送し、また、前
    記アレイの転送済部分を前記メモリキャッシュにロード
    するためのデータパス、及びデータローディング機構
    と、 d) キャッシュ形状ベクトル決定機構を備えるととも
    に、前記メインメモリ中に格納されているアレイ間にお
    けるキャッシュ競合の存在を判定するためのキャッシュ
    競合検出機構と、 e) 前記格納されているアレイを前記メモリキャッシュ
    に転送、及びロードする際のキャッシュ競合を防止する
    ために、前記格納されているアレイのメインメモリロケ
    ーションを調整するためのパディング機構とを備えるこ
    とを特徴とするコンピュータシステム。
  11. 【請求項11】請求項10に記載のコンピュータシステ
    ムにおいて、前記キャッシュ競合検出機構が、競合領域
    決定機構を有することを特徴とするコンピュータシステ
    ム。
  12. 【請求項12】請求項11に記載のコンピュータシステ
    ムにおいて、前記キャッシュ形状決定機構が、前記キャ
    ッシュの大きさを決定するためのキャッシュ大きさ評価
    器、及び前記キャッシュ形状ベクトルを導出するため
    に、前記キャッシュの大きさを格納されているアレイの
    次元によって定義される前記数値基準で表すためのキャ
    ッシュ大きさ変換器を備えることを特徴とするコンピュ
    ータシステム。
  13. 【請求項13】請求項11に記載のコンピュータシステ
    ムにおいて、前記競合領域決定機構が、さらに、ラッピ
    ング機構を備えることを特徴とするコンピュータシステ
    ム。
  14. 【請求項14】請求項11に記載のコンピュータシステ
    ムにおいて、前記キャッシュ競合検出機構が、さらに、
    キャッシュベクトル決定機構を備えることを特徴とする
    コンピュータシステム。
  15. 【請求項15】請求項14に記載のコンピュータシステ
    ムにおいて、前記キャッシュ競合検出機構が、前記衝突
    ベクトルが前記キャッシュ形状ベクトルの倍数の近似値
    であるか否かを決定する競合弁別器を備えることを特徴
    とするコンピュータシステム。
  16. 【請求項16】コンピュータシステムのメインメモリに
    格納されるとともに、マイクロプロセッサによる処理の
    ためにメモリキャッシュ中にロードされるデータアレイ
    間におけるキャッシュ競合の識別、及び解決のためのプ
    ログラムを記録した媒体であって、このプログラムは、 a) 前記メモリキャッシュの大きさ、及び次元を特徴付
    けるキャッシュ形状ベクトルを決定するステップと、 b) 前記メインメモリ中に格納されている前記アレイ間
    における1以上のキャッシュ競合を判定するステップ
    と、 c) 前記メインメモリ中に格納されており競合している
    前記アレイに対応する競合領域を決定するステップと、 d) 前記メインメモリ中に格納されている前記アレイに
    対応するパディング値を決定するステップと、 e) 前記格納されているアレイを前記メインメモリ中に
    転送し、ロードする際のキャッシュ競合を防止するため
    に、前記メインメモリ中に格納され、競合しているアレ
    イのロケーションを前記パディング値に従って調整する
    ステップとを備えることを特徴とするデータアレイ間に
    おけるキャッシュ競合の識別、及び解決のためのプログ
    ラムを記録した媒体。
JP8342856A 1995-12-27 1996-12-24 キャッシュ競合の識別、及び解決のための方法及びその装置 Pending JPH09282225A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US579435 1990-09-07
US08/579,435 US5943691A (en) 1995-12-27 1995-12-27 Determination of array padding using collision vectors

Publications (1)

Publication Number Publication Date
JPH09282225A true JPH09282225A (ja) 1997-10-31

Family

ID=24316893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8342856A Pending JPH09282225A (ja) 1995-12-27 1996-12-24 キャッシュ競合の識別、及び解決のための方法及びその装置

Country Status (4)

Country Link
US (1) US5943691A (ja)
EP (1) EP0782078B1 (ja)
JP (1) JPH09282225A (ja)
DE (1) DE69619782T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014038070A1 (ja) * 2012-09-07 2014-03-13 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324629B1 (en) * 1998-07-24 2001-11-27 Coware N.V., Frontier Design Byba Method for determining an optimized data organization
US6704820B1 (en) * 2000-02-18 2004-03-09 Hewlett-Packard Development Company, L.P. Unified cache port consolidation
US7086040B2 (en) * 2001-01-30 2006-08-01 Northwestern University Method for array shape inferencing for a class of functions in MATLAB
CA2363182C (en) * 2001-11-19 2006-06-06 Ibm Canada Limited-Ibm Canada Limitee Automatic program restructuring to reduce average cache miss penalty
WO2005045619A2 (en) * 2003-10-31 2005-05-19 Landmark Technology Partners, Inc. Intelligent client architecture computer system and method
US8782653B2 (en) * 2010-03-26 2014-07-15 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
CA2820230A1 (en) * 2013-07-09 2015-01-09 Ibm Canada Limited - Ibm Canada Limitee Data splitting for multi-instantiated objects
US10140210B2 (en) * 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
JP6432333B2 (ja) * 2014-12-16 2018-12-05 富士通株式会社 情報処理装置、データ処理方法、およびデータ処理プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249284A (en) * 1990-06-04 1993-09-28 Ncr Corporation Method and system for maintaining data coherency between main and cache memories
JPH0452741A (ja) * 1990-06-14 1992-02-20 Toshiba Corp キャッシュメモリ装置
US5210850A (en) * 1990-06-15 1993-05-11 Compaq Computer Corporation Memory address space determination using programmable limit registers with single-ended comparators
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
US5511180A (en) * 1993-04-06 1996-04-23 Dell Usa, L.P. Method and circuit for determining the size of a cache memory
US5553264A (en) * 1994-06-24 1996-09-03 Digital Equipment Corporation Method and apparatus for efficient cache refilling by the use of forced cache misses
US5548742A (en) * 1994-08-11 1996-08-20 Intel Corporation Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014038070A1 (ja) * 2012-09-07 2014-03-13 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法
JP5939305B2 (ja) * 2012-09-07 2016-06-22 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法
US10002078B2 (en) 2012-09-07 2018-06-19 Fujitsu Limited Information processing apparatus, parallel computer system, and control method for controlling information processing apparatus

Also Published As

Publication number Publication date
EP0782078B1 (en) 2002-03-13
US5943691A (en) 1999-08-24
EP0782078A3 (en) 1998-07-08
DE69619782T2 (de) 2002-10-02
EP0782078A2 (en) 1997-07-02
DE69619782D1 (de) 2002-04-18

Similar Documents

Publication Publication Date Title
JP6928123B2 (ja) メモリシステム内のページマイグレーションのオーバヘッドを低減するメカニズム
US7398484B2 (en) Memory efficient array transposition via multi pass tiling
US5357618A (en) Cache prefetch and bypass using stride registers
US6112285A (en) Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US6247107B1 (en) Chipset configured to perform data-directed prefetching
US4583165A (en) Apparatus and method for controlling storage access in a multilevel storage system
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
JP2769097B2 (ja) アドレス変換方法及びデータ処理装置
US6915396B2 (en) Fast priority determination circuit with rotating priority
US6745292B1 (en) Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
JP3155978B2 (ja) キャッシュメモリを関連する主メモリから選択的にローディングする装置及び方法
US11347650B2 (en) Word type/boundary propagation with memory performance applications
JPH09282225A (ja) キャッシュ競合の識別、及び解決のための方法及びその装置
US20040024729A1 (en) Method and system for storing sparse data in memory and accessing stored sparse data
Helman et al. Prefix computations on symmetric multiprocessors
US11488654B2 (en) Memory row recording for mitigating crosstalk in dynamic random access memory
JP2000039997A (ja) サブクラス及びサブタイプの高速チェックを実現する方法及び装置
US7058767B2 (en) Adaptive memory access speculation
US6356988B1 (en) Memory access system, address converter, and address conversion method capable of reducing a memory access time
US10942860B2 (en) Computing system and method using bit counter
US4616315A (en) System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US20040064655A1 (en) Memory access statistics tool
KR960015231A (ko) 향상된 어드레스 지정 방법 및 시스템
US7085887B2 (en) Processor and processor method of operation