[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2004038601A - キャッシュメモリ装置 - Google Patents

キャッシュメモリ装置 Download PDF

Info

Publication number
JP2004038601A
JP2004038601A JP2002195324A JP2002195324A JP2004038601A JP 2004038601 A JP2004038601 A JP 2004038601A JP 2002195324 A JP2002195324 A JP 2002195324A JP 2002195324 A JP2002195324 A JP 2002195324A JP 2004038601 A JP2004038601 A JP 2004038601A
Authority
JP
Japan
Prior art keywords
cache
holding unit
data
address
instruction data
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
JP2002195324A
Other languages
English (en)
Inventor
Satoshi Ogura
小椋 里
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002195324A priority Critical patent/JP2004038601A/ja
Publication of JP2004038601A publication Critical patent/JP2004038601A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることを目的とする。
【解決手段】ループ展開によって生成された繰返し命令列を実行した際にも、同一命令データがキャッシュデータ保持部22に存在する場合は、再利用情報保持部24にその命令データに対応するポインタを格納して、キャッシュデータ保持部22のエントリを消費しないため、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【選択図】  図1

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムにおいて、メモリアクセス性能を向上させるキャッシュメモリ装置に関し、特にループ展開等による繰返し命令を処理する場合に容量を有効に用いるキャッシュメモリ装置に関する。
【0002】
【従来の技術】
近年半導体技術の向上によってプロセッサの性能は著しく向上している。
しかしながら、中央処理装置の性能向上に対して、中央処理装置が実行する命令を記憶するメモリの性能向上は比較的緩やかであるため、中央処理装置の命令待ちが発生し、プロセッサの性能がメモリによって律速されるという問題が発生している。
【0003】
これに対処するため、高性能なプロセッサでは主記憶装置と中央処理装置の間にキャッシュシステムを設け、中央処理装置がアクセスした命令をキャッシュメモリ装置が保持することによって、2度目以降のアクセスを高速化し、主記憶装置の実質的なアクセス速度を高速化している。
【0004】
以下、図21,図22,図23,図24,図25を用いて従来のキャッシュメモリ装置について説明する。
図21は従来のキャッシュメモリ装置の構成を示すブロック図であり、図22は従来のキャッシュメモリ装置の動作フローを示すフローチャートである。図23は展開前のC言語によるプログラムを表す図,図24は展開後のプログラムを表す図,図25は従来の技術において展開したプログラムがキャッシュデータ保持部に格納された様子を例示する図である。
【0005】
図21において、プロセッサの構成要素であり命令を実行する中央処理装置1と、中央処理装置1が実行する命令を格納する主記憶装置3も同時に示している。
【0006】
中央処理装置1は、キャッシュメモリ装置7を介して主記憶装置3から読み出された命令を順次実行するように構成されている。
キャッシュメモリ装置7は、キャッシュメモリ装置全体の制御を行うキャッシュ制御部71と、キャッシュ制御部71の制御に従って主記憶装置3上の命令データを16バイト単位で最大4エントリ記憶するキャッシュデータ保持部72から構成されている。
【0007】
図22において、この制御フローは、中央処理装置1によるフェッチ要求信号S11が出力された際に開始される。
次に、キャッシュデータ保持部72を制御し、フェッチアドレスA11に対応する命令データがキャッシュデータ保持部72に存在するか否かを判定する(S415)。
【0008】
次に、命令データが存在する場合、キャッシュデータ保持部72を制御し、キャッシュデータ保持部72が保持するフェッチアドレスA11に対応する命令データを中央処理装置1に出力する(S416)。
【0009】
命令データが存在しない場合は、アクセス要求信号S71および、アクセスアドレスA71を制御し、主記憶装置3から、16バイト単位で命令データを読み出す(S417)。
【0010】
次に、キャッシュデータ保持部72を制御し、フェッチアドレスA11と、リードデータD31をキャッシュデータ保持部72に登録してS416に進める(S418)。
【0011】
上記のように、中央処理装置のフェッチ要求に対して、キャッシュデータ保持部72が読み出された命令データを記憶することにより、同一アドレスに対する次からのフェッチ要求に対しては、キャッシュデータ保持部72が直接データを提供することが可能になり、主記憶装置へのアクセスが不要になるため、中央処理装置に対する主記憶装置の見かけ上のアクセス速度を向上することが可能になる。
【0012】
しかしながら、従来の構成のキャッシュメモリ装置では、ループ展開等によって生成される繰返し命令の実行時に効率が低下するという課題があった。以下にこの状態を説明する。
【0013】
ループ展開はプログラムのループ内で実行される命令列を複数回並べることによって、ループ終了の条件判定を行う命令や、ループ繰返しのための分岐命令の実行回数を減らす手法である。
【0014】
例えば、図23のC言語のプログラムに対して、ループ展開を実施した場合、図24のような繰り返し命令を含む命令データが生成される。
この命令データを従来の構成のキャッシュメモリ装置を備えるプロセッサで実行した場合、中央処理装置1が命令データ831、命令データ832、命令データ833、命令データ834を実行していくのに従って、キャッシュデータ保持部72の各エントリに命令データ831、命令データ832、命令データ833、命令データ834の各命令データが記憶されていく。
【0015】
その後、中央処理装置1が後続する命令データ835を実行する場合、キャッシュデータ保持部には空きのエントリがないため、すでに命令データが格納されているエントリを置き換えて新たな命令データを記憶する必要がある。
【0016】
この結果、中央処理装置が図23の命令データを実行した後には、キャッシュデータ保持部に格納されているデータは図25のようになり、中央処理装置が再度命令データ831を実行しようとした場合、命令データ831はすでにキャッシュデータ保持部に存在しないため、再度主記憶装置から読み出してくる必要がある。
【0017】
このように、従来のキャッシュメモリ装置を搭載したプロセッサでは、ループ展開などによって生成された繰返しの命令列を実行した場合、キャッシュメモリの容量が不足するようになり、キャッシュメモリ装置が効率的に動作しないという問題点があった。
【0018】
【発明が解決しようとする課題】
この問題点を解決する手法の一つとして、キャッシュデータ保持部のエントリ数を増加させるという方法があるが、この場合、キャッシュデータを記憶するメモリの量が増大し、キャッシュメモリ装置のハードウェア量が増大するという別の問題点が発生するようになる。
【0019】
上記課題に鑑み本発明のキャッシュメモリ装置は、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることを目的とする。
【0020】
【課題を解決するための手段】
上記目的を達成するために本発明の請求項1記載のキャッシュメモリ装置は、主記憶装置の命令データのうち過去に使用した命令データを記憶して効率的に命令フェッチするキャッシュシステムを設けたキャッシュメモリ装置であって、中央処理装置の要求するアドレスに対応した命令データを主記憶装置から読み出してそのアドレスと命令データとを記憶するキャッシュデータ保持部と、前記中央処理装置の要求するアドレスに対応した前記キャッシュデータ保持部の命令データを指示するポインタと前記アドレスを記憶する再利用情報保持部と、前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在しているか否かを判断する再利用判定部と、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部または前記再利用情報保持部に記憶されている場合には対応する命令データを前記中央処理装置に供給するキャッシュ制御部とを有し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部に存在する場合は前記キャッシュデータ保持部に記憶された前記中央処理装置の要求するアドレスに対応する命令データを前記中央処理装置に出力し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部に存在せず前記再利用情報保持部に存在する場合は前記キャッシュデータ保持部に記憶された前記中央処理装置の要求するアドレスに対応するポインタによって指示された命令データを前記中央処理装置に出力し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記中央処理装置に出力すると共に前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在しないと判断した場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データおよび対応するアドレスを記憶し前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在すると判断した場合は前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とする。
【0021】
請求項2記載のキャッシュメモリ装置は、請求項1記載のキャッシュメモリ装置において、前記キャッシュデータ保持部は前記主記憶装置に格納された命令データを所定のサイズのキャッシュライン単位で記憶し、前記再利用情報保持部へ記憶するポインタとして前記キャッシュラインを指示するポインタを記憶し、前記再利用判定部での命令データの比較を前記キャッシュライン単位で行うことを特徴とする。
【0022】
請求項3記載のキャッシュメモリ装置は、請求項1または請求項2記載のキャッシュメモリ装置において、直前のキャッシュミスの際に前記主記憶装置から読み出した前記中央処理装置の要求するアドレスに対応した命令データを記憶するリードデータ保持部を有し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は、前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記主記憶装置に出力すると共に、前記主記憶装置から読み出した命令データと前記リードデータ保持部の命令データを比較し、一致しない場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データとそのアドレスを記憶し、一致した場合は前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とする。
【0023】
請求項4記載のキャッシュメモリ装置は、請求項1または請求項2記載のキャッシュメモリ装置において、直前のキャッシュヒットの際に前記キャッシュデータ保持部から出力した前記中央処理装置の要求するアドレスに対応した命令データを記憶するフェッチライン保持部を有し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は、前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記主記憶装置に出力すると共に、前記主記憶装置から読み出した命令データと前記フェッチライン保持部の命令データを比較し、一致しない場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データとそのアドレスを記憶し、一致した場合は前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とする。
【0024】
以上の構成により、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【0025】
【発明の実施の形態】
本発明の実施の形態について図面を用いて詳細に説明する。
(実施の形態1)
以下、本発明の実施の形態1について図1,図2,図3,図4,図5,図6を用いて説明する。
【0026】
図1は本発明の実施の形態1におけるキャッシュメモリ装置の構成を示すブロック図であり、図2は本発明の実施の形態1におけるキャッシュメモリ装置の動作フローを示すフローチャートである。図3は実施の形態1における展開前のC言語によるプログラムを表す図,図4は実施の形態1における展開後のプログラムを表す図である。図5,図6,図7,図8は実施の形態1において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図であり、プログラムを徐々に展開していく様子を示している。
【0027】
図1において、プロセッサの構成要素であり命令を実行する中央処理装置1と、中央処理装置1が実行する命令を格納する主記憶装置3も同時に示している。中央処理装置1は、キャッシュメモリ装置2を介して主記憶装置3から読み出された命令を順次実行するように構成されている。
【0028】
キャッシュメモリ装置2は、キャッシュメモリ装置全体の制御を行うキャッシュ制御部21と、キャッシュ制御部21の制御に従って中央処理装置1の要求するアドレスに対応する主記憶装置3上の命令データを16バイト単位で最大4エントリ記憶するキャッシュデータ保持部22と、主記憶装置3から読み込まれたリードデータD31と同一の命令データがキャッシュデータ保持部22に存在するか否かを判定する再利用判定部23と、キャッシュ制御部21の制御に従って中央処理装置1の要求するアドレスに対応するポインタを最大4エントリ記憶する再利用情報保持部24から構成されている。
【0029】
図2において、この制御フローは、まず、中央処理装置1によるフェッチ要求信号S11が出力された際に開始される。
次に、中央処理装置1の要求するフェッチアドレスA11と一致するアドレスがキャッシュデータ保持部22に存在するか否かを判定して、要求する命令データが存在するか否かを判定する(S411)。
【0030】
要求する命令データが存在しない場合、再利用情報保持部24を制御し、フェッチアドレスA11に対応するポインタが再利用情報保持部24に存在するか否かを判定する(402)。
【0031】
ポインタが存在しない場合、アクセス要求信号S21および、アクセスアドレスA21を制御信号とし、主記憶装置3から16バイト単位で命令データを読み出し(403)、ポインタが存在する場合、再利用情報保持部24が保持するフェッチアドレスA11に対応するポインタによって指示されるキャッシュデータ保持部22に登録された命令データを中央処理装置1に出力する(S408)。
【0032】
次に、主記憶装置3から読み出されたリードデータD31と同一の命令データがキャッシュデータ保持部22に存在するか否かを再利用判定部23にて判定する(S404)。
【0033】
同一の命令データがキャッシュデータ保持部22に存在する場合、リードデータD31と同一の命令データを保持するキャッシュラインのポインタとフェッチアドレスA11を再利用情報保持部24に登録する(S405)。
【0034】
S404において、リードデータD31と同一の命令データがキャッシュデータ保持部22に存在しない場合、フェッチアドレスA11と、リードデータD31をキャッシュデータ保持部22に登録し(S406)、その命令データを中央処理装置1に出力する(S407)。
【0035】
また、S401にてキャッシュデータ保持部22にフェッチアドレスA11に対応する命令データが保持されている場合、キャッシュデータ保持部22が記憶するフェッチアドレスA11に対応する命令データを中央処理装置1に出力する(S407)。
【0036】
S402にて再利用情報保持部24にフェッチアドレスA11に対応するポインタが保持されている場合、再利用情報保持部24が保持するフェッチアドレスA11に対応するポインタによって指示されるキャッシュデータ保持部22登録された命令データを中央処理装置1に出力する(S408)。
【0037】
上記のように構成されたキャッシュメモリ装置2について、図3に示したC言語プログラムを実行した場合の動作を説明する。
図4に示したアセンブラプログラムは、図3に示したC言語プログラムにループ展開を伴うコンパイルを実施した結果の一例である。なお、この例ではプロセッサの命令は4バイトの固定長としている。
【0038】
以下に、図1のキャッシュメモリ装置における図4のアセンブラプログラムを実行した場合の動作について説明する。
なお、初期状態ではキャッシュデータ保持部22はいかなる命令データも保持せず、再利用情報保持部24はいかなるポインタも保持していないとする。
【0039】
まず、中央処理装置1は、フェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0000番地の命令データの供給をキャッシュメモリ装置2に要求する。
【0040】
この要求を受け、キャッシュ制御部21は、キャッシュデータ保持部22に0x0000番地の命令データが存在するか否かを判定する(図2のS401)。その結果、キャッシュデータ保持部22は初期状態では0x0000番地に対応する命令データを保持していないため、キャッシュ制御部21は再利用情報保持部24に0x0000番地に対応するポインタが登録されているか否かを判定する(図2のS402)。
【0041】
その結果、再利用情報保持部24は初期状態では0x0000番地に対応するポインタを保持していないため、キャッシュ制御部21はアクセス要求信号S21および、アクセスアドレスA21を制御信号とし、主記憶装置3から0x0000番地を先頭とする16バイトの命令データ811を読み出す(図2のS403)。
【0042】
次に、キャッシュ制御部21は、主記憶装置3から読み出された16バイトの命令データ811と同一の命令データがキャッシュデータ保持部22に存在するか否かを判定する(図2のS404)。
【0043】
その結果、キャッシュデータ保持部22は初期状態では、上記の命令データを保持していないため、キャッシュ制御部21は、フェッチアドレス0x0000と主記憶装置3から読み出されたアドレス0x0000から始まる命令データ811をキャッシュデータ保持部22に登録する(図2のS406)。
【0044】
次に、キャッシュ制御部21は、キャッシュデータ保持部22が記憶する0x0000番地の命令データを中央処理装置1に出力させる(図2のS407)。以上の動作によって、中央処理装置1は要求した0x0000番地の命令データを得て、命令の実行を開始する。
【0045】
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図5のように、キャッシュデータ保持部22には0x0000に対応する命令データ811を記憶し、再利用情報保持部24には何も記憶されていない状態になる。
【0046】
次に、中央処理装置1は後続する命令を実行するためにフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0004番地の命令データの供給をキャッシュメモリ装置2に要求する。
【0047】
この要求を受け、キャッシュ制御部21は、キャッシュデータ保持部22に0x0004番地の命令データが存在するか否かを判定する(図2のS401)。その結果、キャッシュデータ保持部22は0x0004番地に対応する命令データを保持しているため、キャッシュデータ保持部22が記憶する0x0004番地の命令データを中央処理装置1に出力させる(図2のS407)。
【0048】
以上の動作によって、中央処理装置1は要求した0x0004番地の命令データを得て命令の実行を開始することができる。
以降、0x0008番地、0x000Cの番地の命令データについてもキャッシュデータ保持部22が該当するアドレスに対応する命令データを保持しているため、図2のフローチャートのS407の動作によってキャッシュデータ保持部22が記憶する命令データが中央処理装置1に出力される。
【0049】
次に、0x0010番地、0x0014番地、0x0018番地、0x001C番地の命令データについては、先述の0x0000番地、0x0004番地、0x0008番地、0x000C番地と同様の制御によって、0x0010番地から始まる16バイトの命令データ812がキャッシュデータ保持部に格納された後に、キャッシュメモリ装置2が中央処理装置1に命令データを出力し、その結果、キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図6のように命令データ812の命令データが加えられる。
【0050】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0020番地の命令データをキャッシュメモリ装置2に要求する。
【0051】
キャッシュデータ保持部22および再利用情報保持部24は該当するアドレスを保持していないため、キャッシュ制御部21はアクセス要求信号S21および、アクセスアドレスA21を制御信号とし、主記憶装置3から0x0020番地を先頭とする16バイトの命令データ813を読み出す(図2のS403)。
【0052】
次に、キャッシュ制御部21は、主記憶装置3から読み出された16バイトの命令データ813と同一の命令データがキャッシュデータ保持部22に存在するか否かを判定する(図2のS404)。
【0053】
その結果、キャッシュデータ保持部22は上記命令データと同一の命令データを保持しているため(図6のキャッシュデータ保持部のエントリ”1”)、キャッシュ制御部21は再利用情報保持部24にフェッチアドレス0x0020と上記命令データを保持しているキャッシュデータ保持部22のエントリ”1”を登録する(図2のS405)。
【0054】
次に、キャッシュ制御部21は、再利用情報保持部24が記憶するフェッチアドレス0x0020に対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データとして0x0010番地に対応する命令データを中央処理装置1に出力する(図2のS408)。
【0055】
以上の動作によって中央処理装置1は要求した0x0020番地の命令データを得て命令の実行を開始することができる。
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図7のように変化する。
【0056】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0024番地の命令データをキャッシュメモリ装置2に要求する。
【0057】
この要求を受け、キャッシュ制御部21は、キャッシュデータ保持部22に0x0024番地の命令データが存在するか否かを判定する(図2のS401)。その結果、キャッシュデータ保持部22は0x0024番地に対応する命令データを保持していないため、キャッシュ制御部21は、再利用情報保持部24に0x0024番地の命令データに対応するポインタが登録されているか否かを判定する(図2のS402)。
【0058】
その結果、再利用情報保持部24は0x0024番地の命令データに対応するポインタを保持しているため、キャッシュ制御部21は、再利用情報保持部24が記憶するフェッチアドレス0x0024に対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データとして実際には0x0014番地に対応する命令データを中央処理装置1に出力する(図2のS408)。
【0059】
以上の動作によって、中央処理装置1は要求した0x0024番地の命令データを得て命令の実行を開始することができる。
以降、0x0028番地、0x002Cの番地の命令データについても再利用情報保持部24が該当するポインタに対応する命令データを保持しているため、図2のフローチャートのS408の動作によって再利用情報保持部24が保持する該当アドレスに対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データを中央処理装置1に出力する。
【0060】
次に、0x0030番地から0x005C番地までの命令データについても、先述の0x0020番地から0x002C番地までと同様の制御によって、キャッシュメモリ装置が中央処理装置1に命令データを出力し、その結果キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図8のように変化する。
【0061】
以上のように、本実施の形態1によるキャッシュメモリ装置では、ループ展開によって生成された繰返し命令列を実行した際にも、同一命令データがキャッシュデータ保持部に存在する場合は、再利用情報保持部にその命令データに対応するポインタを格納して、キャッシュデータ保持部のエントリを消費しないため、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
(実施の形態2)
次に、本発明の実施の形態2におけるキャッシュメモリ装置について、図3,図4,図9,図10,図11,図12,図13,図14を用いて説明する。
【0062】
図9は本発明の実施の形態2におけるキャッシュメモリ装置の構成を示すブロック図であり、図10は本発明の実施の形態2におけるキャッシュメモリ装置の動作フローを示すフローチャートである。図11,図12,図13,図14は実施の形態2において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図であり、プログラムを徐々に展開していく様子を示している。
【0063】
なお、図9には、プロセッサの構成要素であり命令を実行する中央処理装置1と、中央処理装置1が実行する命令を格納する主記憶装置3も同時に示している。
【0064】
中央処理装置1は、キャッシュメモリ装置5を介して主記憶装置3から読み出された命令を順次実行するように構成されている。
キャッシュメモリ装置5は、キャッシュメモリ装置全体の制御を行うキャッシュ制御部51と、キャッシュ制御部51の制御に従って中央処理装置1の要求するアドレスに対応する主記憶装置3上の命令データを16バイト単位で最大4エントリ記憶するキャッシュデータ保持部22と、キャッシュ制御部51の制御に従って直前にキャッシュミスした時に読み出したリードデータD31を記憶するリードデータ保持部531と、主記憶装置から読み込まれたリードデータD31と、リードデータ保持部531に格納された命令データが同一か否かを判定する再利用判定部532と、キャッシュ制御部51の制御に従って中央処理装置1の要求するアドレスに対応する再利用情報を最大4エントリ記憶する再利用情報保持部24から構成されている。
【0065】
次に、図10を用いてキャッシュメモリ装置の動作について説明する。
図10において、まず、中央処理装置1によるフェッチ要求信号S11が出力される。
【0066】
S401、S402、S403、S406、S407、S408については、実施の形態1における図2のフローチャートで示した動作と同一であるので説明を省略する。
【0067】
フェッチアドレスA11に対応する命令データを主記憶装置3から読み出した後、キャッシュ制御部51は、主記憶装置3より読み出されたリードデータD31と、リードデータ保持部531に格納された直前にキャッシュミスした時の命令データが同一であるか否かを判定する(S409)。
【0068】
同一である場合、キャッシュ制御部51は、フェッチアドレスA11と、リードデータ保持部531が保持するポインタを再利用情報保持部24に格納する(S410)。
【0069】
同一でない場合、フェッチアドレスA11とリードデータD31をキャッシュデータ保持部22に登録し(S406)、キャッシュ制御部51は、主記憶装置より読み出されたリードデータD31と、それが格納されたキャッシュデータ保持部22のエントリをリードデータ保持部531に格納する(S411)。
【0070】
上記のように構成されたキャッシュメモリ装置5について、図3に示したC言語プログラムを実行した場合の動作を説明する。
以下に、図9のキャッシュメモリ装置5における図4のアセンブラプログラムを実行した場合の動作について説明する。
【0071】
なお、初期状態ではキャッシュデータ保持部22はいかなる命令データも保持せず、再利用情報保持部24はいかなるポインタも保持せず、リードデータ保持部531はいかなる命令データも保持していないとする。
【0072】
まず、中央処理装置1は、フェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0000番地の命令データをキャッシュメモリ装置5に要求する。
【0073】
この要求を受け、キャッシュ制御部51は、キャッシュデータ保持部22に0x0000番地の命令データが存在するか否かを判定する(図10のS401)。
【0074】
その結果、キャッシュデータ保持部22は初期状態では0x0000番地に対応する命令データを保持していないため、キャッシュ制御部51は再利用情報保持部24に0x0000番地に対応するポインタが登録されているか否かを判定する(図10のS402)。
【0075】
その結果、再利用情報保持部24は初期状態では0x0000番地に対応するポインタを保持していないため、キャッシュ制御部51はアクセス要求信号S51および、アクセスアドレスA51を制御信号とし、主記憶装置3から0x0000番地を先頭とする16バイトの命令データ811を読み出す(図10のS403)。
【0076】
次に、キャッシュ制御部51は、主記憶装置から読み出された命令データ811と、リードデータ保持部531が保持する命令データが一致するか否かを判定する(図10のS409)。
【0077】
その結果、リードデータ保持部531は初期状態ではいかなる命令データも保持せず、命令データは一致しないため、キャッシュ制御部51はフェッチアドレス0x0000と主記憶装置3から読み出された命令データ811をキャッシュデータ保持部22に登録する(図10のS406)。
【0078】
次に、キャッシュ制御部51は、主記憶装置3から読み出された命令データ811と、リードデータD31を格納したキャッシュデータ保持部のエントリ(ここでは”0”とする)をリードデータ保持部531に登録する(図10のS411)。
【0079】
次に、キャッシュ制御部51は、キャッシュデータ保持部22を制御し、キャッシュデータ保持部22が記憶する0x0000番地の命令データを中央処理装置1に出力させる(図10のS407)。
【0080】
以上の動作によって、中央処理装置1は要求した0x0000番地の命令を得て、命令の実行を開始する。
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24および、リードデータ保持部531がそれぞれ記憶する情報は図11のように、キャッシュデータ保持部22,リードデータ保持部531には0x0000に対応する命令データ811を記憶し、再利用情報保持部24には何も記憶されていない状態になる。
【0081】
次に、中央処理装置1は後続する命令を実行するためにフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0004番地の命令データをキャッシュメモリ装置5に要求する。
【0082】
この要求を受け、キャッシュ制御部51は、キャッシュデータ保持部22に0x0004番地の命令データが存在するか否かを判定する(図10のS401)。
【0083】
その結果、キャッシュデータ保持部22は0x0004番地に対応する命令データを保持しているため、キャッシュ制御部51はキャッシュデータ保持部22が記憶する0x0004番地の命令データを中央処理装置1に出力させる(図10のS407)。
【0084】
以上の動作によって、中央処理装置1は要求した0x0004番地の命令データを得て命令の実行を開始することができる。
以降、0x0008番地、0x000Cの番地の命令データについてもキャッシュデータ保持部22が該当するアドレスに対応する命令データを保持しているため、図10のフローチャートのS407の動作によってキャッシュデータ保持部22が記憶する命令データを中央処理装置1に出力する。
【0085】
次に、中央処理装置1は後続する命令を実行するためにフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0010番地の命令データをキャッシュメモリ装置5に要求する。
【0086】
この要求を受け、キャッシュ制御部51は、キャッシュデータ保持部22に0x0010番地の命令データが存在するか否かを判定する(図10のS401)。
【0087】
その結果、キャッシュデータ保持部22は0x0010番地に対応する命令データを保持していないため、キャッシュ制御部51は再利用情報保持部24に0x0010番地に対応するポインタが登録されているか否かを判定する(図10のS402)。
【0088】
その結果、再利用情報保持部24は0x0010番地に対応するポインタを保持していないため、キャッシュ制御部51はアクセス要求信号S51および、アクセスアドレスA51を制御信号とし、主記憶装置3から0x0010番地を先頭とする16バイトの命令データ812を読み出す(図10のS403)。
【0089】
次に、キャッシュ制御部51は、主記憶装置から読み出された命令データ812と、リードデータ保持部531が保持する命令データが一致するか否かを判定する(図10のS409)。
【0090】
その結果、リードデータ保持部531が保持する命令データ811と、主記憶装置3から読み出された命令データ812は一致しないため、フェッチアドレス0x0010と主記憶装置3から読み出された命令データ812をキャッシュデータ保持部22に登録する(図10のS406)。
【0091】
次に、キャッシュ制御部51は、主記憶装置3から読み出された命令データ812と、それが格納されているキャッシュデータ保持部22のエントリ(ここでは”1”とする)をリードデータ保持部531に登録する(図10のS411)。
【0092】
次に、キャッシュ制御部51は、キャッシュデータ保持部22が記憶する0x0010番地の命令データを中央処理装置1に出力する(図10のS407)。以上の動作によって、中央処理装置1は要求した0x0010番地の命令データを得て、命令の実行を開始する。
【0093】
次に、0x0014番地、0x0018番地、0x001C番地の命令データについては、先述の0x0004番地、0x0008番地、0x000C番地と同様の制御によって、キャッシュメモリ装置5が中央処理装置1に命令データを出力し、その結果、キャッシュデータ保持部22および再利用情報保持部24およびリードデータ保持部531がそれぞれ記憶する情報は図12のように変化する。
【0094】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0020番地の命令データをキャッシュメモリ装置5に要求する。
【0095】
キャッシュデータ保持部22および再利用情報保持部24は該当するアドレスを保持していないため、キャッシュ制御部51はアクセス要求信号S51および、アクセスアドレスA51を制御信号とし、主記憶装置3から0x0020番地を先頭とする16バイトの命令データ813を読み出す(図10のS403)。
【0096】
次に、キャッシュ制御部51は、主記憶装置から読み出された命令データ813と、リードデータ保持部531が保持する命令データが一致するか否かを判定する(図10のS409)。
【0097】
その結果、リードデータ保持部531が記憶する命令データ812と、主記憶装置3から読み出された命令データ813は一致するため、キャッシュ制御部51は再利用情報保持部24にフェッチアドレス0x0020とリードデータ保持部が記憶しているエントリ番号”1”を登録する(図10のS410)。
【0098】
次に、キャッシュ制御部51は、再利用情報保持部24が記憶するフェッチアドレス0x0020に対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データとして実際には0x0010番地に対応する命令データを中央処理装置1に出力する(図10のS408)。
【0099】
以上の動作によって中央処理装置1は要求した0x0020番地の命令データを得て命令の実行を開始することができる。
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24およびリードデータ保持部531がそれぞれ記憶する情報は図13のように変化する。
【0100】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0024番地の命令データをキャッシュメモリ装置5に要求する。
【0101】
この要求を受け、キャッシュ制御部51は、キャッシュデータ保持部22に0x0024番地の命令データが存在するか否かを判定する(図10のS401)。
【0102】
その結果、キャッシュデータ保持部22は0x0024番地に対応する命令データを保持していないため、キャッシュ制御部51は再利用情報保持部24に0x0024番地の命令データに対応するポインタが登録されているか否かを判定する(図10のS402)。
【0103】
その結果、再利用情報保持部24は0x0024番地の命令データに対応するポインタを保持しているため、キャッシュ制御部51は、再利用情報保持部24が記憶するフェッチアドレス0x0024に対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データ(実際には0x0014番地に対応する命令データ)を中央処理装置1に出力する(図10のS408)。
【0104】
以上の動作によって、中央処理装置1は要求した0x0024番地の命令データを得て命令の実行を開始することができる。
以降、0x0028番地、0x002C番地の命令データについても再利用情報保持部24が該当するアドレスに対応する命令データを保持しているため、図10のフローチャートのS408の動作によって再利用情報保持部24が保持する該当アドレスに対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データが中央処理装置1に出力される。
【0105】
次に、0x0030番地から0x005C番地までの命令データについても、先述の0x0020番地から0x002C番地までと同様の制御によって、キャッシュメモリ装置が中央処理装置1に命令データを出力し、その結果キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図14のように変化する。
【0106】
以上のように、本実施の形態2によるキャッシュメモリ装置では、ループ展開によって生成された繰返し命令列を実行した際にも、同一命令データがキャッシュデータ保持部に存在する場合は、再利用情報保持部にその命令データに対応するポインタを格納し、さらに、主記憶装置から読み出した命令データと、直前のキャッシュミス時にリードした命令データとを比較する再利用判定部を備えることにより、主記憶装置から読み出された命令データの比較の対象を直前に主記憶装置から読み出された命令データに限定することができ、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
(実施の形態3)
次に、本発明の実施の形態3におけるキャッシュメモリ装置について、図3,図4,図15,図16,図17,図18,図19,図20を用いて説明する。
【0107】
図15は本発明の実施の形態3におけるキャッシュメモリ装置の構成を示すブロック図であり、図16は本発明の実施の形態3におけるキャッシュメモリ装置の動作フローを示すフローチャートである。図17,図18,図19,図20は実施の形態3において展開したプログラムがフェッチライン保持部および再利用情報保持部に格納された様子を例示する図であり、プログラムを徐々に展開していく様子を示している。
【0108】
なお、図15には、プロセッサの構成要素であり命令を実行する中央処理装置1と、中央処理装置1が実行する命令を格納する主記憶装置3も同時に示している。
【0109】
中央処理装置1は、キャッシュメモリ装置6を介して主記憶装置3から読み出された命令を順次実行するように構成されている。
キャッシュメモリ装置6は、キャッシュメモリ装置全体の制御を行うキャッシュ制御部61と、キャッシュ制御部61の制御に従って中央処理装置1の要求するアドレスに対応する主記憶装置3上の命令データを16バイト単位で最大4エントリ記憶するキャッシュデータ保持部22と、キャッシュ制御部61の制御に従ってキャッシュデータ保持部の保持する直前にキャッシュヒットしたキャッシュラインの命令データを記憶するフェッチライン保持部631と、主記憶装置から読み込まれたリードデータD31と、フェッチライン保持部631に格納された命令データが同一か否かを判定する再利用判定部632と、キャッシュ制御部51の制御に従ってフェッチアドレスA11およびフェッチアドレスA11に対応するポインタを最大4エントリ記憶する再利用情報保持部24から構成されている。
【0110】
図16において、この制御フローは、中央処理装置1によるフェッチ要求信号S11が出力された際に開始される。
S401、S402、S403、S406、S407、S408については、実施の形態2における図9のフローチャートで示した動作と同一であるので説明を省略する。
【0111】
S403においてフェッチアドレスに対応する命令データを読み出した後、キャッシュ制御部61は、主記憶装置3より読み出されたリードデータD31と、フェッチライン保持部631に格納された命令データが同一であるか否かを判定する(S412)。
【0112】
一致した場合、キャッシュ制御部61は、再利用情報保持部24を制御し、フェッチアドレスA11と、フェッチライン保持部631が保持するポインタを再利用情報保持部24に格納する(S413)。
【0113】
S407で命令データを中央処理装置1に出力してから、キャッシュ制御部61は、キャッシュデータ保持部22が中央処理装置1に対して出力した命令データを含むキャッシュラインへのポインタおよびキャッシュラインに格納されている命令データをフェッチライン保持部631に格納させる(S414)。
【0114】
上記のように構成されたキャッシュメモリ装置6について、図3に示したC言語プログラムを実行した場合の動作を説明する。
図4に示したアセンブラプログラムは、図3に示したC言語プログラムにループ展開を伴うコンパイルを実施した結果の一例である。なお、この例ではプロセッサの命令は4バイトの固定長としている。
【0115】
以下に、図15のキャッシュメモリ装置6に対して図4のアセンブラプログラムを実行した場合の動作について説明する。
なお、初期状態では、キャッシュデータ保持部22はいかなる命令データも保持せず、再利用情報保持部24はいかなるポインタも保持せず、フェッチライン保持部631はいかなる命令データも保持していないとする。
【0116】
中央処理装置1は、フェッチ要求信号S11、フェッチアドレスA11を制御して0x0000番地の命令の供給をキャッシュメモリ装置6に要求する。
この要求を受け、キャッシュ制御部61は、キャッシュデータ保持部22を制御し、キャッシュデータ保持部22に0x0000番地の命令が存在するか否かを判定する(図16のS401)。
【0117】
その結果、キャッシュデータ保持部22は初期状態では0x0000番地に対応する命令データを保持していないため、キャッシュ制御部61は、再利用情報保持部24に0x0000番地のアドレスに対応するポインタが登録されているか否かを判定する(図16のS402)。
【0118】
その結果、再利用情報保持部24は初期状態では0x0000番地に対応するポインタを保持していないため、キャッシュ制御部61はアクセス要求信号S21および、アクセスアドレスA21を制御信号とし、主記憶装置3から0x0000番地を先頭とする16バイトの命令データ811を読み出す(図16のS403の動作)。
【0119】
次に、キャッシュ制御部61は、主記憶装置から読み出された命令データ811と、リードデータ保持部631が保持する命令データが一致するか否かを判定する(図16のS412動作)。
【0120】
その結果、リードデータ保持部631は初期状態ではいかなる命令データも保持せず、命令データは一致しないため、キャッシュ制御部61は、フェッチアドレス0x0000と主記憶装置3から読み出された命令データ811をキャッシュデータ保持部22に登録する(図16のS406の動作)。
【0121】
次に、キャッシュ制御部61は、キャッシュデータ保持部22が記憶する0x0000番地の命令データを中央処理装置1に出力する(図16のS407の動作)。
【0122】
次に、キャッシュ制御部61は、キャッシュデータ保持部が中央処理装置1に対して出力した0x0000番地の命令データを含むキャッシュラインへのポインタ”0”と、キャッシュラインに含まれる命令データをフェッチライン保持部631に記憶する。
【0123】
以上の動作によって、中央処理装置1は要求した0x0000番地の命令データを得て、命令の実行を開始する。
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24および、フェッチライン保持部631がそれぞれ記憶する情報は図17のようになる。
【0124】
次に、中央処理装置1は後続する命令を実行するためにフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0004番地の命令データの供給をキャッシュメモリ装置5に要求する。
【0125】
この要求を受け、キャッシュ制御部51は、キャッシュデータ保持部22に0x0004番地の命令データが存在するか否かを判定する(図16のS401の動作)。
【0126】
その結果、キャッシュデータ保持部22は0x0004番地に対応する命令データを保持しているため、キャッシュ制御部51は、キャッシュデータ保持部22が記憶する0x0004番地の命令データを中央処理装置1に出力する(図16のS407の動作)。
【0127】
次に、キャッシュ制御部61は、キャッシュデータ保持部が中央処理装置1に対して出力した0x0004番地の命令データを含むキャッシュラインへのポインタ”0”と、キャッシュラインに含まれる命令データをフェッチライン保持部631に記憶させる。
【0128】
以上の動作によって、中央処理装置1は要求した0x0004番地の命令データを得て命令の実行を開始することができる。
以降、0x0008番地、0x000Cの番地の命令データについてもキャッシュデータ保持部22が該当するアドレスに対応する命令データを保持しているため、図16のフローチャートの407の動作によってキャッシュデータ保持部22が記憶する命令データが中央処理装置1に出力される。
【0129】
次に、中央処理装置1は後続する命令を実行するためにフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0010番地の命令データをキャッシュメモリ装置6に要求する。
【0130】
この要求を受け、キャッシュ制御部61は、キャッシュデータ保持部22に0x0010番地の命令データが存在するか否かを判定する(図16のS401の動作)。
【0131】
その結果、キャッシュデータ保持部22は0x0010番地に対応する命令データを保持していないため、キャッシュ制御部61は、再利用情報保持部24に0x0010番地に対するポインタが登録されているか否かを判定する(図16のS402の動作)。
【0132】
その結果、再利用情報保持部24は0x0010番地に対応するアドレスを保持していないため、キャッシュ制御部61はアクセス要求信号S61および、アクセスアドレスA61を制御信号とし、主記憶装置3から0x0010番地を先頭とする16バイトの命令データ812を読み出す(図16のS403の動作)。
【0133】
次に、キャッシュ制御部61は、再利用判定部632を制御し、主記憶装置3から読み出された命令データ812と、フェッチライン保持部631が保持する命令データが一致するか否かを判定する(図16のS412の動作)。
【0134】
その結果、フェッチライン保持部631が保持する命令データ811と、主記憶装置3から読み出された命令データ812は一致しないため、フェッチアドレス0x0010と主記憶装置3から読み出された命令データ812をキャッシュデータ保持部22に登録する(図16のS406の動作)。
【0135】
次に、キャッシュ制御部61は、キャッシュデータ保持部22が記憶する0x0010番地の命令データを中央処理装置1に出力する(図16のS407の動作)。
【0136】
次に、キャッシュ制御部61は、キャッシュデータ保持部22が中央処理装置1に対して出力した0x0010番地の命令データを含むキャッシュラインへのポインタ”1”と、キャッシュラインに含まれる命令データをフェッチライン保持部631に記憶する。
【0137】
以上の動作によって、中央処理装置1は要求した0x0010番地の命令データを得て、命令の実行を開始する。
次に、0x0014番地、0x0018番地、0x001C番地の命令データについては、先述の0x0004番地、0x0008番地、0x000C番地と同様の制御によって、キャッシュメモリ装置6が中央処理装置1に命令データを出力し、その結果、キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図18のように変化する。
【0138】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0020番地の命令データの供給をキャッシュメモリ装置6に要求する。
【0139】
キャッシュデータ保持部22および再利用情報保持部24は該当するアドレスを保持していないため、キャッシュ制御部61はアクセス要求信号S61および、アクセスアドレスA61を制御信号とし、主記憶装置3から0x0020番地を先頭とする16バイトの命令データ813を読み出す(図16のS403の動作)。
【0140】
次に、キャッシュ制御部61は、主記憶装置3から読み出された命令データ813と、フェッチライン保持部631が保持する命令データ812が一致するか否かを判定する(図16のS412の動作)。
【0141】
その結果、フェッチライン保持部631が記憶する命令データ812と、主記憶装置3から読み出された命令データ813は一致するため、キャッシュ制御部61は再利用情報保持部24にフェッチアドレス0x0020とリードデータ保持部が記憶しているポインタ”1”を登録する(図16のS413の動作)。
【0142】
次に、キャッシュ制御部61は、再利用情報保持部24が記憶するフェッチアドレス0x0020に対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データとして実際には0x0010番地に対応する命令データを中央処理装置1に出力する(図16のS408の動作)。
【0143】
次に、キャッシュ制御部61は、キャッシュデータ保持部22および、フェッチライン保持部631を制御し、キャッシュデータ保持部が中央処理装置1に対して出力した0x0010番地の命令を含むキャッシュラインへのポインタ”1”と、キャッシュラインに含まれる命令データをフェッチライン保持部631に記憶する。
【0144】
以上の動作によって中央処理装置1は要求した0x0020番地の命令データを得て命令の実行を開始することができる。
また、上記の動作によって、キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図19のように変化する。
【0145】
次に、中央処理装置1は後続する命令を実行するためフェッチ要求信号S11、フェッチアドレスA11を制御信号として0x0024番地の命令データの供給をキャッシュメモリ装置6に要求する。
【0146】
この要求を受け、キャッシュ制御部61は、キャッシュデータ保持部22を制御し、キャッシュデータ保持部22に0x0024番地の命令データが存在するか否かを判定する(図16のS401の動作)。
【0147】
その結果、キャッシュデータ保持部22は0x0024番地に対応する命令データを保持していないため、キャッシュ制御部61は、再利用情報保持部24に0x0024番地のアドレスに対応するポインタが登録されているか否かを判定する(図16のS402の動作)。
【0148】
その結果、再利用情報保持部24は0x0024番地のアドレスに対応するポインタを保持しているため、キャッシュ制御部61は、再利用情報保持部24が記憶するフェッチアドレス0x0024に対応するポインタ”1”についてキャッシュデータ保持部22が記憶する命令データとして実際には0x0014番地に対応する命令データを中央処理装置1に出力する(図16のS408の動作)。
【0149】
次に、キャッシュ制御部61は、キャッシュデータ保持部が中央処理装置1に対して出力した0x0010番地の命令データを含むキャッシュラインへのポインタ”1”と、キャッシュラインに含まれる命令データをフェッチライン保持部631に記憶する(図16のS414の動作)。
【0150】
以上の動作によって、中央処理装置1は要求した0x0024番地の命令データを得て命令の実行を開始することができる。
以降、0x0028番地、0x002Cの番地の命令データについても再利用情報保持部24が該当するアドレスに対応するポインタを保持しているため、図16のフローチャートのS408の動作によって再利用情報保持部24が保持する該当アドレスに対応するエントリ”1”についてキャッシュデータ保持部22が記憶する命令データが中央処理装置1に出力される。
【0151】
次に、0x0030番地から0x005C番地までの命令データについても、先述の0x0020番地から0x002C番地までと同様の制御によって、キャッシュメモリ装置が中央処理装置1に命令データを出力し、その結果キャッシュデータ保持部22および再利用情報保持部24がそれぞれ記憶する情報は図20のように変化する。
【0152】
以上のように、本実施の形態3によるキャッシュメモリ装置では、ループ展開によって生成された繰返し命令列を実行した際にも、同一命令データがキャッシュデータ保持部に存在する場合は、再利用情報保持部にその命令データに対応するポインタを格納し、命令データの比較の対象を直前にキャッシュヒットしたキャッシュラインの命令データに限定することにより、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【0153】
【発明の効果】
以上のように、本発明によるキャッシュメモリ装置では、ループ展開によって生成された繰返し命令列を実行した際にも、同一命令データがキャッシュデータ保持部に存在する場合は、再利用情報保持部にその命令データに対応するポインタを格納して、キャッシュデータ保持部のエントリを消費しないため、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【0154】
また、主記憶装置から読み出した命令データと、直前のキャッシュミス時にリードした命令データとを比較する再利用判定部を備えることにより、主記憶装置から読み出された命令データの比較の対象を直前に主記憶装置から読み出された命令データに限定することができ、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【0155】
さらに、命令データの比較の対象を直前にキャッシュヒットしたキャッシュラインの命令データに限定することにより、ループ展開によって生成される繰返し命令等が存在する場合においても、ハードウェア量を増加することなく、キャッシュメモリの容量消費を抑制し、キャッシュメモリの効率的な使用を可能とすることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1におけるキャッシュメモリ装置の構成を示すブロック図
【図2】本発明の実施の形態1におけるキャッシュメモリ装置の動作フローを示すフローチャート
【図3】実施の形態1における展開前のC言語によるプログラムを表す図
【図4】実施の形態1における展開後のプログラムを表す図
【図5】実施の形態1において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図
【図6】実施の形態1において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図
【図7】実施の形態1において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図
【図8】実施の形態1において展開したプログラムがキャッシュデータ保持部および再利用情報保持部に格納された様子を例示する図
【図9】本発明の実施の形態2におけるキャッシュメモリ装置の構成を示すブロック図
【図10】本発明の実施の形態2におけるキャッシュメモリ装置の動作フローを示すフローチャート
【図11】実施の形態2において展開したプログラムがキャッシュデータ保持部および再利用情報保持部およびリードデータ保持部に格納された様子を例示する図
【図12】実施の形態2において展開したプログラムがキャッシュデータ保持部および再利用情報保持部およびリードデータ保持部に格納された様子を例示する図
【図13】実施の形態2において展開したプログラムがキャッシュデータ保持部および再利用情報保持部およびリードデータ保持部に格納された様子を例示する図
【図14】実施の形態2において展開したプログラムがキャッシュデータ保持部および再利用情報保持部およびリードデータ保持部に格納された様子を例示する図
【図15】本発明の実施の形態3におけるキャッシュメモリ装置の構成を示すブロック図
【図16】本発明の実施の形態3におけるキャッシュメモリ装置の動作フローを示すフローチャート
【図17】実施の形態3において展開したプログラムがフェッチライン保持部および再利用情報保持部に格納された様子を例示する図
【図18】実施の形態3において展開したプログラムがフェッチライン保持部および再利用情報保持部に格納された様子を例示する図
【図19】実施の形態3において展開したプログラムがフェッチライン保持部および再利用情報保持部に格納された様子を例示する図
【図20】実施の形態3において展開したプログラムがフェッチライン保持部および再利用情報保持部に格納された様子を例示する図
【図21】従来のキャッシュメモリ装置の構成を示すブロック図
【図22】従来のキャッシュメモリ装置の動作フローを示すフローチャート
【図23】展開前のC言語によるプログラムを表す図
【図24】展開後のプログラムを表す図
【図25】従来の技術において展開したプログラムがキャッシュデータ保持部に格納された様子を例示する図
【符号の説明】
1  中央処理装置
S11  フェッチ要求信号
A11  フェッチアドレス
2  キャッシュメモリ装置
21  キャッシュ制御部
22  キャッシュデータ保持部
23  再利用判定部
24  再利用情報保持部
S21  アクセス要求信号
A21  アクセスアドレス
3  主記憶装置
D31  リードデータ
5  キャッシュメモリ装置
51  キャッシュ制御部
531  リードデータ保持部
532  再利用判定部
S51  アクセス要求信号
A51  アクセスアドレス
6  キャッシュメモリ装置
61  キャッシュ制御部
631  フェッチライン保持部
632  再利用判定部
S61  アクセス要求信号
A61  アクセスアドレス
7  キャッシュメモリ装置
71  キャッシュ制御部
72  キャッシュデータ保持部
S71  アクセス要求信号
A71  アクセスアドレス
811  命令データ
812  命令データ
813  命令データ
814  命令データ
815  命令データ
816  命令データ
831  命令データ
832  命令データ
833  命令データ
834  命令データ
835  命令データ

Claims (4)

  1. 主記憶装置の命令データのうち過去に使用した命令データを記憶して効率的に命令フェッチするキャッシュシステムを設けたキャッシュメモリ装置であって、中央処理装置の要求するアドレスに対応した命令データを主記憶装置から読み出してそのアドレスと命令データとを記憶するキャッシュデータ保持部と、
    前記中央処理装置の要求するアドレスに対応した前記キャッシュデータ保持部の命令データを指示するポインタと前記アドレスを記憶する再利用情報保持部と、
    前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在しているか否かを判断する再利用判定部と、
    前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部または前記再利用情報保持部に記憶されている場合には対応する命令データを前記中央処理装置に供給するキャッシュ制御部と
    を有し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部に存在する場合は前記キャッシュデータ保持部に記憶された前記中央処理装置の要求するアドレスに対応する命令データを前記中央処理装置に出力し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部に存在せず前記再利用情報保持部に存在する場合は前記キャッシュデータ保持部に記憶された前記中央処理装置の要求するアドレスに対応するポインタによって指示された命令データを前記中央処理装置に出力し、前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記中央処理装置に出力すると共に前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在しないと判断した場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データおよび対応するアドレスを記憶し前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出した命令データと同一の命令データが前記キャッシュデータ保持部に存在すると判断した場合は前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とするキャッシュメモリ装置。
  2. 前記キャッシュデータ保持部は前記主記憶装置に格納された命令データを所定のサイズのキャッシュライン単位で記憶し、
    前記再利用情報保持部へ記憶するポインタとして前記キャッシュラインを指示するポインタを記憶し、
    前記再利用判定部での命令データの比較を前記キャッシュライン単位で行うことを特徴とする請求項1記載のキャッシュメモリ装置。
  3. 直前のキャッシュミスの際に前記主記憶装置から読み出した前記中央処理装置の要求するアドレスに対応した命令データを記憶するリードデータ保持部
    を有し、
    前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は、前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記主記憶装置に出力すると共に、前記主記憶装置から読み出した命令データと前記リードデータ保持部の命令データを比較し、一致しない場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データとそのアドレスを記憶し、一致した場合は前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とする請求項1または請求項2記載のキャッシュメモリ装置。
  4. 直前のキャッシュヒットの際に前記キャッシュデータ保持部から出力した前記中央処理装置の要求するアドレスに対応した命令データを記憶するフェッチライン保持部
    を有し、
    前記中央処理装置の要求するアドレスが前記キャッシュデータ保持部にも前記再利用情報保持部にも存在しない場合は、前記主記憶装置から前記中央処理装置の要求するアドレスに対応する命令データを読み出して前記主記憶装置に出力すると共に、前記主記憶装置から読み出した命令データと前記フェッチライン保持部の命令データを比較し、一致しない場合は前記キャッシュデータ保持部に前記主記憶装置から読み出した命令データとそのアドレスを記憶し、一致した場合は前記中央処理装置の要求するアドレスと異なるアドレスであっても前記主記憶装置から読み出したデータを前記キャッシュデータ保持部には記憶せずに前記アドレスと前記同一の命令データを指示するポインタを前記再利用情報保持部に記憶することを特徴とする請求項1または請求項2記載のキャッシュメモリ装置。
JP2002195324A 2002-07-04 2002-07-04 キャッシュメモリ装置 Pending JP2004038601A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002195324A JP2004038601A (ja) 2002-07-04 2002-07-04 キャッシュメモリ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002195324A JP2004038601A (ja) 2002-07-04 2002-07-04 キャッシュメモリ装置

Publications (1)

Publication Number Publication Date
JP2004038601A true JP2004038601A (ja) 2004-02-05

Family

ID=31703731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002195324A Pending JP2004038601A (ja) 2002-07-04 2002-07-04 キャッシュメモリ装置

Country Status (1)

Country Link
JP (1) JP2004038601A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002736A (ja) * 2012-06-15 2014-01-09 Apple Inc ループバッファのパッキング
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002736A (ja) * 2012-06-15 2014-01-09 Apple Inc ループバッファのパッキング
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Similar Documents

Publication Publication Date Title
US6978350B2 (en) Methods and apparatus for improving throughput of cache-based embedded processors
US20050086435A1 (en) Cache memory controlling apparatus, information processing apparatus and method for control of cache memory
JP3718319B2 (ja) 命令とデータの先取りを最適化するためのハードウェア機構
US20100250853A1 (en) Prefetch engine based translation prefetching
JPH02224023A (ja) 命令ストリーム機能を有するプロセサ制御型インターフェイス
US8341382B2 (en) Memory accelerator buffer replacement method and system
JP2004110786A (ja) データ処理装置およびデータ処理方法
JPH11143775A (ja) キャッシュメモリシステム
US20150286484A1 (en) Processor subroutine cache
US9367455B2 (en) Using predictions for store-to-load forwarding
JP2009116621A (ja) 演算処理装置
KR100985239B1 (ko) 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체
JP4144990B2 (ja) データ処理システム及び初期化方法
JP2004192403A (ja) キャッシュメモリのデータ管理方法、及び情報処理装置
JP2004038601A (ja) キャッシュメモリ装置
JP2009093559A (ja) プロセッサ、情報処理装置、プロセッサのキャッシュ制御方法
US9645825B2 (en) Instruction cache with access locking
US12106110B2 (en) Multiple interfaces for multiple threads of a hardware multi-thread microprocessor
JP2014194586A (ja) 半導体装置
JP2003162446A (ja) マイクロコンピュータ
JP2008090411A (ja) 情報処理装置、命令制御機構及び命令制御方法
JP5644539B2 (ja) プロセッサ、情報処理装置、情報処理方法及びシステム起動プログラム
JP2000347934A (ja) キャッシュメモリ装置
JPH08161226A (ja) データ先読み制御方法,キャッシュ制御装置およびデータ処理装置
JPH11249959A (ja) キャッシュメモリ制御方法および装置