(57)【要約】【課題】広帯域メモリのロード後にキャッシュミスの発生を抑制する。【解決手段】  命令を実行する算術論理演算部と、第1のメインメモリのデータの一部と、所定容量以上の連続アドレスのデータアクセスで第1のメインメモリより広い帯域を有する第２のメインメモリのデータの一部を記憶するキャッシュメモリ及び、算術論理演算部からのメモリ要求に応答してキャッシュメモリ内のデータを読み出してメモリ要求元に応答するキャッシュ制御部を有するキャッシュユニットとを有し、キャッシュメモリ内に記憶される第２のメインメモリのデータの第１のメインメモリのデータに対する容量の比率が所定の比率以下に制限される、演算処理装置。【選択図】図９
2020047084.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する算術論理演算部と、
第１のメインメモリのデータの一部と、所定容量以上の連続アドレスのデータアクセスで前記第１のメインメモリより広い帯域を有する第２のメインメモリのデータの一部を記憶するキャッシュメモリ、及び前記算術論理演算部からのメモリ要求に応答して前記キャッシュメモリ内のデータを読み出してメモリ要求元に応答するキャッシュ制御部を有するキャッシュユニットとを有し、
前記キャッシュメモリ内に記憶される前記第２のメインメモリのデータの前記第１のメインメモリのデータに対する容量の比率が、所定の比率以下に制限される、演算処理装置。
【請求項２】
前記キャッシュユニットは、論理アドレスと物理アドレスとの対応を有するアドレス変換テーブルに基づいて、前記メモリ要求の論理アドレスを物理アドレスに変換するアドレス変換部を有し、
前記算術論理演算部は、論理アドレスに対して物理アドレスを割り当てるとき、前記物理アドレス内の前記キャッシュメモリのインデックスアドレスを前記所定の比率に分割した第１及び第２の物理アドレスを、前記第1のメインメモリのデータと前記第２のメインメモリのデータとにそれぞれ割り当てる、請求項１に記載の演算処理装置。
【請求項３】
前記キャッシュ制御部は、前記メモリ要求のインデックスアドレスに対応する前記キャッシュメモリのキャッシュラインのタグを参照し、前記タグ内のタグアドレスと前記メモリ要求のタグアドレスが一致する場合、キャッシュヒットと判定する、請求項２に記載の演算処理装置。
【請求項４】
前記キャッシュ制御部は、
前記第１のメインメモリのデータのメモリ要求でキャッシュミスし、前記キャッシュメモリに前記第１のメインメモリのデータを登録するとき、前記メモリ要求のインデックスアドレスに対応する複数のキャッシュラインのうち、データの追出し優先度が最大のキャッシュラインのデータを追出し、前記追い出されたキャッシュラインに、前記登録対象の第１のメインメモリのデータを最小の追出し優先度で登録し、
前記第１のメインメモリのデータのメモリ要求でキャッシュヒットしたとき、前記キャッシュヒットしたキャッシュラインの前記追出し優先度を最小に更新し、
前記キャッシュ制御部は、
前記第２のメインメモリのデータのメモリ要求でキャッシュミスし、前記キャッシュメモリに前記第２のメインメモリのデータを登録するとき、前記メモリ要求のインデックスアドレスに対応する複数のキャッシュラインのうち、前記追出し優先度が最大のキャッシュラインのデータを追出し、前記追い出されたキャッシュラインに、前記登録対象の第２のメインメモリのデータを最大の追出し優先度で登録し、
前記第２のメインメモリのデータのメモリ要求でキャッシュヒットしたとき、前記キャッシュヒットしたキャッシュラインの前記追出し優先度を最大のまま変更しない、請求項１に記載の演算処理装置。
【請求項５】
前記キャッシュメモリは、前記インデックスアドレスで複数のキャッシュラインが選択され、前記選択された複数のキャッシュラインのうち、前記メモリ要求のタグアドレスと一致するタグアドレスを有するキャッシュラインがキャッシュヒットと判定される、請求項４に記載の演算処理装置。
【請求項６】
第１のメインメモリと、
所定容量以上の連続アドレスのデータアクセスで前記第1のメインメモリより広い帯域を有する第２のメインメモリと、
前記第１のメインメモリと前記第２のメインメモリにアクセス可能に接続され、命令を実行する算術論理演算部と、前記第1のメインメモリのデータの一部と前記第２のメインメモリのデータの一部を記憶するキャッシュメモリを有し、前記算術論理演算部からのメモリ要求に応答して前記キャッシュメモリ内のデータを読み出してメモリ要求元に応答するキャッシュ制御部を有するキャッシュユニットとを有する演算処理装置とを有し、
前記キャッシュメモリ内に記憶される前記第２のメインメモリのデータの前記第１のメインメモリのデータに対する容量の比率が、所定の比率以下に制限される、情報処理装置。
【請求項７】
命令を実行する算術論理演算部と、
第１のメインメモリのデータの一部と、所定容量以上の連続アドレスのデータアクセスで前記第１のメインメモリより広い帯域を有する第２のメインメモリのデータの一部を記憶するキャッシュメモリと、前記算術論理演算部からのメモリ要求に応答して前記キャッシュメモリ内のデータを読み出してメモリ要求元に応答するキャッシュ制御部を有するキャッシュユニットとを有する演算処理装置の制御方法であって、
前記キャッシュメモリ内に記憶される前記第２のメインメモリのデータの前記第１のメインメモリのデータに対する容量の比率を、所定の比率以下に制限する、演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置、プロセッサ、またはCPUチップ（以下プロセッサ）は、メインメモリにアクセス可能に接続される。そして、プロセッサは、プログラムの命令実行に必要なデータをメインメモリから読み出し、命令の実行で変更または生成したデータをメインメモリに書き込む。メインメモリは、一般には、高速の大容量のDRAM（Dynamic Random Access Memory）である。
【０００３】
プロセッサは、メインメモリへのアクセス時間を見かけ上なくすために、内部にキャッシュメモリを有し、メモリアクセスされたメインメモリ内のデータをキャッシュメモリに記憶（登録）し、以降のメモリアクセスのデータをキャッシュメモリから読み出す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００４−５０３０１０号公報
【特許文献２】特開２０１６−９１２４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の普及している高速で大容量のDRAMに代えて、連続するアドレスの大容量のデータをロードするのに要する時間がDRAMに比較して短いハイブリッド・メモリ・キューブ（Hybrid Memory Cube,以下HMCと称する）と呼ばれる広帯域のDRAMが使用されるようになってきた。このHMCは、DRAMチップを三次元に積層し、三次元積層したDRAMチップとホストのプロセッサチップとの間をワイドバスで接続し、三次元積層のDRAMとプロセッサを同じパッケージ内に格納する。
【０００６】
HMCの特徴は、従来のDRAMに比較して、ランダムアクセスや小容量のデータのアクセス時間は劣るものの、連続アドレスで大容量データをロードする場合はアクセス時間が短くなる。これにより、広帯域のDRAMを実現する。
【０００７】
但し、HMCはプロセッサと同じパッケージ内に格納されるため、従来のDRAMほど大容量にはできない。そのため、プロセッサは、メインメモリとして広帯域DRAMであるHMCと、従来の大容量DRAMの両方を使用し、両方のメインメモリにアクセスすることが想定される。
【０００８】
このように、プロセッサが広帯域DRAMのHMCと従来の大容量DRAMの両方にアクセス可能に構成された場合、広帯域DRAMのHMCから連続アドレスの大容量データをロードすると、キャッシュメモリ内の従来の大容量DRAMのデータが追い出され、キャッシュメモリ内がHMCのデータで満たされてしまう。その結果、その後の従来の大容量DRAMのデータへのロード命令に対して、キャッシュメモリはキャッシュミスを頻発し、それにより従来の大容量DRAMへのメモリアクセスも頻発し、プロセッサのメモリアクセス効率が低下する。
【０００９】
そこで，本実施の形態の第1の側面の目的は，異なる特性のメインメモリにアクセスする場合にキャッシュミスの発生を抑制した演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本実施の形態の第１の側面は，命令を実行する算術論理演算部と、
第1のメインメモリのデータの一部と、所定容量以上の連続アドレスのデータアクセスで前記第1のメインメモリより広い帯域を有する第２のメインメモリのデータの一部を記憶するキャッシュメモリ、及び前記算術論理演算部からのメモリ要求に応答して前記キャッシュメモリ内のデータを読み出してメモリ要求元に応答するキャッシュ制御部を有するキャッシュユニットとを有し、
前記キャッシュメモリ内に記憶される前記第２のメインメモリのデータの前記第１のメインメモリのデータに対する容量の比率が、所定の比率以下に制限される、演算処理装置である。
【発明の効果】
【００１１】
本実施の形態の第１の側面によれば，キャッシュミスの発生を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態におけるプロセッサを有する情報処理装置の構成例を示す図である。
【図２】本実施の形態におけるプロセッサの構成例を示す図である。
【図３】本実施の形態の第１、第２のメインメモリの特性を示す図表である。
【図４】第１、第２のメインメモリの連続アドレスのデータアクセスにおけるデータサイズ（容量）に対するアクセス時間の特性を示す図である。
【図５】プロセッサ内のコア、アドレス変換部、キャッシュメモリと、プロセッサに接続される２種類のメインメモリとの概略的な関係を示す図である。
【図６】論理アドレス、物理アドレス、キャッシュメモリのアドレスの関係例を示す図である。
【図７】セットアソシアティブのキャッシュの構成例を示す図である。このキャッシュは、４WAYの例である。
【図８】OSによる第１のメインメモリのデータと第２のメインメモリのデータへの物理アドレスの割当例を示す図である。
【図９】本実施の形態においてキャッシュメモリに割り当てられる第1、第２のメインメモリのデータの領域とそのインデックスアドレスとを示す図である。
【図１０】第１の実施の形態におけるキャッシュユニットのメモリ要求の処理を示すフローチャート図である。
【図１１】第２のメインメモリのキャッシュメモリ割当比率の判定処理のフローチャート図である。
【図１２】一般的なキャッシュミス時のデータ登録とキャッシュヒット時の追出し優先度の更新の処理を示すフローチャート図である。
【図１３】図１２の追出し優先度の登録及び更新の具体例を示す図である。
【図１４】第２の実施の形態におけるキャッシュミス時のデータ登録とキャッシュヒット時の追出し優先度の更新の処理を示すフローチャート図である。
【図１５】図１４の追出し優先度の登録及び更新の具体例を示す図である。
【発明を実施するための形態】
【００１３】
図１は、本実施の形態におけるプロセッサを有する情報処理装置の構成例を示す図である。CPUチップであるプロセッサPRCは、広帯域の第２のメインメモリM_MEM_2とともに、同じパッケージPKG内に収納される。プロセッサPRCは、複数のコアCORE_1〜CORE_4と、複数のコアで共有されるL2キャッシュユニットL2_CACHEと、メモリアクセス制御回路MACと、I/O制御回路I/O_CNTとを有する。複数のコアはそれぞれ、命令発行部と、発行された命令を実行する算術論理演算部（ALU: Arithmetic Logical Unit）と、L1キャッシュとを有する。
【００１４】
プロセッサPRCは、第１のメインメモリM_MEM_1と、所定の容量以上の連続するアドレスのデータアクセスで第１のメインメモリより広帯域の第２のメインメモリM_MEM_2とにアクセス可能に接続される。プロセッサ内のL2キャッシュユニットL2_CACHEが発行するメモリ要求に応答して、メモリアクセス制御回路MACは、第１のメインメモリまたは第２のメインメモリにアクセスする。また、プロセッサPRCは、ハードディスクなどの入出力デバイスI/O_DEVICEに接続され、I/O制御回路I/O_CNTを介して入出力デバイスからのデータを入力し、入出力デバイスにデータを出力する。第１のメインメモリM_MEM_1と第２のメインメモリM_MEM_2については、後で詳述する。
【００１５】
図２は、本実施の形態におけるプロセッサの構成例を示す図である。図１で説明したとおり、各コアCORE_1〜CORE_4は、プログラムの命令をメインメモリからフェッチして発行する命令発行部１２と、発行された命令を実行する算術論理演算回路１３と、第１のキャッシュユニットL1_CACHEを有する。更に、プロセッサは、複数のコアで共有される第２のキャッシュユニットL2_CACHEと、メモリアクセス制御回路MACと、I/O制御回路I/O_CNTとを有する。
【００１６】
L1キャッシュユニットL1_CACHEは、算術論理演算回路１３が発行するロード要求やストア要求などのメモリ要求MEM_RQ_1をエントリする入力ポートIN_PORT_1と、入力ポート内のメモリ要求を入力し、メモリ要求の処理を制御するL1キャッシュ制御回路L1$_CNTを有する。更に、L1キャッシュユニットは、L1キャッシュメモリを構成するタグ情報を記憶するL1キャッシュタグメモリL1_TAGと、データを記憶するL1キャッシュデータメモリL1_DATAと,メモリ要求のアドレス内の論理アドレス（または仮想アドレス）VAを物理アドレスPAに変換するトランスレーション・ルックアサイド・バッファTLBを有する。そして、L1キャッシュニットは、L1キャッシュでキャッシュミスした場合に、L2キャッシュユニットにメモリ要求MEM_RQ_2を発行するL1キャッシュメモリ要求回路１４を有する。
【００１７】
L1キャッシュ制御回路L1$_CNTは、パイプライン構成され、入力ポートIN＿PORT_1内のメモリ要求MEM_RQ_1を入力し、メモリ要求のアドレスの論理アドレスVAをTLBに基づいて物理アドレスPAに変換する。TLBは、メインメモリ内に記憶されているアドレス変換テーブルの一部のエントリを記憶する一種のキャッシュメモリである。L1キャッシュ制御回路は、TLB内に論理アドレスVAに対応する物理アドレスを検出できない場合（TLBキャッシュミスの場合）、L2キャッシュユニットに対してTLBデータ要求を発行し、TLBデータ要求のデータ応答で取得したTLBデータでTLBを更新し、再度発行されるメモリ要求に対して更新したTLBに基づいてアドレス変換を実行する。
【００１８】
さらに、L1キャッシュ制御回路は、メモリ要求のアドレスのインデックスアドレスでL1キャッシュタグメモリL1_TAGを検索し、L1_TAG内のタグアドレスとメモリ要求のアドレスのタグアドレスとを比較して、L1キャッシュヒット判定を行う。比較が一致しキャッシュヒットの場合、L1キャッシュ制御回路は、L1キャッシュデータメモリL1_DATAの前記インデックスアドレスのデータを算術論理演算回路１３にデータ応答する。キャッシュミスの場合、L1キャッシュ制御回路は、L1キャッシュメモリ要求回路１４にメモリ要求MEM_RQ_2をL2キャッシュユニットL2_CACHEに発行させる。
【００１９】
L2キャッシュユニットL2_CACHEは、L1キャッシュメモリ要求回路１４が発行するメモリ要求MEM_RQ_2をエントリする入力ポートIN_PORT_2と、入力ポート内のメモリ要求を入力し、メモリ要求の処理を制御するL2キャッシュ制御回路L2_CNTを有する。更に、L2キャッシュユニットは、L1キャッシュユニットと同様に、L2キャッシュメモリを構成するL2キャッシュタグメモリL2_TAGとL2キャッシュデータメモリL2_DATAを有する。そして、L2キャッシュニットは、L2キャッシュでキャッシュミスした場合に、メモリアクセス制御回路MACにメモリ要求MEM_RQ_3を発行するL2キャッシュメモリ要求回路１６を有する。
【００２０】
L2キャッシュユニット内のL2キャッシュ制御回路L2$_CNTの動作は、アドレス変換処理がないことを除いて、上記のL1キャッシュ制御回路L1$_CNTと同等である。L2キャッシュミスの場合、L2キャッシュ制御回路がL2キャッシュメモリ要求回路１６にメモリアクセス制御回路MACへのメモリ要求を発行させ、その後メモリアクセス制御回路MACからのデータ応答があると、L2キャッシュメモリ要求回路１６は、応答されたデータのキャッシュ登録要求を入力ポートIN_PORT_2にエントリする。そして、L2キャッシュ制御回路L2$_CNTは、そのキャッシュ登録要求を入力し、応答されたデータとそのタグ情報をL2キャッシュメモリ（L2_TAG, T2_DATA）に登録し、L1キャッシュメモリ要求回路１４にデータ応答する。
【００２１】
L1キャッシュユニットL1_CACHE内のL1キャッシュメモリ要求回路１４は、応答されたデータのキャッシュ登録要求を入力ポートIN_PORT_1にエントリする。そして、L1キャッシュ制御回路L1$_CNTは、そのキャッシュ登録要求を入力し、応答されたデータとそのタグ情報をL1キャッシュメモリ（L1_TAG, T1_DATA）に登録し、算術論理演算回路１３にデータ応答する。
【００２２】
図３は、本実施の形態の第１、第２のメインメモリの特性を示す図表である。また、図４は、第１、第２のメインメモリの連続アドレスのデータアクセスにおけるデータサイズ（容量）に対するアクセス時間の特性を示す図である。第１のメインメモリM_MEM_1は、従来普及しているDDRタイプのDRAMである。一方、第２のメインメモリM_MEM_2は、HMC等の連続アドレスでデータサイズが大きなデータのメモリアクセスで広帯域になるメモリである。
【００２３】
第１のメインメモリのDRAMは、複数のDRAMチップをモジュール化したメモリモジュールであり、大容量メモリである。第１のメインメモリは、プロセッサ内のメモリアクセス制御回路MACからDDRタイプのDRAM向けのアクティブコマンド、リードコマンド、ライトコマンドを直接供給され、リードデータを出力し、ライトデータを書き込む。したがって、連続アドレスのデータに対するアクセス時間のうち、データサイズに起因しない基本アクセス時間B_ACC_1は短い。
【００２４】
一方、第２のメインメモリのHMCは、三次元積層した複数のDRAMチップと、三次元DRAMチップに対するメモリアクセス制御回路に対応する論理回路チップとを有し、プロセッサは、論理回路チップとワイドバスを経由して接続される。HMCは、プロセッサと同じパッケージ内に格納されるのでメモリ容量は、第１のメインメモリM_MEM_1より小さい。また、プロセッサは、HMCの三次元DRAMチップと、論理回路チップを介してアクセスするので、基本アクセス時間B_ACC_2は、第１のメインメモリM_MEM_1よりも長い。つまり、プロセッサと論理回路チップとは、あるパケット通信プロトコルでリード要求、ライト要求（ライトデータ付き）、リード応答（リードデータ付き）を行い、論理回路チップとHMCの三次元DRAMチップとは、例えばアクセティブコマンド、リードコマンド、ライトコマンドなどでメモリアクセスを行う。
【００２５】
但し、連続アドレスのデータに対するアクセス時間は、所定のデータサイズ以上になると、第２のメインメモリM_MEM_2のほうが、第１のメインメモリM_MEM_1より短い。逆に、ランダムアドレスアクセスのデータのアクセス時間は、第１のメインメモリM_MEM_1のほうが、第２のメインメモリM_MEM_2より長い。
【００２６】
上記のとおり、HMCのような第２のメインメモリはメモリ容量が少ないので、プロセッサには、従来の大容量のDRAMメモリモジュールのような第１のメインメモリと、メモリサイズが大きい連続アドレスのアクセスでは広帯域の第２のメインメモリの両方を併用することが行われる。
【００２７】
また、上記のような第１のメインメモリと第２のメインメモリの特性によれば、プロセッサが実行するプログラムでは、大容量で連続するアドレスのデータは、HMCのような広帯域の第２のメインメモリに記憶し、小容量で連続するアドレスのデータやアトランダムなアドレスのデータは、従来のDRAMのメモリモジュールに記憶するよう指定することが行われる。例えば、ロード命令やストア命令に第１または第２のメインメモリを区別するメモリフラグを付加することが多い。例えば、ロード命令やストア命令のメモリフラグを有効化「１」に設定すると、そのデータは第２のメインメモリであるHMCに記憶すべきデータであることを示す。
【００２８】
しかし、プロセッサ内のキャッシュメモリ、特にLLC（Last Level Cache）であるL2キャッシュメモリのサイズは限られているので、HMCなどの第２のメインメモリに対して所定のデータサイズ以上のロード命令が発行されると、第２のメインメモリの大容量のデータがアクセスされ、L2キャッシュメモリにデータ登録され、L2キャッシュメモリに登録されていたデータはすべて追い出される可能性がある。その結果、その後算術論理演算回路ALUが第１のメインメモリM_MEM_1内のデータにアクセスすると、L2キャッシュメモリでキャッシュミスが発生し、全てのアクセスで第１のメインメモリにメモリアクセスする必要が生じ、キャッシュメモリの性能の低下を招く。
【００２９】
［第１の実施の形態］
図５は、プロセッサ内のコア、アドレス変換部、キャッシュメモリと、プロセッサに接続される２種類のメインメモリとの概略的な関係を示す図である。既に説明したとおり、コア内の算術論理演算回路は、L1キャッシュユニットにメモリ要求を発行し、L1キャッシュユニットで、メモリ要求の論理アドレスVAがTLBやメインメモリ内のデータ変換テーブルに基づいて物理アドレスPAに変換され、その物理アドレスPAとキャッシュタグメモリ内のタグアドレスの比較によりキャッシュヒット判定される。キャッシュメモリには第１のメインメモリM_MEM_1と第２のメインメモリM_MEM_2のデータが記憶され、キャッシュヒットならキャッシュメモリ内のデータが読み出され要求元にデータ応答され、キャッシュミスならメモリ要求のアクセス先アドレスに応じて、第１のメインメモリまたは第２のメインメモリにメモリアクセスされる。
【００３０】
図６は、論理アドレス、物理アドレス、キャッシュメモリのアドレスの関係例を示す図である。図６の例によれば、プロセッサのメモリ空間は６４ビットの論理アドレスVAの空間であり、そのうち、下位１２ビットが１ページのアドレスに割り当てられ、上位５２ビットが論理ページ番号に割り当てられる。
【００３１】
一方、論理アドレスVAからアドレス変換される物理アドレスPAでは、ページオフセットである下位１２ビットは論理アドレスVAと同じであり、上位５２ビットは論理アドレスVAの上位５２ビットに対しOSが割り当てる物理アドレスである。そして、前述のL1キャッシュユニットでメモリ要求の論理アドレスを物理アドレスに変換する際に、TLBミスし、メインメモリ内にもアドレス変換テーブルのエントリがない場合、ページフォルトが発生し、CPU割り込みが発生する。このCPU割り込みで、OSが、論理アドレスVAの上位５２ビットに物理アドレスPAの上位５２ビットを割り当てて、メインメモリ内のアドレス変換テーブルにエントリを登録する。
【００３２】
図６には、論理アドレスVAと物理アドレスPAに並んで、キャッシュのアドレスの構成例が示される。この例のキャッシュのアドレスは、下位６ビットがキャッシュライン（キャッシュブロック）内のアドレスBLK_ADDであり、中位１５ビットがインデックスアドレスIndexであり、上位４３ビットがキャッシュタグ内に記憶されるタグアドレスTAG_ADDである。したがって、OSが仮想アドレスVAの上位５２ビットに割り当てる物理アドレスPAの上位５２ビットの一部に、キャッシュのインデックスアドレスIndexが含まれる。
【００３３】
図６のキャッシュアドレスの例では、キャッシュメモリは、全容量が１６MB、１キャッシュラインサイズが６４バイト、８WAY（WAY数が２3個）、インデックスで選択されるエントリ数が２15÷２3となる。
【００３４】
第１の実施の形態では、上記の関係を利用して、OSが論理アドレスVAの上位５２ビットに物理アドレスPAの上位５２ビットを割り当てるとき、インデックスアドレスを所定の割合で分轄し、一方のインデックスアドレスを第１のメインメモリのデータのアドレスに、他方のインデックスアドレスを第２のメインメモリのデータのアドレスに割り当てる。これにより、キャッシュメモリの所定の割合のキャッシュラインには第２のメインメモリのデータを登録し、キャッシュメモリの残りのキャッシュラインには第１のメインメモリのデータを登録することができる。
【００３５】
このように、キャッシュメモリを第１のメインメモリのデータ用の領域と第２のメインメモリのデータ用の領域とに分離することができ、キャッシュメモリが、第２のメインメモリの大量のデータで満たされることを回避し、第１のメインメモリのデータへのメモリ要求で、キャッシュミスが頻発することを抑制することができる。
【００３６】
図７は、セットアソシアティブのキャッシュの構成例を示す図である。このキャッシュは、４WAYの例である。メモリ要求のアクセス先アドレスは、図６で説明したとおり、上位からTAGアドレスTAG_ADD、インデックスアドレスIndex、キャッシュブロック内アドレスBLK_ADDとなる。インデックスアドレスIndexの下位２ビットは４WAYを区別するアドレスである。
【００３７】
キャッシュ制御回路は、アクセス先アドレスのインデックスアドレスIndex（2WAYを区別する下位２ビットは除く）で、キャッシュメモリを検索し、インデックスアドレスで特定される４つ（4WAY）のキャッシュラインのタグ内のタグアドレスTAG_ADDのうち、アクセス先アドレスのタグアドレスTAG_ADDと一致するキャッシュラインがあるか否かのキャッシュヒット判定を行う。ここで、タグアドレスTAG_ADDには、WAY番号を特定する２ビットも含まれる。
【００３８】
したがって、図７のセットアソシアティブキャッシュの縦方向のキャッシュラインの数は、インデックスアドレス（下位２ビット除く）で選択できる数である。そこで、第１の実施の形態では、論理アドレスを物理アドレスに変換するときに、アドレス変換テーブル内に論理アドレスに対応する物理アドレスが未割り当ての場合、ページフォルトが発生し、CPU割り込みでOSが物理アドレスを割り当てる。このOSが論理アドレスに対し物理アドレスを割り当てるとき、インデックスアドレスの例えば上位2ビットの００，０１，１０を第1のメインメモリのデータに、上位２ビットの１１を第２のメインメモリのデータに割り当てる。
【００３９】
その結果、プロセッサ内のキャッシュメモリ、例えばラストレベルキャッシュ（LLC）であるL2キャッシュメモリ、のインデックスアドレスの上位２ビットが００，０１，１０のキャッシュメモリ内の領域には、第１のメインメモリのデータが登録され、インデックスアドレスの上位２ビットが１１のキャッシュメモリ内の領域には、第２のメインメモリのデータが登録される。これにより、L2キャッシュメモリの3/4の領域に第１のメインメモリのデータがキャッシュ登録され、L2キャッシュメモリの1/4の領域に第２のメインメモリのデータがキャッシュ登録される。
【００４０】
図８は、OSによる第１のメインメモリのデータと第２のメインメモリのデータへの物理アドレスの割当例を示す図である。図８には、第１のメインメモリM_MEM_1と第２のメインメモリM_MEM_2に割り当てられた物理アドレス空間と物理アドレスの範囲が示される。この例は、第２のメインメモリM_MEM_2の容量が16GBである。OSは、物理アドレス空間の最初の1536KBを第1のメインメモリM_MEM_1のデータに割り当てて、次の512KBを第2のメインメモリM_MEM_2のデータに割り当てる。同様に、OSは、物理アドレス空間の次の1536KBを第1のメインメモリM_MEM_1のデータに、その次の512KBを第2のメインメモリM_MEM_2のデータにそれぞれ割り当てる。以降、第2のメインメモリの全容量16GBが物理アドレス空間に割当完了するまで、上記と同様に割り当てる。最初の1536KBの物理アドレス空間は、キャッシュのインデックスアドレスIndexの上位2ビットが００，０１，１０の空間である。次の512KBの物理アドレス空間は、インデックスアドレスIndexの上位２ビットが１１の空間である。
【００４１】
これにより、物理アドレス空間１００のうち、3/4の領域に第１のメインメモリのデータが割り当てられ、1/4の領域に第２のメインメモリのデータが割り当てられる。
【００４２】
OSは、物理アドレス空間１００以外の空間２００において、最初の1536KBを第1のメインメモリM_MEM_1のデータに割り当てて、次の512KBをどのメインメモリのデータにも割り当てない。
【００４３】
図９は、本実施の形態においてキャッシュメモリに割り当てられる第1、第２のメインメモリのデータの領域とそのインデックスアドレスとを示す図である。キャッシュメモリCACHEは、インデックスアドレスの上位2ビットで４等分された領域のうち、最初の３領域には第１のメインメモリのデータが登録され、最後の１領域には第２のメインメモリのデータが登録されることになる。４つの領域に対応するインデックスアドレスの範囲が図中左側に示される。これによれば、最後の１領域のインデックス（１５ビット）の上位２ビットは、１１となる。
【００４４】
図１０は、第１の実施の形態におけるキャッシュユニットのメモリ要求の処理を示すフローチャート図である。まず、コア内の命令デコーダが命令を発行する（S11）。算術論理演算器が命令を実行し（S12）、メモリ要求が発生すると（S13のYES）、演算器がメモリ要求をL1キャッシュユニットに発行する（S14）。
【００４５】
次に、L1キャッシュユニットは、アドレス変換テーブルに基づいて、メモリ要求の論理アドレスVAを物理アドレスPAにアドレス変換する（S21）。アドレス変換は、まず、TLBに基づいて行われ、TLBヒットすれば物理アドレスPAに変換されるが、TLBミスになると、L1キャッシュユニットはL2キャッシュユニットにTLB要求を発行し、L2キャッシュユニットからTLB応答されるとそのTLBを登録し、メモリ要求を入力ポートに差し戻す。
【００４６】
但し、メインメモリ内に論理アドレスVAに対応する物理アドレスPAが登録されてない場合、アドレス変換失敗となる（S22のNO）。その場合、ページフォルトが発生し、CPU割り込みが発生する（S23）。このCPU割り込みに応答して、OSが論理アドレスVAに対する新物理アドレスPAを割り当てて、アドレス変換テーブルに登録する（S24）。そして、アクセス要求は入力ポートに差し戻される（S25）。その後、再度、L1キャッシュユニットは、メモリアクセス要求を入力し、アドレス変換テーブルに基づいてアドレス変換を実行する（S21）。
【００４７】
このページフォルトによるCPU割り込みでOSが論理アドレスに対する物理アドレスを割り当てるとき、例えば、図８の物理アドレス空間の割当に基づいて、第１のメインメモリM_MEM_1のデータと第２のメインメモリM_MEM_2のデータとに論理アドレスを割り当てる。第１のメインメモリM_MEM_1のデータか第２のメインメモリM_MEM_2のデータかは、命令に付加される第２のメインメモリのデータか否かを示すメモリフラグM2_FLGを参照することで、OSが判定することができる。前述したとおり、プログラムには、第２のメインメモリM_MEM_2に格納するデータか否かを示すメモリフラグM2_FLGが付加されており、メモリ要求にもメモリフラグM2_FLGが付加される。
【００４８】
図１０に戻り、L1キャッシュユニットのLlキャッシュ制御回路L1$_CNTは、L1キャッシュタグメモリL1_TAGを検索してL1キャッシュヒット判定を行う（S24）。L1キャッシュヒットの場合（S24のYES）、メモリ要求の要求元（演算器）にデータ応答し、そのキャッシュラインの追出し優先度Priorityを最小に更新する（S27）。一方、キャッシュミスの場合（S24のNO）、L1キャッシュメモリ要求回路１４がL2キャッシュユニットにメモリ要求を発行する（S28）。
【００４９】
L2キャッシュ制御回路L2$_CNTは、L2キャッシュヒット判定を行い、L2キャッシュヒットの場合（S31のYES）、L1キャッシュユニットのL1キャッシュメモリ要求回路１４にデータ応答する（S35）。一方、L2キャッシュミスの場合（S31のNO）、L2キャッシュメモリ要求回路１６は、メモリアクセス制御回路MACにメモリ要求を発行する（S32）。そして、メモリアクセス制御回路MACがメインメモリからデータを受信し、L2キャッシュメモリ要求回路１６にデータ応答すると（S33のYES）、L2キャッシュメモリ要求回路１６は応答されたデータとTAG情報をL2キャッシュ（L2タグメモリ、L2データメモリ）に登録し、追出し優先度Priorityを最小で登録し（S34）、L1キャッシュユニットのL1キャッシュメモリ要求回路１４にデータ応答する（S35）。
【００５０】
これに応答して、L1キャッシュメモリ要求回路１４は、応答されたデータとそのタグ情報をL1キャッシュ（L1タグメモリ、L1データメモリ）に登録し、追出し優先度Priorityを最小で登録し（S29）、メモリ要求の要求元（演算器）にデータ応答する（S27）。この場合、S27での追出し優先度Priorityの更新は行われない。
【００５１】
上記のとおり、論理アドレスを物理アドレスに変換するとき、未だ論理アドレスに対応する物理アドレスが割り当てられていない場合、ページフォルトとなり、CPU割り込みでOSが論理アドレスに対して物理アドレスを割り当てる。このとき、OSは、図８の物理アドレス空間の割当に基づいて、論理アドレスに物理アドレスを割り当てる。その結果、第１のメインメモリのデータの論理アドレスには、上位２ビットが００，０１，１０のインデックスアドレスを有する物理アドレスが割り当てられ、第２のメインメモリのデータの論理アドレスには、上位２ビットが１１のインデックスアドレスを有する物理アドレスが割り当てられる。
【００５２】
その結果、図９に示すとおり、第２のメインメモリのデータは、キャッシュメモリの１／４の領域に記憶され、第１のメインメモリのデータは、キャッシュメモリの３／４の領域に記憶される。したがって、第２のメインメモリ内の大きなメモリサイズのデータがロードされた場合、ロードデータは、キャッシュメモリ内の最上位２ビットが１１のインデックスアドレスの制限されたキャッシュラインに記憶され、第１のメインメモリのデータがすべてキャッシュメモリから追い出されることが回避される。
【００５３】
図１１は、第２のメインメモリのキャッシュメモリ割当比率の判定処理のフローチャート図である。この判定処理は、例えば、プログラムの本番環境でのプログラム実行開始時に、プログラムの実行と並行して行われる。この判定処理は、例えばOSにより実行される。
【００５４】
最初に、第２のメインメモリM_MEM_2のデータにキャッシュメモリの例えば1/8比率の領域をN（Nは８以下）領域割り当てる物理アドレス空間を設定し（S40）、プログラムのM個の命令を実行しながら（S43）キャッシュミス数を計測する（S42）。ここでのキャッシュメモリは、前述のとおり、LLCであるL2キャッシュメモリであり、そこでのキャッシュミス数は、L2キャッシュユニット内に設けたカウンタにより計測するようにしてもよい。
【００５５】
プログラムのM個の命令を実行した後、OSは、キャッシュミス率を算出し（S44）、最初のキャッシュミス計測であれば（S45のYES）、キャッシュメモリの第２のメインメモリM_MEM_2に割り当てる1/8比率の領域を１つ減じ（S47）、計測済みのキャッシュミス数を保存する（S48）。
【００５６】
さらに、プログラムのM個の命令を実行しながら（S43）キャッシュミス数を計測し（S42）、M個の命令実行後にキャッシュミス率を算出し（S44）、１つ前のキャッシュミス率のほうが低いか否かの判定（S46）を行うことを、割り当てた1/8比率の領域数が０になるか（S41のNO）、１つ前のキャッシュミス率のほうが低くなる（S46のYES）かまで繰り返し、S41がNOまたはS46がYESになると、現在のキャッシュメモリの第２のメインメモリへの割当領域数に１を加えた数を、第２のメインメモリへの割当領域の数と判定する（S49）。
【００５７】
一旦キャッシュメモリの第２のメインメモリへの割当領域の数（割当比率）が決定すると、その後は決定した割当比率になるインデックスアドレスを有する物理アドレスを、第２のメインメモリのデータの論理アドレスに割り当てて、プログラムの残りの命令の実行を継続する。
【００５８】
図１１の例によれば、プログラムの本番環境下でキャッシュメモリのキャッシュミス率が低い（極小値）割当比率を判定し、その判定結果の割当比率になるように論理アドレスに物理アドレスを割り当てるるので、プログラム内の残りの命令の実行中でのキャッシュメモリの第１のメインメモリのデータに対するキャッシュミス率を低く抑えることができる。
【００５９】
第２のメインメモリのデータへのキャッシュメモリ割当率の判定方法は、様々な方法が考えられる。例えば、プログラムの本番環境直前のテスト環境下で、図１１を実行して最適な割当比率を判定するようにしても良い。
【００６０】
［第２の実施の形態］
第１の実施の形態では、OSが第２のメインメモリのデータに対し特定のインデックスアドレスを有する物理アドレスを割り当てることで、キャッシュメモリ内に記憶される第２のメインメモリのデータの第１のメインメモリのデータに対する容量の比率が、所定の比率以下に制限されるようにした。
【００６１】
それに対して、第２の実施の形態では、キャッシュ制御回路がデータをキャッシュメモリに登録するときに行われる、データを登録中のキャッシュラインのデータの追出し処理で、参照する追出し優先度を利用して、前記所定の比率以下に制限するようにする。
【００６２】
図７に示されるセットアソシアティブのキャッシュメモリは、同じインデックスにWAY数分の数の複数のキャッシュラインを有する。キャッシュ制御回路は、データをキャッシュメモリに登録するとき、同じインデックスに属する複数のキャッシュラインのうち、追出し優先度がもっとも高いキャッシュラインのデータを追出し、そのキャッシュラインにデータとタグ情報を登録し、追出し優先度Priorityを最小で登録する。また、キャッシュ制御部は、キャッシュヒットしたデータの追出し優先度を最小に更新する。追出し優先度の例は、LRU（Least Recently Used、最も古い過去に使用された）またはLFU（Least Frequently Used、最も使用頻度が低い）である。
【００６３】
第２の実施の形態では、キャッシュ制御回路は、第２のメインメモリのデータをキャッシュ登録するとき、追出し優先度を最大で登録し、第２のメインメモリのデータがキャッシュヒットしたときは、追出し優先度を最大のまま変更しない。この処理の結果、図７の４WAYのセットアソシアティブのキャッシュメモリでは、第２のメインメモリのデータの容量比率は、高々１／４に制限される。なぜなら、第２のメインメモリのデータをキャッシュ登録する場合、必ず第２のメインメモリのデータが追出し対象になるので、第２のメインメモリのデータは、同じインデックスの４つのキャッシュラインのうち、一つのキャッシュラインまでしか登録されないからである。
【００６４】
図１２は、一般的なキャッシュミス時のデータ登録とキャッシュヒット時の追出し優先度の更新の処理を示すフローチャート図である。左側に示したキャッシュミス時のキャッシュメモリへのデータ登録では、例えばL2キャッシュユニット内のL2キャッシュ制御回路は、データ登録要求が入力されると（S50のYES）、データの物理アドレス内のインデックスアドレスでL2キャッシュタグメモリL2_TAGを検索し、インデックスに対応する複数のキャッシュラインに空きがあるか否か判定する（S52）。複数のキャッシュラインに空きがない場合（S52のNO）、L2キャッシュ制御回路は、複数のキャッシュラインのうち追出し優先度Priorityが最大（LRUまたはLFU、最古の使用または最小使用頻度）のキャッシュラインのデータを追出して追出したデータをメインメモリにライトバックする（S53）。そして、データを追出したキャッシュラインに登録対象のデータとタグ情報を登録し、その追出し優先度を最小（MRUまたはMFU、最新使用または最大使用頻度）で登録する。
【００６５】
右側に示したキャッシュヒット時の追出し優先度の更新処理では、L2キャッシュ制御回路は、ヒットしたキャッシュラインの追出し優先度を最小（MRUまたはMFU、最新使用または最大使用頻度）に更新する（S55）。
【００６６】
図１３は、図１２の追出し優先度の登録及び更新の具体例を示す図である。この例では、追出し優先度がLRUの例であり、水平方向の左側が追出し優先度最大（LRU）、右側が最小（MRU）である。状態P1では、データA, C, D, Bの順番に追出し優先度が高い。この状態P1でデータAがアクセスされると、キャッシュヒットとなり、データAの追出し優先度が最小に更新され、残りのデータC, D, Bはそれぞれ追出し優先度が１つずつ上昇する。
【００６７】
更に、状態P2で、データXがアクセスされると、追出し優先度が最大のデータCがキャッシュラインから追い出され、代わりにデータXが追出し優先度最小で登録される。この結果、データD, B, Aは追出し優先度が１つずつ上昇する。
【００６８】
図１４は、第２の実施の形態におけるキャッシュミス時のデータ登録とキャッシュヒット時の追出し優先度の更新の処理を示すフローチャート図である。左側に示したキャッシュミス時のキャッシュメモリへのデータ登録では、例えばL2キャッシュユニット内のL2キャッシュ制御回路は、図１２と同じ処理S50からS53を実行する。但し、L2キャッシュ制御回路は、データを追出したキャッシュラインまたは空いていたキャッシュラインにデータ登録を行い（S54_1）、その追出し優先度の登録では、次の処理を行う。
【００６９】
すなわち、L2キャッシュ制御回路は、キャッシュ登録されるデータが第２のメインメモリM_MEM_2のデータの場合（S54_2のNO）、追出し優先度Priorityを最大（LRUまたはLFU、最古の使用または最小使用頻度）で登録する（S54_4）。一方、キャッシュされるデータが第１のメインメモリM_MEM_1のデータの場合（S54_2のNO）、追出し優先度Priorityを最小（LRUまたはLFU、最古の使用または最小使用頻度）で登録する（S54_4）。キャッシュ登録されるデータが第２のメインメモリのデータか否かは、メモリ要求に付加されるメモリフラグM2_FLGにより判別することができる。
【００７０】
右側に示したキャッシュヒット時の追出し優先度の更新処理では、L2キャッシュ制御回路は、ヒットしたデータが第２のメインメモリM_MEM_2のデータの場合、ヒットしたキャッシュラインの追出し優先度を更新しない（S55_3）。これにより第２のメインメモリM_MEM_2のデータの追出し優先度は、最大（LRUまたはLFU、最古の使用または最小使用頻度）のまま維持される。一方、ヒットしたデータが第２のメインメモリM_MEM_2のデータの場合、ヒットしたキャッシュラインの追出し優先度を最小（MRUまたはMFU、最新使用または最大使用頻度）に更新する（S55_2）。
【００７１】
図１５は、図１４の追出し優先度の登録及び更新の具体例を示す図である。状態P1では、追出し優先度順に、データA, C, D, Bが４つの（4WAYの）キャッシュラインに登録され、これらのデータは全て第１のメインメモリM_MEM_1のデータとする。この状態P1で、第２のメインメモリM_MEM_2のデータXがアクセスされると、L2キャッシュ制御回路は、キャッシュミスを検出し、追出し優先度最大のLRUのデータAを追出し、代わりにデータXを追出し優先度最大で登録する。その結果、状態P2に変更される。次に、データXがアクセスされると、キャッシュヒットとなり、データXの追出し優先度は最大のまま更新しない。これが状態P3である。
【００７２】
更に、第２のメインメモリのデータYがアクセスされると、キャッシュミスとなり、追出し優先度が最大のデータXが追い出され、データYが追い出されたキャッシュラインに追出し優先度最大で登録され、状態P4となる。
【００７３】
このように、第２の実施の形態では、第２のメインメモリのデータXをキャッシュ登録時もキャッシュヒット時もその追出し優先度を最大にするので、その後第２のメインメモリのデータが登録される場合、第２のメインメモリのデータXは必ず追い出しされる。よって、同じインデックスの複数のキャッシュラインのうち単一のキャッシュラインにしか第２のメインメモリのデータは登録されない。その結果、WAY数が４の場合は、第２のメインメモリのデータはキャッシュメモリ内で高々1/4の容量の比率しか登録されず、第２のメインメモリに対して連続アドレスで大量のデータがロードまたはストアされた場合、キャッシュメモリ内の第１のメインメモリのデータが全て追い出されることはなく、その後第１のメインメモリのデータへのアクセスでキャッシュミスが頻発することが抑制される。
【００７４】
以上のとおり、本実施の形態によれば、キャッシュメモリ内に記憶される第２のメインメモリのデータの第１のメインメモリのデータに対する容量の比率が、所定の比率以下に制限されるので、その後キャッシュメモリでキャッシュミスが頻発することが抑制される。
【符号の説明】
【００７５】
M_MEM_1：第１のメインメモリ
M_MEM_2：第２のメインメモリ
PRC(CPU)：プロセッサ、演算処理装置、CPUチップ
CORE：コア
L1_CACHE：L1キャッシュユニット
L2_CACHE：L2キャッシュユニット
L1$_CNT：L1キャッシュ制御回路
L2$_CNT：L2キャッシュ制御回路
L2_TAG,L2_DATA：L2キャッシュメモリ
【図１】
2020047084.tif 000003
【図２】
2020047084.tif 000004
【図３】
2020047084.tif 000005
【図４】
2020047084.tif 000006
【図５】
2020047084.tif 000007
【図６】
2020047084.tif 000008
【図７】
2020047084.tif 000009
【図８】
2020047084.tif 000010
【図９】
2020047084.tif 000011
【図１０】
2020047084.tif 000012
【図１１】
2020047084.tif 000013
【図１２】
2020047084.tif 000014
【図１３】
2020047084.tif 000015
【図１４】
2020047084.tif 000016
【図１５】
2020047084.tif 000017