(57)【要約】【課題】高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供する。【解決手段】主記憶装置１０１と、複数の仮想プロセッサ上で実行される処理を逐次実行する処理実行部１１１と、複数の仮想プロセッサ間で共用される１次キャッシュメモリ１１３と、仮想プロセッサのプロセッサ数に応じて分割された複数の記憶領域を有し、各仮想プロセッサに各記憶領域が対応付けられ、各記憶領域が、当該記憶領域に対応付けられた仮想プロセッサが利用するデータを記憶する２次キャッシュメモリ１０７と、仮想プロセッサごとのコンテキストを記憶しているコンテキストメモリ１０３と、仮想プロセッサのコンテキストの退避及び復帰を行う仮想プロセッサ制御部１０４と、１次キャッシュ制御部１１２と、２次キャッシュ制御部１０６とを備える。【選択図】図１
2011242896.tif 000002
【特許請求の範囲】
【請求項１】
データを保持する主記憶装置と、
仮想マルチプロセッサ機構を有する第１プロセッサ内に設けられ、複数の仮想プロセッサ上で実行される処理を逐次実行する第１処理実行部と、
前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶する第１共用キャッシュメモリと、
仮想プロセッサのプロセッサ数に応じて分割された複数の記憶領域を有し、各前記仮想プロセッサに各前記記憶領域が対応付けられ、各前記記憶領域が、当該記憶領域に対応付けられた仮想プロセッサが利用するデータを記憶する、前記第１共用キャッシュメモリよりも下位の記憶階層のキャッシュメモリである分割キャッシュメモリと、
仮想プロセッサごとに、当該仮想プロセッサに対応するコンテキストを記憶している第１コンテキストメモリと、
前記第１処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第１処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第１処理実行部で実行される仮想プロセッサのコンテキストを前記第１処理実行部に設定する仮想プロセッサ制御部と、
前記第１共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１共用キャッシュメモリに書き込むための制御を行う第１共用キャッシュ制御部と、
前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う分割キャッシュ制御部と
を備える計算機システム。
【請求項２】
さらに、
前記第１プロセッサとは異なる、仮想マルチプロセッサ機構を有する第２プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第２処理実行部と、
前記第２処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第２共用キャッシュメモリと、
前記第２共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第２共用キャッシュメモリに書き込むための制御を行う第２共用キャッシュ制御部と、
前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、
前記仮想プロセッサ制御部は、さらに、前記第２処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第２処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第２処理実行部で実行される仮想プロセッサのコンテキストを前記第２処理実行部に設定し、
前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部または前記第２処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
請求項１記載の計算機システム。
【請求項３】
前記第１プロセッサは、複数のハードウェアスレッドおよびマルチスレッディング機構を有し、
前記第１処理実行部は、ハードウェアによりスレッドの実行を実現し、
前記計算機システムは、さらに、
ハードウェアによりスレッドの実行を実現し、かつ前記第１プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第２処理実行部と、
前記第２処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第２共用キャッシュメモリと、
前記第２共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第２共用キャッシュメモリに書き込むための制御を行う第２共用キャッシュ制御部と、
前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、
前記仮想プロセッサ制御部は、さらに、前記第２処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第２処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第２処理実行部で実行される仮想プロセッサのコンテキストを前記第２処理実行部に設定し、
前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部または前記第２処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
請求項１記載の計算機システム。
【請求項４】
さらに、
ハードウェアによりスレッドの実行を実現し、前記第１プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第２プロセッサ内に設けられ、かつ、各々が前記複数の仮想プロセッサ上で実行される処理を逐次実行する第３処理実行部および第４処理実行部と、
前記第３処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第３共用キャッシュメモリと、
前記第３共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第３共用キャッシュメモリに書き込むための制御を行う第３共用キャッシュ制御部と、
前記第４処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第４共用キャッシュメモリと、
前記第４共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第４共用キャッシュメモリに書き込むための制御を行う第４共用キャッシュ制御部とを備え、
前記整合性維持部は、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータと前記第３共用キャッシュメモリに記憶されているデータと前記第４共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、
前記仮想プロセッサ制御部は、さらに、前記第３処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第３処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第３処理実行部で実行される仮想プロセッサのコンテキストを前記第３処理実行部に設定し、前記第４処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第４処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第４処理実行部で実行される仮想プロセッサのコンテキストを前記第４処理実行部に設定し、
前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第１処理実行部、前記第２処理実行部、前記第３処理実行部または前記第４処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
請求項３記載の計算機システム。
【請求項５】
さらに、
ハードウェアによりスレッドの実行を実現し、前記第１プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第２プロセッサ内に設けられ、かつ、各々が複数の仮想プロセッサ上で実行される処理を逐次実行する第３処理実行部および第４処理実行部と、
前記第３処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第３共用キャッシュメモリと、
前記第３共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第３共用キャッシュメモリに書き込むための制御を行う第３共用キャッシュ制御部と、
前記第４処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第４共用キャッシュメモリと、
前記第４共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第４共用キャッシュメモリに書き込むための制御を行う第４共用キャッシュ制御部と、
前記第３処理実行部および前記第４処理実行部で処理が実行される前記複数の仮想プロセッサの各々について、当該仮想プロセッサに対応するコンテキストを記憶している第２コンテキストメモリとを備え、
前記第１コンテキストメモリは、前記第１処理実行部および前記第２処理実行部で処理が実行される仮想プロセッサに対応するコンテキストを記憶しており、
前記整合性維持部は、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータと前記第３共用キャッシュメモリに記憶されているデータと前記第４共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、
前記仮想プロセッサ制御部は、さらに、前記第３処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第３処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第２コンテキストメモリに退避し、前記第２コンテキストメモリに記憶されている、次に前記第３処理実行部で実行される仮想プロセッサのコンテキストを前記第３処理実行部に設定し、前記第４処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第４処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第２コンテキストメモリに退避し、前記第２コンテキストメモリに記憶されている、次に前記第４処理実行部で実行される仮想プロセッサのコンテキストを前記第４処理実行部に設定し、
前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第１処理実行部、前記第２処理実行部、前記第３処理実行部または前記第４処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
請求項３記載の計算機システム。
【請求項６】
前記コンテキストは、前記分割キャッシュメモリが有する前記複数の記憶領域のうち、当該コンテキストに対応する仮想プロセッサが対応付けられた記憶領域を示すキャッシュ割当て情報を含み、
前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記コンテキストメモリに記憶されている複数の前記コンテキストを参照することにより得られる前記キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むための制御を行う
請求項１〜５のいずれか１項に記載の計算機システム。
【請求項７】
前記分割キャッシュメモリは、キャッシュ方式がｎウェイセットアソシアティブ方式のウェイ単位またはキャッシュライン単位で前記複数の記憶領域に分割されている
請求項１〜６のいずれか１項に記載の計算機システム。
【請求項８】
前記コンテキストは、仮想プロセッサが独占的に使用する分割キャッシュメモリ上のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す情報を記憶している
請求項７記載の計算機システム。
【請求項９】
前記共用キャッシュメモリは１次キャッシュメモリであり、
前記分割キャッシュメモリは２次キャッシュメモリである
請求項１〜８のいずれか１項に記載の計算機システム。
【請求項１０】
前記共用キャッシュメモリは２次キャッシュメモリであり、
前記分割キャッシュメモリは３次キャッシュメモリである
請求項１〜８のいずれか１項に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも２つ以上の仮想プロセッサが時分割で実行しうる仮想マルチプロセッサにおいて、多階層キャッシュメモリへのキャッシュアクセスを効率的に行うことができる計算機システムに関するものである。
【背景技術】
【０００２】
計算機システムにおいて、多種多様な機能が年々増加する中、システムは複雑化している。それに対し、ソフトウェアによるＰｏｓｉｘソフトウェアスレッド（例えば、非特許文献１、２参照）等のマルチソフトウェアスレッドプログラミングなどがあるが、ソフトウェアスレッド間の性能干渉が大きく、システム設計が困難である。最近では、多種多様な機能の独立した性能設計を容易化するために、マルチコア、ハードウェアマルチスレッド（例えば、非特許文献３参照）、または仮想マルチプロセッサ（例えば、特許文献１参照）といった技術が進んできている。
【０００３】
さらに、プロセッサコア、スレッド、または仮想プロセッサごとの性能設計をより容易化するために、処理性能に影響するキャッシュメモリについて、例えば特許文献２に示されているように、プロセッサで共有しているオンチップキャッシュメモリの複数のウェイをプロセッサごとのグループに分配して管理する機構が提案されている。
【０００４】
なお、ソフトウェアスレッドにおけるスレッド切り替え粒度は、切り替えのソフトウェア処理によってオーバーヘッドが発生するため、おおよそ数百マイクロ秒〜数秒という粗い間隔で行われるのが一般的である。マルチコア、ハードウェアマルチスレッドでは、複数のプログラムを同時に実行が可能である。仮想マルチプロセッサは、数百マイクロ秒未満の粒度でプロセッサ切り替えを行うのが一般的である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３８１３９３０号公報
【特許文献２】特許第３６２０４７３号公報
【非特許文献】
【０００６】
【非特許文献１】Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farrell著「Pthreadsプログラミング」オライリー・ジャパン、１９９８年５月１日
【非特許文献２】David R.Butenhof著「Posixスレッドプログラミング」アスキー、１９９８年１１月
【非特許文献３】“インテル（Ｒ）ハイパースレッディング・テクノロジー”、[online]、［２０１０年４月５日検索］、インターネット<URL:http://www.intel.co.jp/jp/technology/platform-technology/hyper-threading/index.htm>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、多種多様の機能増に対応するために、高速化による性能向上、および機能ごとの独立性能設計の容易化の両立が求められている。組み込み機器向けのプロセッサコアにおいても１ＧＨｚを超えるような高速化が進んできている。しかし、プロセッサコアに近いメモリ（上位階層のメモリ）の動作速度がプロセッサの高速化を行う上での障害となってきている。特許文献２に示されるようなメモリを分割する技術は、プロセッサコアに近い１次キャッシュメモリでは、ウェイ数増または分割制御回路の複雑化が高速化への障壁となる。また、プロセッサコア、ハードウェアマルチスレッド、仮想プロセッサが増えるにつれ、分割するウェイ数、キャッシュライン数等が比例的に増加し、大容量の１次キャッシュメモリが必要となる。そして、大容量のキャッシュメモリの搭載は高速化への障壁となる。
【０００８】
本発明は、上述の課題を解決するためになされたものであり、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のある局面に係る計算機システムは、データを保持する主記憶装置と、仮想マルチプロセッサ機構を有する第１プロセッサ内に設けられ、複数の仮想プロセッサ上で実行される処理を逐次実行する第１処理実行部と、前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶する第１共用キャッシュメモリと、仮想プロセッサのプロセッサ数に応じて分割された複数の記憶領域を有し、各前記仮想プロセッサに各前記記憶領域が対応付けられ、各前記記憶領域が、当該記憶領域に対応付けられた仮想プロセッサが利用するデータを記憶する、前記第１共用キャッシュメモリよりも下位の記憶階層のキャッシュメモリである分割キャッシュメモリと、仮想プロセッサごとに、当該仮想プロセッサに対応するコンテキストを記憶している第１コンテキストメモリと、前記第１処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第１処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第１処理実行部で実行される仮想プロセッサのコンテキストを前記第１処理実行部に設定する仮想プロセッサ制御部と、前記第１共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１共用キャッシュメモリに書き込むための制御を行う第１共用キャッシュ制御部と、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う分割キャッシュ制御部とを備える。
【００１０】
かかる構成により、第１処理実行部で処理が実行されている仮想プロセッサが要求したデータが第１共用キャッシュメモリに記憶されていない場合に、分割キャッシュメモリからデータが読み込まれる。分割キャッシュメモリへのデータアクセスは、主記憶装置へのデータアクセスよりも高速に行うことができる。このため、仮想プロセッサの切り替え時の切り替えロスを低減させることができる。そのため、仮想プロセッサごとの性能設計を容易化しつつ、かつ第１プロセッサに近い第１共用キャッシュメモリの回路の簡素化により第１プロセッサの高速化が容易になる。さらに、第１プロセッサに近い第１共用キャッシュメモリを共用することで、第１共用キャッシュメモリに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。したがって、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することができる。
【００１１】
また、上述の計算機システムは、さらに、前記第１プロセッサとは異なる、仮想マルチプロセッサ機構を有する第２プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第２処理実行部と、前記第２処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第２共用キャッシュメモリと、前記第２共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第２共用キャッシュメモリに書き込むための制御を行う第２共用キャッシュ制御部と、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、前記仮想プロセッサ制御部は、さらに、前記第２処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第２処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第２処理実行部で実行される仮想プロセッサのコンテキストを前記第２処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部または前記第２処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
【００１２】
かかる構成により、仮想マルチプロセッサが複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつ第１プロセッサおよび第２プロセッサにそれぞれ近い第１共用キャッシュメモリおよび第２共用キャッシュメモリの回路の簡素化により第１プロセッサおよび第２プロセッサの高速化が容易にできる。
【００１３】
また、前記第１プロセッサは、複数のハードウェアスレッドおよびマルチスレッディング機構を有し、前記第１処理実行部は、ハードウェアによりスレッドの実行を実現し、前記計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、かつ前記第１プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第２処理実行部と、前記第２処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第２共用キャッシュメモリと、記第２共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第２共用キャッシュメモリに書き込むための制御を行う第２共用キャッシュ制御部と、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、前記仮想プロセッサ制御部は、さらに、前記第２処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第２処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第２処理実行部で実行される仮想プロセッサのコンテキストを前記第２処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第１処理実行部または前記第２処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
【００１４】
かかる構成により、２つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つ第１プロセッサを備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつ第１プロセッサに近い第１共用キャッシュメモリの回路の簡素化により第１プロセッサの高速化が容易にできる。
【００１５】
また、上述の計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、前記第１プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第２プロセッサ内に設けられ、かつ、各々が前記複数の仮想プロセッサ上で実行される処理を逐次実行する第３処理実行部および第４処理実行部と、前記第３処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第３共用キャッシュメモリと、前記第３共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第３共用キャッシュメモリに書き込むための制御を行う第３共用キャッシュ制御部と、前記第４処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第４共用キャッシュメモリと、前記第４共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第４共用キャッシュメモリに書き込むための制御を行う第４共用キャッシュ制御部とを備え、前記整合性維持部は、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータと前記第３共用キャッシュメモリに記憶されているデータと前記第４共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、前記仮想プロセッサ制御部は、さらに、前記第３処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第３処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第３処理実行部で実行される仮想プロセッサのコンテキストを前記第３処理実行部に設定し、前記第４処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第４処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第１コンテキストメモリに退避し、前記第１コンテキストメモリに記憶されている、次に前記第４処理実行部で実行される仮想プロセッサのコンテキストを前記第４処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第１処理実行部、前記第２処理実行部、前記第３処理実行部または前記第４処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
【００１６】
かかる構成により、２つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つプロセッサを複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサに近い第１から第４の共用キャッシュメモリの回路の簡素化によりプロセッサの高速化が容易にできる。
【００１７】
また、上述の計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、前記第１プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第２プロセッサ内に設けられ、かつ、各々が複数の仮想プロセッサ上で実行される処理を逐次実行する第３処理実行部および第４処理実行部と、前記第３処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第３共用キャッシュメモリと、前記第３共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第３共用キャッシュメモリに書き込むための制御を行う第３共用キャッシュ制御部と、前記第４処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第４共用キャッシュメモリと、前記第４共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第４共用キャッシュメモリに書き込むための制御を行う第４共用キャッシュ制御部と、前記第３処理実行部および前記第４処理実行部で処理が実行される前記複数の仮想プロセッサの各々について、当該仮想プロセッサに対応するコンテキストを記憶している第２コンテキストメモリとを備え、前記第１コンテキストメモリは、前記第１処理実行部および前記第２処理実行部で処理が実行される仮想プロセッサに対応するコンテキストを記憶しており、前記整合性維持部は、前記第１共用キャッシュメモリに記憶されているデータと前記第２共用キャッシュメモリに記憶されているデータと前記第３共用キャッシュメモリに記憶されているデータと前記第４共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、前記仮想プロセッサ制御部は、さらに、前記第３処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第３処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第２コンテキストメモリに退避し、前記第２コンテキストメモリに記憶されている、次に前記第３処理実行部で実行される仮想プロセッサのコンテキストを前記第３処理実行部に設定し、前記第４処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第４処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第２コンテキストメモリに退避し、前記第２コンテキストメモリに記憶されている、次に前記第４処理実行部で実行される仮想プロセッサのコンテキストを前記第４処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第１処理実行部、前記第２処理実行部、前記第３処理実行部または前記第４処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
【００１８】
かかる構成により、２つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つプロセッサを複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサに近い第１から第４の共用キャッシュメモリの回路の簡素化によりプロセッサの高速化が容易にできる。
【００１９】
また、前記コンテキストは、前記分割キャッシュメモリが有する前記複数の記憶領域のうち、当該コンテキストに対応する仮想プロセッサが対応付けられた記憶領域を示すキャッシュ割当て情報を含み、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記コンテキストメモリに記憶されている複数の前記コンテキストを参照することにより得られる前記キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むための制御を行っても良い。
【００２０】
かかる構成により、分割キャッシュメモリがキャッシュミスをした場合に、キャッシュミスをしたデータを、キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むことができる。
【００２１】
また、前記分割キャッシュメモリは、キャッシュ方式がｎウェイセットアソシアティブ方式のウェイ単位またはキャッシュライン単位で前記複数の記憶領域に分割されていても良い。
【００２２】
かかる構成により、分割キャッシュメモリにおけるデータの入れ替え対象を容易に特定することができ、さらに仮想プロセッサごとの性能設計を容易化することができる。
【００２３】
また、前記コンテキストは、仮想プロセッサが独占的に使用する分割キャッシュメモリ上のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す情報を記憶していても良い。
【００２４】
かかる構成により、分割キャッシュメモリにおける記憶領域の分割、および割当てを容易に設定できる。
【００２５】
なお、本発明は、このような特徴的な処理部を備える計算機システムとして実現することができるだけでなく、計算機システムに含まれる特徴的な処理部が実行する処理をステップとする計算方法として実現することができる。また、計算方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）等のコンピュータ読取可能な不揮発性の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
【発明の効果】
【００２６】
本発明によると、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することができる。
【図面の簡単な説明】
【００２７】
【図１】実施の形態１における計算機システムのハードウェア構成を示すブロック図
【図２】実施の形態１におけるコンテキストの情報を示す図
【図３】実施の形態１における計算機システムのフローチャート
【図４】実施の形態２における計算機システムのハードウェア構成を示すブロック図
【図５】実施の形態２における計算機システムのフローチャート
【図６】実施の形態２における計算機システムにおけるプロセッサのフローチャート
【図７】実施の形態３における計算機システムのハードウェア構成を示すブロック図
【図８】実施の形態３における計算機システムのフローチャート
【図９】実施の形態４における計算機システムのハードウェア構成を示すブロック図
【図１０】実施の形態４における計算機システムのフローチャート
【図１１】実施の形態５における計算機システムのハードウェア構成を示すブロック図
【図１２】実施の形態５における計算機システムのフローチャート
【発明を実施するための形態】
【００２８】
以下、計算機システムの実施の形態について図面を参照して説明する。なお、実施の形態において同じ参照符号を付した構成要素は同様の構成を有し、同様の動作を行うので、再度の説明を省略する場合がある。
【００２９】
以降の実施の形態では、特許請求の範囲に示す共用キャッシュメモリを１次キャッシュメモリとし、分割キャッシュメモリを２次キャッシュメモリとする。
【００３０】
（実施の形態１）
図１は、実施の形態１に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム１００は、主記憶装置１０１と、プロセッサ１０２と、コンテキストメモリ１０３と、仮想プロセッサ制御部１０４と、２次キャッシュ制御部１０６と、２次キャッシュメモリ１０７とを備える。
【００３１】
コンテキストメモリ１０３は、複数の仮想プロセッサＶＰ（説明簡略化のため４個とし、以降個々の仮想プロセッサを仮想プロセッサＶＰ０、ＶＰ１、ＶＰ２、ＶＰ３と呼称する）のコンテキスト（仮想プロセッサＶＰ０のコンテキスト１０３ａ、仮想プロセッサＶＰ１のコンテキスト１０３ｂ、仮想プロセッサＶＰ２のコンテキスト１０３ｃ、仮想プロセッサＶＰ３のコンテキスト１０３ｄ）を記憶している。
【００３２】
なお、図１は、本発明の一実施の形態を示したものであり、本発明において、コンテキストメモリが４個に限定されるものでない。また、２次キャッシュメモリ１０７は、ｎウェイセットアソシアティブ方式（ｎ＝４）の構成を有するものとする。なお、本発明においてウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【００３３】
主記憶装置１０１は、システムバス１０５および２次キャッシュメモリ１０７を介してプロセッサ１０２と接続されており、プロセッサ１０２の要求に従い主記憶装置１０１内のデータを読み出し、２次キャッシュメモリ１０７へ転送する。プロセッサ１０２の要求に従い、主記憶装置１０１への書き込みも同様に行われる。
【００３４】
プロセッサ１０２は、処理実行部１１１と、１次キャッシュ制御部１１２と、１次キャッシュメモリ１１３とを備える。なお、１次キャッシュメモリ１１３は仮想プロセッサ間で共用される。
【００３５】
プロセッサ１０２は１次キャッシュメモリ１１３および２次キャッシュメモリ１０７のいずれか、または両方を介さずに主記憶装置１０１にアクセス可能であるが、本発明の主眼ではないので図１ではプロセッサ１０２と主記憶装置１０１との接続線の記載を省略する。
【００３６】
コンテキストメモリ１０３には、上述したように仮想プロセッサＶＰを実現するのに必要な情報が保持されている。図２は、１つのコンテキストに格納されている情報を示している。コンテキストは、処理実行部１１１が備えるレジスタセットの値２０１と、プログラムの実行位置および動作設定などを示す制御情報２０２と、２次キャッシュメモリ１０７のキャッシュ割当て情報２０３とを含む。コンテキストは仮想プロセッサの数だけコンテキストメモリ１０３に格納されている。ここで、キャッシュ割当て情報２０３とは、後述する２次キャッシュメモリ１０７のウェイと仮想プロセッサＶＰとの対応関係を示す情報である。
【００３７】
仮想プロセッサ制御部１０４は、仮想プロセッサＶＰの切り替えを行う。即ち、仮想プロセッサ制御部１０４は、まず処理実行部１１１で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ１０３内の該当する格納先へ書き込む。次に仮想プロセッサ制御部１０４は、次に実行すべき仮想プロセッサを選択し、コンテキストメモリ１０３に記憶されている、選択された仮想プロセッサのコンテキスト（コンテキスト１０３ａ、１０３ｂ、１０３ｃ、１０３ｄのいずれか）を処理実行部１１１に設定する。この一連の動作により、仮想プロセッサ制御部１０４は、複数の仮想プロセッサを実現する。なお、仮想プロセッサＶＰは、例えばラウンドロビン方式に従って選択されてもよいし、予め定められた仮想プロセッサＶＰの優先度に従って選択されてもよく、本発明では仮想プロセッサの選択方法について限定しない。
【００３８】
処理実行部１１１は、仮想プロセッサ制御部１０４から実行対象となった仮想プロセッサＶＰのコンテキストが設定されると、プログラムを逐次実行する。これにより、仮想プロセッサＶＰが処理を実行する。また、仮想プロセッサＶＰのコンテキスト内にあるキャッシュ割当て情報２０３を、２次キャッシュ制御部１０６に対して通知する。
【００３９】
１次キャッシュ制御部１１２は、処理実行部１１１からの要求アドレスのデータが１次キャッシュメモリ１１３上のキャッシュラインに存在するか否かを調べる。もし、１次キャッシュメモリ１１３上に要求アドレスのデータが存在しない場合は、キャッシュミスとなり、１次キャッシュ制御部１１２は、２次キャッシュ制御部１０６に対して要求アドレスを通知する。
【００４０】
１次キャッシュメモリ１１３は、一般的にプロセッサに用いられるキャッシュメモリである。このキャッシュメモリは、複数の仮想プロセッサ間で共用される。
【００４１】
２次キャッシュ制御部１０６は、処理実行部１１１からキャッシュ割当て情報２０３を通知される。そして、１次キャッシュ制御部１１２から要求アドレスを受信した場合、２次キャッシュ制御部１０６は、受信した要求アドレスのデータが２次キャッシュメモリ１０７のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在する場合には、２次キャッシュ制御部１０６は、１次キャッシュ制御部１１２に対して要求アドレスのデータを出力する。１次キャッシュ制御部１１２は、１次キャッシュメモリ１１３のキャッシュラインに対象アドレスをキャッシングする。キャッシュミスした場合は、２次キャッシュ制御部１０６は、キャッシュ割当て情報２０３を参照し、２次キャッシュメモリ１０７の対象のウェイに要求アドレスのデータをキャッシングする。
【００４２】
２次キャッシュメモリ１０７は、一般的にプロセッサに用いられるキャッシュメモリである。２次キャッシュメモリ１０７は、４ウェイセットアソシアティブ方式とする。２次キャッシュメモリ１０７は、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサＶＰが指定される。ここでは、ウェイ０（ウェイ１０７ａ）は仮想プロセッサＶＰ０（コンテキスト１０３ａ）に、ウェイ１（ウェイ１０７ｂ）は仮想プロセッサＶＰ１（コンテキスト１０３ｂ）に、ウェイ２（ウェイ１０７ｃ）は仮想プロセッサＶＰ２（コンテキスト１０３ｃ）に、ウェイ３（ウェイ１０７ｄ）は仮想プロセッサＶＰ３（コンテキスト１０３ｄ）に割当てられる。上述のような仮想プロセッサＶＰごとにどのウェイを割当てているのかを示す情報がキャッシュ割当て情報２０３として、コンテキストに含まれている。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、２次キャッシュメモリ１０７内のキャッシュラインごとに仮想プロセッサを割り当て（例えば、参考文献１参照）、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報２０３としてもよい。ここで、キャッシュ割当て情報２０３は、仮想プロセッサごとに、仮想プロセッサに割り当てられる２次キャッシュメモリ１０７のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す。これらの情報は、ソフトウェアから指定できるようにすることにより、より柔軟に計算機システム１００の制御が可能となることはいうまでもない。
【００４３】
［参考文献１］
パターソン、ヘネシー  コンピュータの構成と設計（下）第２版（日経ＢＰ社）  第７章  ７．２参照
【００４４】
次に計算機システム１００の動作について、図３のフローチャートを用いて説明する。説明の簡単化ため、仮想プロセッサＶＰの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサＶＰの実行順はＶＰ０→ＶＰ１→ＶＰ２→ＶＰ３→ＶＰ０（以降繰り返し）とする。現在、仮想プロセッサＶＰ０（コンテキスト１０３ａ）が実行中であるとする。
【００４５】
（ステップＳ３０１）まず、仮想プロセッサ制御部１０４は、プロセッサ１０２から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がない場合は、ステップＳ３０４へ遷移し、切り替え要求がある場合は、ステップＳ３０２へ遷移する。
【００４６】
（ステップＳ３０２）仮想プロセッサ制御部１０４は、次に処理を実行する仮想プロセッサを選択する。ここでは仮想プロセッサＶＰ１（コンテキスト１０３ｂ）が選択されたとする。
【００４７】
（ステップＳ３０３）仮想プロセッサ制御部１０４は、仮想プロセッサの入れ替えを行う。上述の場合には、処理実行部１１１は仮想プロセッサＶＰ０（コンテキスト１０３ａ）の実行を停止する。そして、仮想プロセッサ制御部１０４が仮想プロセッサＶＰ０のコンテキストをコンテキストメモリ１０３のコンテキスト１０３ａへ退避し、次に処理を実行する仮想プロセッサＶＰ１のコンテキスト（コンテキスト１０３ｂ）を処理実行部１１１へ設定する。
【００４８】
（ステップＳ３０４）ラウンドロビン方式で許可された時間の間、処理実行部１１１は、処理実行部１１１に設定された仮想プロセッサＶＰのプログラムを実行していく。これにより、仮想プロセッサＶＰがプログラムを実行する。
【００４９】
（ステップＳ３０５）仮想プロセッサＶＰのプログラム実行中に、１次キャッシュ制御部１１２は、処理実行部１１１からの要求アドレスのデータが１次キャッシュメモリ１１３のキャッシュラインに存在しているか否かを判定する。存在していない場合は、１次キャッシュ制御部１１２は、キャッシュミスと判断し、２次キャッシュ制御部１０６に対して要求アドレスを通知し、ステップＳ３０６に遷移する。存在している場合は、ステップＳ３０１に遷移する。
【００５０】
（ステップＳ３０６）２次キャッシュ制御部１０６は、１次キャッシュ制御部１１２から通知された要求アドレスのデータが２次キャッシュメモリ１０７のキャッシュラインに存在するか否かを判定する。この際、現在実行中の仮想プロセッサＶＰ１に割り当てられたウェイ１（ウェイ１０７ｂ）以外に対しても、要求アドレスのデータが存在するか否かの判定を行う。要求アドレスのデータが２次キャッシュメモリ１０７のキャッシュラインに存在する場合は、ステップＳ３０７に遷移し、存在しない場合はステップＳ３０８に遷移する。
【００５１】
（ステップＳ３０７）２次キャッシュ制御部１０６は、１次キャッシュ制御部１１２を介して、２次キャッシュメモリ１０７上の該当キャッシュラインのデータを１次キャッシュメモリ１１３のキャッシュラインに転送する。
【００５２】
（ステップＳ３０８）２次キャッシュ制御部１０６は、キャッシュ割当て情報２０３を参照し、仮想プロセッサＶＰ１に割当てられた２次キャッシュメモリ１０７上のウェイ１（ウェイ１０７ｂ）に対して、主記憶装置１０１から要求アドレスのデータを転送する。また、２次キャッシュ制御部１０６は、１次キャッシュ制御部１１２を介して、転送したデータを１次キャッシュメモリ１１３へも同時に転送する。
【００５３】
ラウンドロビン方式で許可された時間で仮想プロセッサＶＰのコンテキストを切り替えつつ、ステップＳ３０１〜ステップＳ３０８を繰り返すことにより、仮想プロセッサＶＰ動作環境を実現する。
【００５４】
なお、１次キャッシュメモリ１１３を仮想プロセッサ間で共用することで、仮想プロセッサの切り替え周期ごとにキャッシュ情報を更新しなければならずタイムロスが発生する。しかし、２次キャッシュメモリ１０７から１次キャッシュメモリ１１３へのデータ転送に要する処理サイクルは極めて小さい。このため、このデータ転送がシステム性能に与える影響は非常に小さく抑えられる。
【００５５】
例えば、１次キャッシュメモリ１１３の記憶容量を１６Ｋｂｙｔｅとし、１次キャッシュメモリ１１３と２次キャッシュメモリ１０７との間で１キャッシュライン（１２８ｂｙｔｅ）のデータ転送に２０ｃｙｃｌｅ要するものとする。また、プロセッサ１０２のプロセッサコアの周波数クロックが１ＧＨｚであり、仮想プロセッサの切り替え周期が１００μｓｅｃであるとする。このとき、１次キャッシュメモリ１１３に記憶されている全てのデータのフェッチに要する処理サイクルは、１６×１０２４／１２８×２０＝２５６０ｃｙｃｌｅとなる。このため、仮想プロセッサの切り替え周期に対する切り替えロスの割合は、２５６０／（１００μｓｅｃ×１ＧＨｚ）×１００＝２．５６％でしかない。
【００５６】
それに対し、２次キャッシュメモリ１０７を、仮想プロセッサＶＰごとに分割しない場合には、主記憶装置１０１へのアクセスが低速であるため、システム性能が大幅に低下する。例えば、２次キャッシュメモリ１０７と主記憶装置１０１との間で１キャッシュライン（１２８ｂｙｔｅ）のデータ転送に２００ｃｙｃｌｅ要するものとする。このとき、上記と同様の計算を行うと、仮想プロセッサの切り替え周期の２５．６％が切り替えロスとなり、システム性能が大幅に低下する。
【００５７】
また、ソフトウェアスレッドにおける１００μｓｅｃの粒度での切り替えは、ソフトウェアスレッド切り替え処理で１００μｓｅｃの大半を消費してしまうので、そもそも困難である。
【００５８】
以上説明したように、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域（ウェイ）を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。なお、本明細書中においてプロセッサコアに近いキャッシュメモリとは、上位の階層のキャッシュメモリを示し、プロセッサコアから遠いキャッシュメモリとは下位の階層のキャッシュメモリを示す。例えば、１次キャッシュメモリと２次キャッシュメモリとを比較した場合には、前者がプロセッサコアに近い、つまり上位の階層のキャッシュメモリであり、後者がプロセッサコアから遠い、つまり下位の階層のキャッシュメモリである。
【００５９】
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、２次キャッシュメモリを共用化し、３次キャッシュメモリを分割する構成であってもよい。
【００６０】
なお、本実施の形態によれば、２次キャッシュメモリ１０７のウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【００６１】
なお、本実施の形態によれば、２次キャッシュメモリ１０７の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
【００６２】
なお、本実施の形態によれば、コンテキストメモリ１０３に保持する仮想プロセッサ数に制限はない。
【００６３】
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
【００６４】
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、ＬＲＵ（Least Recently Used）方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
【００６５】
なお、本実施の形態によれば、キャッシュ割当て情報２０３の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報２０３の設定方法について制限するものではない。
【００６６】
（実施の形態２）
以下、本発明の実施の形態２に係る計算機システムについて、図面を参照しながら説明する。実施の形態１に係る計算機システムは１個のプロセッサを備えていたが、実施の形態２に係る計算機システムは２個のプロセッサを備えている。
【００６７】
図４は、実施の形態２に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム４００は、仮想プロセッサ制御部４０２と、２個のプロセッサ４０３および４０４と、コンテキストメモリ１０３と、整合性維持部４０５と、２次キャッシュ制御部４０６と、２次キャッシュメモリ４０７と、主記憶装置１０１とを備える。なお、図４は、本発明の一実施の形態を示したものであり、本発明において、プロセッサが３個以上あってもよく、またコンテキストメモリが４個に限定されるものでない。以降の説明において、図１と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【００６８】
プロセッサ４０３は、処理実行部４１１と、１次キャッシュ制御部４１２と、１次キャッシュメモリ４１３とを含む。プロセッサ４０４は、処理実行部４２１と、１次キャッシュ制御部４２２と、１次キャッシュメモリ４２３とを含む。処理実行部４１１および４２１の各々は、図１に示した処理実行部１１１と同じ機能を有する。１次キャッシュ制御部４１２および４２２の各々は、図１に示した１次キャッシュ制御部１１２と同じ機能を有する。１次キャッシュメモリ４１３および４２３の各々は、図１に示した１次キャッシュメモリ１１３と同じ機能を有する。このため、これらの詳細な説明は省略する。
【００６９】
プロセッサ４０３または４０４は、１次キャッシュメモリ４１３または４２３および２次キャッシュメモリ４０７のいずれか、または両方を介さずに主記憶装置１０１にアクセス可能であるが、本発明の主眼ではないので図４ではプロセッサ４０３または４０４と主記憶装置１０１との接続線の記載を省略する。
【００７０】
処理実行部４１１または４２１は、仮想プロセッサ制御部４０２から実行対象となった仮想プロセッサＶＰのコンテキストが設定されると、実行対象の仮想プロセッサＶＰのプログラムを逐次実行する。これにより、仮想プロセッサＶＰが処理を実行する。また、処理実行部４１１または４２１は、仮想プロセッサＶＰのコンテキスト内にあるキャッシュ割当て情報２０３を、通知元のプロセッサがプロセッサ４０３であるのかプロセッサ４０４であるのかを識別するためのプロセッサＩＤとともに、２次キャッシュ制御部４０６に対して通知する。
【００７１】
仮想プロセッサ制御部４０２は、各プロセッサ４０３、４０４の仮想プロセッサＶＰの切り替えを行う。まず、仮想プロセッサ制御部４０２は、切り替えを行う対象プロセッサの処理実行部４１１（または４２１）で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ１０３内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部４０２は、次に実行すべき仮想プロセッサＶＰを選択する。そして、仮想プロセッサ制御部４０２は、コンテキストメモリ１０３に記憶されている、選択された仮想プロセッサＶＰのコンテキストを切り替えが生じた処理実行部４１１（または４２１）に設定する。この一連の動作により、仮想プロセッサ制御部４０２は、複数の仮想プロセッサＶＰを実現する。なお、仮想プロセッサＶＰは、例えばラウンドロビン方式に従って選択されてもよいし、予め定められた仮想プロセッサＶＰの優先度に従って選択されてもよい。
【００７２】
整合性維持部４０５は、１次キャッシュメモリ４１３に記憶されているデータと１次キャッシュメモリ４２３に記憶されているデータとの整合性を維持するための処理を行なう。つまり、整合性維持部４０５は、プロセッサ間で共有されるデータの一貫性を、１次キャッシュメモリ間で不整合を起こさないようにスヌープ等の既知の技術を用いて保証する。
【００７３】
２次キャッシュ制御部４０６は、処理実行部４１１（または４２１）からキャッシュ割当て情報２０３とプロセッサＩＤを通知してもらう。そして、１次キャッシュ制御部４１２（または４２２）から要求アドレスを受信した場合、２次キャッシュ制御部４０６は、受信した要求アドレスのデータが２次キャッシュメモリ４０７のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在しなかった場合は、２次キャッシュ制御部４０６は、キャッシュ割当て情報２０３を参照し、２次キャッシュメモリ４０７の対象のウェイに要求アドレスのデータをキャッシングする。要求アドレスのデータが存在する場合は、２次キャッシュ制御部４０６は、プロセッサＩＤを判別し、プロセッサＩＤで指定されるプロセッサの１次キャッシュ制御部４１２（または４２２）に要求アドレスのデータを出力する。１次キャッシュ制御部４１２（または４２２）は、１次キャッシュメモリ４１３（または４２３）のキャッシュラインに、受け取った要求アドレスのデータをキャッシングする。
【００７４】
２次キャッシュメモリ４０７は、そのキャッシュ方式が４ウェイセットアソシアティブ方式であり、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサＶＰが指定される。ここでは、ウェイ０（ウェイ４０７ａ）は仮想プロセッサＶＰ０（コンテキスト１０３ａ）に、ウェイ１（ウェイ４０７ｂ）は仮想プロセッサＶＰ１（コンテキスト１０３ｂ）に、ウェイ２（ウェイ４０７ｃ）は仮想プロセッサＶＰ２（コンテキスト１０３ｃ）に、ウェイ３（ウェイ４０７ｄ）は仮想プロセッサＶＰ３（コンテキスト１０３ｄ）に割当てられる。プロセッサ４０３（または４０４）からデータの読み込みまたは書き込みの要求を受信した場合は、２次キャッシュメモリ４０７は、要求を受信した順序に従ってデータの読み込みまたは書き込み処理を行う。また、プロセッサ４０３および４０４から同時に要求を受信した場合は、２次キャッシュメモリ４０７は、プロセッサ４０３の要求を優先して処理する。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、２次キャッシュメモリ４０７内のキャッシュラインごとに仮想プロセッサを割り当て（例えば、参考文献１参照）、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報２０３としてもよい。ここで、キャッシュ割当て情報２０３は、仮想プロセッサごとに、割り当てられる２次キャッシュメモリ４０７のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数をソフトウェアから指定できるようにすることにより、より柔軟に制御が可能となることはいうまでもない。なお、本発明においてウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【００７５】
次に計算機システム４００の動作について、図５および図６のフローチャートを用いて説明する。図５では起動時の動作について説明し、図６では仮想プロセッサの切り替わり動作について説明する。説明の簡単化のため、仮想プロセッサＶＰの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサＶＰの実行順はＶＰ０→ＶＰ１→ＶＰ２→ＶＰ３→ＶＰ０（以降繰り返し）とする。
【００７６】
図５を用いて、計算機システム４００が起動時の動作について説明する。
【００７７】
（ステップＳ５０１）仮想プロセッサ制御部４０２は、仮想プロセッサＶＰの選択方法に従って、仮想プロセッサを選択する。ここでは、プロセッサ４０３に対して仮想プロセッサＶＰ０（コンテキスト１０３ａ）が選択され、プロセッサ４０４に対して仮想プロセッサＶＰ１（コンテキスト１０３ｂ）が選択されたものとする。
【００７８】
（ステップＳ５０２）次に、仮想プロセッサ制御部４０２は、プロセッサ４０３の処理実行部４１１に、仮想プロセッサＶＰ０のコンテキスト１０３ａを設定する。また、仮想プロセッサ制御部４０２は、プロセッサ４０４の処理実行部４２１に、仮想プロセッサＶＰ１のコンテキスト１０３ｂを設定する。ここで、プロセッサ４０３、４０４の設定順序に制限はない。
【００７９】
（ステップＳ５０３、Ｓ５０４）各処理実行部にそれぞれのコンテキストが設定され、ラウンドロビン方式で許可された時間の間、処理実行部４１１（または４２１）は、仮想プロセッサＶＰのプログラムを実行する。許可された時間を消費した場合は、処理実行部４１１（または４２１）は実行を停止し、切り替え要求を仮想プロセッサ制御部４０２に対して発行する。
【００８０】
次に、上記状態から仮想プロセッサＶＰが切り替わる際のフローについて図６を用いて説明する。ここでは、処理実行部４１１で実行されていた仮想プロセッサＶＰ０のプログラムが、許可された時間を消費した場合を例に説明する。
【００８１】
（ステップＳ６０１）仮想プロセッサ制御部４０２は、プロセッサ４０３から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がある場合は、ステップＳ６２０へ遷移し、切り替え要求がない場合は、ステップＳ６０２に遷移する。
【００８２】
（ステップＳ６２０）仮想プロセッサ制御部４０２は、次に実行する仮想プロセッサＶＰを選択する。ここでは、仮想プロセッサＶＰ２（コンテキスト１０３ｃ）が選択されたとする。なお、順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったプロセッサの順に従って、次に実行する仮想プロセッサが選択される。また、プロセッサ４０３およびプロセッサ４０４から同時に仮想プロセッサの切り替え要求があった場合は、プロセッサ４０３を優先する。つまり、仮想プロセッサ制御部４０２は、プロセッサ４０３で次に実行する仮想プロセッサを選択した後に、プロセッサ４０４で次に実行する仮想プロセッサを選択する。
【００８３】
（ステップＳ６２１）仮想プロセッサ制御部４０２は、仮想プロセッサＶＰの入れ替えを行う。上述の場合には、処理実行部４１１は仮想プロセッサＶＰ０の実行を停止する。そして、仮想プロセッサ制御部４０２が仮想プロセッサＶＰ０のコンテキストをコンテキストメモリ１０３のコンテキスト１０３ａへ退避し、選択した仮想プロセッサＶＰ２のコンテキスト１０３ｃを処理実行部４１１へ設定する。
【００８４】
（ステップＳ６０２）プログラム実行処理（ステップＳ６０２）では、図３のステップＳ３０４〜Ｓ３０８と同じ処理が実行される。ただし、１次キャッシュ制御部４１２からの要求アドレスのデータが２次キャッシュメモリ４０７のキャッシュラインに存在しない場合は、２次キャッシュ制御部４０６は、キャッシュ割当て情報２０３を参照し、ウェイ０（ウェイ４０７ａ）に対して、主記憶装置１０１からデータを転送する。また、２次キャッシュ制御部４０６は、転送したデータを、プロセスＩＤを参照し対象の１次キャッシュメモリ４１３へも同時に転送する。なお、ウェイ０にデータを転送するのは、仮想プロセッサＶＰ０が実行中であるからであり、他の仮想プロセッサＶＰが実行中の場合には、他のウェイにデータが転送されるのは言うまでもない。
【００８５】
プロセッサ４０４においては、ステップＳ６１１、Ｓ６１２、Ｓ６２０およびＳ６２１の処理が実行される。ステップＳ６１１およびＳ６１２の処理は、処理が実行されるプロセッサが異なるだけであり、ステップＳ６０１およびＳ６０２の処理とそれぞれ同じである。
【００８６】
以上説明したように、本実施の形態によれば、プロセッサが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域（ウェイ）を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
【００８７】
なお、本実施の形態によれば、計算機システム４００に備えるプロセッサ数を制限するものではない。
【００８８】
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、２次キャッシュメモリを共用化し、３次キャッシュメモリを分割する構成であってもよい。
【００８９】
なお、本実施の形態によれば、２次キャッシュメモリ４０７のウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【００９０】
なお、本実施の形態によれば、２次キャッシュメモリ４０７の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
【００９１】
なお、本実施の形態によれば、コンテキストメモリ１０３に保持する仮想プロセッサ数に制限はない。
【００９２】
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
【００９３】
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、ＬＲＵ（Least Recently Used）方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
【００９４】
なお、本実施の形態によれば、キャッシュ割当て情報２０３の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報２０３の設定方法について制限するものではない。
【００９５】
（実施の形態３）
以下、本発明の実施の形態３に係る計算機システムについて、図面を参照しながら説明する。実施の形態１に係る計算機システムはプロセッサ内に１つの処理実行部を備えていたが、実施の形態３に係る計算機システムはプロセッサ内に複数のスレッド実行部を備え、プロセッサが複数のハードウェアスレッドおよびマルチスレッディング機構を有する。
【００９６】
図７は、実施の形態３に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム７００は、プロセッサ７０３と、コンテキストメモリ１０３と、仮想プロセッサ制御部７０２と、整合性維持部４０５と、２次キャッシュ制御部４０６と、２次キャッシュメモリ４０７と、主記憶装置１０１とを備える。
【００９７】
プロセッサ７０３は、ハードウェアスレッドを有するマルチスレッディング機構を備えている。ここで、説明の簡略化のためハードウェアスレッドの個数は２個とし、以降、個々のハードウェアスレッドをスレッド実行部７１１ａ、スレッド実行部７１１ｂと呼称する。
【００９８】
なお、図７は本発明の一実施の形態を示したものであり、本発明において、ハードウェアスレッドが２個に限定されるものでない。以降の説明において、図１または図４と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【００９９】
プロセッサ７０３は、スレッド実行部７１１ａと、１次キャッシュ制御部７１２ａと、１次キャッシュメモリ７１３ａと、スレッド実行部７１１ｂと、１次キャッシュ制御部７１２ｂと、１次キャッシュメモリ７１３ｂとを備える。なお、１次キャッシュメモリはハードウェアスレッドごとに備えられ、該ハードウェアスレッド上で動作する仮想プロセッサ間で共用される。
【０１００】
プロセッサ７０３は１次キャッシュメモリ７１３ａ（または７１３ｂ）および２次キャッシュメモリ４０７のいずれか、または両方を介さずに主記憶装置１０１にアクセス可能であるが、本発明の主眼ではないので図７ではプロセッサ７０３と主記憶装置１０１との接続線の記載を省略する。
【０１０１】
スレッド実行部７１１ａまたは７１１ｂは、仮想プロセッサ制御部７０２から実行対象となった仮想プロセッサＶＰのコンテキストが設定されると、実行対象の仮想プロセッサＶＰのプログラムを逐次実行する。また、スレッド実行部７１１ａまたは７１１ｂは、仮想プロセッサＶＰのコンテキスト内にあるキャッシュ割当て情報２０３と、通知元のハードウェアスレッドがスレッド実行部７１１ａであるのかスレッド実行部７１１ｂであるのかを識別するためのスレッドＩＤとともに、２次キャッシュ制御部４０６へ通知する。
【０１０２】
１次キャッシュ制御部７１２ａは、スレッド実行部７１１ａからの要求アドレスのデータが１次キャッシュメモリ７１３ａ上のキャッシュラインに存在するか否かを調べ、１次キャッシュ制御部７１２ｂは、スレッド実行部７１１ｂからの要求アドレスのデータが１次キャッシュメモリ７１３ｂ上のキャッシュラインに存在するか調べる。もし、各スレッド実行部で使用する１次キャッシュメモリ上に要求アドレスのデータが存在しない場合は、キャッシュミスとなり、１次キャッシュ制御部７１２ａまたは７１２ｂは、２次キャッシュ制御部４０６に対して要求アドレスを通知する。
【０１０３】
１次キャッシュメモリ７１３ａまたは７１３ｂは、一般的にプロセッサに用いられるキャッシュメモリである。各キャッシュメモリは、各スレッド上で動作する複数の仮想プロセッサ間で共用される。
【０１０４】
仮想プロセッサ制御部７０２は、各スレッド実行部上で処理が実行される仮想プロセッサの切り替えを行う。まず、仮想プロセッサ制御部７０２は、切り替えを行う対象のスレッド実行部で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ１０３内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部７０２は、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部７０２は、コンテキストメモリ１０３に記憶されている、選択された仮想プロセッサのコンテキストを切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部７０２は、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、例えばラウンドロビン方式に従って選択してもよいし、予め定められた仮想プロセッサの優先度に従って選択してもよい。または、仮想プロセッサのコンテキストごとに、仮想プロセッサを動作させるスレッド実行部の指定情報をコンテキストにさらに追加し、仮想プロセッサ制御部７０２がその指定情報を参照することで、動作させる仮想プロセッサを選択する方法も考えられる。
【０１０５】
次に計算機システム７００における仮想プロセッサの切り替わりの動作について、図８のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサＶＰの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサＶＰの実行順はＶＰ０→ＶＰ１→ＶＰ２→ＶＰ３→ＶＰ０（以降繰り返し）とし、現在、スレッド実行部７１１ａに仮想プロセッサＶＰ０、スレッド実行部７１１ｂに仮想プロセッサＶＰ１が設定されているものとする。そして、仮想プロセッサＶＰ０が許可された時間を消費し、切り替わる際の動作として説明する。
【０１０６】
（ステップＳ８０１）まず、仮想プロセッサ制御部７０２は、スレッド実行部７１１ａおよびスレッド実行部７１１ｂから仮想プロセッサＶＰの切り替え要求があるか否かを判定する。切り替え要求がある場合には、ステップＳ８２０に遷移し、切り替え要求がない場合には、ステップＳ８０２に遷移する。
【０１０７】
（ステップＳ８２０）仮想プロセッサ制御部７０２は、次に実行する仮想プロセッサを選択する。ここでは、仮想プロセッサＶＰ２（コンテキスト１０３ｃ）が選択されたものとする。なお、各スレッド実行部から順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったスレッド実行部の順に従って、次に実行する仮想プロセッサを選択する。また、スレッド実行部７１１ａおよび７１１ｂから同時に仮想プロセッサの切り替え要求があった場合は、スレッド実行部７１１ａを優先する。つまり、仮想プロセッサ制御部７０２は、スレッド実行部７１１ａで次に実行する仮想プロセッサを選択した後、スレッド実行部７１１ｂで次に実行する仮想プロセッサを選択する。
【０１０８】
（ステップＳ８２１）仮想プロセッサ制御部７０２は、仮想プロセッサＶＰの入れ替えを行う。上述の場合には、スレッド実行部７１１ａは仮想プロセッサＶＰ０の実行を停止する。そして、仮想プロセッサ制御部７０２が仮想プロセッサＶＰ０のコンテキストをコンテキストメモリ１０３のコンテキスト１０３ａへ退避し、選択した仮想プロセッサＶＰ２のコンテキスト１０３ｃをスレッド実行部７１１ａへ設定する。
【０１０９】
（ステップＳ８０２）スレッド実行部７１１ａは、設定された仮想プロセッサＶＰのコンテキストに従ってプログラムを逐次実行する。ここでは、スレッド実行部７１１ａは、仮想プロセッサＶＰ２のコンテキストに従ってプログラムを実行する。
【０１１０】
（ステップＳ８０３）仮想プロセッサＶＰのプログラム実行中に、１次キャッシュ制御部７１２ａは、スレッド実行部７１１ａからの要求アドレスのデータが１次キャッシュメモリ７１３ａのキャッシュラインに存在しているか否かを判定する。存在していない場合は、１次キャッシュ制御部７１２ａは、キャッシュミスと判断し、２次キャッシュ制御部４０６に対して要求アドレスを通知し、ステップＳ８０４に遷移する。存在している場合には、ステップＳ８０１に遷移する。
【０１１１】
（ステップＳ８０４）２次キャッシュ制御部４０６は、１次キャッシュ制御部７１２ａから通知された要求アドレスのデータが２次キャッシュメモリ４０７上の該当キャッシュラインに存在するか否かを判定する。この際、要求元のスレッド実行部７１１ａで動作中の仮想プロセッサＶＰに割り当てられたウェイ以外のウェイのキャッシュラインに対しても、要求アドレスのデータが存在するか否かを判定する。要求アドレスのデータが２次キャッシュメモリ４０７のキャッシュライン上に存在する場合には、ステップＳ８０５に遷移し、存在しない場合は、ステップＳ８０６に遷移する。
【０１１２】
（ステップＳ８０５）２次キャッシュ制御部４０６は、１次キャッシュ制御部７１２ａを介して、２次キャッシュメモリ４０７上の該当キャッシュラインのデータを１次キャッシュメモリ７１３ａのキャッシュラインに転送する。
【０１１３】
（ステップＳ８０６）２次キャッシュ制御部４０６は、キャッシュ割当て情報２０３を参照する。ここでは、スレッド実行部７１１ａで仮想プロセッサＶＰ２が実行中にキャッシュミスしたとする。この場合は、２次キャッシュ制御部４０６は、仮想プロセッサＶＰ２に割当てられた２次キャッシュメモリ４０７上のウェイ２（４０７ｃ）に対して、主記憶装置１０１からデータを転送する。また、転送したデータを１次キャッシュメモリ７１３ａへも同時に転送する。
【０１１４】
スレッド実行部７１１ｂにおいては、ステップＳ８１１〜Ｓ８１６、Ｓ８２０およびＳ８２１の処理が実行される。なお、ステップＳ８１１〜Ｓ８１６の処理については、処理が実行されるスレッド実行部が異なるだけであり、ステップＳ８０１〜Ｓ８０６の処理とそれぞれ同じである。
【０１１５】
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサにおいて、ハードウェアスレッドが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域（ウェイ）を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
【０１１６】
なお、本実施の形態によれば、計算機システム７００に備えるハードウェアスレッド数を制限するものではない。
【０１１７】
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、２次キャッシュメモリを共用化し、３次キャッシュメモリを分割する構成であってもよい。
【０１１８】
なお、本実施の形態によれば、２次キャッシュメモリ４０７のウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【０１１９】
なお、本実施の形態によれば、２次キャッシュメモリ４０７の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
【０１２０】
なお、本実施の形態によれば、コンテキストメモリ１０３に保持する仮想プロセッサ数に制限はない。
【０１２１】
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
【０１２２】
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、ＬＲＵ（Least Recently Used）方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
【０１２３】
なお、本実施の形態によれば、キャッシュ割当て情報２０３の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報２０３の設定方法について制限するものではない。
【０１２４】
（実施の形態４）
以下、本発明の実施の形態４に係る計算機システムについて、図面を参照しながら説明する。実施の形態３に係る計算機システムは複数のスレッド実行部を有するプロセッサを１つ備えていたが、実施の形態４に係る計算機システムは複数のスレッド実行部を有するプロセッサを２つ備えている。
【０１２５】
図９は、実施の形態４に係る計算機システムのハードウェア構成を示すブロック図である。以降の説明において、図１または図７と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【０１２６】
計算機システム９００は、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサ９０８、９０９と、コンテキストメモリ９０３と、仮想プロセッサ制御部９０２と、整合性維持部９０４と、２次キャッシュ制御部９０５と、２次キャッシュメモリ９０６と、主記憶装置１０１とを備える。なお、図９は本発明の一実施の形態を示したものであり、本発明において、各プロセッサのハードウェアスレッドが２個に限定されるものでない。以降の説明において、図１または図７と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【０１２７】
主記憶装置１０１は、システムバス１０５および２次キャッシュメモリ９０６を介してプロセッサ９０８および９０９と接続されており、プロセッサ９０８または９０９の要求に従い主記憶装置１０１内のデータを読み出し、２次キャッシュメモリ９０６へ転送する。プロセッサ９０８または９０９の要求に従い、書き込みも同様に行われる。
【０１２８】
コンテキストメモリ９０３は、コンテキストメモリ１０３と同じ情報を仮想プロセッサ分保持しており、仮想プロセッサ数が異なるだけである。実施の形態４では、仮想プロセッサの数を６個とする。
【０１２９】
プロセッサ９０８および９０９の各々は、プロセッサ７０３と同じ構成を有する。なお、各１次キャッシュメモリはハードウェアスレッドごとに備えられ、該ハードウェアスレッド上で動作する仮想プロセッサ間で共用される。つまり、プロセッサ９０８におけるスレッド実行部７１１ａは１次キャッシュメモリ７１３ａ、スレッド実行部７１１ｂは１次キャッシュメモリ７１３ｂを使用し、プロセッサ９０９におけるスレッド実行部７１１ａは１次キャッシュメモリ７１３ａ、スレッド実行部７１１ｂは１次キャッシュメモリ７１３ｂを使用する。プロセッサ９０８および９０９の機能、動作については、実施の形態３のプロセッサ７０３の同様であるため、その説明を省略する。プロセッサ９０８および９０９の各々は、１次キャッシュメモリ７１３ａ（または７１３ｂ）、および２次キャッシュメモリ９０６のいずれか、または両方を介さずに主記憶装置１０１にアクセス可能であるが、本発明の主眼ではないので、プロセッサ９０８または９０９と主記憶装置１０１との間の接続線は図９では記載を省略する。
【０１３０】
仮想プロセッサ制御部９０２は、各スレッド実行部上で処理が実行される仮想プロセッサの切り替えを行う。まず、仮想プロセッサ制御部９０２は、切り替えを行う対象のスレッド実行部で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ９０３内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部９０２は、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部９０２は、コンテキストメモリ９０３に記憶されている、選択された仮想プロセッサのコンテキスト（コンテキスト９０３ａ、９０３ｂ、９０３ｃ、９０３ｄ、９０３ｅ、９０３ｆのいずれか）を切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部９０２は、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、ラウンドロビン方式に従って選択してもよいし、予め定められた仮想プロセッサの優先度に従って選択してもよい。
【０１３１】
整合性維持部９０４は、プロセッサ９０８および９０９間、ならびに各プロセッサのスレッド間で共有されるデータを１次キャッシュメモリ間で不整合を起こさないように既知の技術を用いてデータの一貫性を保証する。
【０１３２】
２次キャッシュ制御部９０５は、各スレッド実行部からキャッシュ割当て情報２０３を通知してもらう。そして、プロセッサ９０８の１次キャッシュ制御部７１２ａもしくは７１２ｂ、またはプロセッサ９０９の１次キャッシュ制御部７１２ａもしくは７１２ｂから要求アドレスを受信した場合、２次キャッシュ制御部９０５は、受信した要求アドレスのデータが２次キャッシュメモリ９０６のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在しなかった場合は、２次キャッシュ制御部９０５は、キャッシュ割当て情報２０３を参照し、対象のウェイに要求アドレスのデータをキャッシングする。要求アドレスのデータが存在する場合は、２次キャッシュ制御部９０５は、スレッドＩＤを判別し、対象の１次キャッシュメモリのキャッシュラインにキャッシングする。
【０１３３】
２次キャッシュメモリ９０６は、そのキャッシュ方式が６ウェイセットアソシアティブ方式であり、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサＶＰが指定される。ここでは、ウェイ０（ウェイ９０６ａ）は仮想プロセッサＶＰ０（コンテキスト９０３ａ）に、ウェイ１（ウェイ９０６ｂ）は仮想プロセッサＶＰ１（コンテキスト９０３ｂ）に、ウェイ２（ウェイ９０６ｃ）は仮想プロセッサＶＰ２（コンテキスト９０３ｃ）に、ウェイ３（ウェイ９０６ｄ）は仮想プロセッサＶＰ３（コンテキスト９０３ｄ）に、ウェイ４（ウェイ９０６ｅ）は仮想プロセッサＶＰ４（コンテキスト９０３ｅ）に、ウェイ５（ウェイ９０６ｆ）は仮想プロセッサＶＰ５（コンテキスト９０３ｆ）に割当てられる。各スレッド実行部の１次キャッシュ制御部からデータの読み込み、または書き込みの要求を受信した場合は、２次キャッシュメモリ９０６は、要求を受信した順序に従ってデータの読み込みまたは書き込み処理を行う。また、複数の１次キャッシュ制御部から同時に要求を受信した場合は、２次キャッシュメモリ９０６は、予め定められた１次キャッシュ制御部の優先度に従ってデータの読み込みまたは書き込み処理を行なう。例えば、プロセッサ９０８の１次キャッシュ制御部７１２ａの優先度を１、１次キャッシュ制御部７１２ｂの優先度を２、プロセッサ９０９の１次キャッシュ制御部７１２ａの優先度を３、１次キャッシュ制御部７１２ｂの優先度を４とし、２次キャッシュメモリ９０６は、優先度が若い１次キャッシュ制御部の要求を優先的に処理することとする。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、２次キャッシュメモリ９０６内のキャッシュラインごとに仮想プロセッサを割り当て（参考文献１）、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報２０３としてもよい。ここで、キャッシュ割当て情報２０３は、仮想プロセッサごとに、割り当てられる２次キャッシュメモリ９０６の領域、ウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数をソフトウェアから指定できるようにすることにより、より柔軟に制御が可能となることはいうまでもない。
【０１３４】
次に計算機システム９００の動作について、図１０のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサＶＰの選択方法はラウンドロビン方式であるものとする。仮想プロセッサＶＰの実行順はＶＰ０→ＶＰ１→ＶＰ２→ＶＰ３→ＶＰ４→ＶＰ５→ＶＰ０（以降繰り返し）とし、起動時にプロセッサ９０８のスレッド実行部７１１ａに仮想プロセッサＶＰ０、スレッド実行部７１１ｂに仮想プロセッサＶＰ１、プロセッサ９０９のスレッド実行部７１１ａに仮想プロセッサＶＰ２、スレッド実行部７１１ｂに仮想プロセッサＶＰ３が設定されているものとする。
【０１３５】
なお、以下のフローチャートの説明において、プロセッサ９０８とプロセッサ９０９の動作は、プロセッサ７０３の動作と同じである。このため、計算機システム７００との差分についてのみ説明する。
【０１３６】
図１０には、ステップＳ１００１〜Ｓ１００４の処理の組が４つ存在する。つまり、４つの処理の流れが存在するが、各処理の流れが、スレッド実行部、１次キャッシュ制御部および１次キャッシュメモリからなる各組の処理の流れに対応する。
【０１３７】
（ステップＳ１００１）まず、仮想プロセッサ制御部９０２は、プロセッサ９０８および９０９の各スレッド実行部から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がある場合は、ステップＳ１００２に遷移し、切り替え要求がない場合は、Ｓ１００４に遷移する。
【０１３８】
（ステップＳ１００２）仮想プロセッサ制御部９０２は、次に実行する仮想プロセッサを選択する。ここでは、仮想プロセッサＶＰ４（コンテキスト９０３ｅ）が選択されたものとする。なお、各スレッド実行部から順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったスレッド実行部の順に従って、次に実行する仮想プロセッサを選択する。また、複数のスレッド実行部から同時に仮想プロセッサの切り替え要求があった場合は、予め定められたスレッド実行部の優先度に従って、次に実行する仮想プロセッサを選択する。例えば、プロセッサ９０８のスレッド実行部７１１ａの優先度を１、スレッド実行部７１１ｂの優先度を２、プロセッサ９０９のスレッド実行部７１１ａの優先度を３、スレッド実行部７１１ｂの優先度を４とし、優先度が若いスレッド実行部からの要求を優先させて仮想プロセッサを切り替える。
【０１３９】
（ステップＳ１００３）図８のステップＳ８２１と同じ動作を行う。
【０１４０】
（ステップＳ１００４）プログラム実行処理が実行される。プログラム実行処理（ステップＳ１００４）では、図８のステップＳ８０２〜Ｓ８０６と同じ処理が実行される。
【０１４１】
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサが複数個あり、各プロセッサにハードウェアスレッドが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、各プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域（ウェイ）を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
【０１４２】
なお、本実施の形態によれば、計算機システム９００に備えられるマルチスレッディング機構を備えたプロセッサ数、ハードウェアスレッド数を制限するものではない。
【０１４３】
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、２次キャッシュメモリを共用化し、３次キャッシュメモリを分割する構成であってもよい。
【０１４４】
なお、本実施の形態によれば、２次キャッシュメモリ９０６のウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【０１４５】
なお、本実施の形態によれば、２次キャッシュメモリ９０６の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
【０１４６】
なお、本実施の形態によれば、コンテキストメモリ９０３に保持する仮想プロセッサ数に制限はない。
【０１４７】
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
【０１４８】
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、ＬＲＵ（Least Recently Used）方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
【０１４９】
なお、本実施の形態によれば、キャッシュ割当て情報２０３の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報２０３の設定方法について制限するものではない。
【０１５０】
（実施の形態５）
以下、本発明の実施の形態５に係る計算機システムについて、図面を参照しながら説明する。実施の形態４に係る計算機システムでは、プロセッサ間でコンテキストメモリを共用しており、各プロセッサが処理を実行する仮想プロセッサを同種のものとしていた。これに対して、実施の形態５に係る計算機システムは、プロセッサごとにコンテキストメモリを備え、各プロセッサが処理を実行する仮想プロセッサをプロセッサ間で異なる種類にする。
【０１５１】
図１１は、実施の形態５に係る計算機システムのハードウェア構成を示すブロック図である。以降の説明において、図１、図７または図９と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【０１５２】
計算機システム１１００は、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサ１１０８、１１０９と、コンテキストメモリ１１０１、１１０２と、仮想プロセッサ制御部１１０３ａ、１１０３ｂと、整合性維持部９０４と、２次キャッシュ制御部９０５と、２次キャッシュメモリ９０６と、主記憶装置１０１とを備える。なお、図１１は本発明の一実施の形態を示したものであり、本発明において、各プロセッサのハードウェアスレッドが２個に限定されるものでなく、またプロセッサ数も２個に限定するものではない。プロセッサ１１０８および１１０９の各々は、１次キャッシュメモリ７１３ａ（または７１３ｂ）、および２次キャッシュメモリ９０６のいずれか、または両方を介さずに主記憶装置にアクセス可能であるが、本発明の主眼ではないので図１１ではプロセッサ１１０８または１１０９と主記憶装置１０１とを接続する接続線の記載を省略する。以降の説明において、図１、図７または図９と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
【０１５３】
コンテキストメモリ１１０１、１１０２は、図９におけるコンテキストメモリ９０３と同じ情報を仮想プロセッサ分保持しており、仮想プロセッサ数が異なるだけである。なお、仮想プロセッサのコンテキスト数を制限するものではない。コンテキストメモリ１１０１は、仮想プロセッサＶＰ０〜ＶＰ２のコンテキストを記憶しており、コンテキストメモリ１１０２は、仮想プロセッサＶＰ３〜ＶＰ５のコンテキストを記憶している。
【０１５４】
仮想プロセッサ制御部１１０３ａは、プロセッサ１１０８の各スレッド実行部で処理が実行される仮想プロセッサの切り替えを行い、仮想プロセッサ制御部１１０３ｂは、プロセッサ１１０９の各スレッド実行部で処理が実行される仮想プロセッサの切り替えを行う。仮想プロセッサ制御部１１０３ａは、切り替えの際、プロセッサ１１０８で動作していた仮想プロセッサのコンテキストをコンテキストメモリ１１０１内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部１１０３ａは、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部１１０３ａは、コンテキストメモリ１１０１に記憶されている、選択された仮想プロセッサのコンテキスト（コンテキスト１１０１ａ、１１０１ｂ、１１０１ｃのいずれか）を切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部１１０３ａは、複数の仮想プロセッサを実現する。また、仮想プロセッサ制御部１１０３ｂは、プロセッサ１１０９で切り替えの際は動作していた仮想プロセッサのコンテキストをコンテキストメモリ１１０２内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部１１０３ｂは、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部１１０３ｂは、コンテキストメモリ１１０２に記憶されている、選択された仮想プロセッサのコンテキスト（コンテキスト１１０２ａ、１１０２ｂ、１１０２ｃのいずれか）を切り替えが生じたスレッド実行部へ設定する。この一連の動作により、仮想プロセッサ制御部１１０３ｂは、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、ラウンドロビン方式に従って選択してもよいし、予め定められた優先度に従って選択してもよい。
【０１５５】
次に計算機システム１１００の動作について、図１２のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサＶＰの選択方法はラウンドロビン方式であるものとする。コンテキストメモリ１１０１にコンテキストが記憶されている仮想プロセッサＶＰの実行順はＶＰ０→ＶＰ１→ＶＰ２（以降繰り返し）とし、コンテキストメモリ１１０２にコンテキストが記憶されている仮想プロセッサＶＰの実行順はＶＰ３→ＶＰ４→ＶＰ５（以降繰り返し）とする。また、起動時にプロセッサ１１０８のスレッド実行部７１１ａに仮想プロセッサＶＰ０（コンテキスト１１０１ａ）、スレッド実行部７１１ｂに仮想プロセッサＶＰ１（コンテキスト１１０１ｂ）、プロセッサ１１０９のスレッド実行部７１１ａに仮想プロセッサＶＰ３（コンテキスト１１０２ａ）、スレッド実行部７１１ｂに仮想プロセッサＶＰ４（コンテキスト１１０２ｂ）が設定されているものとする。
【０１５６】
なお、以下のフローチャートの説明において、プロセッサ１１０８とプロセッサ１１０９の動作は、プロセッサ７０３の動作と同じである。
【０１５７】
図１２には、ステップＳ１２０１〜Ｓ１２０４の処理の組が４つ存在する。つまり、４つの処理の流れが存在するが、各処理の流れが、スレッド実行部、１次キャッシュ制御部および１次キャッシュメモリからなる各組の処理の流れに対応する。
【０１５８】
本実施の形態では、計算機システム１１００におけるコンテキストメモリと、仮想プロセッサがプロセッサごとにある構成をとっている。そのため、図１２におけるフローチャートの説明において、プロセッサ１１０８が実行する処理の説明を行うが、プロセッサ１１０９が実行する処理の説明は、プロセッサ１１０８が実行する処理の説明と同じである。
【０１５９】
（ステップＳ１２０１）図８のステップＳ８０１と同じ動作を行う。
【０１６０】
（ステップＳ１２０２）図８のステップＳ８２０と同じ動作を行う。
【０１６１】
（ステップＳ１２０３）図８のステップＳ８２１と同じ動作を行う。
【０１６２】
（ステップＳ１２０４）プログラム実行処理が実行される。プログラム実行処理（ステップＳ１２０４）では、図８のステップＳ８０２〜Ｓ８０６と同じ処理が実行される。
【０１６３】
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサが複数個（２個以上）あり、各プロセッサにハードウェアスレッドが複数個（２個以上）あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各課そうプロセッサに、各プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域（ウェイ）を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
【０１６４】
なお、本実施の形態によれば、計算機システム１１００に備えられるマルチスレッディング機構を備えたプロセッサ数、ハードウェアスレッド数を制限するものではない。
【０１６５】
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、２次キャッシュメモリを共用化し、３次キャッシュメモリを分割する構成であってもよい。
【０１６６】
なお、本実施の形態によれば、２次キャッシュメモリ９０６のウェイ数を限定するものではなく、またキャッシュ方式もｎウェイセットアソシアティブ方式に限定されるものではない。
【０１６７】
なお、本実施の形態によれば、２次キャッシュメモリ９０６の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
【０１６８】
なお、本実施の形態によれば、コンテキストメモリ１１０１、１１０２に保持する仮想プロセッサ数に制限はない。
【０１６９】
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
【０１７０】
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、ＬＲＵ（Least Recently Used）方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
【０１７１】
なお、本実施の形態によれば、キャッシュ割当て情報２０３の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報２０３の設定方法について制限するものではない。
【０１７２】
また、上記実施の形態を組み合わせるとしても良い。
【０１７３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及びおよび範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１７４】
本発明は、仮想プロセッサが時分割で実行しうる仮想マルチプロセッサ、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサにおいて、多階層キャッシュメモリを備える計算機システムなどに有用であり、多種多様な機能を備えた計算機システムの高速化、および機能ごとの独立性設計の容易化することができる。
【符号の説明】
【０１７５】
１００、４００、７００、９００、１１００  計算機システム
１０１  主記憶装置
１０２、４０３、４０４、７０３、９０８、９０９、１１０８、１１０９  プロセッサ
１０３、９０３、１１０１、１１０２  コンテキストメモリ
１０３ａ〜１０３ｄ、９０３ａ〜９０３ｆ、１１０１ａ〜１１０１ｃ、１１０２ａ〜１１０２ｃ  コンテキスト
１０４、４０２、７０２、９０２、１１０３ａ、１１０３ｂ  仮想プロセッサ制御部
１０５  システムバス
１０６、４０６、９０５  ２次キャッシュ制御部
１０７、４０７、９０６  ２次キャッシュメモリ
１０７ａ〜１０７ｄ、４０７ａ〜４０７ｄ、９０６ａ〜９０６ｆ  ウェイ
１１１、４１１、４２１  処理実行部
１１２、４１２、７１２ａ、７１２ｂ  １次キャッシュ制御部
１１３、４１３、７１３ａ、７１３ｂ  １次キャッシュメモリ
２０１  レジスタセットの値
２０２  制御情報
２０３  キャッシュ割当て情報
４０５、９０４  整合性維持部
７１１ａ、７１１ｂ  スレッド実行部
【図１】
2011242896.tif 000003
【図２】
2011242896.tif 000004
【図３】
2011242896.tif 000005
【図４】
2011242896.tif 000006
【図５】
2011242896.tif 000007
【図６】
2011242896.tif 000008
【図７】
2011242896.tif 000009
【図８】
2011242896.tif 000010
【図９】
2011242896.tif 000011
【図１０】
2011242896.tif 000012
【図１１】
2011242896.tif 000013
【図１２】
2011242896.tif 000014