(57)【要約】【課題】ユーザが期待するキャッシュ構成でプログラム実施が可能なキャッシュシステムを提供する。【解決手段】ＣＰＵキャッシュ機構３０５は、マルチコアプロセッサ３０内の複数のＣＰＵコア３０１〜３０４に共有される。キャッシュ特性取得部１０１は、キャッシュ特性テーブル群１０が保持するプログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得する。論理キャッシュ設定部１０４は、プログラム特性に応じたＣＰＵキャッシュを、マルチコアプロセッサに設定する【選択図】図１
2009211649.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムであって、
プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得するキャッシュ特性取得部と、
前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定する論理キャッシュ設定部とを有するキャッシュシステム。
【請求項２】
前記マルチコアプロセッサに対応した論理キャッシュテーブルであって、前記複数のＣＰＵコアに対応し、それぞれが、各ＣＰＵコアに設定するＣＰＵキャッシュの設定値を保持する複数の論理キャッシュを有する論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する論理キャッシュ再構成部を更に備え、
前記論理キャッシュ設定部は、各論理キャッシュの内容を、対応するＣＰＵコアに設定することで、前記マルチコアプロセッサにおけるＣＰＵキャッシュの構成を変更する、請求項１に記載のキャッシュシステム。
【請求項３】
前記論理キャッシュ再構成部は、プログラム実行中のＣＰＵコアに対応する論理キャッシュを、前記キャッシュ特性に応じたキャッシュ設定が適用可能となるように調整した上で、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項２に記載のキャッシュシステム。
【請求項４】
前記マルチコアプロセッサを複数有しており、前記論理キャッシュテーブルと、前記キャッシュ特性取得部が取得したキャッシュ特性とに応じて、前記複数のマルチコアプロセッサの中から、プログラムを実行させるマルチコアプロセッサを選択するプロセッサ選択部を更に備え、
前記論理キャッシュ再構成部は、前記プロセッサ選択部が選択したマルチコアプロセッサに対応する論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項２又は３に記載のキャッシュシステム。
【請求項５】
前記プロセッサ選択部は、前記論理キャッシュテーブルを参照して、前記複数のマルチコアプロセッサの中から、前記キャッシュ特性にて示される必要容量以上のキャッシュメモリの容量を確保可能なマルチコアプロセッサを、プログラム実行を行うマルチコアプロセッサとして選択する、請求項４に記載のキャッシュシステム。
【請求項６】
前記論理キャッシュ再構成部は、プログラム実行開始時に、実行するプログラムのキャッシュ特性に応じて、前記プロセッサ選択部にて選択されたマルチコアプロセッサにおけるＣＰＵキャッシュの構成を、動的に変化させる、請求項４又は５に記載のキャッシュシステム。
【請求項７】
前記プログラムのキャッシュ特性は、第１の分類と第２の分類とに分類されており、前記論理キャッシュ再構成部は、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の分類の各組み合わせについて、前記論理キャッシュに設定すべき設定値をテンプレート化して保持する論理キャッシュテンプレートを参照し、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の組み合わせに応じて、前記テンプレート化された設定値を選択的に利用することで、前記論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項２に記載のキャッシュシステム。
【請求項８】
前記プログラムのキャッシュ特性は、第１〜第Ｎ（Ｎは２以上の整数）の分類に分類されており、前記論理キャッシュ再構成部は、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の分類の各組み合わせについて、前記論理キャッシュに設定すべき設定値をテンプレート化して保持する論理キャッシュテンプレートを参照し、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の組み合わせに応じて、前記テンプレート化された設定値を選択的に利用することで、前記論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項２に記載のキャッシュシステム。
【請求項９】
コンピュータを用い、複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムを制御する方法であって、
前記コンピュータが、プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得するステップと、
前記コンピュータが、前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定するステップとを有するキャッシュシステム制御方法。
【請求項１０】
前記コンピュータが、マルチコアプロセッサに対応した論理キャッシュテーブルであって、前記複数のＣＰＵコアに対応し、それぞれが、各ＣＰＵコアに設定するＣＰＵキャッシュの設定値を保持する複数の論理キャッシュを有する論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用するステップを更に有し、
前記ＣＰＵキャッシュを設定するステップでは、前記コンピュータは、各論理キャッシュの内容を、対応するＣＰＵコアに設定することで、前記マルチコアプロセッサにおけるＣＰＵキャッシュの構成を変更する、請求項９に記載のキャッシュシステム制御方法。
【請求項１１】
前記論理キャッシュテーブルにキャッシュ特性に応じたキャッシュ設定を適用するステップでは、前記コンピュータは、プログラム実行中のＣＰＵコアに対応する論理キャッシュを、前記キャッシュ特性に応じたキャッシュ設定が適用可能となるように調整した上で、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項１０に記載のキャッシュシステム制御方法。
【請求項１２】
前記コンピュータが、複数のマルチコアプロセッサの中から、前記論理キャッシュテーブルと、取得したキャッシュ特性とに応じて、前記プログラムを実行させるマルチコアプロセッサを選択するステップを更に有し、
前記論理キャッシュテーブルにキャッシュ特性に応じたキャッシュ設定を適用するステップでは、前記コンピュータは、前記選択するステップで選択したマルチコアプロセッサに対応する論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項１０又は１１記載のキャッシュシステム制御方法。
【請求項１３】
前記選択するステップでは、前記コンピュータは、前記論理キャッシュテーブルを参照して、前記複数のマルチコアプロセッサの中から、前記取得したキャッシュ特性にて示される必要容量以上のキャッシュメモリの容量を確保可能なマルチコアプロセッサを、前記プログラム実行を行うマルチコアプロセッサとして選択する、請求項１２に記載のキャッシュシステム制御方法。
【請求項１４】
前記コンピュータは、プログラム実行開始時に、該実行するプログラムのキャッシュ特性を取得し、該取得したプログラムのキャッシュ特性に応じて、前記選択するステップで選択したマルチコアプロセッサにおけるＣＰＵキャッシュの構成を、動的に変化させる、請求項１２又は１３に記載のキャッシュシステム制御方法。
【請求項１５】
前記プログラムのキャッシュ特性は、第１の分類と第２の分類とに分類されており、前記論理キャッシュテーブルにキャッシュ特性に応じたキャッシュ設定を適用するステップでは、前記コンピュータは、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の分類の各組み合わせについて、前記論理キャッシュに設定すべき設定値をテンプレート化して保持する論理キャッシュテンプレートを参照し、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の組み合わせに応じて、前記テンプレート化された設定値を選択的に利用することで、前記論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項１０に記載のキャッシュシステム制御方法。
【請求項１６】
前記プログラムのキャッシュ特性は、第１〜第Ｎ（Ｎは２以上の整数）の分類に分類されており、前記論理キャッシュテーブルにキャッシュ特性に応じたキャッシュ設定を適用するステップでは、前記コンピュータは、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の分類の各組み合わせについて、前記論理キャッシュに設定すべき設定値をテンプレート化して保持する論理キャッシュテンプレートを参照し、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の組み合わせに応じて、前記テンプレート化された設定値を選択的に利用することで、前記論理キャッシュテーブルに、前記キャッシュ特性に応じたキャッシュ設定を適用する、請求項１０に記載のキャッシュシステム制御方法。
【請求項１７】
コンピュータに、複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムを制御する処理を実行させるプログラムであって、前記コンピュータに、プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得する処理と、
前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定する処理とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステム、その制御方法、及び、プログラムに関し、更に詳しくは、複数のＣＰＵコアを有するマルチコアプロセッサのＣＰＵキャッシュメモリを制御するキャッシュシステム、制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
複数のＣＰＵコアを備えるマルチコアプロセッサがある。特許文献１には、マルチコアプロセッサを用いた計算機システムが記載されている。マルチコアプロセッサは、物理プロセッサであり、ＯＳの下で複数の論理プロセッサとして機能する。物理プロセッサ内の演算器や、キャッシュメモリなどの機構は、論理プロセッサ間で競合して使用され、或いは、共有される。特許文献１では、新しいプロセスに論理プロセッサを割り当てる際には、そのプロセスと、割当て済みプロセスとに依存関係があるか否かを調べる。依存関係がない場合は、新たなプロセスと、割当て済みプロセスとが、キャッシュメモリを共有しないように、新たなプロセスを別の物理プロセッサ上の論理プロセッサに割り当てる。
【特許文献１】特開２００６−２４１８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プロセッサが単一のコアを有するシングルコアにおけるキャッシュの利用方法について、これまでに種々の提案がなされている。例えば、各プログラムにおいて、キャッシュ操作の頻度に応じてプログラムの各ライン単位に優先順位を決め、優先順位が高いラインは優先的にキャッシュに乗せるなどする方法などが提案されている。しかし、近年急速に普及しているマルチコア技術を用いたプロセッサについて、各コアに対してキャッシュ領域を効率的に割り当てる方法の提案は少ない。特許文献１は、依存関係にないプロセスを、同一物理プロセッサ上の論理プロセッサに割り当てないようにしてキャッシュの共有を防ぐものであり、ユーザが期待するキャッシュ構成でプログラムの実施が可能となるものではない。
【０００４】
本発明は、ユーザが期待するキャッシュ構成でプログラム実施が可能なキャッシュシステム、制御方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明のキャッシュシステムは、複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムであって、プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得するキャッシュ特性取得部と、前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定する論理キャッシュ設定部とを有することを特徴とする。
【０００６】
本発明のキャッシュシステム制御方法は、コンピュータを用い、複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムを制御する方法であって、前記コンピュータが、プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得するステップと、前記コンピュータが、前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定するステップとを有することを特徴とする。
【０００７】
本発明のプログラムは、コンピュータに、複数のＣＰＵコアが、単一のＣＰＵキャッシュメモリを共有するマルチコアプロセッサのキャッシュ設定を行うキャッシュシステムを制御する処理を実行させるプログラムであって、前記コンピュータに、プログラムのキャッシュ特性を記述したキャッシュ特性テーブルを参照して、プログラムのキャッシュ特性を取得する処理と、前記取得されたキャッシュ特性に応じたＣＰＵキャッシュを前記マルチコアプロセッサに設定する処理とを実行させることを特徴とする。
【発明の効果】
【０００８】
本発明のキャッシュシステム、制御方法、及び、プログラムは、ユーザが期待するキャッシュ構成でプログラム実施することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図１は、本発明の第１実施形態のキャッシュシステムを示している。キャッシュシステムは、キャッシュ特性取得部１０１、論理キャッシュテーブル選択部（プロセッサ選択部）１０２、論理キャッシュ再構成部１０３、及び、論理キャッシュ設定部１０４を有する。これら各部の機能は、オペレーティングシステム（ＯＳ）１００の機能として実装される。また、各部の機能は、コンピュータ上で、所定のプログラムを実行することで実現される。
【００１０】
以下では、システムが、４つのマルチコアプロセッサ３０〜３３を有する場合を説明する。各マルチコアプロセッサは、複数のＣＰＵコア（図１では４つのＣＰＵコア３０１〜３０４）と、ＣＰＵキャッシュ機構３０５と、ＣＰＵキャッシュ最適化機構３０６とを有する。ＣＰＵキャッシュ機構３０５は、複数のＣＰＵコア３０１〜３０４で共有可能なキャッシュ機構である。ＣＰＵキャッシュ最適化機構３０６は、ＣＰＵキャッシュ機構３０５のパラメータ設定を行う。パラメータとしては、例えば、各ＣＰＵコアに対するキャッシュメモリの割当て量や、キャッシュ方法（リプレース方法）の指定などを考える。キャッシュシステム（ＯＳ１００）は、各マルチコアプロセッサ内のＣＰＵキャッシュ機構３０５に、プログラム特性に応じたキャッシュ設定を行う。
【００１１】
ＯＳ１００は、キャッシュ特性テーブル群１０を保持する。キャッシュ特性テーブル群１０は、複数のキャッシュ特性テーブルを有する。各キャッシュ特性テーブルは、ユーザが期待する、各プログラムに固有のキャッシュ特性を保持する。キャッシュ特性テーブルは、マルチコアプロセッサが備えているＣＰＵキャッシュ最適化機構３０６に設定可能なパラメータを格納するエントリを含む。設定可能なパラメータには、現にシステムに存在しているマルチコアプロセッサ３０〜３３にて設定できるパラメータだけでなく、将来使用することを想定している他のマルチコアプロセッサに設定可能なパラメータを含んでいてもよい。
【００１２】
図２に、キャッシュ特性テーブル群１０を示す。キャッシュ特性テーブル群１０は、複数のキャッシュ特性テーブル（図２では、キャッシュ特性テーブル１１〜１４）を有する。キャッシュ特性テーブル１１〜１４は、ＯＳ１００上で実行されるプログラムＡ〜Ｄに対応している。図３に、キャッシュ特性テーブルのデータ例を示す。この例では、キャッシュ特性テーブルは、キャッシュ容量、更新手法、プリフェッチタイミング、その他の情報を格納するエントリを含む。
【００１３】
キャッシュ容量のエントリには、例えば、キャッシュが有効なプログラムに対しては、多めの容量が格納され、キャッシュがそれほど有効でないプログラムに対しては、少なめの容量が格納される。また、更新手法のエントリには、特定のリプレース方法を採用したときに実行効率が向上するプログラムに対して、そのリプレース方式を採用する旨の情報が格納される。キャッシュ特性テーブルの各エントリは、プログラム特性に合わせて管理者により設定される。或いは、ＯＳ１００が、複数のパラメータにてプログラム実行を行い、実行効率が最もよかったものを選択し、そのパラメータを、自動設定してもよい。
【００１４】
図１に戻り、ＯＳ１００は、４つのマルチコアプロセッサ３０〜３３のそれぞれに対応して、４つの論理キャッシュテーブル２０〜２３を保持する。論理キャッシュテーブル２０は、マルチコアプロセッサに含まれるＣＰＵコアに対応した論理キャッシュ（図１では、論理キャッシュ２０１〜２０４）を有する。各論理キャッシュは、マルチコアプロセッサ内の各ＣＰＵコアに対応しており、それぞれ、各ＣＰＵコアに設定するＣＰＵキャッシュの設定値を保持する。
【００１５】
図４に、論理キャッシュテーブルのデータ例を示す。論理キャッシュ２０１〜２０４は、それぞれ、更新方法、容量、及び、コア番号のエントリを含む。コア番号は、論理キャッシュと、物理プロセッサ（マルチコアプロセッサ）内のＣＰＵコアとの対応関係を決定するエントリである。論理キャッシュ２０１〜２０４は、コア番号を変更することにより、ＣＰＵコア３０１〜３０４との対応関係を動的に変更することが可能である。
【００１６】
更新方法は、コア番号で示されるＣＰＵコアに設定するキャッシュのリプレース方法を指定する情報を格納するエントリである。容量は、ＣＰＵコア番号で示されるＣＰＵコアに対するＣＰＵキャッシュメモリの割当て量を格納するエントリである。論理キャッシュ２０１〜２０４は、上記以外にも、ＣＰＵキャッシュ最適化機構３０６にて操作可能なパラメータがあるときは、そのパラメータ用のエントリを有する。
【００１７】
キャッシュ特性取得部１０１は、キャッシュ特性テーブル群１０から、プログラムに対応するキャッシュ特性テーブルを取得する。論理キャッシュテーブル選択部１０２は、プログラム起動時に、論理キャッシュテーブル２０〜２３と、キャッシュ特性取得部１０１が取得したキャッシュ特性とを参照して、プログラム実行中の各ＣＰＵコアのキャッシュの状態、及び、これから実行するプログラムのキャッシュ特性を考慮して、論理キャッシュテーブル２０〜２３のうちの何れかを選択する。例えば、キャッシュ特性テーブルに、より多くのキャッシュ容量を割り当てる旨の情報が含まれるプログラムに対しては、４つの論理キャッシュテーブル２０〜２３の中から、ＣＰＵコアに対して確保できるキャッシュ容量が最大となる論理キャッシュテーブルを選択する。
【００１８】
論理キャッシュテーブル２０〜２３は、マルチコアプロセッサ３０〜３３に対応しているので、論理キャッシュテーブルを選択することは、プログラムを実行するマルチコアプロセッサを選択していることと同義である。なお、プログラム実行に際して、プログラムを実行するマルチコアプロセッサが事前に決定している場合は、論理キャッシュテーブル選択部１０２は、キャッシュ特性テーブルを参照することなく、そのマルチコアプロセッサに対応する論理キャッシュテーブルを選択する。
【００１９】
論理キャッシュ再構成部１０３は、論理キャッシュテーブルに、プログラムのキャッシュ特性に応じたキャッシュ設定を適用する。このとき、論理キャッシュ再構成部１０３は、キャッシュ特性に応じたキャッシュが実現できるように、論理キャッシュテーブル選択部１０２にて選択された論理キャッシュテーブル内の論理キャッシュの再構成を行う。この論理キャッシュの再構成では、例えば、これからプログラムを実行するＣＰＵコアに対し、キャッシュ特性テーブルにて指定される容量のキャッシュメモリが確保できるか否かを調べる。確保できないときは、他のＣＰＵコアに対応する論理キャッシュを参照し、プログラム実行中のＣＰＵコアに対して、キャッシュ特性テーブルにて指定される容量以上のキャッシュメモリが割り当てられているか否かを調べる。必要容量以上のキャッシュメモリが割り当てられているＣＰＵコアがある場合は、そのＣＰＵコアに対応する論理キャッシュを変更してキャッシュメモリの割当て量を削減し、余分な割当て領域を開放させる。このようにすることで、キャッシュ特性に応じたキャッシュ容量を確保できる。なお、論理キャッシュ再構成部１０３は、論理キャッシュの再構成を行わなくても、キャッシュ特性テーブルにて示されるキャッシュが実現可能なときは、再構成を行う必要はない。
【００２０】
論理キャッシュの再構成では、マルチコアプロセッサ内の各ＣＰＵコアに対して、ＣＰＵキャッシュメモリの基本割当て量を設定しておき、最低限、その基本割当て量が確保されるようにすることができる。例えば、あるＣＰＵコアについて、ＣＰＵキャッシュメモリの割当て量が、基本割当て量を下回った場合は、他のＣＰＵコアに割り当てたＣＰＵキャッシュメモリ領域を強制的に開放させ、その領域を、基本割当て量を下回るＣＰＵコアに割り当てる。このようにすることで、大量のキャッシュメモリが必要なプログラムが実行される際に、そのプログラムを実行するＣＰＵコアとは異なるＣＰＵコアで、割り当てられたキャッシュメモリの容量が極端に少なくなることを避けることができる。
【００２１】
また、論理キャッシュ再構成部１０３は、実行していたプログラムが終了することなどにより、マルチコアプロセッサ上で未使用のキャッシュ領域が生じたときは、未使用となったキャッシュ領域を、プログラム実行中のＣＰＵコアに割り当てる処理を行う。この処理では、同一のマルチコアプロセッサ内で動作しているプログラムのうちで、より多くのＣＰＵキャッシュを必要とするプログラムを実行しているＣＰＵコアに、より多くのＣＰＵキャッシュを割り当てるように、論理キャッシュを再構成することが好ましい。
【００２２】
論理キャッシュ設定部１０４は、論理キャッシュテーブル２０〜２３を、対応するマルチコアプロセッサ３０〜３３に送り、各マルチコアプロセッサにおけるＣＰＵキャッシュの構成を決定する。より詳細には、例えばマルチコアプロセッサ３０に対して、論理キャッシュテーブル２０内の論理キャッシュ２０１〜２０４の内容をＣＰＵキャッシュ最適化機構３０６に送り、ＣＰＵキャッシュ最適化機構３０６によりＣＰＵキャッシュ機構３０５を制御することで、論理キャッシュ２０１〜２０４の内容で、各ＣＰＵコア３０１〜３０４のＣＰＵキャッシュを実現する。
【００２３】
図５に、動作手順を示す。事前に、各プログラムに対して、キャッシュ特性テーブルに特性値を設定しておく。ＯＳ１００は、プログラムの実行が割り当てられると、キャッシュ特性テーブル群１０から、実行されるプログラムに対応するキャッシュ特性テーブルを取得する（ステップＳ１）。論理キャッシュテーブル選択部１０２は、キャッシュ特性テーブルと、論理キャッシュテーブル２０〜２３とを参照し、論理キャッシュテーブルの何れかを選択する（ステップＳ２）。ステップＳ２では、論理キャッシュテーブル選択部１０２は、例えば、ステップＳ１で取得されたキャッシュ特性テーブルの特性値を、有利な条件で実現可能なマルチコアプロセッサに対応する論理キャッシュテーブルを選択する。ここでは、論理キャッシュテーブル２０が選択されたとする。
【００２４】
論理キャッシュ再構成部１０３は、ステップＳ２で選択された論理キャッシュテーブル２０に、ステップＳ１で取得されたキャッシュ特性テーブルの内容を適用し、論理キャッシュテーブル２０を再構成する（ステップＳ３）。ここでは、新たにプログラムを実行するＣＰＵコアが、論理キャッシュ２０１に対応するＣＰＵコアであるとする。論理キャッシュ再構成部１０３は、ステップＳ３で、論理キャッシュ２０１にステップＳ１で取得されたキャッシュ特性テーブルの内容を適用し、プログラム実行中のＣＰＵコアに対応する論理キャッシュ２０２〜２０４との調整を取る。この調整では、論理キャッシュ再構成部１０３は、多くのキャッシュメモリの容量を必要とするプログラムを実行するＣＰＵコアに対して、より多くのキャッシュメモリ容量が割り当てられるように、論理キャッシュを再構成する。
【００２５】
論理キャッシュ設定部１０４は、ステップＳ３で再構成された論理キャッシュテーブルの情報をマルチコアプロセッサ３０に送信する（ステップＳ４）。マルチコアプロセッサ３０は、論理キャッシュテーブルの情報を受け取ると、ＣＰＵキャッシュ最適化機構３０６及びＣＰＵキャッシュ機構３０５により、論理キャッシュテーブル２０の内容に従ったキャッシュを実現する。マルチコアプロセッサ３０は、実行が割り当てられたプログラムを、論理キャッシュ２０１に対応するＣＰＵコアで実行する。ＯＳ１００は、別のプログラムを実行する際には、上記と同様な手順で、そのプログラムに対応するキャッシュ特性テーブルを取得し、論理キャッシュテーブル２０〜２３の何れかを選択し、選択した論理キャッシュテーブルの再構成を行う。このようにすることで、プログラムを実行するマルチコアプロセッサにて、実行プログラムのキャッシュ特性に応じたキャッシュを実現できる。
【００２６】
本実施形態では、各プログラムのキャッシュ特性に基づいて、ＯＳ１００がマルチコアプロセッサにおける共有キャッシュ機構のパラメータを決定する。これにより、実行するプログラムのキャッシュ特性に応じて、ＣＰＵコアが使用するＣＰＵキャッシュメモリの構成を、プログラム実行開始時に、動的に変更することができる。マルチコアプロセッサにて、プログラムのキャッシュ特性に応じたキャッシュを実現することで、プログラムごとに、ユーザが期待するキャッシュ構成でプログラムを実行することができる。
【００２７】
例えば、より多くＣＰＵキャッシュを要求するキャッシュ特性を持つプログラムＡと、最低限のＣＰＵキャッシュしか使わないプログラムＢとを、同一のマルチコアプロセッサで実行することを考える。この場合、論理キャッシュ再構成部１０３は、プログラムＡを実行するＣＰＵコアに対応する論理キャッシュに、ＣＰＵキャッシュ領域をＣＰＵコア３個分＋αだけ使用する旨の情報を書き込む。また、プログラムＢを実行するＣＰＵコアに対応する論理キャッシュに、ＣＰＵキャッシュ領域をＣＰＵコア１個分−αだけ使用する旨の情報を書き込む。この場合、キャッシュの効果が期待できるプログラムＡを実行するＣＰＵコアにより多くのキャッシュメモリを割り当てることで、効率的なプログラム実行が期待できる。一方、キャッシュが有効ではないとわかっているプログラムＢを実行するＣＰＵコアに対しては、必要最低限のＣＰＵキャッシュメモリを割り当てることで、他のＣＰＵコアが使用可能なＣＰＵキャッシュを増やすことができ、自ＣＰＵコアでは余分なＣＰＵキャッシュを分け与えることができる。
【００２８】
また、本実施形態では、論理キャッシュテーブル選択部１０２により、実行するプログラムのキャッシュ特性テーブルの内容と、各論理キャッシュテーブルの内容とに基づいて、論理キャッシュテーブル、つまりは、プログラムを実行するマルチコアプロセッサを選択する。論理キャッシュテーブル選択部１０２が、キャッシュ特性テーブルの内容を、有利な条件で実行できる論理キャッシュテーブルを選択することで、マルチプロセッサシステムで、ＣＰＵキャッシュを有効に利用するために物理プロセッサをスケジュールすることが可能である。例えば、実プロセッサ（マルチコアプロセッサ）が４つあり、４つのプログラムがそれぞれ別々の実プロセッサ上で動作している場合を考える。次に実行されるプログラムは、ＣＰＵキャッシュを多く使用する特性を持つプログラムであるとする。この場合、各実プロセッサに対応する論理キャッシュテーブル上で、最も多くのキャッシュメモリを確保できる物理プロセッサを選択することで、キャッシュの有効利用を図ることができる。
【００２９】
続いて、本発明の第２実施形態について説明する。本実施形態の構成は、図１に示す第１実施形態の構成と同様である。本実施形態では、キャッシュ特性を２つのタイプのみに固定し、全てのプログラムを、２つのタイプのいずれかに所属させる。例えば、キャッシュ特性を、より多くのキャッシュメモリを必要とするプログラムが属する第１の分類と、キャッシュメモリが少なくてよいプログラムが属する第２の分類との２つに分類する。このとき、ＯＳについてのキャッシュ特性は、何れか一方の特性を利用することとする。
【００３０】
本実施形態では、論理キャッシュ再構成部１０３は、事前に用意された論理キャッシュのテンプレートを用いて、キャッシュ特性に応じたキャッシュ設定を行う。論理キャッシュのテンプレートは、マルチコアプロセッサ内の各ＣＰＵコアで実行中／これから実行するプログラムの分類の各組み合わせに対して、論理キャッシュテーブル内の各論理キャッシュに設定すべき設定値を、テンプレート化して保持するものである。この論理キャッシュテンプレートは、全ての物理プロセッサで共通に使用することができる。
【００３１】
例えば、管理者は、４つのＣＰＵコア３０１〜３０４（図１）の全てで第１の分類のプログラムを実行する場合に論理キャッシュ２０１〜２０４のそれぞれに対して設定すべき設定値を、論理キャッシュテンプレートとして作成する。また、４つのＣＰＵコア３０１〜３０４のうちの１つで第１の分類のプログラムを実行し、残り３つで第２の分類のプログラムを実行する場合に、論理キャッシュ２０１〜２０４のそれぞれに対して設定すべき設定値を、論理キャッシュテンプレートとして作成する。論理キャッシュテンプレートにおける組み合わせには、プログラム実行なしという状態を追加してもよい。
【００３２】
キャッシュ特性取得部１０１は、新たに実行するプログラムのキャッシュ特性が、第１の分類に属するか、或いは、第２の分類に属するかを判別する。論理キャッシュテーブル選択部１０２は、プログラム実行が可能なマルチコアプロセッサに対応する論理キャッシュテーブルを選択する。論理キャッシュ再構成部１０３は、新たにプログラム実行を行うマルチコアプロセッサ内の各ＣＰＵコアで実行中のプログラムのキャッシュ特性の分類と、新たに実行するプログラムのキャッシュ特性の分類とに基づいて、論理キャッシュテンプレートから、該当する組み合わせのテンプレートを取得し、これを論理キャッシュテーブルに適用することで、論理キャッシュテーブルを再構成する。論理キャッシュ設定部１０４は、テンプレートが適用された論理キャッシュテーブルを、マルチコアプロセッサに送信し、テンプレートに従ったキャッシュを実現させる。
【００３３】
本実施形態では、各プログラムのキャッシュ特性を２つのタイプの対照的なキャッシュ特性に簡素化して分類する。システム運用に際しては、２つのタイプを組み合わせた論理キャッシュの全ての組み合わせのテンプレートを事前に作成しておく。プログラム実行時には、各ＣＰＵコアで実行されるプログラムのキャッシュ特性の組み合わせが、同じ組み合わせとなる論理キャッシュテンプレートの情報を参照し、既に計算されているテンプレートの情報を、該当する物理プロセッサに通知する。このようにすることで、プログラム実行のたびに、論理キャッシュテーブル内の論理キャッシュの設定値を計算する必要がなくなる。このため、第１実施形態のように各プログラムのキャッシュ特性を細かく記載する場合に比して、ＯＳの論理キャッシュの最適化の計算コストを抑えつつ、実プロセッサ上のＣＰＵキャッシュメモリの有効利用を図ることができる。
【００３４】
本発明の第３実施形態について説明する。本実施形態の構成は、図１に示す第１実施形態における構成と同様である。本実施形態では、プログラムのキャッシュ特性をＮタイプに分類する。第２実施形態と同様に、論理キャッシュテンプレートに、各ＣＰＵコアで実行されるプログラムの分類のすべての組み合わせに対する論理キャッシュの設定値のテンプレートを保持しておく。プログラム実行時には、プログラムが実行されるマルチコアプロセッサ内の各ＣＰＵコアで実行されるプログラムのキャッシュ特性の分類に従って、論理キャッシュテンプレートから、該当する組み合わせのテンプレートを取得し、マルチコアプロセッサに送信する。
【００３５】
上記第２実施形態では、キャッシュ特性の分類が２分類であるので、ＣＰＵキャッシュの利用が大雑把すぎることが考えられる。本実施形態では、Ｎ通りのタイプの組み合わせのテンプレートを事前に用意する事により、ユーザに都合の良い組み合わせを選択し、利用することが可能となる。
【００３６】
なお、図１では、マルチコアプロセッサが有するＣＰＵキャッシュ機構及びＣＰＵキャッシュ最適化機構に対して論理キャッシュを適用することについて説明したが、キャッシュシステムが、複数のマルチコアプロセッサで共有可能なキャッシュ機構、及び、該キャッシュ機構の最適化を行う最適化機構を有する場合は、そのキャッシュ機構に対して、キャッシュ特性に応じた論理キャッシュの適用を行ってもよい。例えば、より多くのキャッシュを必要とするプログラムが実行しているマルチコアプロセッサに対して、より多くのキャッシュメモリを割り当てる。このようにすることで、マルチコアプロセッサの実行効率を上げることができる。
【００３７】
上記各実施形態のキャッシュシステムは、個人が使用するノートＰＣなどに適用可能である。この場合、ユーザが使用するアプリケーション用のＣＰＵキャッシュメモリを、バックグラウンドプログラムであるＯＳや、ウィルスチェックソフトが奪うことを抑止できるので、ユーザアプリの実行性能を上げることが可能となり、ユーザプログラムのスループットを考慮したノートＰＣが実現可能である。また、上記各実施形態のキャッシュシステムは、また、ＨＰＣ（High Performance Computing）の領域に適用可能である。ＨＰＣ領域では、マルチプロセッサシステム上で、ＯＳがユーザプログラムをプロセッサ上のＣＰＵコアに振り分ける際に、十分にＣＰＵキャッシュメモリを確保できるプロセッサに割り当てることが可能となり、プログラムのスループットの向上を考えたシステムを構築することができる。
【００３８】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明のキャッシュシステム、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００３９】
【図１】本発明の第１実施形態のキャッシュシステムを示すブロック図。
【図２】キャッシュ特性テーブル群を示すブロック図。
【図３】キャッシュ特性テーブルを示すブロック図。
【図４】論理キャッシュテーブルを示すブロック図。
【図５】動作手順を示すフローチャート。
【符号の説明】
【００４０】
１０：キャッシュ特性テーブル群
２０〜２３：論理キャッシュテーブル
３０〜３３：マルチコアプロセッサ
１００：ＯＳ
１０１：キャッシュ特性取得部
１０２：論理キャッシュテーブル選択部
１０３：論理キャッシュ再構成部
１０４：論理キャッシュ設定部
２０１〜２０４：論理キャッシュ
３０１〜３０４：ＣＰＵコア
３０５：ＣＰＵキャッシュ機構
３０６：ＣＰＵキャッシュ最適化機構
【図１】
2009211649.tif 000003
【図２】
2009211649.tif 000004
【図３】
2009211649.tif 000005
【図４】
2009211649.tif 000006
【図５】
2009211649.tif 000007