図面 (/)

技術 キャッシュミス回避装置

出願人 富士通株式会社
発明者 小野寺聡
出願日 2002年5月7日 (17年4ヶ月経過) 出願番号 2002-131627
公開日 2003年11月14日 (15年10ヶ月経過) 公開番号 2003-323341
状態 未査定
技術分野 階層構造のメモリシステム
主要キーワード 構造体配列 回避装置 サブメモリ メモリ配置 キャッシュ構成 ラインサイズ 総ライン数 ウェイセット
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2003年11月14日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

キャッシュ上のラインコンフリクトを回避し、キャッシュミスによる性能劣化を防止する。

解決手段

ラインコンフリクト判別手段6がキャッシュ2上のラインコンフリクトを検出すると、メモリコントローラ5が前記ラインコンフリクトを引き起こすデータを、ラインコンフリクトが起きないようにアドレス変換して、メインメモリ3上の別の領域へコピーする。そして、ラインコンフリクトを起こすデータがプロセッサ1によって再びアクセスされることをデータ複数回参照検出手段7が検出すると、メモリコントローラ5によってプロセッサ1はメモリ上の別の領域にアクセスする。

概要

背景

キャッシュメモリ(以下、「キャッシュ」という。)は、プロセッサメインメモリの間に介在する高速メモリである。一度アクセスされたメインメモリ上のデータ(プログラムコードであってもよい)を高速なキャッシュに載せ、次にプロセッサがアクセスするときにはキャッシュに載ったデータを読み書きしてコンピュータの全体的性能を向上させる。

キャッシュの基本的動作は、直前にアクセスされたメインメモリのデータはキャッシュに載せ、かつメインメモリの連続領域ブロック単位でキャッシュに載せるというものである。そのための方式として、ダイレクトマップ方式もしくはnウェイセットアソシアティブ方式等があるが、これらはデータのメモリ上のアドレス番地)によって使用するキャッシュラインが決まる。このため、データの配置によっては、アクセスするデータ量が少ないにも関わらずキャッシュミスが頻繁に起こることがある。

概要

キャッシュ上のラインコンフリクトを回避し、キャッシュミスによる性能劣化を防止する。

ラインコンフリクト判別手段6がキャッシュ2上のラインコンフリクトを検出すると、メモリコントローラ5が前記ラインコンフリクトを引き起こすデータを、ラインコンフリクトが起きないようにアドレス変換して、メインメモリ3上の別の領域へコピーする。そして、ラインコンフリクトを起こすデータがプロセッサ1によって再びアクセスされることをデータ複数回参照検出手段7が検出すると、メモリコントローラ5によってプロセッサ1はメモリ上の別の領域にアクセスする。

目的

ところが、図19(a)のように、データA[]とB[]の先頭のアドレスが3Mバイト離れている場合、データA[0]はライン0を、データB[0]はライン16384をアクセスし、使用するキャッシュラインが重ならない。同様に、データA[n]とデータB[n]は同じキャッシュラインを使用しないため、ラインコンフリクトは起こらない(図19(b))。このように、キャッシュにおけるラインコンフリクトは、キャッシュ構成とメモリ上のデータ配置に依存することがわかる。本発明は、以上述べた問題点に鑑み、キャッシュにおけるラインコンフリクトを回避し、キャッシュミスによる性能劣化を防止することを目的とする。

効果

実績

技術文献被引用数
1件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

プロセッサメモリ間キャッシュメモリを配置するキャッシュシステムにおけるキャッシュミス回避装置であって、メモリコントローララインコンフリクト判別手段とを備え、前記ラインコンフリクト判別手段は、前記キャッシュメモリにおけるラインコンフリクトを検出し、前記メモリコントローラは、前記ラインコンフリクト判別手段の出力信号によって、前記メモリ上のラインコンフリクトを引き起こすデータをラインコンフリクトを引き起こすことのない別のアドレスをもつデータに変換することを特徴とするキャッシュミス回避装置。

請求項2

データ複数回参照検出手段を備え、前記データ複数回参照検出手段は前記ラインコンフリクトを引き起こすデータが再びアクセスされたことを検出し、前記メモリコントローラは前記データ複数回参照検出手段の出力信号によって、前記プロセッサが前記別のアドレスに変換されたデータにアクセスすることを可能とすることを特徴とする請求項1に記載のキャッシュミス回避装置。

請求項3

プロセッサとメモリ間にキャッシュメモリを配置するキャッシュシステムにおけるキャッシュミス回避装置であって、メモリコントローラを備え、前記プロセッサは、プログラム上のコンパイラが付加した記号によりキャッシュメモリにおけるラインコンフリクトを判別し、前記メモリコントローラは、前記プロセッサの信号により前記メモリ上のラインコンフリクトを引き起こすデータをラインコンフリクトを引き起こすことのない別のアドレスをもつデータに変換することを特徴とするキャッシュミス回避装置。

請求項4

前記ラインコンフリクトを引き起こすデータに再びアクセスする際には、前記プロセッサは前記別のアドレスに変換されたデータにアクセスすることを特徴とする請求項3に記載のキャッシュミス回避装置。

請求項5

サブメモリライトバック装置を備え、前記サブメモリには、前記ラインコンフリクトを引き起こすことのない別のアドレスをもつデータが記憶され、前記ライトバック装置は、プログラムの実行終了時に、前記メモリ上のラインコンフリクトを引き起こすデータを前記サブメモリ上の前記ラインコンフリクトを引き起こすことのない別のアドレスをもつデータによって書き換えることを特徴とする請求項2又は4に記載のキャッシュミス回避装置。

技術分野

0001

本発明は、例えばダイレクトマップ方式、nウェイセットアソシアティブ方式等のキャッシュメモリを備えるキャッシュシステムにおいて、ラインコンフリクトによるキャッシュミスを回避する技術に関する。

背景技術

0002

キャッシュメモリ(以下、「キャッシュ」という。)は、プロセッサメインメモリの間に介在する高速メモリである。一度アクセスされたメインメモリ上のデータ(プログラムコードであってもよい)を高速なキャッシュに載せ、次にプロセッサがアクセスするときにはキャッシュに載ったデータを読み書きしてコンピュータの全体的性能を向上させる。

0003

キャッシュの基本的動作は、直前にアクセスされたメインメモリのデータはキャッシュに載せ、かつメインメモリの連続領域ブロック単位でキャッシュに載せるというものである。そのための方式として、ダイレクトマップ方式もしくはnウェイセットアソシアティブ方式等があるが、これらはデータのメモリ上のアドレス番地)によって使用するキャッシュラインが決まる。このため、データの配置によっては、アクセスするデータ量が少ないにも関わらずキャッシュミスが頻繁に起こることがある。

発明が解決しようとする課題

0004

図14は、メモリとキャッシュの関係を例示する概略図である。図14(a)に、メモリ上の番地が0x0000000から始まるメモリを示す。ここで、図14(b)に示すように、サイズが2Mバイトラインサイズが64バイト、ダイレクトマップ構成のキャッシュを考える。キャッシュの総ライン数ライン0からライン32767まで32768本である。

0005

メモリ上の0x0000000から始まる64バイトの領域のあるデータがアクセスされると、0x0000000から0x00003fまでの64バイトの領域にあるデータはすべて0番目のライン0に載ることになる。また、次の0x000040から始まる64バイトの領域はライン1に載り、順次0x0100000から始まる領域はライン16384に、0x01fffc0から始まる領域はライン32767に載る。

0006

次に、0x0200000から始まる領域を考えると、図14(b)に示すように、この領域では折り返しが起きて、ライン0に載ることになる。つまり、0x0000000と0x200000のアドレスから始まる64バイトのデータは、この構成のキャッシュでは、同じキャッシュラインに載ることになる。このように、データのメモリ上の番地によって使用するキャッシュラインが決まってくる。

0007

図15(a)に、データのメモリ配置の一例を示し、図15(b)に、そのキャッシュアクセスパターンを示す。図15(a)に示すように、データとして、64バイトデータ構造体配列A[]とB[]を考える。A[]とB[]で16384ずつの要素があるとすると、それぞれの総データ量は1Mバイトとなる。A[]とB[]との間には他のデータがあり、A[]とB[]の先頭のアドレスはそれぞれ0x0000000と0x0200000であって、2Mバイト離れているとする。

0008

この配列AとBを、図16に示すプログラム中でアクセスするとする。このとき、図16の(1)(2)に示すように、A[0]、B[0]、A[1]、B[1]…と交互にアクセスするループがあるので、このループ内では、図15(b)に示すように、A[0]とB[0]は同じキャッシュライン(ライン0)をアクセスし、以下に図17及び図18を参照して説明するようにラインコンフリクトを起こす。同様に、ループが回るにつれて、A[n]とB[n]は毎回同じラインをアクセスし、ラインコンフリクトを起こし、その度にキャッシュミスが起こる。

0009

図17及び図18を参照して、このラインコンフリクトを説明する。図17(a)はメインメモリの配置を示し、図17(b)は順次キャッシュラインが埋まってゆく経過を示す。

0010

このプログラムの場合、図17(a)に示す、(1)A[0]、(2)B[0]、(3)A[1]、(4)B[1]、…と交互にメインメモリをアクセスするループがある。1回目のアクセス(1)ではメモリ上のA[0]がアクセスされ、キャッシュのライン0にA[0]が載る(図17(b)の(1))。2回目のアクセス(2)ではB[0]がアクセスされ、キャッシュのライン0のA[0]が追い出され、B[0]が載る(図17(b)の(2))。3回目のアクセスではA[1]がアクセスされ、キャッシュのライン1にA[1]が載る(図17(b)の(3))。4回目のアクセスではB[1]がアクセスされ、キャッシュライン1のA[1]が追い出され、B[1]が載る(図17(b)の(4))。以下同様にして、ループの終了時には、1Mバイト分のキャッシュラインが埋まり、B[0]〜B[16383]が載ることになる。

0011

図18は、次のループにおけるキャッシュの変化の過程を示す。次のループが始まる前には、図18の(1)に示すように、キャッシュにはB[0]〜B[16383]が載っている。まず、1回目にはA[0]がアクセスされるが、キャッシュにはB[0]が載っているから、キャッシュミスとなりメインメモリにアクセスする必要が生じる。メインメモリのA[0]にアクセスした結果、A[0]はB[0]に代わってキャッシュライン0に載る(図18の(1))。2回目には、B[0]がアクセスされるが、キャッシュにはA[0]が載っているので、またキャッシュミスとなり、メインメモリのB[0]にアクセスして、その結果B[0]がA[0]に代わってキャッシュライン0に載る(図18の(3))。次のA[1]へのアクセスについても同様にラインコンフリクトが起こる。このようにして、いつの場合でも、キャッシュミスが起こることになる。このため、プログラムの実行性能は著しく劣化する。このラインコンフリクトは、nウェイセットアソシアティブ方式のキャッシュでも同様に起こり得るものである。

0012

ところが、図19(a)のように、データA[]とB[]の先頭のアドレスが3Mバイト離れている場合、データA[0]はライン0を、データB[0]はライン16384をアクセスし、使用するキャッシュラインが重ならない。同様に、データA[n]とデータB[n]は同じキャッシュラインを使用しないため、ラインコンフリクトは起こらない(図19(b))。このように、キャッシュにおけるラインコンフリクトは、キャッシュ構成とメモリ上のデータ配置に依存することがわかる。本発明は、以上述べた問題点に鑑み、キャッシュにおけるラインコンフリクトを回避し、キャッシュミスによる性能劣化を防止することを目的とする。

課題を解決するための手段

0013

本発明は、前記目的を達成するために、キャッシュにおけるラインコンフリクトを検出するラインコンフリクト判別手段を設け、ラインコンフリクト判別手段の出力信号によって、メモリコントローラがメインメモリ上の前記ラインコンフリクトを引き起こすデータを別のアドレスへと変換して、ラインコンフリクトを回避するキャッシュシステムを提供する。別のアドレスに変換されたデータはメインメモリの空き領域に置かれてもよいし、メインメモリとは異なるサブメモリに置かれてもよい。また、ラインコンフリクト領域を再びアクセスしたことを検出するデータ複数回参照検出手段を備え、次にアクセスするときには別のアドレスにアクセスするようにする。

0014

また、本発明によれば、コンパイラがプログラム上に記号を付加してラインコンフリクトが起こることを指示し、プロセッサがプログラムを実行する際に、ラインコンフリクトを引き起こすデータを別のアドレスへと変換するようにさせることもできる。また、アドレス変換されサブメモリへコピーされたラインコンフリクトを引き起こさないデータを、プログラムが終了した時点でそのデータ構造を保持してメインメモリに書き換えるようにしてもよい。

発明を実施するための最良の形態

0015

図を参照して、本発明の実施の形態を説明する。図を通して同一の機能をもつ構成要素は同一の符号で示す。図1〜3に、ラインコンフリクト判別装置を備える本発明の第1の実施形態を示す。図1に示した第1の実施形態(その1)であるキャッシュシステムは、プロセッサ1とメインメモリ3間にキャッシュ2を備えるキャッシュシステムにおいて、ラインコンフリクト判別装置6がキャッシュにおけるラインコンフリクトを検出するとメモリコントローラ5に通知し、メモリコントローラ5はラインコンフリクトが起こるデータをメインメモリ上でラインコンフリクトが起こらないような配置に変換し、データ複数回参照検出装置7によって再度該当データにアクセスしたことを検知すると、メモリコントローラ5は変換先のデータにアクセスするように制御するものである。

0016

図2は、図1に示すシステムにおいて、サブメモリ4を備え、セレクタ8によってメインメモリに代えてサブメモリを選択可能とした第1の実施形態(その2)を示す。本例では、ラインコンフリクトが起こるデータをメインメモリ3の空き領域ではなく、サブメモリ4にコピーするものである。図3は、サブメモリ4とともにライトバック装置9を備える第1の実施形態(その3)であり、プログラムの実行が終了すると、サブメモリ4上のデータをそのまますなわちラインコンフリクトが起こらないような配置のままでメインメモリ3に書き換えるものである。

0017

図4〜6には、コンパイラによってプログラム上に付加された記号によりラインコンフリクトを判別する本発明の第2の実施形態の概要を示す。図4に示す第2の実施形態(その1)では、プロセッサ1がコンパイラによって付加された記号を判別して、メモリコントローラ5にラインコンフリクトが起こるデータであることを通知し、メモリコントローラ5は該データのメインメモリ3上の配置をラインコンフリクトが起こらないような配置に変換し、かつ次のアクセス時には変換したデータにアクセスするようにするものである。

0018

図5は、図3に示すシステムにサブメモリ4を付加して、セレクタ8によってメインメモリに代えてサブメモリ4を選択可能とした第2の実施形態(その2)であり、ラインコンフリクトが起こるデータをメインメモリ3の空き領域ではなく、サブメモリ4にコピーするものである。図6は、サブメモリ4とともにライトバック装置9を備える第2の実施形態であり、プログラムの実行が終了すると、サブメモリ4上のデータをそのまますなわちラインコンフリクトが起こらないような配置でメインメモリ3に書きかえるものである。

0019

次に、図7〜9を参照して、本発明の第1の実施の形態を詳細に説明する。図7は、図1に示した本発明の第1の実施形態(その1)におけるメインメモリの配置を示す。上述のように、本例のシステムは、プロセッサ1とメインメモリ3の間にキャッシュ2を備えるシステムであって、ラインコンフリクトの発生を検出するラインコンフリクト判別装置6と、ラインコンフリクトを引き起こす領域を再びアクセスしたことを検出するデータ複数回参照判別装置7と、メモリコントローラ5とを備える。

0020

ラインコンフリクト判別装置6がラインコンフリクトの発生を検出してメモリコントローラ5に通知すると、メモリコントローラ5は、ラインコンフリクトを引き起こすデータを、領域MAからラインコンフリクトを引き起こさないメモリ上の別の領域MBのアドレスに変換する。次いで、データ複数回参照判別装置7がラインコンフリクトを引き起こす領域を再びアクセスしたことを検出すると、2回目以降の該当データへのアクセスに関しては、別の領域MBにアクセスを切り替えるものである。ラインコンフリクトを引き起こさない別の領域MBのアドレスは、メモリ配置及びキャッシュ構成等から算出して予め設定しておく。

0021

説明のために、先に述べた例を用いる。すなわち、図14に示した、サイズが2Mバイトでラインサイズが64バイト、ダイレクトマップ構成のキャッシュを有し、図15(a)のメモリ配置をとる配列データA[]とB[]とを図16のプログラムでアクセスする例を考える。プログラムがプロセッサ1で実行されると、メインメモリ3からアクセスしたデータはキャッシュ2に載る。実行されるプログラムが、図16に示すループを含んでいるので、ループの中では、命令(1)と命令(2)とでそれぞれ配列データA[]とB[]に交互にアクセスを行う。

0022

先に述べたように、メモリ上でのデータA[]とB[]はそれぞれ1Mバイトであり、その配置は図14に示すように、配列データの先頭のアドレスが2Mバイト離れている。そのため、A[0]のデータがキャッシュラインの0番目を使用すると、B[0]もまたキャッシュラインの0番目にアクセスすることになる。したがって、ラインコンフリクトによるキャッシュミスが多発する。キャッシュの情報はラインコンフリクト判別装置6に集められており、このように、ラインコンフリクトによるキャッシュミスがある一定時間内に所定数以上起きたときには、ラインコンフリクト判別装置6がこれを判別し、メモリコントローラ5にこの情報を通知する。

0023

なお、ラインコンフリクトが起きているかどうかを判別するには、たとえば、各キャッシュラインをアクセスする回数カウントするカウンタを配置し、アクセス回数が高いラインにラインコンフリクトが起きていると判断するような装置構成をとればよい。これにより、メモリコントローラ5は、ラインコンフリクトを引き起こすデータA[]とB[]の存在する領域MAを全体として、ラインコンフリクトを起こさないようなデータ配置となるようにしてメモリの空き領域(領域MB)へとコピーする。ラインコンフリクトを起こさないようなデータ配置とするためには、たとえば図15の例のようにA[]とB[]のデータ領域の間に1Mバイトのパディングを行えばよい。

0024

このようにすれば、データA[]は、キャッシュのライン0からライン16383に載せられ、データB[]は、キャッシュのライン16384からライン32767に載せられることになり、ラインコンフリクトは発生しない。ラインコンフリクトを起こさないような配置は、1Mバイトのパディングに限らず、データA[]とデータB[]とが、キャッシュのラインに重ならないようにすればよい。また他の例においても、最小のパディングでキャッシュコンフリクトを回避するように計算して設定しておくのがよい。

0025

この間もラインコンフリクト判別装置はチェックを続けておりラインコンフリクトが起きなくなったら、ラインコンフリクト判別装置6からメモリコントローラ5に信号が送られて領域MBへのデータのコピーは終了する。その後は通常のプログラムの処理を行う。再びこのループのアクセスが行われると、データ複数回参照検出装置7によってこのアクセスが検知され、出力信号がメモリコントローラに送られ、領域MAでなく領域MBをアクセスするように切り替え、ラインコンフリクトを起こさずにプログラムを実行する。領域MBへのアクセスが終了すると、メモリコントローラへ通知され、領域MAへのアクセスに切り替わる。この後、通常通り処理を続行する。

0026

図8は、第1の実施形態(その1)にサブメモリ4を付加し、ラインコンフリクトが起こるデータをサブメモリ4にコピーするようにした第1の実施形態(その2)のメモリ構成を示したものである。

0027

すなわち、メインメモリの空き領域にコピーするのに代えて、領域MAのデータに1Mバイトのパディングをしてラインコンフリクトを起こさないようなデータ配置として、サブメモリ4の領域SB(通常先頭の0x0000000から始まる領域)にコピーする。サブメモリ4を用いる場合には、メモリを切り替えるためのセレクタ8を備え、データ複数回参照検出装置7によって再度のアクセスが検知されると、メモリコントローラからセレクタ8に信号が送られ、メインメモリからサブメモリにアクセスを切り替える。サブメモリ4のラインコンフリクトが起こらない領域SBにアクセスすることによって、ラインコンフリクトを回避できる。サブメモリ4へのアクセスが終了すると、メモリコントローラへの通知が行われ、セレクタに信号が送られ、サブメモリからメインメモリへと切り替えが行われる。この後、通常通り処理を続行することになる。本例では、同一のメモリの空き領域にコピーする場合とは異なって、サブメモリの先頭からコピーすればよいから空き領域を算出する等のアドレス変換に伴うオーバヘッドを少なくすることができる。

0028

図9は、第1の実施形態(その3)のメモリ構成を示したもので、サブメモリ4とともにライトバック装置9を配置し、プログラムの実行を終了した時点で、ライトバック装置9を使用してサブメモリ4の領域SBからメインメモリ3の領域MA’へ、サブメモリにおけるデータ配置を保持するようにしてデータの書き換えを行うものである。この時書き換えるデータ以後のデータについてアドレス変換も同時に行い、プログラムが矛盾しないようにする。2回目のプログラムの実行以降は、領域MA’でラインコンフリクトを起こさないので、サブメモリにアクセスする必要がない。なお、サブメモリを用いないでメインメモリだけで運用する場合もこのような書き換えを行ってもよい。

0029

次に図10〜13を参照して、第2の実施形態を説明する。本例では、図10〜12に示すように、第1の実施形態で用いられるラインコンフリクト判別装置を備えることなく、コンパイラによって付加される記号によってラインコンフリクトを検出可能とするるものである。

0030

すなわち、本例のシステムは、プロセッサ1とメモリ3の間にキャッシュ2を備えるシステムであって、メモリコントローラ5を備え、プロセッサ1は、コンパイラが付加した記号によってラインコンフリクトを引き起こすデータを判別して、メモリコントローラ5は、そのデータをラインコンフリクトが起きないようなデータ配置としてメモリ上の別の領域へコピーし、かつ2回目以降の該当データへのアクセスに関しては、該別の領域にアクセスを切り替えるものである。

0031

例として、第1の実施形態と同じキャッシュ構成を持つシステムを考える。図16に示したとおり、実行されるプログラムにはループがあり、ラインコンフリクトによるキャッシュミスが多発するものである。図13は、第2の実施形態で動作するプログラム例である。

0032

本例では、ラインコンフリクトを回避するために、キャッシュの容量と構成及びメモリに割り付けられるアドレス等の関係によって、コンパイラがこのループでラインコンフリクトが起きると判断し、図13に示すように、このループが開始されることを示す記号(line conflict start)と、ループが終了することを示す記号(line conflict end)をプログラムに付加する。このようにすれば、コンパイラはプログラムに記号を付加するのみであるから、特定のハード構成に限定されることなく、ラインコンフリクトを回避するように指示できる。

0033

プロセッサが、前記のコードを実行し、配列データA[]とB[]が乗っているメモリ領域(領域MAとする)をアクセスするループに到達すると、前記の記号(line conflict start)をプロセッサが検出し、メモリコントローラ5に信号を送る。

0034

メモリコントローラは、ラインコンフリクトを引き起こすデータA[]とB[]の存在する領域MAを、メモリの空き領域(領域MB)へとコピーする。この時、図14に示しているようなラインコンフリクトを起こさないよう、図15のようにA[]とB[]のデータ領域の間に1Mバイトのパディングを行う。ラインコンフリクトを起こすループの終了を示す記号(line conflict end)をプロセッサが検出すると、メモリコントローラへと信号を送る。その後、領域MBへのデータのコピーは終了する。その後は通常のプログラムの処理を行う。

0035

再びこのループのアクセスが行われると、プロセッサがコンパイラの付加した記号(line conflict start)を検知し、メモリコントローラへ信号を送る。そして、領域MAでなく領域MBをアクセスするように切り替える。このようにしてラインコンフリクトが回避できるようになる。コンパイラが付加した、前記ループのアクセスの終了を意味する記号(line conflict end)をプロセッサが検出すると、メモリコントローラへ信号が送られ、領域MA へのアクセスに切り替わる。

0036

図11は、第2の実施形態(その2)を示す。本例は、メインメモリにおける空き領域に代えて、サブメモリを使用してサブメモリにコピーする。第2の実施例(その1)と同様に、プロセッサが、図13のプログラムを実行し、配列データA[]とB[]が乗っているメインメモリの領域をアクセスするループに到達すると、前記の記号(line conflict start)をプロセッサが検出し、メモリコントローラ5に信号を送る。メモリコントローラは、ラインコンフリクトを引き起こすデータA[]とB[]の存在する領域MAを、サブメモリの領域SBへとコピーする。この時、ラインコンフリクトを起こさないよう、A[]とB[]のデータ領域の間に1Mバイトのパディングを行う。ラインコンフリクトを起こすループの終了を示す記号(line conflict end)をプロセッサが検出すると、メモリコントローラへと信号を送り、サブメモリへのデータのコピーは終了する。その後は通常のプログラムの処理を行う。

0037

再びこのループのアクセスが行われると、プロセッサ1はコンパイラが付加した記号を検知しメモリコントローラ5へ信号を送る。これによりメモリコントローラ5からセレクタ8に信号が送られ、メインメモリからサブメモリにアクセスが切り替わる。このため、プロセッサ1はサブメモリをアクセスすることになり、ラインコンフリクトを起こさずにプログラムの実行が行える。その後、ラインコンフリクトを起こすループの終了を示す記号(line conflict end)をプロセッサが検出すると、セレクタ8へ信号が送られ、サブメモリからメインメモリへ切り替えが行われる。その後は通常どおり処理が実行される。

0038

図12は、第2の実施形態(その3)のメモリ構成を示したもので、サブメモリ4とともにライトバック装置9を配置し、プログラムの実行を終了した時点で、ライトバック装置9を使用してサブメモリ4の領域SBからメインメモリ3の領域MA’へ、サブメモリにおけるデータ配置を保持するようにしてデータの書き換えを行うものである。この時書き換えるデータ以後のデータについてアドレス変換も同時に行い、プログラムが矛盾しないようにする。2回目のプログラムの実行以降は、領域MA’でラインコンフリクトを起こさないので、サブメモリにアクセスする必要がない。

0039

以上述べた本発明の実施の態様は、以下の付記のとおりである。
(付記1)プロセッサとメモリ間にキャッシュメモリを配置するキャッシュシステムにおけるキャッシュミス回避装置であって、メモリコントローラとラインコンフリクト判別手段とを備え、前記ラインコンフリクト判別手段は、前記キャッシュメモリにおけるラインコンフリクトを検出し、前記メモリコントローラは、前記ラインコンフリクト判別手段の出力信号によって、前記メモリ上のラインコンフリクトを引き起こすデータをラインコンフリクトを引き起こすことのない別のアドレスをもつデータに変換することを特徴とするキャッシュミス回避装置。

0040

(付記2)データ複数回参照検出手段を備え、前記データ複数回参照検出手段は前記ラインコンフリクトを引き起こすデータが再びアクセスされたことを検出し、前記メモリコントローラは前記データ複数回参照検出手段の出力信号によって、前記プロセッサが前記別のアドレスに変換されたデータにアクセスすることを可能とすることを特徴とする付記1に記載のキャッシュミス回避装置。
(付記3)プロセッサとメモリ間にキャッシュメモリを配置するキャッシュシステムにおけるキャッシュミス回避装置であって、メモリコントローラを備え、前記プロセッサは、プログラム上のコンパイラが付加した記号によりキャッシュメモリにおけるラインコンフリクトを判別し、前記メモリコントローラは、前記プロセッサの信号により前記メモリ上のラインコンフリクトを引き起こすデータをラインコンフリクトを引き起こすことのない別のアドレスをもつデータに変換することを特徴とするキャッシュミス回避装置。

0041

(付記4)前記ラインコンフリクトを引き起こすデータに再びアクセスする際には、前記プロセッサは前記別のアドレスに変換されたデータにアクセスすることを特徴とする付記3に記載のキャッシュミス回避装置。
(付記5)サブメモリを備え、前記サブメモリには、前記ラインコンフリクトを引き起こすことのない別のアドレスをもつデータが記憶されることを特徴とする付記1〜4のいずれかに記載のキャッシュミス回避装置。

0042

(付記6)サブメモリとライトバック装置を備え、前記サブメモリには、前記ラインコンフリクトを引き起こすことのない別のアドレスをもつデータが記憶され、前記ライトバック装置は、プログラムの実行終了時に、前記メモリ上のラインコンフリクトを引き起こすデータを前記サブメモリ上の前記ラインコンフリクトを引き起こすことのない別のアドレスをもつデータによって書き換えることを特徴とする付記2又は4に記載のキャッシュミス回避装置。

発明の効果

0043

本発明においては、ラインコンフリクト判別装置の出力信号によって、メモリコントローラがラインコンフリクトを引き起こすデータをメモリ上の別のアドレスへと変換するから、ラインコンフリクトを回避することができ、プログラムの実行性能を向上させることができる。また、ラインコンフリクト判別装置を用いているので、実際にラインコンフリクトが起きていることを検出でき、また、データ複数回参照検出装置を用いて再度のアクセスを検出して別のアドレスにアクセスするようにしたから、有効にラインコンフリクトを回避できる効果を奏する。

0044

また、本発明において、プログラム上のコンパイラが付加した記号によりプロセッサがラインコンフリクトを判別する場合には、ソフトウェアにおける処理を行うものであるから、ラインコンフリクト判別装置等を用いることなくラインコンフリクトを回避できる効果を奏する。また、本発明において、サブメモリを備え、ラインコンフリクトを引き起こすデータをサブメモリにコピーする場合は、アドレス変換を行うことなくラインコンフリクトを回避できるシステムを構築することができ、ライトバック装置を用いると、ラインコンフリクトの起こらないサブメモリのメモリ配置をメインメモリにライトバックすることができ、以後メインメモリのみの運用でラインコンフリクトを回避できる効果を奏する。

図面の簡単な説明

0045

図1本発明の第1の実施形態の概要を示す図である。
図2サブメモリを備える第1の実施形態の概要を示す図である。
図3サブメモリとライトバック装置を備える第1の実施形態の概要を示す図である。
図4本発明の第2の実施形態の概要を示す図である。
図5サブメモリを備える第2の実施形態の概要を示す図である。
図6サブメモリとライトバック装置を備える第2の実施形態の概要を示す図である。
図7本発明の第1の実施形態(その1)の概要を示す図である。
図8サブメモリを備える第1の実施形態(その2)の概要を示す図である。
図9ライトバック装置を備える第1の実施形態(その3)の概要を示す図である。
図10本発明の第2の実施形態(その1)の概要を示す図である。
図11サブメモリを備える第2の実施形態(その2)の概要を示す図である。
図12ライトバック装置を備える第2の実施形態(その3)を示す図である。
図13第2の実施形態におけるプログラムを示す図である。
図14(a)はメモリ配置を示し、(b)はキャッシュを示す図である。
図15(a)はラインコンフリクトを起こすメモリ配置を示し、(b)はそのキャッシュアクセスパターンを示す図である。
図16ラインコンフリクトを起こすループをもつプログラムの一例である。
図17(a)はラインコンフリクトを起こすメモリアクセスを示し、(b)はそのキャッシュ動作の経過(その1)を示す図である。
図18ラインコンフリクトを起こすキャッシュ動作の経過(その2)を示す図である。
図19(a)はラインコンフリクトを起こさないメモリ配置を示し、(b)はそのキャッシュアクセスパターンを示す図である。

--

0046

1…プロセッサ
2…キャッシュ
3…メインメモリ
4…サブメモリ
5…メモリコントローラ
6…ラインコンフリクト判別装置
7…データ複数回参照検出装置
8…セレクタ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ