(57)【要約】【課題】  フェッチ処理中もキャッシュメモリをブロックすることなく、複数のアクセス要求を低いハードウェア・コストで処理可能なキャッシュメモリ装置を提供する。【解決手段】  キャッシュメモリ１を制御するキャッシュメモリ制御部２は、ミス情報保持テーブル２１の各エントリに、キャッシュミスとなった同一メモリブロックへのフェッチ要求情報を複数保持している。キャッシュメモリ１の各エントリにはフェッチ処理中であるかどうかを示すフェッチフラグと、ミス情報保持テーブル２１のエントリを特定する情報とを保持している。キャッシュメモリ制御部２は、これらの情報を基に、フェッチ処理中もキャッシュメモリ１をブロックすることなく、複数のアクセス要求を処理する。【選択図】      図１
2007286990.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置であって、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを有し、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定することを特徴とするキャッシュメモリ装置。
【請求項２】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置であって、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを有し、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定し、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断することを特徴とするキャッシュメモリ装置。
【請求項３】
前記ミス情報保持テーブルに、前記ミス要求情報保持テーブルの別のエントリを指すリンク情報部を保持することを特徴とする請求項１または請求項２記載のキャッシュメモリ装置。
【請求項４】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法であって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部が、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理を実行することを特徴とするキャッシュメモリ制御方法。
【請求項５】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法であって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部が、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断する処理と、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理と、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断する処理とを実行することを特徴とするキャッシュメモリ制御方法。
【請求項６】
前記ミス情報保持テーブルに、前記ミス要求情報保持テーブルの別のエントリを指すリンク情報部を保持することを特徴とする請求項４または請求項５記載のキャッシュメモリ制御方法。
【請求項７】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法のプログラムであって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理を実行させるためのプログラム。
【請求項８】
プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法のプログラムであって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断する処理と、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理と、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断する処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラムに関し、特にプロセッサに含まれるキャッシュメモリシステムにおいて、フェッチ処理中もキャッシュメモリをブロックすることなく、複数のアクセス要求を処理する方法に関する。
【背景技術】
【０００２】
従来、コンピュータシステムにおいては、プロセッサと主メモリとの間に、プロセッサが高スループットかつ低遅延でアクセス可能なキャッシュメモリを備えている。このキャッシュメモリは、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくことによって、同じ主メモリのブロックへのアクセスを高速化している。
【０００３】
キャッシュメモリを備えるコンピュータシステムにおいては、プロセッサが主メモリのあるアドレスをアクセスする処理を行うと、キャッシュメモリ制御部にアクセス要求を伝える。キャッシュメモリ制御部は、まずキャッシュメモリにアクセスしてプロセッサがアクセスしようとしている主メモリのアドレスに格納されているデータがキャッシュメモリに存在するかどうかを調べる。
【０００４】
データが存在する場合には、キャッシュメモリに格納されているデータをプロセッサに転送する。データが存在しない場合には、キャッシュミスとして、プロセッサがアクセスしようとしている主メモリのアドレスのデータを含む主メモリのブロックをキャッシュメモリにフェッチする処理を行う。キャッシュメモリ制御部は、フェッチ処理を行っている間、プロセッサのアクセス要求を保持し、主メモリからブロックが転送されると、そのブロックに含まれるデータをプロセッサに転送する。
【０００５】
また、従来のキャッシュメモリシステムとしては、キャッシュメモリ制御部がフェッチ処理中もキャッシュメモリをブロックすることなく、複数のアクセス要求を処理することができるシステムも提案されている（例えば、非特許文献１参照）。以下、図を参照しながらこの従来技術によるキャッシュメモリシステムについて説明する。
【０００６】
図８に従来のキャッシュメモリシステムの構成例を示す。このキャッシュメモリシステムは、キャッシュメモリ１とキャッシュメモリ制御部３とからなる。キャッシュメモリ１は複数のエントリで構成され、各エントリは、１）有効かを示すＶフラグＤ１と、２）どの主メモリ（図示せず）のブロックかを示すブロックアドレスＤ２と、３）主メモリのブロックの内容（ブロックデータＤ３）とを保持している（図９参照）。以下、説明を簡単にするために、キャッシュメモリ１はダイレクトマップ構成とする。
【０００７】
キャッシュメモリ制御部３はミス要求情報レジスタ３１を複数保持している（図８に示す例では４個）。ミス要求情報レジスタ３２は、１）初期ミス情報部Ｅ１と、２）１つ以上の２次ミス情報部を含む（図１０に示す例では２個の２次ミス情報部Ｅ２−１，Ｅ２−２）（図１０参照）。初期ミス情報部Ｅ１には、キャッシュミスによってフェッチ処理を行ったアクセス要求が含まれる。２次ミス情報部Ｅ２−１，Ｅ２−２にはフェッチ処理中に発生した同一主メモリのブロックへの別のアクセス要求が含まれる。
【０００８】
また、キャッシュメモリ制御部３は、どの主メモリのブロックに対してフェッチ処理中であるかを検索するために、アドレス比較器３２をミス要求情報レジスタ３１の個数分保持している（図８に示す例では４個）。
【０００９】
図１１に従来のキャッシュメモリシステムの動作を示す。キャッシュメモリ制御部３は、プロセッサ（図示せず）からアクセス要求を受取ると、アクセス要求に含まれるアドレスと、アドレスから一意に決まるキャッシュメモリ１の１個のエントリをアクセスし、ＶフラグＤ１とブロックアドレスＤ２とを読出す（図１１ステップＳ２１）。
【００１０】
キャッシュメモリ制御部３は、そのＶフラグＤ１がセットされているかどうかと、そのブロックアドレスＤ２とプロセッサがアクセスしようとしている主メモリのアドレスとを比較して両者が主メモリの同一ブロックかどうかとから、アクセスしようとしているデータがキャッシュメモリ１に存在するかどうかを調べる（図１１ステップＳ２２）。
【００１１】
データが存在する場合、すなわちＶフラグＤ１がセットされており、ブロックアドレスＤ２とアクセス要求のアドレスとが主メモリの同一ブロックを指す場合には、キャッシュメモリ１のそのエントリのブロックデータＤ３に含まれるデータとアクセス要求に含まれかつプロセッサがアクセスを識別するためのアクセスタグをセットにして、プロセッサに応答として転送する（図１１ステップＳ２３）。
【００１２】
データが存在しない場合には、複数あるアドレス比較器３２を用いて複数のミス要求情報レジスタ３１の中に既に主メモリの同一ブロックへのアクセス要求が存在するかどうかを検索する（図１１ステップＳ２４）。この検索では、ミス要求情報レジスタ３１の初期ミス情報部Ｅ１に含まれるアクセス要求のアドレスと、現在処理中のアクセス要求のアドレスとを比較し、主メモリの同一ブロックであるかどうかを調べる。
【００１３】
同一ブロックへのアクセス要求が存在すれば（図１１ステップＳ２５）、キャッシュメモリ制御部３は、検索処理で特定したそのミス要求情報レジスタ３１の２次ミス情報部Ｅ２−１または２次ミス情報部Ｅ２−２にそのアクセス要求を書き加える（図１１ステップＳ２６）。
【００１４】
同一ブロックへのアクセス要求が存在しなければ（図１１ステップＳ２５）、キャッシュメモリ制御部３は、空いているミス要求情報レジスタ３１を確保してその初期ミス情報部Ｅ１にそのアクセス要求を書込み、主メモリのブロックをキャッシュメモリ１にフェッチする処理を行う（図１１ステップＳ２７）。そのフェッチ処理では複数あるミス要求情報レジスタ３１を特定するミス要求情報レジスタ番号を含むフェッチ要求を主メモリに転送する。
【００１５】
キャッシュメモリ制御部３が、ミス要求情報レジスタ番号とブロックデータとを含む応答を主メモリから受取ると、ミス要求情報レジスタ番号で示されるミス要求情報レジスタ３１から初期ミス情報部Ｅ１に含まれるアクセス要求と、複数の２次ミス情報部Ｅ２−１，Ｅ２−２に含まれるアクセス要求とを取出し、複数のアクセス要求に対してそれぞれ、アクセスしたデータをブロックデータから取り出してアクセス要求に含まれるアクセスタグとセットにしてプロセッサに応答として転送する。
【００１６】
また、初期ミス情報部Ｅ１に含まれるアクセス要求のアドレスから特定されるキャッシュメモリ１のエントリのブロックデータＥ３に、応答に付加されていたブロックデータをセットし、またＶフラグＥ１をセットする。
【００１７】
上記の動作において、空いているミス要求情報レジスタ３１を確保できなかった場合や、２次ミス情報部Ｅ２−１，Ｅ２−２が一杯で新たにアクセス要求を書き加えることができなかった場合、キャッシュメモリ制御部３はそのアクセス要求を含む以降のアクセス要求の処理を停止する。
【００１８】
従来のキャッシュメモリシステムでは、上記のような構成で、上記のように動作することで、フェッチ処理中もプロセッサの次のアクセス要求を処理することができる。
【００１９】
また、従来のキャッシュメモリシステムでは、キャッシュメモリの各エントリにフェッチフラグを含み、そのエントリのブロックアドレスで特定される主メモリのブロックをフェッチ処理中であるかどうかをフェッチフラグで示す技術が提案されている（例えば、特許文献１参照）。この技術を用いることによって、キャッシュメモリ制御部が既に主メモリの該当するブロックへのフェッチ処理を行っているかどうかを判断することができる。
【００２０】
しかしながら、この従来技術を用いても、フェッチ処理を引き起こしたアクセス要求の情報が書込まれているミス要求情報レジスタを特定するために、アドレス比較器を用いて複数あるミス要求情報レジスタを検索する必要がある。
【００２１】
【特許文献１】特開平９−２１８８２３号公報
【非特許文献１】Ｄａｖｉｄ  Ｋｒｏｆｔ，“Ｌｏｃｋｕｐ−ｆｒｅｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ／Ｐｒｅｆｅｔｃｈ  Ｃａｃｈｅ  Ｏｒｇａｎｉｚａｔｉｏｎ，”Ｐｒｏｃ．８ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，ｐｐ８１−８７，Ｍａｙ，１９８１
【発明の開示】
【発明が解決しようとする課題】
【００２２】
上述した従来のキャッシュメモリシステムでは、既に主メモリの同一ブロックへのアクセス要求が存在するかどうかを検索するために複数のアドレス比較器が必要であり、また複数あるミス要求情報レジスタの内容を同時に読出す必要がある。
【００２３】
また、ミス要求情報レジスタに多数のアクセス要求を保持するには、ミス要求情報レジスタのサイズを大きくして２次ミス情報部を増やす必要があるため、多数のアクセス要求を処理するキャッシュメモリを実現するためのハードウェア・コストが高いという問題がある。
【００２４】
そこで、本発明の目的は上記の問題点を解消し、低いハードウェア・コストで多数のアクセス要求を処理することができるキャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００２５】
本発明によるキャッシュメモリ装置は、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置であって、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを備え、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定している。
【００２６】
本発明による他のキャッシュメモリ装置は、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置であって、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを備え、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部は、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定し、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断している。
【００２７】
本発明によるキャッシュメモリ制御方法は、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法であって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部が、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理を実行している。
【００２８】
本発明による他のキャッシュメモリ制御方法は、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法であって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部が、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断する処理と、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理と、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断する処理とを実行している。
【００２９】
本発明によるキャッシュメモリ制御方法のプログラムは、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法のプログラムであって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、前記主メモリのどのブロックのデータかを特定する情報と、フェッチ処理中であるかどうかを示すフェッチフラグと、前記ミス要求情報保持テーブルのエントリを特定する情報とを保持し、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリの前記主メモリのどのブロックのデータかを特定する情報と前記フェッチフラグとから同一メモリブロックのデータを既に前記フェッチ処理中か否かを判断し、前記フェッチ処理中であれば前記キャッシュメモリの前記ミス要求情報保持テーブルのエントリを特定する情報から、同一メモリブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理を実行させている。
【００３０】
本発明による他のキャッシュメモリ制御方法のプログラムは、プロセッサが最近アクセスした主メモリのブロックの内容を保持しておくキャッシュメモリと、前記キャッシュメモリを制御するキャッシュメモリ制御部とを含むキャッシュメモリ装置に用いるキャッシュメモリ制御方法のプログラムであって、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求でキャッシュミスとなった要求を複数保持するミス要求情報保持テーブルを設け、
前記キャッシュメモリの各エントリに、フェッチ処理中であるかどうかを示すフェッチフラグと、前記主メモリのどのブロックのデータかを特定する第１の情報及び前記ミス要求情報保持テーブルのエントリを特定する第２の情報のいずれかを保持する共有フィールドを保持し、
前記共用フィールドは、前記フェッチフラグがセットされていない場合に前記第１の情報を保持し、前記フェッチフラグがセットされている場合に前記第２の情報を保持し、
前記キャッシュメモリ制御部に、前記プロセッサからのアクセス要求を受け付け、前記キャッシュメモリのフェッチフラグからそのキャッシュブロックが前記フェッチ処理中か否かを判断する処理と、前記フェッチ処理中であれば前記共有フィールドからそのキャッシュブロックへのアクセス要求を保持しているミス要求情報テーブルのエントリを特定する処理と、このミス要求情報テーブルのエントリに格納されているアクセス要求情報から同一メモリブロックのフェッチ処理中か否かを判断する処理とを実行させている。
【００３１】
すなわち、本発明のキャッシュメモリ装置は、キャッシュメモリとキャッシュメモリ制御部とからなり、キャッシュメモリ制御部にミス要求情報保持テーブルを備え、このミス要求情報保持テーブルの各エントリで、キャッシュミスとなった同一メモリブロックへのフェッチ要求情報を複数保持し、キャッシュメモリの各エントリに、フェッチ中であるかどうかを示すフラグと、ミス要求情報保持テーブルのエントリを特定する情報とを含むことで、低いハードウェア・コストで多数のアクセス要求を処理することが可能となる。
【００３２】
また、本発明のキャッシュメモリ装置は、キャッシュメモリの各エントリに、主メモリのどのブロックのデータかを特定する情報を含み、さらに、主メモリのどのブロックのデータ化を特定する情報と、ミス要求情報保持テーブルのエントリを特定する情報とを、共用のフィールドで管理し、フェッチ中であるかどうかを示すフラグがセットされていない場合に前者の情報を保持し、セットされている場合に後者の情報を保持することによって、低いハードウェア・コストで多数のアクセス要求を処理することが可能となる。
【００３３】
さらに、本発明のキャッシュメモリ装置は、ミス要求情報保持テーブルが、さらにリンク情報部を含み、リンク情報部がミス要求情報保持テーブルの別のエントリを指すことによって、低いハードウェア・コストで多数のアクセス要求を処理することが可能となる。
【発明の効果】
【００３４】
本発明は、上記のような構成及び動作とすることで、低いハードウェア・コストで多数のアクセス要求を処理することができるという効果が得られる。
【発明を実施するための最良の形態】
【００３５】
次に、本発明の実施例について図面を参照して説明する。
【実施例１】
【００３６】
図１は本発明の第１の実施例によるキャッシュメモリ装置の構成を示すブロック図である。図１において、本発明の第１の実施例によるキャッシュメモリ装置は、キャッシュメモリ１と、ミス要求情報テーブル２１を含むキャッシュメモリ制御部２とから構成されている。
【００３７】
図２は図１のキャッシュメモリ１の各エントリの構成を示す図である。図２において、キャッシュメモリ１の各エントリは、ＶフラグＡ１と、ブロックアドレスＡ２と、ブロックデータＡ３とに加えて、フェッチフラグＡ４と、ミス要求情報テーブル・インデックスＡ５とを含んでいる。
【００３８】
図３は図１のキャッシュメモリ制御部２のミス要求情報テーブル２１の各エントリの構成を示す図である。図３において、ミス要求情報テーブル２１の各エントリは、初期ミス情報部Ｂ１と複数の２次ミス情報部Ｂ２−１，Ｂ２−２（本例では２個）とを含んでいる。
【００３９】
以下、説明を簡単にするために、キャッシュメモリ１はダイレクトマップ構成とするが、ｎ−ｗａｙセットアソシアティブ構成のキャッシュメモリを有するシステムにも本実施例は適用可能である。
【００４０】
図４は図１のキャッシュメモリ制御部２の動作を示すフローチャートである。これら図１〜図４を参照して本発明の第１の実施例によるキャッシュメモリ装置の動作について説明する。尚、図４に示す処理はキャッシュメモリ制御部２がプログラムを実行することでも実現可能となっている。
【００４１】
キャッシュメモリ制御部２は、プロセッサ（図示せず）からアクセス要求を受取ると、アクセス要求に含まれるアドレスと、アドレスから一意に決まるキャッシュメモリ１の１個のエントリのＶフラグＡ１、ブロックアドレスＡ２、フェッチフラグＡ４、ミス要求情報テーブル・インデックスＡ５を読出す（図４ステップＳ１）。
【００４２】
キャッシュメモリ制御部２は、ＶフラグＡ１がセットされているかどうかと、ブロックアドレスＡ２とプロセッサがアクセスしようとしている主メモリ（図示せず）のアドレスとを比較して両者が主メモリの同一ブロックかどうかから、アクセスしようとしているデータがキャッシュメモリ１に存在するかどうかを調べる（図４ステップＳ２）。
【００４３】
データがキャッシュメモリ１に存在する場合、すなわちＶフラグＡ１がセットされており、ブロックアドレスＡ２とアクセス要求のアドレスとが主メモリの同一ブロックを指す場合、キャッシュメモリ制御部２は、キャッシュメモリ１のそのエントリのブロックデータＡ３に含まれるデータとアクセス要求に含まれプロセッサがアクセスを識別するためのアクセスタグとをセットにして、プロセッサに応答として転送する（図４ステップＳ３）。
【００４４】
そのブロックが存在しない場合、キャッシュメモリ制御部２は、フェッチフラグＡ４がセットされているかどうかと、そのブロックアドレスＡ２とプロセッサがアクセスしようとしている主メモリのアドレスとを比較して両者が主メモリの同一ブロックかどうかから、アクセスしようとしているデータがフェッチ処理中かどうかを調べる（図４ステップＳ４）。
【００４５】
フェッチ処理中の場合、すなわちフェッチフラグＡ４がセットされており、ブロックアドレスＡ２とアクセス要求のアドレスとが主メモリの同一ブロックを指す場合、キャッシュメモリ制御部２は、キャッシュメモリ１のそのエントリのミス要求情報テーブル・インデックスＡ５で特定されるミス要求情報テーブル２１のエントリの２次ミス情報部Ｂ２−１，Ｂ２−２にそのアクセス要求を書き加える（図４ステップＳ５）。
【００４６】
フェッチ処理中でない場合、キャッシュメモリ制御部２は、ブロックアドレスＡ２とフェッチフラグＡ４とをセットし、またミス要求情報テーブル２１の空いているエントリを確保してそのエントリを特定する情報をミス要求情報テーブル・インデックスＡ５にセットし、ミス要求情報テーブル２１のそのエントリの初期ミス情報部Ｂ１にそのアクセス要求を書込み、主メモリのブロックをキャッシュメモリ１にフェッチする処理を行う（図４ステップＳ６）。このフェッチ処理ではミス要求情報テーブル・インデックスＡ５にセットしたものと同じ情報を含むフェッチ要求を主メモリに転送する。
【００４７】
キャッシュメモリ制御部２は、ミス要求情報テーブル２１を特定する情報とブロックデータとを含む応答を主メモリから受取ると、その応答に含まれる情報で特定されるミス要求情報テーブル２１のエントリから初期ミス情報部Ｂ１に含まれるアクセス要求と、複数の２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求とを取出し、複数のアクセス要求に対してそれぞれ、アクセスしたデータをブロックデータから取出して、アクセス要求に含まれるアクセスタグとセットにしてプロセッサに応答として転送する。
【００４８】
また、キャッシュメモリ制御部２は、初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスから特定されるキャッシュメモリ１のエントリのブロックデータＡ３に、応答に付加されていたブロックデータをセットし、ＶフラグＡ１をセットし、フェッチフラグＡ４をクリアする。
【００４９】
このように、本実施例では、キャッシュメモリ１とキャッシュメモリ制御部２とからなり、キャッシュメモリ制御部２にミス要求情報保持テーブル２１を備え、このミス要求情報保持テーブル２１の各エントリで、キャッシュミスとなった同一メモリブロックへのフェッチ要求情報を複数保持し、キャッシュメモリ１の各エントリに、フェッチ中であるかどうかを示すフラグと、ミス要求情報保持テーブル２１のエントリを特定する情報とを含むことで、フェッチ処理中のアクセス要求を検索するためのアドレス比較器なしで、フェッチ処理中もキャッシュメモリ１をブロックすることなく、複数のアクセス要求を処理することができる。
【実施例２】
【００５０】
次に、本発明の第２の実施例について述べる。本発明の第２の実施例によるキャッシュメモリ装置は、キャッシュメモリ１のエントリの構成が異なる以外は、図１に示す本発明の第１の実施例によるキャッシュメモリ装置と同様の構成となっており、その動作もほぼ同一である。以下、本発明の第２の実施例の本発明の第１の実施例と異なる点について説明する。
【００５１】
図５は本発明の第２の実施例によるキャッシュメモリの各エントリの構成を示す図である。図５において、キャッシュメモリ１の各エントリは、ＶフラグＣ１と、ブロックデータＣ２と、フェッチフラグＣ３とに加えて、共用フィールドＣ４を有している。共用フィールドＣ４には、ＶフラグＣ１がセットされている場合にブロックアドレスが格納され、フェッチフラグＣ３がセットされている場合にミス要求情報テーブル・インデックスが保持される。
【００５２】
図６は本発明の第２の実施例によるキャッシュメモリ装置の動作を示すフローチャートである。これら図１と図５と図６とを参照して本発明の第２の実施例によるキャッシュメモリ装置の動作について説明する。尚、図６に示す処理はキャッシュメモリ制御部２がプログラムを実行することでも実現可能である。
【００５３】
キャッシュメモリ制御部２は、プロセッサからアクセス要求を受取ると、アクセス要求に含まれるアドレスと、アドレスから一意に決まるキャッシュメモリ１の１個のエントリのＶフラグＣ１と、共用フィールドＣ４と、フェッチフラグＣ３とを読出す（図６ステップＳ１１）。
【００５４】
キャッシュメモリ制御部２は、ＶフラグＣ１がセットされているかどうかと、共用フィールドＣ４に格納されているブロックアドレスとプロセッサがアクセスしようとしている主メモリのアドレスとを比較して両者が主メモリの同一ブロックかどうかとから、アクセスしようとしているデータがキャッシュメモリ１に存在するかどうかを調べる（図６ステップＳ１２）。
【００５５】
データがキャッシュメモリ１に存在する場合、すなわちＶフラグＣ１がセットされ、共用フィールドＣ４に格納されているブロックアドレスとアクセス要求のアドレスとが主メモリの同一ブロックを指す場合、キャッシュメモリ制御部２は、キャッシュメモリ１のそのエントリのブロックデータＣ２に含まれるデータと、アクセス要求に含まれかつプロセッサがアクセスを識別するためのアクセスタグをセットにし、プロセッサに応答として転送する（図６ステップＳ１３）。
【００５６】
そのブロックが存在しない場合、キャッシュメモリ制御部２は、フェッチフラグＣ３がセットされているかどうかを調べる（図６ステップＳ１４）。フェッチフラグＣ３がセットされている場合、該キャッシュブロックがフェッチ処理中であることが分かるので、同一メモリブロックがフェッチ処理中であるか否かを特定するために、キャッシュメモリ制御部２は、共用フィールドＣ４に格納されているミス要求情報テーブル・インデックスで特定されるミス要求情報テーブル２１のエントリを読出す（図６ステップＳ１５）。
【００５７】
キャッシュメモリ制御部２は、ミス要求情報テーブル２１から読出したエントリの初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスとプロセッサがアクセスしようとしている主メモリのアドレスとを比較して両者が主メモリの同一ブロックかどうかから、アクセスしようとしているデータがフェッチ処理中かどうかを調べる（図６ステップＳ１６）。
【００５８】
両アドレスが主メモリの同一ブロックを指す場合、すなわちフェッチ処理中の場合、キャッシュメモリ制御部２は、初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスと、処理中のアクセス要求のアドレスとが主メモリの同一ブロックを指す場合、上記のステップＳ１４の処理でアクセスしたミス要求情報テーブル２１のエントリの２次ミス情報部Ｂ２−１，Ｂ２−２にそのアクセス要求を書き加える（図６ステップＳ１７）。
【００５９】
フェッチ処理中ではない場合、すなわち上記のステップＳ１４の処理でフェッチフラグＣ３がセットされていない場合、または上記のステップＳ１６の処理で両アドレスが主メモリの同一ブロックを指さなかった場合、キャッシュメモリ制御部２は、フェッチフラグＣ３をセットし、またミス要求情報テーブル２１の空いているエントリを確保してそのエントリを特定する情報を共用フィールドＣ４にセットし、ミス要求情報テーブル２１のそのエントリの初期ミス情報部Ｂ１にそのアクセス要求を書込み、主メモリのブロックをキャッシュメモリ１にフェッチする処理を行う。このフェッチ処理では共用フィールドＣ４にセットしたものと同じ情報を含むフェッチ要求を主メモリに転送する。
【００６０】
キャッシュメモリ制御部２は、ミス要求情報テーブル２１を特定する情報とブロックデータとを含む応答を主メモリから受取ると、その応答に含まれる情報で特定されるミス要求情報テーブル２１のエントリから初期ミス情報部Ｂ１に含まれるアクセス要求と、複数の２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求とを取出し、これら複数のアクセス要求に対してそれぞれ、アクセスしたデータをブロックデータから取出してアクセス要求に含まれるアクセスタグとセットにしてプロセッサに応答として転送する。
【００６１】
また、キャッシュメモリ制御部２は、初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスから特定されるキャッシュメモリ１のエントリのブロックデータＣ２に、応答に付加されていたブロックデータをセットし、ＶフラグＣ１をセットし、共用フィールドＣ４にブロックアドレスをセットし、フェッチフラグＣ３をクリアする。
【００６２】
このように、本実施例では、キャッシュメモリ１の各エントリに、主メモリのどのブロックのデータかを特定する情報を含み、さらに、主メモリのどのブロックのデータかを特定する情報、あるいはミス要求情報保持テーブル２１のエントリを特定する情報のどちらかを、共用フィールドＣ４で管理し、フェッチ中であるかどうかを示すフラグがセットされていない場合に前者の情報を保持し、セットされている場合に後者の情報を保持することによって、フェッチ処理中のアクセス要求を検索するためのアドレス比較器なしで、フェッチ処理中もキャッシュメモリ１をブロックすることなく、複数のアクセス要求を処理することができる。
【実施例３】
【００６３】
上述した本発明の第１の実施例及び本発明の第２の実施例の変形として、本発明の第３の実施例を示す。本発明の第３の実施例によるキャッシュメモリ装置は、ミス要求情報テーブル２１のエントリの構成が異なる以外は、図１に示す本発明の第１の実施例によるキャッシュメモリ装置と同様の構成となっており、その動作もほぼ同様である。以下、本発明の第３の実施例によるキャッシュメモリ装置の本発明の第１の実施例及び本発明の第２の実施例とは異なる点について説明する。
【００６４】
図７は本発明の第３の実施例によるミス要求情報テーブルの各エントリの構成を示す図である。図７において、ミス要求情報テーブル２１の各エントリは、初期ミス情報部Ｂ１と、複数の２次ミス情報部Ｂ２−１，Ｂ２−２と、リンク情報部Ｂ３とを有している。
【００６５】
次に、本発明の第３の実施例の動作で、本発明の第１の実施例及び本発明の第２の実施例と異なる点について説明する。本発明の第１の実施例のステップＳ５の処理と本発明の第２の実施例のステップＳ１７の処理とにおいて、ミス要求情報テーブル２１の２次ミス情報部Ｂ２−１，Ｂ２−２にアクセス要求を書き加えているが、もし２次ミス情報部Ｂ２−１，Ｂ２−２に空きがなかった場合、そのアクセス要求の処理を中断し、そのブロックがフェッチ処理中でなくなってから、本発明の第１の実施例ではステップＳ１の処理から、本発明の第２の実施例ではステップＳ１１の処理から再度処理を開始している。
【００６６】
本発明の第３の実施例では、２次ミス情報部Ｂ２−１，Ｂ２−２に空きがなかった場合、次のように動作する。キャッシュメモリ制御部２は、ミス要求情報テーブル２１の空きエントリを新たに確保する（この新たに確保したエントリをエントリＢとし、２次ミス情報部Ｂ２−１，Ｂ２−２に空きがなかった方のエントリをエントリＡとする）。
【００６７】
キャッシュメモリ制御部２は、エントリＡの２次ミス情報部Ｂ２−１，Ｂ２−２の情報をエントリＢの２次ミス情報部Ｂ２−１，Ｂ２−２に複写してエントリＡの２次ミス情報部Ｂ２−１，Ｂ２−２をクリアして空きを作る。キャッシュメモリ制御部２は、エントリＡの空いた２次ミス情報部Ｂ２−１，Ｂ２−２にアクセス要求を書き加えるとともに、エントリＡのリンク情報部Ｂ３にエントリＢを特定する情報をセットする。
【００６８】
キャッシュメモリ制御部２は、ミス要求情報テーブル２１を特定する情報とブロックデータとを含む応答を主メモリから受取ると、その応答に含まれる情報で特定されるミス要求情報テーブル２１のエントリから初期ミス情報部Ｂ１に含まれるアクセス要求と、複数の２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求を取出す。
【００６９】
また、リンク情報部Ｂ３にミス要求情報テーブル２１の別のエントリを指す情報がセットされている場合、キャッシュメモリ制御部２は、その情報で特定されるエントリもアクセスし、複数の２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求を取出す。このエントリのリンク情報部Ｂ３にミス要求情報テーブル２１の別のエントリを指す情報がセットされている場合、キャッシュメモリ制御部２は、上記の処理を繰り返し、全ての２次ミス情報部Ｂ２−１，Ｂ２−２に格納されているアクセス要求を取出す。
【００７０】
キャッシュメモリ制御部２は、上記の処理で取出した複数のアクセス要求に対してそれぞれ、アクセスしたデータをブロックデータから取出してアクセス要求に含まれるアクセスタグとセットにしてプロセッサに応答として転送する。
【００７１】
このように、本実施例では、ミス要求情報保持テーブル２１が、さらにリンク情報部Ｂ３を含み、リンク情報部Ｂ３がミス要求情報保持テーブル２１の別のエントリを指すことによって、同一ブロックへのアクセスを多数保持するために、従来技術のミス要求情報レジスタ３１のエントリのサイズを大きくして２次ミス情報部Ｂ２−１，Ｂ２−２を増やしたり、上述した本発明の第１の実施例及び本発明の第２の実施例のミス要求情報テーブル２１のエントリのサイズを大きくして２次ミス情報部Ｂ２−１，Ｂ２−２を増やしたりすることなしに、フェッチ処理中もキャッシュメモリ１をブロックすることなく、複数のアクセス要求を処理することができる。
【００７２】
上述した本発明の第３の実施例では、キャッシュメモリ１のミス要求情報テーブル・インデックス情報とミス要求情報テーブル２１のリンク情報部Ｂ３とで、リンクド・リストを作成している。上記で示した方法と異なるリンクド・リストの作成方法も本発明に適用可能である。
【００７３】
尚、本発明では、上記の各実施例において、アドレス情報として、キャッシュメモリ１のブロックアドレスＡ２や、ミス要求情報テーブル２１の初期ミス情報部Ｂ１、２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求のアドレス等を有するが、これらはそれぞれ、アクセス要求に付加されていたアドレスを全て持つ必要はない。キャッシュメモリ１のブロックアドレスＡ２は、主メモリのどのブロックへのアクセスかを、キャッシュメモリ１のどのエントリであるかの情報も含めて特定することができればよい。
【００７４】
また、本発明では、初期ミス情報部Ｂ１のアクセス要求のアドレスと、２次ミス情報部Ｂ２−１，Ｂ２−２のアクセス要求のアドレスとが、両者とも主メモリの同一ブロックであることが分かっているので、２次ミス情報部Ｂ２−１，Ｂ２−２に含まれるアクセス要求のアドレスとしては、ブロック内のオフセットを保持するのみでよい。
【００７５】
さらに、本発明では、本発明の第１の実施例において、キャッシュメモリ１にブロックアドレスＡ２が含まれるので、初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスもブロック内のオフセットを保持するのみでよい。
【００７６】
さらにまた、本発明では、本発明の第２の実施例では、フェッチ処理中の場合、キャッシュメモリ１にブロックアドレス情報が含まれないので、初期ミス情報部Ｂ１に含まれるアクセス要求のアドレスとして、キャッシュメモリ１のどのエントリであるかの情報をも含めて、主メモリのどのアドレスへのアクセスかを特定することができる情報を保持すればよい。
【産業上の利用可能性】
【００７７】
本発明は、キャッシュメモリシステムを有するコンピューティング・システムに適用することができる。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１の実施例によるキャッシュメモリ装置の構成を示すブロック図である。
【図２】図１のキャッシュメモリの各エントリの構成を示す図である。
【図３】図１のキャッシュメモリ制御部のミス要求情報テーブルの各エントリの構成を示す図である。
【図４】図１のキャッシュメモリ制御部の動作を示すフローチャートである。
【図５】本発明の第２の実施例によるキャッシュメモリの各エントリの構成を示す図である。
【図６】本発明の第２の実施例によるキャッシュメモリ装置の動作を示すフローチャートである。
【図７】本発明の第３の実施例によるミス要求情報テーブルの各エントリの構成を示す図である。
【図８】従来のキャッシュメモリ装置の構成を示すブロック図である。
【図９】図８のキャッシュメモリのエントリの構成を示す図である。
【図１０】図８のキャッシュメモリのエントリの構成を示す図である。
【図１１】従来のキャッシュメモリ装置の動作を示すフローチャートである。
【符号の説明】
【００７９】
１  キャッシュメモリ
２  キャッシュメモリ制御部
２１  ミス要求情報テーブル
Ａ１，Ｃ１  Ｖフラグ
Ａ２  ブロックアドレス
Ａ３，Ｃ２  ブロックデータ
Ａ４，Ｃ３  フェッチフラグ
Ａ５  ミス要求情報テーブル・インデックス
Ｂ１  初期ミス情報部
Ｂ２−１，Ｂ２−２  ２次ミス情報部
Ｂ３  リンク情報
Ｃ４  共用フィールド
【図１】
2007286990.tif 000003
【図２】
2007286990.tif 000004
【図３】
2007286990.tif 000005
【図４】
2007286990.tif 000006
【図５】
2007286990.tif 000007
【図６】
2007286990.tif 000008
【図７】
2007286990.tif 000009
【図８】
2007286990.tif 000010
【図９】
2007286990.tif 000011
【図１０】
2007286990.tif 000012
【図１１】
2007286990.tif 000013