IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

2024-175513キャッシュコントローラ及び演算処理装置
<>
  • -キャッシュコントローラ及び演算処理装置 図1
  • -キャッシュコントローラ及び演算処理装置 図2
  • -キャッシュコントローラ及び演算処理装置 図3
  • -キャッシュコントローラ及び演算処理装置 図4
  • -キャッシュコントローラ及び演算処理装置 図5
  • -キャッシュコントローラ及び演算処理装置 図6
  • -キャッシュコントローラ及び演算処理装置 図7
  • -キャッシュコントローラ及び演算処理装置 図8
  • -キャッシュコントローラ及び演算処理装置 図9
  • -キャッシュコントローラ及び演算処理装置 図10
  • -キャッシュコントローラ及び演算処理装置 図11
  • -キャッシュコントローラ及び演算処理装置 図12
  • -キャッシュコントローラ及び演算処理装置 図13
  • -キャッシュコントローラ及び演算処理装置 図14
  • -キャッシュコントローラ及び演算処理装置 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024175513
(43)【公開日】2024-12-18
(54)【発明の名称】キャッシュコントローラ及び演算処理装置
(51)【国際特許分類】
   G06F 12/0895 20160101AFI20241211BHJP
   G06F 12/0864 20160101ALI20241211BHJP
【FI】
G06F12/0895 106
G06F12/0864
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023093349
(22)【出願日】2023-06-06
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】中原 汐
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205KK14
5B205LL19
5B205MM03
5B205TT02
5B205UU31
(57)【要約】      (修正有)
【課題】キャッシュメモリの容量を有効利用してキャッシュヒット率を向上させるキャッシュコントローラを提供する。
【解決手段】マルチコアプロセッサ10において、制御モジュール31は、CPU30からアドレス範囲が指定されている場合に、データをアドレス範囲で圧縮してLLC(Last Level Cache)3に保存し、CPU30からアドレス範囲が指定されていない場合に、データを圧縮せずにLLC3に保存し、ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする圧縮した又は圧縮しないデータを分割せずにLLC3に保存する。
【選択図】図3
【特許請求の範囲】
【請求項1】
プロセッサに接続されるキャッシュメモリのキャッシュコントローラであって、
前記プロセッサからアドレス範囲が指定されている場合に、データを前記アドレス範囲で圧縮して前記キャッシュメモリに保存し、前記プロセッサからアドレス範囲が指定されていない場合に、データを圧縮せずに前記キャッシュメモリに保存し、
ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、前記圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする、
制御部を備える、キャッシュコントローラ。
【請求項2】
前記閾値は、Aを該当アドレス範囲のデータサイズとし、Bを圧縮比とし、Cを現在メインメモリで使用している容量とし、Dを総ウェイ数とすると、
【数1】
であり、前記式1が1未満の場合は1である、
請求項1に記載のキャッシュコントローラ。
【請求項3】
前記制御部は、
前記プロセッサから指定された読み出し指示に係るアドレス範囲が前記キャッシュメモリにおいてヒットした場合に、前記読み出し指示に係るアドレス範囲における圧縮情報を取得し、
取得した前記圧縮情報に基づいて、圧縮したデータを展開する、
請求項1又は2に記載のキャッシュコントローラ。
【請求項4】
プロセッサと、
前記プロセッサに接続され、制御部を有するキャッシュメモリと、
を備え、
前記制御部は、
前記プロセッサからアドレス範囲が指定されている場合に、データを前記アドレス範囲で圧縮して前記キャッシュメモリに保存し、前記プロセッサからアドレス範囲が指定されていない場合に、データを圧縮せずに前記キャッシュメモリに保存し、
ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、前記圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする、
演算処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュコントローラ及び演算処理装置に関する。
【背景技術】
【0002】
メモリからCentral Processing Unit(CPU)等の演算器へデータを転送する際には、転送速度が演算速度のボトルネックとなっている。一度メモリから転送してきたデータは、再利用するときに備え、キャッシュに格納されておくことで、データ転送速度の向上が図られる。
【0003】
初回のメモリからのデータ転送時間を短縮することは容易でないが、データを圧縮転送することで転送時間が短縮されることがある。圧縮データを展開してからキャッシュに格納するとキャッシュメモリ容量が圧迫するため、圧縮したままデータを格納すれば、より多くのデータをキャッシュすることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平5-73413号公報
【特許文献2】特開2010-73029号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、キャッシュメモリに圧縮したままのデータを格納すると、圧縮情報を管理するためのテーブルがキャッシュメモリの容量を圧迫するため、キャッシュメモリ本体の容量が減るおそれがある。また、キャッシュメモリにおいてデータサイズに適合する格納場所がないと、キャッシュメモリの利用効率が下がるおそれがある。
【0006】
1つの側面では、キャッシュメモリの容量を有効利用してキャッシュヒット率を向上させることを目的とする。
【課題を解決するための手段】
【0007】
1つの側面では、キャッシュコントローラは、プロセッサに接続されるキャッシュメモリのキャッシュコントローラであって、前記プロセッサからアドレス範囲が指定されている場合に、データを前記アドレス範囲で圧縮して前記キャッシュメモリに保存し、前記プロセッサからアドレス範囲が指定されていない場合に、データを圧縮せずに前記キャッシュメモリに保存し、ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、前記圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする。
【発明の効果】
【0008】
1つの側面では、キャッシュメモリの容量を有効利用してキャッシュヒット率を向上させることができる。
【図面の簡単な説明】
【0009】
図1】関連例としてのマルチコアプロセッサにおけるデータ転送を説明するブロック図である。
図2】実施形態としてのマルチコアプロセッサにおけるデータ転送を説明するブロック図である。
図3図2に示したマルチコアプロセッサのソフトウェア構成例を模式的に示すブロック図である。
図4図2に示したマルチコアプロセッサにおけるデータ転送を説明するシーケンス図である。
図5図3に示したキャッシュ情報を例示するテーブルである。
図6図3に示したウェイ分割管理テーブルを例示する図である。
図7図3に示した圧縮管理テーブルを例示する図である。
図8図3に示したモード管理部における圧縮アドレス範囲の設定処理を説明するフローチャートである。
図9図3に示したモード管理部における圧縮アドレス範囲の解除処理を説明するフローチャートである。
図10図3に示したモード管理部における圧縮情報の取得処理を説明するフローチャートである。
図11図3に示した格納部における処理を説明するフローチャートである。
図12図3に示した読み出し部における処理を説明するフローチャートである。
図13図3に示した取得部における処理を説明するフローチャートである。
図14図3に示したメインメモリの転送部における処理を説明するフローチャートである。
図15図3に示したマルチコアプロセッサを備える演算処理装置のハードウェア構成例を模式的に示すブロック図である。
【発明を実施するための形態】
【0010】
〔A〕関連例
図1は、関連例としてのマルチコアプロセッサ60におけるデータ転送を説明するブロック図である。
【0011】
マルチコアプロセッサ60は、メインメモリ6(別言すれば、主記憶装置),メモリコントローラ7,Last Level Cache(LLC)8及び複数のコア81を備える。また、マルチコアプロセッサ60は、Translation Lookaside Buffer(TLB)701及び圧縮情報702を保持する。
【0012】
メインメモリ6は、データの圧縮・伸長のための転送IF61を備え、非圧縮データ601を圧縮してメモリコントローラ7に転送する。符号A1に示すように、圧縮転送することで、転送速度が向上する。
【0013】
メモリコントローラ7は、データの圧縮・伸長のための転送IF71を備え、メモリコントローラ7が受け取ったデータを非圧縮データ801に伸長してLLC8へ転送する。また、メモリコントローラ7は、マルチコアプロセッサ60が保持するTLB701及び圧縮情報702の情報を利用する。
【0014】
複数のコア81は、LLC8を介して、メモリコントローラ7から受け取ったデータを処理する。複数のコア81の側において、TLB701を物理アドレスでルックアップして属性情報を取得することにより、アドレス変換が行われてもよい。
【0015】
マルチコアプロセッサ60は、圧縮して又は非圧縮でメインメモリ6とLLC8との間でデータを転送する。ページテーブルの属性として圧縮アクセスが指定されるため、ソフトウェア(System call)による設定ができるロス有りの不可逆圧縮よりも圧縮比が向上される。圧縮時の情報を蓄積し、アプリケーションと連携して圧縮比を調整することで、演算精度への影響を低減できる。
【0016】
〔B〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0017】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0018】
図2は、実施形態としてのマルチコアプロセッサ10におけるデータ転送を説明するブロック図である。
【0019】
マルチコアプロセッサ10は、メインメモリ1(別言すれば、主記憶装置),メモリコントローラ2,LLC3及び複数のコア310を備える。また、マルチコアプロセッサ10は、モード管理部32としての機能を備える。
【0020】
メインメモリ1は、データの圧縮・伸長のための転送IF11を備え、非圧縮データ101を圧縮してメモリコントローラ2に転送する。符号B1に示すように、圧縮転送することで、転送速度が向上する。
【0021】
メモリコントローラ2はデータの転送IF21を備え、メインメモリ1が受け取ったデータを圧縮したままLLC3へ転送する。
【0022】
LLC3は、キャッシュメモリの一例であり、メモリコントローラ2から受け取った圧縮データ301を格納する。符号B2に示すように、LLC3は、圧縮したまま格納することで、より多くのデータを格納することができる。また、LLC3は、図3等を用いて後述するモード管理部32による制御によって圧縮データ301の集合を管理する。
【0023】
複数のコア310は、LLC3から受け取った非圧縮データを非圧縮状態のまま処理する。
【0024】
図3は、図2に示したマルチコアプロセッサ10のソフトウェア構成例を模式的に示すブロック図である。
【0025】
マルチコアプロセッサ10において、図3に示すCPU30は、プロセッサの一例であり、図2に示した複数のコア310に対応する。
【0026】
図3に示すように、メインメモリ1は、転送部111として機能する。また、メインメモリ1は、メモリデータ112を保持する。
【0027】
転送部111は、メモリデータ112をLLC3へ転送する。
【0028】
また、図3に示すように、LLC3は、制御モジュール31及びモード管理部32として機能する。また、LLC3は、キャッシュ情報33(図5等を用いて後述)を保持する。
【0029】
制御モジュール31は、キャッシュコントローラ及び制御部の一例であり、読み出し部311、格納部312及び取得部313として機能する。
【0030】
読み出し部311は、キャッシュ情報33から圧縮データを読み出す。
【0031】
格納部312は、キャッシュ情報33へ圧縮データを格納する。
【0032】
取得部313は、メインメモリ1から圧縮データを取得する。
【0033】
モード管理部32は、ウェイ分割管理テーブル321(図6等を用いて後述)及び圧縮管理テーブル322(図7等を用いて後述)を保持する。
【0034】
図4は、図2に示したマルチコアプロセッサ10におけるデータ転送を説明するシーケンス図である。
【0035】
CPU30は、読み出し部311に対して読み出したいデータのアドレスaddressを指定する(符号C1参照)。
【0036】
当該アドレスのデータがキャッシュ情報33に格納されていた場合(LLC3においてキャッシュヒットした場合)には、読み出し部311は、モード管理部32へヒットしたway(ウェイ)のモードを問い合わせる(符号C2参照)。
【0037】
当該wayが分割モードの場合には、読み出し部311は、モード管理部32から分解数(分割数)を取得する(符号C3参照)。
【0038】
読み出し部311は、キャッシュ情報33に対してaddressを指定する(符号C4参照)。
【0039】
読み出し部311は、キャッシュ情報33からaddressに対応する圧縮データ301を読み出す(符号C5参照)。
【0040】
読み出し部311は、圧縮データ301を展開して(符号C6参照)、展開データをCPU30へ転送する(符号C7参照)。
【0041】
当該wayが分割モードでない場合には、読み出し部311は、モード管理部32から“分割無し”の情報を取得する(符号C8参照)。
【0042】
読み出し部311は、キャッシュ情報33に対してaddressを指定する(符号C9参照)。
【0043】
読み出し部311は、キャッシュ情報33からaddressに対応する非圧縮データを読み出す(符号C10参照)。
【0044】
読み出し部311は、非圧縮データをCPU30へ転送する(符号C11参照)。
【0045】
addressに対応するデータがキャッシュ情報33に格納されていない場合(LLC3においてキャッシュミスした場合)には、読み出し部311は、取得部313に対してaddressを指定する(符号C12参照)。
【0046】
取得部313は、モード管理部32に対してaddressを指定する(符号C13参照)。
【0047】
取得部313は、モード管理部32から圧縮情報202(図7を用いて後述)を取得する(符号C14参照)。
【0048】
取得部313は、メインメモリ1に対してaddress及び圧縮情報202を指定する(符号C15参照)。
【0049】
該当データが圧縮扱いである場合には、メインメモリ1は、データを圧縮して(符号C16参照)、圧縮データ301を取得部313へ転送する(符号C17参照)。
【0050】
取得部313は、圧縮データ301を読み出し部311へ転送する(符号C18参照)。
【0051】
読み出し部311は、圧縮データ301を展開して(符号C19参照)、展開データをCPU30へ転送する(符号C20参照)。
【0052】
格納部312は、取得部313からaddress、圧縮情報202及び圧縮データ301を取得して(符号C21参照)、キャッシュ情報33へ圧縮データ301を格納する(符号C22参照)。
【0053】
該当データが圧縮扱いでない場合には、メインメモリ1は、非圧縮データ101を取得部313へ転送する(符号C23参照)。
【0054】
取得部313は、非圧縮データ101を読み出し部311へ転送する(符号C24参照)。
【0055】
読み出し部311は、非圧縮データ101をCPU30へ転送する(符号C25参照)。
【0056】
格納部312は、取得部313からaddress及び圧縮情報202を取得して(符号C26参照)、キャッシュ情報33へ非圧縮データ101を格納する(符号C27参照)。なお、この圧縮情報202には非圧縮であるという情報が含まれている。
【0057】
図5は、図3に示したキャッシュ情報33を例示するテーブルである。
【0058】
キャッシュ情報33は、ウェイの最大分割数分のvalid (V)とtag のフィールドが含まれる。ウェイが複数ある場合、ウェイにより最大分割数が異なってもよい。また、分割できないウェイがあってもよい。Valid/Tagの面積コストの点から、一部のウェイだけが分割できる形が望ましい。
【0059】
図5には、ウェイを2分割して使用している例が示されている。Validは1 (True)又は0 (False)であり、Dataはキャシュラインサイズ8B (64bits)としている。set=01, set=10 のvalid2がFalse(0)になっているため、Tag2, Dataの2個目は無効(Null)となる。
【0060】
図6は、図3に示したウェイ分割管理テーブル321を例示する図である。
【0061】
ウェイ分割管理テーブル321は、各ウェイの分割数を格納する。分割非対応のwayの分割数は1固定となる。分割数の最大値は、キャッシュ情報のvalid/tag数で表される。
【0062】
図6に示す例において、Way 0,1の分割数は2であり、Way 2,3の分割数は1である。
【0063】
図7は、図3に示した圧縮管理テーブル322を例示する図である。
【0064】
圧縮管理テーブル322は、圧縮して格納するデータのアドレス範囲を示す1又は複数の圧縮情報202を管理する。圧縮管理テーブル322では、CPU30からの指示により、エントリが削除又は追加される。
【0065】
圧縮管理テーブル322は、開始アドレス、終了アドレス、元データ型、圧縮データ型及び圧縮比を含む。
【0066】
元データ型及び圧縮データ型は、01: FP16 (16bit), 10: FP32 (32bit), 11: FP64 (64bit)のコードで表している。圧縮比は、格納するウェイの分割数に対応する。
【0067】
図3に示したモード管理部32における圧縮アドレス範囲の設定処理を、図8に示すフローチャート(ステップS1~S5)に従って説明する。
【0068】
モード管理部32は、CPU30から圧縮アドレス範囲の指定情報を受信すると、圧縮管理テーブル322にエントリを追加する(ステップS1)。なお、圧縮アドレス範囲の指定情報は、開始アドレス、終了アドレス、圧縮前データ型及び圧縮後データ型を含む。
【0069】
モード管理部32は、圧縮ウェイは十分あるかを判定する(ステップS2)。
【0070】
モード管理部32は、圧縮ウェイ数が次式を満たしていれば、圧縮ウェイ数は十分であると判定する。ただし、圧縮ウェイ数は1以上であるとする。FLOORは、小数点以下は切り捨てることを表す。
【数1】
【0071】
なお、圧縮ウェイ数は、ウェイ分割管理テーブル321で、分割数=圧縮比であるエントリ数である。Aは、該当アドレス範囲のデータサイズである。Bは、圧縮比であり、圧縮前データサイズを圧縮後データサイズで除算して求める。Cは、現在メインメモリ1で使用している容量である。Dは、総ウェイ数である。
【0072】
すなわち、モード管理部32は、圧縮データ量の割合と、キャッシュメモリの圧縮データ格納領域の割合とが、同じになるようにする。
【0073】
圧縮ウェイが十分ある場合には(ステップS2のYesルート参照)、圧縮アドレス範囲の設定処理は終了する。
【0074】
一方、圧縮ウェイが十分にない場合には(ステップS2のNoルート参照)、モード管理部32は、最も使用率の低いウェイwを1つ選ぶ(ステップS3)。
【0075】
モード管理部32は、ウェイwのキャッシュデータをクリアする(ステップS4)。
【0076】
モード管理部32は、ウェイ分割管理テーブル321のウェイwに対応するエントリの分割数を圧縮アドレス範囲指定情報から得られる圧縮比に更新する(ステップS5)。そして、圧縮アドレス範囲の設定処理は終了する。
【0077】
次に、図3に示したモード管理部32における圧縮アドレス範囲の解除処理を、図9に示すフローチャート(ステップS11~S16)に従って説明する。
【0078】
モード管理部32は、CPU30から圧縮アドレス範囲の解除情報を受信すると、圧縮管理テーブル322の該当エントリを削除する(ステップS11)。なお、圧縮アドレス範囲の解除情報は、開始アドレス及び終了アドレスを含む。
【0079】
モード管理部32は、キャッシュ情報33に該当アドレス範囲のデータがあるかを判定する(ステップS12)。
【0080】
該当アドレス範囲のデータがある場合には(ステップS13のYesルート参照)、モード管理部32は、該当アドレス範囲のキャッシュデータをクリアして(ステップS13)、処理はステップS14へ進む。
【0081】
一方、該当アドレス範囲のデータがない場合には(ステップS12のNoルート参照)、モード管理部32は、圧縮ウェイは十分あるかを判定する(ステップS14)。例えば、図8のステップS2と同様に判定されてよい。
【0082】
圧縮ウェイが十分にない場合には(ステップS14のNoルート参照)、圧縮アドレス範囲の解除処理は終了する。
【0083】
一方、圧縮ウェイが十分ある場合には(ステップS14のYesルート参照)、モード管理部32は、圧縮管理テーブル322に同じ圧縮比のエントリがあるかを判定する(ステップS15)。
【0084】
同じ圧縮比のエントリがある場合には(ステップS15のYesルート参照)、圧縮アドレス範囲の解除処理は終了する。
【0085】
一方、同じ圧縮比のエントリがない場合には(ステップS15のNoルート参照)、モード管理部32は、ウェイ分割管理テーブル321のウェイwの分割数を1に変更する(ステップS16)。そして、圧縮アドレス範囲の解除処理は終了する。
【0086】
次に、図3に示したモード管理部32における圧縮情報の取得処理を、図10に示すフローチャート(ステップS21~S23)に従って説明する。
【0087】
モード管理部32は、圧縮情報202の取得の問い合わせ(アドレス)を読み出し部311から受信すると、圧縮管理テーブル322に該当エントリがあるかを判定する(ステップS21)。なお、圧縮情報202は、元データ型、圧縮データ型及び圧縮比を含む。
【0088】
圧縮管理テーブル322に該当エントリがある場合には(ステップS21のYesルート参照)、モード管理部32は、該当エントリのデータを圧縮情報202として読み出し部311へ返す(ステップS22)。そして、圧縮情報の取得処理は終了する。
【0089】
一方、圧縮管理テーブル322に該当エントリがない場合には(ステップS21のNoルート参照)、モード管理部32は、非圧縮と読み出し部311へ返す(ステップS23)。そして、圧縮情報の取得処理は終了する。
【0090】
次に、図3に示した格納部312における処理を、図11に示すフローチャート(ステップS31~S34)に従って説明する。
【0091】
格納部312は、格納先アドレス、格納データ及び圧縮情報202を取得部313から受信すると、受信データは圧縮データであるかを判定する(ステップS31)。
【0092】
受信データが圧縮データである場合には(ステップS31のYesルート参照)、格納部312は、圧縮情報202内の圧縮比と分割数が等しいウェイWsを取得する(ステップS32)。そして、処理はステップS34へ進む。
【0093】
一方、受信データが圧縮データでない場合には(ステップS31のNoルート参照)、格納部312は、ウェイ分割管理テーブル321を参照し、分割数1のウェイWsを取得する(ステップS33)。
【0094】
格納部312は、格納先アドレスに対応するセットのウェイWsから格納先を選択して、データを格納する(ステップS34)。そして、格納部312における処理は終了する。
【0095】
次に、図3に示した読み出し部311における処理を、図12に示すフローチャート(ステップS41~S47)に従って説明する。
【0096】
読み出し部311は、読み出しアドレスaddrをCPU30から受信すると、キャッシュヒットしたかを判定する(ステップS41)。
【0097】
キャッシュヒットしていない場合、すなわち、キャッシュミスした場合には(ステップS41のNoルート参照)、読み出し部311は、取得部313にaddrのデータを要求する(ステップS42)。
【0098】
読み出し部311は、取得部313から圧縮データもしくは非圧縮データを受信する(ステップS43)。そして、処理はステップS46へ進む。
【0099】
ステップS41においてキャッシュヒットした場合には(ステップS41のYesルート参照)、読み出し部311は、アドレスaddrの圧縮情報202をモード管理部32から取得する(ステップS44)。
【0100】
読み出し部311は、圧縮情報202の圧縮比を参照し、圧縮データを取得する(ステップS45)。
【0101】
ステップS43もしくはステップS45で取得したデータが圧縮データである場合、読み出し部311は、圧縮情報202に基づき、圧縮データを展開する(ステップS46)。
【0102】
読み出し部311は、展開したデータをCPU30に送信する(ステップS47)。そして、読み出し部311における処理は終了する。
【0103】
次に、図3に示した取得部313における処理を、図13に示すフローチャート(ステップS51~S55)に従って説明する。
【0104】
取得部313は、読み出しアドレスaddrを読み出し部311から受信すると、addrの圧縮情報202をモード管理部32から取得する(ステップS51)。
【0105】
取得部313は、メインメモリ1の転送部111にaddrと圧縮情報202を渡し、データを要求する(ステップS52)。
【0106】
取得部313は、メインメモリ1からデータを受信する(ステップS53)。
【0107】
取得部313は、受信データを読み出し部311へ送信する(ステップS54)。
【0108】
取得部313は、addrと受信データを格納部312に送信する(ステップS55)。そして、取得部313における処理は終了する。
【0109】
次に、図3に示したメインメモリ1の転送部111における処理を、図14に示すフローチャート(ステップS61~S65)に従って説明する。
【0110】
転送部111は、LLC3からデータ要求(アドレスと圧縮情報202)を受信すると、メモリデータ112から該当データを取得する(ステップS61)。
【0111】
転送部111は、圧縮情報=非圧縮であるかを判定する(ステップS62)。
【0112】
圧縮情報=非圧縮である場合には(ステップS62のYesルート参照)、転送部111は、LLC3へデータを送信する(ステップS63)。そして、メインメモリ1の転送部111における処理は終了する。
【0113】
一方、圧縮情報=非圧縮でない場合には(ステップS62のNoルート参照)、転送部111は、取得データを圧縮情報202に従って圧縮する(ステップS64)。
【0114】
転送部111は、LLC3へ圧縮データを送信する(ステップS65)。そして、メインメモリ1の転送部111における処理は終了する。
【0115】
図15は、図3に示したマルチコアプロセッサ10を備える演算処理装置100のハードウェア構成例を模式的に示すブロック図である。
【0116】
図15に示すように、演算処理装置100は、CPU30,メインメモリ1,表示制御部13,記憶装置14,入力IF15,外部記録媒体処理部16及び通信IF17を備える。
【0117】
メインメモリ1は、記憶部の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)などである。メインメモリ1のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メインメモリ1のソフトウェアプログラムは、CPU30に適宜に読み込まれて実行されてよい。また、メインメモリ1のRAMは、一時記録メモリあるいはワーキングメモリとして利用されてよい。
【0118】
表示制御部13は、表示装置131と接続され、表示装置131を制御する。表示装置131は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。表示装置131は、入力装置と組み合わされたものでもよく、例えば、タッチパネルでもよい。表示装置131は、演算処理装置100のユーザに対する種々の情報を表示する。
【0119】
記憶装置14は、高IO性能の記憶装置であり、例えば、Dynamic Random Access Memory(DRAM)やSSD(Solid State Drive),Storage Class Memory(SCM),HDD(Hard Disk Drive)が用いられてよい。
【0120】
入力IF15は、マウス151やキーボード152等の入力装置と接続され、マウス151やキーボード152等の入力装置を制御してよい。マウス151やキーボード152は、入力装置の一例であり、これらの入力装置を介して、オペレータが各種の入力操作を行う。
【0121】
外部記録媒体処理部16は、記録媒体160が装着可能に構成される。外部記録媒体処理部16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は、可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0122】
通信IF17は、外部装置との通信を可能にするためのインタフェースである。
【0123】
CPU30は、プロセッサの一例であり、種々の制御や演算を行う処理装置である。CPU30は、メインメモリ1に読み込まれたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。なお、CPU30は、複数のCPUを含むマルチプロセッサであってもよいし、複数のCPUコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0124】
〔C〕効果
制御モジュール31は、CPU30からアドレス範囲が指定されている場合に、データをアドレス範囲で圧縮してLLC3に保存し、CPU30からアドレス範囲が指定されていない場合に、データを圧縮せずにLLC3に保存する。制御モジュール31は、ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする。
【0125】
これにより、キャッシュメモリの容量を有効利用してキャッシュヒット率を向上させることができる。
【0126】
具体的には、データ毎ではなくアドレス範囲で圧縮情報202を管理することで、圧縮情報202を削減することができる。また、一部のウェイを分割可能とし、必要に応じて分割(圧縮ウェイ)と非分割(非圧縮ウェイ)とを切り換えることで、圧縮データ用のキャッシュ領域を確保して、キャッシュ利用効率減を防ぐことができる。
【0127】
そして、キャッシュメモリにより多くのデータをキャッシュできるようになり、キャッシュヒット率が向上することができる。また、圧縮転送することにより、キャッシュミス時のデータ転送速度が向上する。
【0128】
閾値は、Aを該当アドレス範囲のデータサイズとし、Bを圧縮比とし、Cを現在メインメモリで使用している容量とし、Dを総ウェイ数とすると、
【数2】
である。但し式1が1未満の場合は1とする。
【0129】
これにより、ウェイを分割するか、分割しないかを、圧縮ウェイ数に応じて適切に判断できる。
【0130】
制御モジュール31は、CPU30から指定された読み出し指示に係るアドレス範囲がLLC3においてヒットした場合に、読み出し指示に係るアドレス範囲における圧縮比を取得し、取得した圧縮比に基づいて、圧縮したデータを展開する。
【0131】
これにより、データの読み出しを適切に実行できる。
【0132】
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0133】
〔E〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0134】
(付記1)
プロセッサに接続されるキャッシュメモリのキャッシュコントローラであって、
前記プロセッサからアドレス範囲が指定されている場合に、データを前記アドレス範囲で圧縮して前記キャッシュメモリに保存し、前記プロセッサからアドレス範囲が指定されていない場合に、データを圧縮せずに前記キャッシュメモリに保存し、
ウェイの分割数と圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする、
制御部を備える、キャッシュコントローラ。
【0135】
(付記2)
前記閾値は、Aを該当アドレス範囲のデータサイズとし、Bを圧縮比とし、Cを現在メインメモリで使用している容量とし、Dを総ウェイ数とすると、
【数3】
であり、前記式1が1未満の場合は1とする、
付記1に記載のキャッシュコントローラ。
【0136】
(付記3)
前記プロセッサから指定された読み出し指示に係るアドレス範囲が前記キャッシュメモリにおいてヒットした場合に、前記読み出し指示に係るアドレス範囲における圧縮情報を取得し、
取得した前記圧縮情報に基づいて、圧縮したデータを展開する、
付記1又は2に記載のキャッシュコントローラ。
【0137】
(付記4)
プロセッサと、
前記プロセッサに接続され、制御部を有するキャッシュメモリと、
を備え、
前記制御部は、
前記プロセッサからアドレス範囲が指定されている場合に、データを前記アドレス範囲で圧縮して前記キャッシュメモリに保存し、前記プロセッサからアドレス範囲が指定されていない場合に、データを圧縮せずに前記キャッシュメモリに保存し、
ウェイの分割数とデータの圧縮比とが等しいエントリの数を示す圧縮ウェイ数が閾値未満である場合に、分割ウェイを増やし、圧縮ウェイ数が閾値以上である場合に、使用していない分割ウェイを非分割とする、
演算処理装置。
【0138】
(付記5)
前記閾値は、Aを該当アドレス範囲のデータサイズとし、Bを圧縮比とし、Cを現在メインメモリで使用している容量とし、Dを総ウェイ数とすると、
【数4】
であり、前記式1が1未満の場合は1である、
付記4に記載の演算処理装置。
【0139】
(付記6)
前記制御部は、
前記プロセッサから指定された読み出し指示に係るアドレス範囲が前記キャッシュメモリにおいてヒットした場合に、前記読み出し指示に係るアドレス範囲における圧縮情報を取得し、
取得した前記圧縮情報に基づいて、圧縮したデータを展開する、
付記4又は5に記載の演算処理装置。
【符号の説明】
【0140】
1、6 :メインメモリ
2、7 :メモリコントローラ
3、8 :LLC
10、60:マルチコアプロセッサ
13 :表示制御部
14 :記憶装置
16 :外部記録媒体処理部
30 :CPU
31 :制御モジュール
32 :モード管理部
33 :キャッシュ情報
100 :演算処理装置
101、601、801:非圧縮データ
111 :転送部
112 :メモリデータ
131 :表示装置
151 :マウス
152 :キーボード
160 :記録媒体
202、702:圧縮情報
301 :圧縮データ
310、81:コア
311 :読み出し部
312 :格納部
313 :取得部
321 :ウェイ分割管理テーブル
322 :圧縮管理テーブル
11、21、61、71:転送IF
15 :入力IF
17 :通信IF
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15