JP5336423B2 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP5336423B2
JP5336423B2 JP2010112657A JP2010112657A JP5336423B2 JP 5336423 B2 JP5336423 B2 JP 5336423B2 JP 2010112657 A JP2010112657 A JP 2010112657A JP 2010112657 A JP2010112657 A JP 2010112657A JP 5336423 B2 JP5336423 B2 JP 5336423B2
Authority
JP
Japan
Prior art keywords
cache memory
execution unit
cache
processor
process execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010112657A
Other languages
English (en)
Other versions
JP2011242896A (ja
Inventor
晃之 森田
義宏 古賀
廣二 中嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010112657A priority Critical patent/JP5336423B2/ja
Priority to CN201180017753.8A priority patent/CN102822809B/zh
Priority to PCT/JP2011/000015 priority patent/WO2011142058A1/ja
Publication of JP2011242896A publication Critical patent/JP2011242896A/ja
Priority to US13/645,127 priority patent/US9063794B2/en
Application granted granted Critical
Publication of JP5336423B2 publication Critical patent/JP5336423B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、少なくとも2つ以上の仮想プロセッサが時分割で実行しうる仮想マルチプロセッサにおいて、多階層キャッシュメモリへのキャッシュアクセスを効率的に行うことができる計算機システムに関するものである。
計算機システムにおいて、多種多様な機能が年々増加する中、システムは複雑化している。それに対し、ソフトウェアによるPosixソフトウェアスレッド(例えば、非特許文献1、2参照)等のマルチソフトウェアスレッドプログラミングなどがあるが、ソフトウェアスレッド間の性能干渉が大きく、システム設計が困難である。最近では、多種多様な機能の独立した性能設計を容易化するために、マルチコア、ハードウェアマルチスレッド(例えば、非特許文献3参照)、または仮想マルチプロセッサ(例えば、特許文献1参照)といった技術が進んできている。
さらに、プロセッサコア、スレッド、または仮想プロセッサごとの性能設計をより容易化するために、処理性能に影響するキャッシュメモリについて、例えば特許文献2に示されているように、プロセッサで共有しているオンチップキャッシュメモリの複数のウェイをプロセッサごとのグループに分配して管理する機構が提案されている。
なお、ソフトウェアスレッドにおけるスレッド切り替え粒度は、切り替えのソフトウェア処理によってオーバーヘッドが発生するため、おおよそ数百マイクロ秒〜数秒という粗い間隔で行われるのが一般的である。マルチコア、ハードウェアマルチスレッドでは、複数のプログラムを同時に実行が可能である。仮想マルチプロセッサは、数百マイクロ秒未満の粒度でプロセッサ切り替えを行うのが一般的である。
特許第3813930号公報 特許第3620473号公報
Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farrell著「Pthreadsプログラミング」オライリー・ジャパン、1998年5月1日 David R.Butenhof著「Posixスレッドプログラミング」アスキー、1998年11月 "インテル(R)ハイパースレッディング・テクノロジー"、[online]、[2010年4月5日検索]、インターネット<URL:http://www.intel.co.jp/jp/technology/platform-technology/hyper-threading/index.htm>
近年、多種多様の機能増に対応するために、高速化による性能向上、および機能ごとの独立性能設計の容易化の両立が求められている。組み込み機器向けのプロセッサコアにおいても1GHzを超えるような高速化が進んできている。しかし、プロセッサコアに近いメモリ(上位階層のメモリ)の動作速度がプロセッサの高速化を行う上での障害となってきている。特許文献2に示されるようなメモリを分割する技術は、プロセッサコアに近い1次キャッシュメモリでは、ウェイ数増または分割制御回路の複雑化が高速化への障壁となる。また、プロセッサコア、ハードウェアマルチスレッド、仮想プロセッサが増えるにつれ、分割するウェイ数、キャッシュライン数等が比例的に増加し、大容量の1次キャッシュメモリが必要となる。そして、大容量のキャッシュメモリの搭載は高速化への障壁となる。
本発明は、上述の課題を解決するためになされたものであり、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することを目的とする。
上記目的を達成するために、本発明のある局面に係る計算機システムは、データを保持する主記憶装置と、仮想マルチプロセッサ機構を有する第1プロセッサ内に設けられ、複数の仮想プロセッサ上で実行される処理を逐次実行する第1処理実行部と、前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶する第1共用キャッシュメモリと、仮想プロセッサのプロセッサ数に応じて分割された複数の記憶領域を有し、各前記仮想プロセッサに各前記記憶領域が対応付けられ、各前記記憶領域が、当該記憶領域に対応付けられた仮想プロセッサが利用するデータを記憶する、前記第1共用キャッシュメモリよりも下位の記憶階層のキャッシュメモリである分割キャッシュメモリと、仮想プロセッサごとに、当該仮想プロセッサに対応するコンテキストを記憶している第1コンテキストメモリと、前記第1処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第1処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第1処理実行部で実行される仮想プロセッサのコンテキストを前記第1処理実行部に設定する仮想プロセッサ制御部と、前記第1共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1共用キャッシュメモリに書き込むための制御を行う第1共用キャッシュ制御部と、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う分割キャッシュ制御部とを備える。
かかる構成により、第1処理実行部で処理が実行されている仮想プロセッサが要求したデータが第1共用キャッシュメモリに記憶されていない場合に、分割キャッシュメモリからデータが読み込まれる。分割キャッシュメモリへのデータアクセスは、主記憶装置へのデータアクセスよりも高速に行うことができる。このため、仮想プロセッサの切り替え時の切り替えロスを低減させることができる。そのため、仮想プロセッサごとの性能設計を容易化しつつ、かつ第1プロセッサに近い第1共用キャッシュメモリの回路の簡素化により第1プロセッサの高速化が容易になる。さらに、第1プロセッサに近い第1共用キャッシュメモリを共用することで、第1共用キャッシュメモリに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。したがって、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することができる。
また、上述の計算機システムは、さらに、前記第1プロセッサとは異なる、仮想マルチプロセッサ機構を有する第2プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第2処理実行部と、前記第2処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第2共用キャッシュメモリと、前記第2共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第2共用キャッシュメモリに書き込むための制御を行う第2共用キャッシュ制御部と、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、前記仮想プロセッサ制御部は、さらに、前記第2処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第2処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第2処理実行部で実行される仮想プロセッサのコンテキストを前記第2処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部または前記第2処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
かかる構成により、仮想マルチプロセッサが複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつ第1プロセッサおよび第2プロセッサにそれぞれ近い第1共用キャッシュメモリおよび第2共用キャッシュメモリの回路の簡素化により第1プロセッサおよび第2プロセッサの高速化が容易にできる。
また、前記第1プロセッサは、複数のハードウェアスレッドおよびマルチスレッディング機構を有し、前記第1処理実行部は、ハードウェアによりスレッドの実行を実現し、前記計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、かつ前記第1プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第2処理実行部と、前記第2処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第2共用キャッシュメモリと、記第2共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第2共用キャッシュメモリに書き込むための制御を行う第2共用キャッシュ制御部と、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、前記仮想プロセッサ制御部は、さらに、前記第2処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第2処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第2処理実行部で実行される仮想プロセッサのコンテキストを前記第2処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部または前記第2処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
かかる構成により、2つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つ第1プロセッサを備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつ第1プロセッサに近い第1共用キャッシュメモリの回路の簡素化により第1プロセッサの高速化が容易にできる。
また、上述の計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、前記第1プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第2プロセッサ内に設けられ、かつ、各々が前記複数の仮想プロセッサ上で実行される処理を逐次実行する第3処理実行部および第4処理実行部と、前記第3処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第3共用キャッシュメモリと、前記第3共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第3共用キャッシュメモリに書き込むための制御を行う第3共用キャッシュ制御部と、前記第4処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第4共用キャッシュメモリと、前記第4共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第4共用キャッシュメモリに書き込むための制御を行う第4共用キャッシュ制御部とを備え、前記整合性維持部は、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータと前記第3共用キャッシュメモリに記憶されているデータと前記第4共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、前記仮想プロセッサ制御部は、さらに、前記第3処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第3処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第3処理実行部で実行される仮想プロセッサのコンテキストを前記第3処理実行部に設定し、前記第4処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第4処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第4処理実行部で実行される仮想プロセッサのコンテキストを前記第4処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第1処理実行部、前記第2処理実行部、前記第3処理実行部または前記第4処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
かかる構成により、2つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つプロセッサを複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサに近い第1から第4の共用キャッシュメモリの回路の簡素化によりプロセッサの高速化が容易にできる。
また、上述の計算機システムは、さらに、ハードウェアによりスレッドの実行を実現し、前記第1プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第2プロセッサ内に設けられ、かつ、各々が複数の仮想プロセッサ上で実行される処理を逐次実行する第3処理実行部および第4処理実行部と、前記第3処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第3共用キャッシュメモリと、前記第3共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第3共用キャッシュメモリに書き込むための制御を行う第3共用キャッシュ制御部と、前記第4処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第4共用キャッシュメモリと、前記第4共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第4共用キャッシュメモリに書き込むための制御を行う第4共用キャッシュ制御部と、前記第3処理実行部および前記第4処理実行部で処理が実行される前記複数の仮想プロセッサの各々について、当該仮想プロセッサに対応するコンテキストを記憶している第2コンテキストメモリとを備え、前記第1コンテキストメモリは、前記第1処理実行部および前記第2処理実行部で処理が実行される仮想プロセッサに対応するコンテキストを記憶しており、前記整合性維持部は、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータと前記第3共用キャッシュメモリに記憶されているデータと前記第4共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、前記仮想プロセッサ制御部は、さらに、前記第3処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第3処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第2コンテキストメモリに退避し、前記第2コンテキストメモリに記憶されている、次に前記第3処理実行部で実行される仮想プロセッサのコンテキストを前記第3処理実行部に設定し、前記第4処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第4処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第2コンテキストメモリに退避し、前記第2コンテキストメモリに記憶されている、次に前記第4処理実行部で実行される仮想プロセッサのコンテキストを前記第4処理実行部に設定し、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第1処理実行部、前記第2処理実行部、前記第3処理実行部または前記第4処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行っても良い。
かかる構成により、2つ以上のハードウェアスレッドを有し、マルチスレッディング機構を持つプロセッサを複数個備える計算機システムにおいても、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサに近い第1から第4の共用キャッシュメモリの回路の簡素化によりプロセッサの高速化が容易にできる。
また、前記コンテキストは、前記分割キャッシュメモリが有する前記複数の記憶領域のうち、当該コンテキストに対応する仮想プロセッサが対応付けられた記憶領域を示すキャッシュ割当て情報を含み、前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記コンテキストメモリに記憶されている複数の前記コンテキストを参照することにより得られる前記キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むための制御を行っても良い。
かかる構成により、分割キャッシュメモリがキャッシュミスをした場合に、キャッシュミスをしたデータを、キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むことができる。
また、前記分割キャッシュメモリは、キャッシュ方式がnウェイセットアソシアティブ方式のウェイ単位またはキャッシュライン単位で前記複数の記憶領域に分割されていても良い。
かかる構成により、分割キャッシュメモリにおけるデータの入れ替え対象を容易に特定することができ、さらに仮想プロセッサごとの性能設計を容易化することができる。
また、前記コンテキストは、仮想プロセッサが独占的に使用する分割キャッシュメモリ上のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す情報を記憶していても良い。
かかる構成により、分割キャッシュメモリにおける記憶領域の分割、および割当てを容易に設定できる。
なお、本発明は、このような特徴的な処理部を備える計算機システムとして実現することができるだけでなく、計算機システムに含まれる特徴的な処理部が実行する処理をステップとする計算方法として実現することができる。また、計算方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、CD−ROM(Compact Disc-Read Only Memory)等のコンピュータ読取可能な不揮発性の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
本発明によると、高速化による性能向上、および機能ごとの独立性能設計の容易化を実現しつつ、大容量のキャッシュメモリの搭載を必要としない計算機システムを提供することができる。
実施の形態1における計算機システムのハードウェア構成を示すブロック図 実施の形態1におけるコンテキストの情報を示す図 実施の形態1における計算機システムのフローチャート 実施の形態2における計算機システムのハードウェア構成を示すブロック図 実施の形態2における計算機システムのフローチャート 実施の形態2における計算機システムにおけるプロセッサのフローチャート 実施の形態3における計算機システムのハードウェア構成を示すブロック図 実施の形態3における計算機システムのフローチャート 実施の形態4における計算機システムのハードウェア構成を示すブロック図 実施の形態4における計算機システムのフローチャート 実施の形態5における計算機システムのハードウェア構成を示すブロック図 実施の形態5における計算機システムのフローチャート
以下、計算機システムの実施の形態について図面を参照して説明する。なお、実施の形態において同じ参照符号を付した構成要素は同様の構成を有し、同様の動作を行うので、再度の説明を省略する場合がある。
以降の実施の形態では、特許請求の範囲に示す共用キャッシュメモリを1次キャッシュメモリとし、分割キャッシュメモリを2次キャッシュメモリとする。
(実施の形態1)
図1は、実施の形態1に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム100は、主記憶装置101と、プロセッサ102と、コンテキストメモリ103と、仮想プロセッサ制御部104と、2次キャッシュ制御部106と、2次キャッシュメモリ107とを備える。
コンテキストメモリ103は、複数の仮想プロセッサVP(説明簡略化のため4個とし、以降個々の仮想プロセッサを仮想プロセッサVP0、VP1、VP2、VP3と呼称する)のコンテキスト(仮想プロセッサVP0のコンテキスト103a、仮想プロセッサVP1のコンテキスト103b、仮想プロセッサVP2のコンテキスト103c、仮想プロセッサVP3のコンテキスト103d)を記憶している。
なお、図1は、本発明の一実施の形態を示したものであり、本発明において、コンテキストメモリが4個に限定されるものでない。また、2次キャッシュメモリ107は、nウェイセットアソシアティブ方式(n=4)の構成を有するものとする。なお、本発明においてウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
主記憶装置101は、システムバス105および2次キャッシュメモリ107を介してプロセッサ102と接続されており、プロセッサ102の要求に従い主記憶装置101内のデータを読み出し、2次キャッシュメモリ107へ転送する。プロセッサ102の要求に従い、主記憶装置101への書き込みも同様に行われる。
プロセッサ102は、処理実行部111と、1次キャッシュ制御部112と、1次キャッシュメモリ113とを備える。なお、1次キャッシュメモリ113は仮想プロセッサ間で共用される。
プロセッサ102は1次キャッシュメモリ113および2次キャッシュメモリ107のいずれか、または両方を介さずに主記憶装置101にアクセス可能であるが、本発明の主眼ではないので図1ではプロセッサ102と主記憶装置101との接続線の記載を省略する。
コンテキストメモリ103には、上述したように仮想プロセッサVPを実現するのに必要な情報が保持されている。図2は、1つのコンテキストに格納されている情報を示している。コンテキストは、処理実行部111が備えるレジスタセットの値201と、プログラムの実行位置および動作設定などを示す制御情報202と、2次キャッシュメモリ107のキャッシュ割当て情報203とを含む。コンテキストは仮想プロセッサの数だけコンテキストメモリ103に格納されている。ここで、キャッシュ割当て情報203とは、後述する2次キャッシュメモリ107のウェイと仮想プロセッサVPとの対応関係を示す情報である。
仮想プロセッサ制御部104は、仮想プロセッサVPの切り替えを行う。即ち、仮想プロセッサ制御部104は、まず処理実行部111で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ103内の該当する格納先へ書き込む。次に仮想プロセッサ制御部104は、次に実行すべき仮想プロセッサを選択し、コンテキストメモリ103に記憶されている、選択された仮想プロセッサのコンテキスト(コンテキスト103a、103b、103c、103dのいずれか)を処理実行部111に設定する。この一連の動作により、仮想プロセッサ制御部104は、複数の仮想プロセッサを実現する。なお、仮想プロセッサVPは、例えばラウンドロビン方式に従って選択されてもよいし、予め定められた仮想プロセッサVPの優先度に従って選択されてもよく、本発明では仮想プロセッサの選択方法について限定しない。
処理実行部111は、仮想プロセッサ制御部104から実行対象となった仮想プロセッサVPのコンテキストが設定されると、プログラムを逐次実行する。これにより、仮想プロセッサVPが処理を実行する。また、仮想プロセッサVPのコンテキスト内にあるキャッシュ割当て情報203を、2次キャッシュ制御部106に対して通知する。
1次キャッシュ制御部112は、処理実行部111からの要求アドレスのデータが1次キャッシュメモリ113上のキャッシュラインに存在するか否かを調べる。もし、1次キャッシュメモリ113上に要求アドレスのデータが存在しない場合は、キャッシュミスとなり、1次キャッシュ制御部112は、2次キャッシュ制御部106に対して要求アドレスを通知する。
1次キャッシュメモリ113は、一般的にプロセッサに用いられるキャッシュメモリである。このキャッシュメモリは、複数の仮想プロセッサ間で共用される。
2次キャッシュ制御部106は、処理実行部111からキャッシュ割当て情報203を通知される。そして、1次キャッシュ制御部112から要求アドレスを受信した場合、2次キャッシュ制御部106は、受信した要求アドレスのデータが2次キャッシュメモリ107のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在する場合には、2次キャッシュ制御部106は、1次キャッシュ制御部112に対して要求アドレスのデータを出力する。1次キャッシュ制御部112は、1次キャッシュメモリ113のキャッシュラインに対象アドレスをキャッシングする。キャッシュミスした場合は、2次キャッシュ制御部106は、キャッシュ割当て情報203を参照し、2次キャッシュメモリ107の対象のウェイに要求アドレスのデータをキャッシングする。
2次キャッシュメモリ107は、一般的にプロセッサに用いられるキャッシュメモリである。2次キャッシュメモリ107は、4ウェイセットアソシアティブ方式とする。2次キャッシュメモリ107は、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサVPが指定される。ここでは、ウェイ0(ウェイ107a)は仮想プロセッサVP0(コンテキスト103a)に、ウェイ1(ウェイ107b)は仮想プロセッサVP1(コンテキスト103b)に、ウェイ2(ウェイ107c)は仮想プロセッサVP2(コンテキスト103c)に、ウェイ3(ウェイ107d)は仮想プロセッサVP3(コンテキスト103d)に割当てられる。上述のような仮想プロセッサVPごとにどのウェイを割当てているのかを示す情報がキャッシュ割当て情報203として、コンテキストに含まれている。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、2次キャッシュメモリ107内のキャッシュラインごとに仮想プロセッサを割り当て(例えば、参考文献1参照)、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報203としてもよい。ここで、キャッシュ割当て情報203は、仮想プロセッサごとに、仮想プロセッサに割り当てられる2次キャッシュメモリ107のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す。これらの情報は、ソフトウェアから指定できるようにすることにより、より柔軟に計算機システム100の制御が可能となることはいうまでもない。
[参考文献1]
パターソン、ヘネシー コンピュータの構成と設計(下)第2版(日経BP社) 第7章 7.2参照
次に計算機システム100の動作について、図3のフローチャートを用いて説明する。説明の簡単化ため、仮想プロセッサVPの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサVPの実行順はVP0→VP1→VP2→VP3→VP0(以降繰り返し)とする。現在、仮想プロセッサVP0(コンテキスト103a)が実行中であるとする。
(ステップS301)まず、仮想プロセッサ制御部104は、プロセッサ102から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がない場合は、ステップS304へ遷移し、切り替え要求がある場合は、ステップS302へ遷移する。
(ステップS302)仮想プロセッサ制御部104は、次に処理を実行する仮想プロセッサを選択する。ここでは仮想プロセッサVP1(コンテキスト103b)が選択されたとする。
(ステップS303)仮想プロセッサ制御部104は、仮想プロセッサの入れ替えを行う。上述の場合には、処理実行部111は仮想プロセッサVP0(コンテキスト103a)の実行を停止する。そして、仮想プロセッサ制御部104が仮想プロセッサVP0のコンテキストをコンテキストメモリ103のコンテキスト103aへ退避し、次に処理を実行する仮想プロセッサVP1のコンテキスト(コンテキスト103b)を処理実行部111へ設定する。
(ステップS304)ラウンドロビン方式で許可された時間の間、処理実行部111は、処理実行部111に設定された仮想プロセッサVPのプログラムを実行していく。これにより、仮想プロセッサVPがプログラムを実行する。
(ステップS305)仮想プロセッサVPのプログラム実行中に、1次キャッシュ制御部112は、処理実行部111からの要求アドレスのデータが1次キャッシュメモリ113のキャッシュラインに存在しているか否かを判定する。存在していない場合は、1次キャッシュ制御部112は、キャッシュミスと判断し、2次キャッシュ制御部106に対して要求アドレスを通知し、ステップS306に遷移する。存在している場合は、ステップS301に遷移する。
(ステップS306)2次キャッシュ制御部106は、1次キャッシュ制御部112から通知された要求アドレスのデータが2次キャッシュメモリ107のキャッシュラインに存在するか否かを判定する。この際、現在実行中の仮想プロセッサVP1に割り当てられたウェイ1(ウェイ107b)以外に対しても、要求アドレスのデータが存在するか否かの判定を行う。要求アドレスのデータが2次キャッシュメモリ107のキャッシュラインに存在する場合は、ステップS307に遷移し、存在しない場合はステップS308に遷移する。
(ステップS307)2次キャッシュ制御部106は、1次キャッシュ制御部112を介して、2次キャッシュメモリ107上の該当キャッシュラインのデータを1次キャッシュメモリ113のキャッシュラインに転送する。
(ステップS308)2次キャッシュ制御部106は、キャッシュ割当て情報203を参照し、仮想プロセッサVP1に割当てられた2次キャッシュメモリ107上のウェイ1(ウェイ107b)に対して、主記憶装置101から要求アドレスのデータを転送する。また、2次キャッシュ制御部106は、1次キャッシュ制御部112を介して、転送したデータを1次キャッシュメモリ113へも同時に転送する。
ラウンドロビン方式で許可された時間で仮想プロセッサVPのコンテキストを切り替えつつ、ステップS301〜ステップS308を繰り返すことにより、仮想プロセッサVP動作環境を実現する。
なお、1次キャッシュメモリ113を仮想プロセッサ間で共用することで、仮想プロセッサの切り替え周期ごとにキャッシュ情報を更新しなければならずタイムロスが発生する。しかし、2次キャッシュメモリ107から1次キャッシュメモリ113へのデータ転送に要する処理サイクルは極めて小さい。このため、このデータ転送がシステム性能に与える影響は非常に小さく抑えられる。
例えば、1次キャッシュメモリ113の記憶容量を16Kbyteとし、1次キャッシュメモリ113と2次キャッシュメモリ107との間で1キャッシュライン(128byte)のデータ転送に20cycle要するものとする。また、プロセッサ102のプロセッサコアの周波数クロックが1GHzであり、仮想プロセッサの切り替え周期が100μsecであるとする。このとき、1次キャッシュメモリ113に記憶されている全てのデータのフェッチに要する処理サイクルは、16×1024/128×20=2560cycleとなる。このため、仮想プロセッサの切り替え周期に対する切り替えロスの割合は、2560/(100μsec×1GHz)×100=2.56%でしかない。
それに対し、2次キャッシュメモリ107を、仮想プロセッサVPごとに分割しない場合には、主記憶装置101へのアクセスが低速であるため、システム性能が大幅に低下する。例えば、2次キャッシュメモリ107と主記憶装置101との間で1キャッシュライン(128byte)のデータ転送に200cycle要するものとする。このとき、上記と同様の計算を行うと、仮想プロセッサの切り替え周期の25.6%が切り替えロスとなり、システム性能が大幅に低下する。
また、ソフトウェアスレッドにおける100μsecの粒度での切り替えは、ソフトウェアスレッド切り替え処理で100μsecの大半を消費してしまうので、そもそも困難である。
以上説明したように、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域(ウェイ)を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。なお、本明細書中においてプロセッサコアに近いキャッシュメモリとは、上位の階層のキャッシュメモリを示し、プロセッサコアから遠いキャッシュメモリとは下位の階層のキャッシュメモリを示す。例えば、1次キャッシュメモリと2次キャッシュメモリとを比較した場合には、前者がプロセッサコアに近い、つまり上位の階層のキャッシュメモリであり、後者がプロセッサコアから遠い、つまり下位の階層のキャッシュメモリである。
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、2次キャッシュメモリを共用化し、3次キャッシュメモリを分割する構成であってもよい。
なお、本実施の形態によれば、2次キャッシュメモリ107のウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
なお、本実施の形態によれば、2次キャッシュメモリ107の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
なお、本実施の形態によれば、コンテキストメモリ103に保持する仮想プロセッサ数に制限はない。
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、LRU(Least Recently Used)方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
なお、本実施の形態によれば、キャッシュ割当て情報203の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報203の設定方法について制限するものではない。
(実施の形態2)
以下、本発明の実施の形態2に係る計算機システムについて、図面を参照しながら説明する。実施の形態1に係る計算機システムは1個のプロセッサを備えていたが、実施の形態2に係る計算機システムは2個のプロセッサを備えている。
図4は、実施の形態2に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム400は、仮想プロセッサ制御部402と、2個のプロセッサ403および404と、コンテキストメモリ103と、整合性維持部405と、2次キャッシュ制御部406と、2次キャッシュメモリ407と、主記憶装置101とを備える。なお、図4は、本発明の一実施の形態を示したものであり、本発明において、プロセッサが3個以上あってもよく、またコンテキストメモリが4個に限定されるものでない。以降の説明において、図1と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
プロセッサ403は、処理実行部411と、1次キャッシュ制御部412と、1次キャッシュメモリ413とを含む。プロセッサ404は、処理実行部421と、1次キャッシュ制御部422と、1次キャッシュメモリ423とを含む。処理実行部411および421の各々は、図1に示した処理実行部111と同じ機能を有する。1次キャッシュ制御部412および422の各々は、図1に示した1次キャッシュ制御部112と同じ機能を有する。1次キャッシュメモリ413および423の各々は、図1に示した1次キャッシュメモリ113と同じ機能を有する。このため、これらの詳細な説明は省略する。
プロセッサ403または404は、1次キャッシュメモリ413または423および2次キャッシュメモリ407のいずれか、または両方を介さずに主記憶装置101にアクセス可能であるが、本発明の主眼ではないので図4ではプロセッサ403または404と主記憶装置101との接続線の記載を省略する。
処理実行部411または421は、仮想プロセッサ制御部402から実行対象となった仮想プロセッサVPのコンテキストが設定されると、実行対象の仮想プロセッサVPのプログラムを逐次実行する。これにより、仮想プロセッサVPが処理を実行する。また、処理実行部411または421は、仮想プロセッサVPのコンテキスト内にあるキャッシュ割当て情報203を、通知元のプロセッサがプロセッサ403であるのかプロセッサ404であるのかを識別するためのプロセッサIDとともに、2次キャッシュ制御部406に対して通知する。
仮想プロセッサ制御部402は、各プロセッサ403、404の仮想プロセッサVPの切り替えを行う。まず、仮想プロセッサ制御部402は、切り替えを行う対象プロセッサの処理実行部411(または421)で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ103内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部402は、次に実行すべき仮想プロセッサVPを選択する。そして、仮想プロセッサ制御部402は、コンテキストメモリ103に記憶されている、選択された仮想プロセッサVPのコンテキストを切り替えが生じた処理実行部411(または421)に設定する。この一連の動作により、仮想プロセッサ制御部402は、複数の仮想プロセッサVPを実現する。なお、仮想プロセッサVPは、例えばラウンドロビン方式に従って選択されてもよいし、予め定められた仮想プロセッサVPの優先度に従って選択されてもよい。
整合性維持部405は、1次キャッシュメモリ413に記憶されているデータと1次キャッシュメモリ423に記憶されているデータとの整合性を維持するための処理を行なう。つまり、整合性維持部405は、プロセッサ間で共有されるデータの一貫性を、1次キャッシュメモリ間で不整合を起こさないようにスヌープ等の既知の技術を用いて保証する。
2次キャッシュ制御部406は、処理実行部411(または421)からキャッシュ割当て情報203とプロセッサIDを通知してもらう。そして、1次キャッシュ制御部412(または422)から要求アドレスを受信した場合、2次キャッシュ制御部406は、受信した要求アドレスのデータが2次キャッシュメモリ407のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在しなかった場合は、2次キャッシュ制御部406は、キャッシュ割当て情報203を参照し、2次キャッシュメモリ407の対象のウェイに要求アドレスのデータをキャッシングする。要求アドレスのデータが存在する場合は、2次キャッシュ制御部406は、プロセッサIDを判別し、プロセッサIDで指定されるプロセッサの1次キャッシュ制御部412(または422)に要求アドレスのデータを出力する。1次キャッシュ制御部412(または422)は、1次キャッシュメモリ413(または423)のキャッシュラインに、受け取った要求アドレスのデータをキャッシングする。
2次キャッシュメモリ407は、そのキャッシュ方式が4ウェイセットアソシアティブ方式であり、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサVPが指定される。ここでは、ウェイ0(ウェイ407a)は仮想プロセッサVP0(コンテキスト103a)に、ウェイ1(ウェイ407b)は仮想プロセッサVP1(コンテキスト103b)に、ウェイ2(ウェイ407c)は仮想プロセッサVP2(コンテキスト103c)に、ウェイ3(ウェイ407d)は仮想プロセッサVP3(コンテキスト103d)に割当てられる。プロセッサ403(または404)からデータの読み込みまたは書き込みの要求を受信した場合は、2次キャッシュメモリ407は、要求を受信した順序に従ってデータの読み込みまたは書き込み処理を行う。また、プロセッサ403および404から同時に要求を受信した場合は、2次キャッシュメモリ407は、プロセッサ403の要求を優先して処理する。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、2次キャッシュメモリ407内のキャッシュラインごとに仮想プロセッサを割り当て(例えば、参考文献1参照)、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報203としてもよい。ここで、キャッシュ割当て情報203は、仮想プロセッサごとに、割り当てられる2次キャッシュメモリ407のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数をソフトウェアから指定できるようにすることにより、より柔軟に制御が可能となることはいうまでもない。なお、本発明においてウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
次に計算機システム400の動作について、図5および図6のフローチャートを用いて説明する。図5では起動時の動作について説明し、図6では仮想プロセッサの切り替わり動作について説明する。説明の簡単化のため、仮想プロセッサVPの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサVPの実行順はVP0→VP1→VP2→VP3→VP0(以降繰り返し)とする。
図5を用いて、計算機システム400が起動時の動作について説明する。
(ステップS501)仮想プロセッサ制御部402は、仮想プロセッサVPの選択方法に従って、仮想プロセッサを選択する。ここでは、プロセッサ403に対して仮想プロセッサVP0(コンテキスト103a)が選択され、プロセッサ404に対して仮想プロセッサVP1(コンテキスト103b)が選択されたものとする。
(ステップS502)次に、仮想プロセッサ制御部402は、プロセッサ403の処理実行部411に、仮想プロセッサVP0のコンテキスト103aを設定する。また、仮想プロセッサ制御部402は、プロセッサ404の処理実行部421に、仮想プロセッサVP1のコンテキスト103bを設定する。ここで、プロセッサ403、404の設定順序に制限はない。
(ステップS503、S504)各処理実行部にそれぞれのコンテキストが設定され、ラウンドロビン方式で許可された時間の間、処理実行部411(または421)は、仮想プロセッサVPのプログラムを実行する。許可された時間を消費した場合は、処理実行部411(または421)は実行を停止し、切り替え要求を仮想プロセッサ制御部402に対して発行する。
次に、上記状態から仮想プロセッサVPが切り替わる際のフローについて図6を用いて説明する。ここでは、処理実行部411で実行されていた仮想プロセッサVP0のプログラムが、許可された時間を消費した場合を例に説明する。
(ステップS601)仮想プロセッサ制御部402は、プロセッサ403から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がある場合は、ステップS620へ遷移し、切り替え要求がない場合は、ステップS602に遷移する。
(ステップS620)仮想プロセッサ制御部402は、次に実行する仮想プロセッサVPを選択する。ここでは、仮想プロセッサVP2(コンテキスト103c)が選択されたとする。なお、順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったプロセッサの順に従って、次に実行する仮想プロセッサが選択される。また、プロセッサ403およびプロセッサ404から同時に仮想プロセッサの切り替え要求があった場合は、プロセッサ403を優先する。つまり、仮想プロセッサ制御部402は、プロセッサ403で次に実行する仮想プロセッサを選択した後に、プロセッサ404で次に実行する仮想プロセッサを選択する。
(ステップS621)仮想プロセッサ制御部402は、仮想プロセッサVPの入れ替えを行う。上述の場合には、処理実行部411は仮想プロセッサVP0の実行を停止する。そして、仮想プロセッサ制御部402が仮想プロセッサVP0のコンテキストをコンテキストメモリ103のコンテキスト103aへ退避し、選択した仮想プロセッサVP2のコンテキスト103cを処理実行部411へ設定する。
(ステップS602)プログラム実行処理(ステップS602)では、図3のステップS304〜S308と同じ処理が実行される。ただし、1次キャッシュ制御部412からの要求アドレスのデータが2次キャッシュメモリ407のキャッシュラインに存在しない場合は、2次キャッシュ制御部406は、キャッシュ割当て情報203を参照し、ウェイ0(ウェイ407a)に対して、主記憶装置101からデータを転送する。また、2次キャッシュ制御部406は、転送したデータを、プロセスIDを参照し対象の1次キャッシュメモリ413へも同時に転送する。なお、ウェイ0にデータを転送するのは、仮想プロセッサVP0が実行中であるからであり、他の仮想プロセッサVPが実行中の場合には、他のウェイにデータが転送されるのは言うまでもない。
プロセッサ404においては、ステップS611、S612、S620およびS621の処理が実行される。ステップS611およびS612の処理は、処理が実行されるプロセッサが異なるだけであり、ステップS601およびS602の処理とそれぞれ同じである。
以上説明したように、本実施の形態によれば、プロセッサが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域(ウェイ)を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
なお、本実施の形態によれば、計算機システム400に備えるプロセッサ数を制限するものではない。
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、2次キャッシュメモリを共用化し、3次キャッシュメモリを分割する構成であってもよい。
なお、本実施の形態によれば、2次キャッシュメモリ407のウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
なお、本実施の形態によれば、2次キャッシュメモリ407の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
なお、本実施の形態によれば、コンテキストメモリ103に保持する仮想プロセッサ数に制限はない。
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、LRU(Least Recently Used)方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
なお、本実施の形態によれば、キャッシュ割当て情報203の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報203の設定方法について制限するものではない。
(実施の形態3)
以下、本発明の実施の形態3に係る計算機システムについて、図面を参照しながら説明する。実施の形態1に係る計算機システムはプロセッサ内に1つの処理実行部を備えていたが、実施の形態3に係る計算機システムはプロセッサ内に複数のスレッド実行部を備え、プロセッサが複数のハードウェアスレッドおよびマルチスレッディング機構を有する。
図7は、実施の形態3に係る計算機システムのハードウェア構成を示すブロック図である。計算機システム700は、プロセッサ703と、コンテキストメモリ103と、仮想プロセッサ制御部702と、整合性維持部405と、2次キャッシュ制御部406と、2次キャッシュメモリ407と、主記憶装置101とを備える。
プロセッサ703は、ハードウェアスレッドを有するマルチスレッディング機構を備えている。ここで、説明の簡略化のためハードウェアスレッドの個数は2個とし、以降、個々のハードウェアスレッドをスレッド実行部711a、スレッド実行部711bと呼称する。
なお、図7は本発明の一実施の形態を示したものであり、本発明において、ハードウェアスレッドが2個に限定されるものでない。以降の説明において、図1または図4と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
プロセッサ703は、スレッド実行部711aと、1次キャッシュ制御部712aと、1次キャッシュメモリ713aと、スレッド実行部711bと、1次キャッシュ制御部712bと、1次キャッシュメモリ713bとを備える。なお、1次キャッシュメモリはハードウェアスレッドごとに備えられ、該ハードウェアスレッド上で動作する仮想プロセッサ間で共用される。
プロセッサ703は1次キャッシュメモリ713a(または713b)および2次キャッシュメモリ407のいずれか、または両方を介さずに主記憶装置101にアクセス可能であるが、本発明の主眼ではないので図7ではプロセッサ703と主記憶装置101との接続線の記載を省略する。
スレッド実行部711aまたは711bは、仮想プロセッサ制御部702から実行対象となった仮想プロセッサVPのコンテキストが設定されると、実行対象の仮想プロセッサVPのプログラムを逐次実行する。また、スレッド実行部711aまたは711bは、仮想プロセッサVPのコンテキスト内にあるキャッシュ割当て情報203と、通知元のハードウェアスレッドがスレッド実行部711aであるのかスレッド実行部711bであるのかを識別するためのスレッドIDとともに、2次キャッシュ制御部406へ通知する。
1次キャッシュ制御部712aは、スレッド実行部711aからの要求アドレスのデータが1次キャッシュメモリ713a上のキャッシュラインに存在するか否かを調べ、1次キャッシュ制御部712bは、スレッド実行部711bからの要求アドレスのデータが1次キャッシュメモリ713b上のキャッシュラインに存在するか調べる。もし、各スレッド実行部で使用する1次キャッシュメモリ上に要求アドレスのデータが存在しない場合は、キャッシュミスとなり、1次キャッシュ制御部712aまたは712bは、2次キャッシュ制御部406に対して要求アドレスを通知する。
1次キャッシュメモリ713aまたは713bは、一般的にプロセッサに用いられるキャッシュメモリである。各キャッシュメモリは、各スレッド上で動作する複数の仮想プロセッサ間で共用される。
仮想プロセッサ制御部702は、各スレッド実行部上で処理が実行される仮想プロセッサの切り替えを行う。まず、仮想プロセッサ制御部702は、切り替えを行う対象のスレッド実行部で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ103内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部702は、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部702は、コンテキストメモリ103に記憶されている、選択された仮想プロセッサのコンテキストを切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部702は、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、例えばラウンドロビン方式に従って選択してもよいし、予め定められた仮想プロセッサの優先度に従って選択してもよい。または、仮想プロセッサのコンテキストごとに、仮想プロセッサを動作させるスレッド実行部の指定情報をコンテキストにさらに追加し、仮想プロセッサ制御部702がその指定情報を参照することで、動作させる仮想プロセッサを選択する方法も考えられる。
次に計算機システム700における仮想プロセッサの切り替わりの動作について、図8のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサVPの選択方法はラウンドロビン方式であるものとする。つまり、仮想プロセッサVPの実行順はVP0→VP1→VP2→VP3→VP0(以降繰り返し)とし、現在、スレッド実行部711aに仮想プロセッサVP0、スレッド実行部711bに仮想プロセッサVP1が設定されているものとする。そして、仮想プロセッサVP0が許可された時間を消費し、切り替わる際の動作として説明する。
(ステップS801)まず、仮想プロセッサ制御部702は、スレッド実行部711aおよびスレッド実行部711bから仮想プロセッサVPの切り替え要求があるか否かを判定する。切り替え要求がある場合には、ステップS820に遷移し、切り替え要求がない場合には、ステップS802に遷移する。
(ステップS820)仮想プロセッサ制御部702は、次に実行する仮想プロセッサを選択する。ここでは、仮想プロセッサVP2(コンテキスト103c)が選択されたものとする。なお、各スレッド実行部から順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったスレッド実行部の順に従って、次に実行する仮想プロセッサを選択する。また、スレッド実行部711aおよび711bから同時に仮想プロセッサの切り替え要求があった場合は、スレッド実行部711aを優先する。つまり、仮想プロセッサ制御部702は、スレッド実行部711aで次に実行する仮想プロセッサを選択した後、スレッド実行部711bで次に実行する仮想プロセッサを選択する。
(ステップS821)仮想プロセッサ制御部702は、仮想プロセッサVPの入れ替えを行う。上述の場合には、スレッド実行部711aは仮想プロセッサVP0の実行を停止する。そして、仮想プロセッサ制御部702が仮想プロセッサVP0のコンテキストをコンテキストメモリ103のコンテキスト103aへ退避し、選択した仮想プロセッサVP2のコンテキスト103cをスレッド実行部711aへ設定する。
(ステップS802)スレッド実行部711aは、設定された仮想プロセッサVPのコンテキストに従ってプログラムを逐次実行する。ここでは、スレッド実行部711aは、仮想プロセッサVP2のコンテキストに従ってプログラムを実行する。
(ステップS803)仮想プロセッサVPのプログラム実行中に、1次キャッシュ制御部712aは、スレッド実行部711aからの要求アドレスのデータが1次キャッシュメモリ713aのキャッシュラインに存在しているか否かを判定する。存在していない場合は、1次キャッシュ制御部712aは、キャッシュミスと判断し、2次キャッシュ制御部406に対して要求アドレスを通知し、ステップS804に遷移する。存在している場合には、ステップS801に遷移する。
(ステップS804)2次キャッシュ制御部406は、1次キャッシュ制御部712aから通知された要求アドレスのデータが2次キャッシュメモリ407上の該当キャッシュラインに存在するか否かを判定する。この際、要求元のスレッド実行部711aで動作中の仮想プロセッサVPに割り当てられたウェイ以外のウェイのキャッシュラインに対しても、要求アドレスのデータが存在するか否かを判定する。要求アドレスのデータが2次キャッシュメモリ407のキャッシュライン上に存在する場合には、ステップS805に遷移し、存在しない場合は、ステップS806に遷移する。
(ステップS805)2次キャッシュ制御部406は、1次キャッシュ制御部712aを介して、2次キャッシュメモリ407上の該当キャッシュラインのデータを1次キャッシュメモリ713aのキャッシュラインに転送する。
(ステップS806)2次キャッシュ制御部406は、キャッシュ割当て情報203を参照する。ここでは、スレッド実行部711aで仮想プロセッサVP2が実行中にキャッシュミスしたとする。この場合は、2次キャッシュ制御部406は、仮想プロセッサVP2に割当てられた2次キャッシュメモリ407上のウェイ2(407c)に対して、主記憶装置101からデータを転送する。また、転送したデータを1次キャッシュメモリ713aへも同時に転送する。
スレッド実行部711bにおいては、ステップS811〜S816、S820およびS821の処理が実行される。なお、ステップS811〜S816の処理については、処理が実行されるスレッド実行部が異なるだけであり、ステップS801〜S806の処理とそれぞれ同じである。
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサにおいて、ハードウェアスレッドが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域(ウェイ)を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
なお、本実施の形態によれば、計算機システム700に備えるハードウェアスレッド数を制限するものではない。
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、2次キャッシュメモリを共用化し、3次キャッシュメモリを分割する構成であってもよい。
なお、本実施の形態によれば、2次キャッシュメモリ407のウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
なお、本実施の形態によれば、2次キャッシュメモリ407の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
なお、本実施の形態によれば、コンテキストメモリ103に保持する仮想プロセッサ数に制限はない。
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、LRU(Least Recently Used)方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
なお、本実施の形態によれば、キャッシュ割当て情報203の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報203の設定方法について制限するものではない。
(実施の形態4)
以下、本発明の実施の形態4に係る計算機システムについて、図面を参照しながら説明する。実施の形態3に係る計算機システムは複数のスレッド実行部を有するプロセッサを1つ備えていたが、実施の形態4に係る計算機システムは複数のスレッド実行部を有するプロセッサを2つ備えている。
図9は、実施の形態4に係る計算機システムのハードウェア構成を示すブロック図である。以降の説明において、図1または図7と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
計算機システム900は、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサ908、909と、コンテキストメモリ903と、仮想プロセッサ制御部902と、整合性維持部904と、2次キャッシュ制御部905と、2次キャッシュメモリ906と、主記憶装置101とを備える。なお、図9は本発明の一実施の形態を示したものであり、本発明において、各プロセッサのハードウェアスレッドが2個に限定されるものでない。以降の説明において、図1または図7と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
主記憶装置101は、システムバス105および2次キャッシュメモリ906を介してプロセッサ908および909と接続されており、プロセッサ908または909の要求に従い主記憶装置101内のデータを読み出し、2次キャッシュメモリ906へ転送する。プロセッサ908または909の要求に従い、書き込みも同様に行われる。
コンテキストメモリ903は、コンテキストメモリ103と同じ情報を仮想プロセッサ分保持しており、仮想プロセッサ数が異なるだけである。実施の形態4では、仮想プロセッサの数を6個とする。
プロセッサ908および909の各々は、プロセッサ703と同じ構成を有する。なお、各1次キャッシュメモリはハードウェアスレッドごとに備えられ、該ハードウェアスレッド上で動作する仮想プロセッサ間で共用される。つまり、プロセッサ908におけるスレッド実行部711aは1次キャッシュメモリ713a、スレッド実行部711bは1次キャッシュメモリ713bを使用し、プロセッサ909におけるスレッド実行部711aは1次キャッシュメモリ713a、スレッド実行部711bは1次キャッシュメモリ713bを使用する。プロセッサ908および909の機能、動作については、実施の形態3のプロセッサ703の同様であるため、その説明を省略する。プロセッサ908および909の各々は、1次キャッシュメモリ713a(または713b)、および2次キャッシュメモリ906のいずれか、または両方を介さずに主記憶装置101にアクセス可能であるが、本発明の主眼ではないので、プロセッサ908または909と主記憶装置101との間の接続線は図9では記載を省略する。
仮想プロセッサ制御部902は、各スレッド実行部上で処理が実行される仮想プロセッサの切り替えを行う。まず、仮想プロセッサ制御部902は、切り替えを行う対象のスレッド実行部で処理を実行中の仮想プロセッサのコンテキストを、コンテキストメモリ903内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部902は、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部902は、コンテキストメモリ903に記憶されている、選択された仮想プロセッサのコンテキスト(コンテキスト903a、903b、903c、903d、903e、903fのいずれか)を切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部902は、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、ラウンドロビン方式に従って選択してもよいし、予め定められた仮想プロセッサの優先度に従って選択してもよい。
整合性維持部904は、プロセッサ908および909間、ならびに各プロセッサのスレッド間で共有されるデータを1次キャッシュメモリ間で不整合を起こさないように既知の技術を用いてデータの一貫性を保証する。
2次キャッシュ制御部905は、各スレッド実行部からキャッシュ割当て情報203を通知してもらう。そして、プロセッサ908の1次キャッシュ制御部712aもしくは712b、またはプロセッサ909の1次キャッシュ制御部712aもしくは712bから要求アドレスを受信した場合、2次キャッシュ制御部905は、受信した要求アドレスのデータが2次キャッシュメモリ906のキャッシュラインに存在するか否かを調べる。要求アドレスのデータが存在しなかった場合は、2次キャッシュ制御部905は、キャッシュ割当て情報203を参照し、対象のウェイに要求アドレスのデータをキャッシングする。要求アドレスのデータが存在する場合は、2次キャッシュ制御部905は、スレッドIDを判別し、対象の1次キャッシュメモリのキャッシュラインにキャッシングする。
2次キャッシュメモリ906は、そのキャッシュ方式が6ウェイセットアソシアティブ方式であり、ウェイ単位で分割され、ウェイごとに使用する仮想プロセッサVPが指定される。ここでは、ウェイ0(ウェイ906a)は仮想プロセッサVP0(コンテキスト903a)に、ウェイ1(ウェイ906b)は仮想プロセッサVP1(コンテキスト903b)に、ウェイ2(ウェイ906c)は仮想プロセッサVP2(コンテキスト903c)に、ウェイ3(ウェイ906d)は仮想プロセッサVP3(コンテキスト903d)に、ウェイ4(ウェイ906e)は仮想プロセッサVP4(コンテキスト903e)に、ウェイ5(ウェイ906f)は仮想プロセッサVP5(コンテキスト903f)に割当てられる。各スレッド実行部の1次キャッシュ制御部からデータの読み込み、または書き込みの要求を受信した場合は、2次キャッシュメモリ906は、要求を受信した順序に従ってデータの読み込みまたは書き込み処理を行う。また、複数の1次キャッシュ制御部から同時に要求を受信した場合は、2次キャッシュメモリ906は、予め定められた1次キャッシュ制御部の優先度に従ってデータの読み込みまたは書き込み処理を行なう。例えば、プロセッサ908の1次キャッシュ制御部712aの優先度を1、1次キャッシュ制御部712bの優先度を2、プロセッサ909の1次キャッシュ制御部712aの優先度を3、1次キャッシュ制御部712bの優先度を4とし、2次キャッシュメモリ906は、優先度が若い1次キャッシュ制御部の要求を優先的に処理することとする。なお、本実施の形態ではウェイごとに仮想プロセッサを割当てているが、2次キャッシュメモリ906内のキャッシュラインごとに仮想プロセッサを割り当て(参考文献1)、キャッシュラインと仮想プロセッサとの対応関係を示す情報をキャッシュ割当て情報203としてもよい。ここで、キャッシュ割当て情報203は、仮想プロセッサごとに、割り当てられる2次キャッシュメモリ906の領域、ウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数をソフトウェアから指定できるようにすることにより、より柔軟に制御が可能となることはいうまでもない。
次に計算機システム900の動作について、図10のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサVPの選択方法はラウンドロビン方式であるものとする。仮想プロセッサVPの実行順はVP0→VP1→VP2→VP3→VP4→VP5→VP0(以降繰り返し)とし、起動時にプロセッサ908のスレッド実行部711aに仮想プロセッサVP0、スレッド実行部711bに仮想プロセッサVP1、プロセッサ909のスレッド実行部711aに仮想プロセッサVP2、スレッド実行部711bに仮想プロセッサVP3が設定されているものとする。
なお、以下のフローチャートの説明において、プロセッサ908とプロセッサ909の動作は、プロセッサ703の動作と同じである。このため、計算機システム700との差分についてのみ説明する。
図10には、ステップS1001〜S1004の処理の組が4つ存在する。つまり、4つの処理の流れが存在するが、各処理の流れが、スレッド実行部、1次キャッシュ制御部および1次キャッシュメモリからなる各組の処理の流れに対応する。
(ステップS1001)まず、仮想プロセッサ制御部902は、プロセッサ908および909の各スレッド実行部から仮想プロセッサの切り替え要求があるか否かを判定する。切り替え要求がある場合は、ステップS1002に遷移し、切り替え要求がない場合は、S1004に遷移する。
(ステップS1002)仮想プロセッサ制御部902は、次に実行する仮想プロセッサを選択する。ここでは、仮想プロセッサVP4(コンテキスト903e)が選択されたものとする。なお、各スレッド実行部から順々に仮想プロセッサの切り替え要求があった場合は、要求を行ったスレッド実行部の順に従って、次に実行する仮想プロセッサを選択する。また、複数のスレッド実行部から同時に仮想プロセッサの切り替え要求があった場合は、予め定められたスレッド実行部の優先度に従って、次に実行する仮想プロセッサを選択する。例えば、プロセッサ908のスレッド実行部711aの優先度を1、スレッド実行部711bの優先度を2、プロセッサ909のスレッド実行部711aの優先度を3、スレッド実行部711bの優先度を4とし、優先度が若いスレッド実行部からの要求を優先させて仮想プロセッサを切り替える。
(ステップS1003)図8のステップS821と同じ動作を行う。
(ステップS1004)プログラム実行処理が実行される。プログラム実行処理(ステップS1004)では、図8のステップS802〜S806と同じ処理が実行される。
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサが複数個あり、各プロセッサにハードウェアスレッドが複数個あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各仮想プロセッサに、各プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域(ウェイ)を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
なお、本実施の形態によれば、計算機システム900に備えられるマルチスレッディング機構を備えたプロセッサ数、ハードウェアスレッド数を制限するものではない。
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、2次キャッシュメモリを共用化し、3次キャッシュメモリを分割する構成であってもよい。
なお、本実施の形態によれば、2次キャッシュメモリ906のウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
なお、本実施の形態によれば、2次キャッシュメモリ906の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
なお、本実施の形態によれば、コンテキストメモリ903に保持する仮想プロセッサ数に制限はない。
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、LRU(Least Recently Used)方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
なお、本実施の形態によれば、キャッシュ割当て情報203の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報203の設定方法について制限するものではない。
(実施の形態5)
以下、本発明の実施の形態5に係る計算機システムについて、図面を参照しながら説明する。実施の形態4に係る計算機システムでは、プロセッサ間でコンテキストメモリを共用しており、各プロセッサが処理を実行する仮想プロセッサを同種のものとしていた。これに対して、実施の形態5に係る計算機システムは、プロセッサごとにコンテキストメモリを備え、各プロセッサが処理を実行する仮想プロセッサをプロセッサ間で異なる種類にする。
図11は、実施の形態5に係る計算機システムのハードウェア構成を示すブロック図である。以降の説明において、図1、図7または図9と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
計算機システム1100は、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサ1108、1109と、コンテキストメモリ1101、1102と、仮想プロセッサ制御部1103a、1103bと、整合性維持部904と、2次キャッシュ制御部905と、2次キャッシュメモリ906と、主記憶装置101とを備える。なお、図11は本発明の一実施の形態を示したものであり、本発明において、各プロセッサのハードウェアスレッドが2個に限定されるものでなく、またプロセッサ数も2個に限定するものではない。プロセッサ1108および1109の各々は、1次キャッシュメモリ713a(または713b)、および2次キャッシュメモリ906のいずれか、または両方を介さずに主記憶装置にアクセス可能であるが、本発明の主眼ではないので図11ではプロセッサ1108または1109と主記憶装置101とを接続する接続線の記載を省略する。以降の説明において、図1、図7または図9と同じ参照符号の構成要素は同一の機能を有する。このため、その説明を省略する。
コンテキストメモリ1101、1102は、図9におけるコンテキストメモリ903と同じ情報を仮想プロセッサ分保持しており、仮想プロセッサ数が異なるだけである。なお、仮想プロセッサのコンテキスト数を制限するものではない。コンテキストメモリ1101は、仮想プロセッサVP0〜VP2のコンテキストを記憶しており、コンテキストメモリ1102は、仮想プロセッサVP3〜VP5のコンテキストを記憶している。
仮想プロセッサ制御部1103aは、プロセッサ1108の各スレッド実行部で処理が実行される仮想プロセッサの切り替えを行い、仮想プロセッサ制御部1103bは、プロセッサ1109の各スレッド実行部で処理が実行される仮想プロセッサの切り替えを行う。仮想プロセッサ制御部1103aは、切り替えの際、プロセッサ1108で動作していた仮想プロセッサのコンテキストをコンテキストメモリ1101内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部1103aは、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部1103aは、コンテキストメモリ1101に記憶されている、選択された仮想プロセッサのコンテキスト(コンテキスト1101a、1101b、1101cのいずれか)を切り替えが生じたスレッド実行部に設定する。この一連の動作により、仮想プロセッサ制御部1103aは、複数の仮想プロセッサを実現する。また、仮想プロセッサ制御部1103bは、プロセッサ1109で切り替えの際は動作していた仮想プロセッサのコンテキストをコンテキストメモリ1102内の該当する格納先へ書き込む。次に、仮想プロセッサ制御部1103bは、次に実行すべき仮想プロセッサを選択する。そして、仮想プロセッサ制御部1103bは、コンテキストメモリ1102に記憶されている、選択された仮想プロセッサのコンテキスト(コンテキスト1102a、1102b、1102cのいずれか)を切り替えが生じたスレッド実行部へ設定する。この一連の動作により、仮想プロセッサ制御部1103bは、複数の仮想プロセッサを実現する。なお、仮想プロセッサは、ラウンドロビン方式に従って選択してもよいし、予め定められた優先度に従って選択してもよい。
次に計算機システム1100の動作について、図12のフローチャートを用いて説明する。説明の簡単化のため、仮想プロセッサVPの選択方法はラウンドロビン方式であるものとする。コンテキストメモリ1101にコンテキストが記憶されている仮想プロセッサVPの実行順はVP0→VP1→VP2(以降繰り返し)とし、コンテキストメモリ1102にコンテキストが記憶されている仮想プロセッサVPの実行順はVP3→VP4→VP5(以降繰り返し)とする。また、起動時にプロセッサ1108のスレッド実行部711aに仮想プロセッサVP0(コンテキスト1101a)、スレッド実行部711bに仮想プロセッサVP1(コンテキスト1101b)、プロセッサ1109のスレッド実行部711aに仮想プロセッサVP3(コンテキスト1102a)、スレッド実行部711bに仮想プロセッサVP4(コンテキスト1102b)が設定されているものとする。
なお、以下のフローチャートの説明において、プロセッサ1108とプロセッサ1109の動作は、プロセッサ703の動作と同じである。
図12には、ステップS1201〜S1204の処理の組が4つ存在する。つまり、4つの処理の流れが存在するが、各処理の流れが、スレッド実行部、1次キャッシュ制御部および1次キャッシュメモリからなる各組の処理の流れに対応する。
本実施の形態では、計算機システム1100におけるコンテキストメモリと、仮想プロセッサがプロセッサごとにある構成をとっている。そのため、図12におけるフローチャートの説明において、プロセッサ1108が実行する処理の説明を行うが、プロセッサ1109が実行する処理の説明は、プロセッサ1108が実行する処理の説明と同じである。
(ステップS1201)図8のステップS801と同じ動作を行う。
(ステップS1202)図8のステップS820と同じ動作を行う。
(ステップS1203)図8のステップS821と同じ動作を行う。
(ステップS1204)プログラム実行処理が実行される。プログラム実行処理(ステップS1204)では、図8のステップS802〜S806と同じ処理が実行される。
以上説明したように、本実施の形態によれば、マルチスレッディング機構を備えたプロセッサが複数個(2個以上)あり、各プロセッサにハードウェアスレッドが複数個(2個以上)あった場合においても、各プロセッサコアに近いキャッシュメモリを仮想プロセッサ間で共用し、各課そうプロセッサに、各プロセッサコアから遠いキャッシュメモリのいずれかの記憶領域(ウェイ)を割り当てている。これにより、仮想プロセッサの切り替え時の切り替えロスを小さくすることができる。また、仮想プロセッサごとの性能設計を容易化しつつ、かつプロセッサコアに近いキャッシュメモリの回路の簡素化によりプロセッサの高速化が容易になる。さらに、プロセッサコアに近いキャッシュメモリを共用することで、このキャッシュに対しては小容量のキャッシュメモリでよくなりチップコストが良化する。
なお、本実施の形態によれば、計算機システム1100に備えられるマルチスレッディング機構を備えたプロセッサ数、ハードウェアスレッド数を制限するものではない。
なお、本実施の形態によれば、プロセッサコアに近いキャッシュメモリを共用化し、プロセッサコアから遠いキャッシュメモリを分割する構成であり、共用するメモリ階層と分割するメモリ階層を特定の階層に限定するものではない。例えば、2次キャッシュメモリを共用化し、3次キャッシュメモリを分割する構成であってもよい。
なお、本実施の形態によれば、2次キャッシュメモリ906のウェイ数を限定するものではなく、またキャッシュ方式もnウェイセットアソシアティブ方式に限定されるものではない。
なお、本実施の形態によれば、2次キャッシュメモリ906の分割単位は、ウェイ単位である必然性はなく、キャッシュラインをいくつか束ねた単位でもよい。その束ね方についても、特に制限するものではない。
なお、本実施の形態によれば、コンテキストメモリ1101、1102に保持する仮想プロセッサ数に制限はない。
なお、本実施の形態によれば、仮想プロセッサスケジューリング方法については、ラウンドロビン方式や、優先度を用いて実行する仮想プロセッサを選択する方式以外を使用してもよく、仮想プロセッサスケジューリング方法を制限するものではない。
なお、本実施の形態によれば、キャッシュ入れ替えアルゴリズムについては、LRU(Least Recently Used)方式のアルゴリズムや、優先度または使用頻度などを考慮したキャッシュ入れ替えアルゴリズムなどを使用してもよく、キャッシュ入れ替えアルゴリズムを制限するものではない。
なお、本実施の形態によれば、キャッシュ割当て情報203の設定方法については、ソフトウェアから指定する方法や、ハードウェアにより指定する方法でもよく、キャッシュ割当て情報203の設定方法について制限するものではない。
また、上記実施の形態を組み合わせるとしても良い。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及びおよび範囲内でのすべての変更が含まれることが意図される。
本発明は、仮想プロセッサが時分割で実行しうる仮想マルチプロセッサ、ハードウェアスレッドを有するマルチスレッディング機構を備えたプロセッサにおいて、多階層キャッシュメモリを備える計算機システムなどに有用であり、多種多様な機能を備えた計算機システムの高速化、および機能ごとの独立性設計の容易化することができる。
100、400、700、900、1100 計算機システム
101 主記憶装置
102、403、404、703、908、909、1108、1109 プロセッサ
103、903、1101、1102 コンテキストメモリ
103a〜103d、903a〜903f、1101a〜1101c、1102a〜1102c コンテキスト
104、402、702、902、1103a、1103b 仮想プロセッサ制御部
105 システムバス
106、406、905 2次キャッシュ制御部
107、407、906 2次キャッシュメモリ
107a〜107d、407a〜407d、906a〜906f ウェイ
111、411、421 処理実行部
112、412、712a、712b 1次キャッシュ制御部
113、413、713a、713b 1次キャッシュメモリ
201 レジスタセットの値
202 制御情報
203 キャッシュ割当て情報
405、904 整合性維持部
711a、711b スレッド実行部

Claims (10)

  1. データを保持する主記憶装置と、
    仮想マルチプロセッサ機構を有する第1プロセッサ内に設けられ、複数の仮想プロセッサ上で実行される処理を逐次実行する第1処理実行部と、
    前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶する第1共用キャッシュメモリと、
    仮想プロセッサのプロセッサ数に応じて分割された複数の記憶領域を有し、各前記仮想プロセッサに各前記記憶領域が対応付けられ、各前記記憶領域が、当該記憶領域に対応付けられた仮想プロセッサが利用するデータを記憶する、前記第1共用キャッシュメモリよりも下位の記憶階層のキャッシュメモリである分割キャッシュメモリと、
    仮想プロセッサごとに、当該仮想プロセッサに対応するコンテキストを記憶している第1コンテキストメモリと、
    前記第1処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第1処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第1処理実行部で実行される仮想プロセッサのコンテキストを前記第1処理実行部に設定する仮想プロセッサ制御部と、
    前記第1共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1共用キャッシュメモリに書き込むための制御を行う第1共用キャッシュ制御部と、
    前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う分割キャッシュ制御部と
    を備える計算機システム。
  2. さらに、
    前記第1プロセッサとは異なる、仮想マルチプロセッサ機構を有する第2プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第2処理実行部と、
    前記第2処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第2共用キャッシュメモリと、
    前記第2共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第2共用キャッシュメモリに書き込むための制御を行う第2共用キャッシュ制御部と、
    前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、
    前記仮想プロセッサ制御部は、さらに、前記第2処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第2処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第2処理実行部で実行される仮想プロセッサのコンテキストを前記第2処理実行部に設定し、
    前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部または前記第2処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
    請求項1記載の計算機システム。
  3. 前記第1プロセッサは、複数のハードウェアスレッドおよびマルチスレッディング機構を有し、
    前記第1処理実行部は、ハードウェアによりスレッドの実行を実現し、
    前記計算機システムは、さらに、
    ハードウェアによりスレッドの実行を実現し、かつ前記第1プロセッサ内に設けられ、前記複数の仮想プロセッサ上で実行される処理を逐次実行する第2処理実行部と、
    前記第2処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第2共用キャッシュメモリと、
    前記第2共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第2共用キャッシュメモリに書き込むための制御を行う第2共用キャッシュ制御部と、
    前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行なう整合性維持部とを備え、
    前記仮想プロセッサ制御部は、さらに、前記第2処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第2処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第2処理実行部で実行される仮想プロセッサのコンテキストを前記第2処理実行部に設定し、
    前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを前記第1処理実行部または前記第2処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
    請求項1記載の計算機システム。
  4. さらに、
    ハードウェアによりスレッドの実行を実現し、前記第1プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第2プロセッサ内に設けられ、かつ、各々が前記複数の仮想プロセッサ上で実行される処理を逐次実行する第3処理実行部および第4処理実行部と、
    前記第3処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第3共用キャッシュメモリと、
    前記第3共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第3共用キャッシュメモリに書き込むための制御を行う第3共用キャッシュ制御部と、
    前記第4処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第4共用キャッシュメモリと、
    前記第4共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第4共用キャッシュメモリに書き込むための制御を行う第4共用キャッシュ制御部とを備え、
    前記整合性維持部は、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータと前記第3共用キャッシュメモリに記憶されているデータと前記第4共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、
    前記仮想プロセッサ制御部は、さらに、前記第3処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第3処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第3処理実行部で実行される仮想プロセッサのコンテキストを前記第3処理実行部に設定し、前記第4処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第4処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第1コンテキストメモリに退避し、前記第1コンテキストメモリに記憶されている、次に前記第4処理実行部で実行される仮想プロセッサのコンテキストを前記第4処理実行部に設定し、
    前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第1処理実行部、前記第2処理実行部、前記第3処理実行部または前記第4処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
    請求項3記載の計算機システム。
  5. さらに、
    ハードウェアによりスレッドの実行を実現し、前記第1プロセッサとは異なるプロセッサであって、複数のハードウェアスレッドおよびマルチスレッディング機構を有する第2プロセッサ内に設けられ、かつ、各々が複数の仮想プロセッサ上で実行される処理を逐次実行する第3処理実行部および第4処理実行部と、
    前記第3処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第3共用キャッシュメモリと、
    前記第3共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第3共用キャッシュメモリに書き込むための制御を行う第3共用キャッシュ制御部と、
    前記第4処理実行部で処理が実行される前記複数の仮想プロセッサ間で共用され、前記複数の仮想プロセッサが利用するデータを記憶し、前記分割キャッシュメモリよりも上位の記憶階層のキャッシュメモリである第4共用キャッシュメモリと、
    前記第4共用キャッシュメモリがキャッシュミスをした場合に、前記分割キャッシュメモリからキャッシュミスをしたデータを読み込み、読み込んだデータを前記第4共用キャッシュメモリに書き込むための制御を行う第4共用キャッシュ制御部と、
    前記第3処理実行部および前記第4処理実行部で処理が実行される前記複数の仮想プロセッサの各々について、当該仮想プロセッサに対応するコンテキストを記憶している第2コンテキストメモリとを備え、
    前記第1コンテキストメモリは、前記第1処理実行部および前記第2処理実行部で処理が実行される仮想プロセッサに対応するコンテキストを記憶しており、
    前記整合性維持部は、前記第1共用キャッシュメモリに記憶されているデータと前記第2共用キャッシュメモリに記憶されているデータと前記第3共用キャッシュメモリに記憶されているデータと前記第4共用キャッシュメモリに記憶されているデータとの整合性を維持するための処理を行ない、
    前記仮想プロセッサ制御部は、さらに、前記第3処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第3処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第2コンテキストメモリに退避し、前記第2コンテキストメモリに記憶されている、次に前記第3処理実行部で実行される仮想プロセッサのコンテキストを前記第3処理実行部に設定し、前記第4処理実行部で処理が実行される仮想プロセッサの切り替え要求に従って、前記第4処理実行部で処理が実行されている仮想プロセッサのコンテキストを前記第2コンテキストメモリに退避し、前記第2コンテキストメモリに記憶されている、次に前記第4処理実行部で実行される仮想プロセッサのコンテキストを前記第4処理実行部に設定し、
    前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記第1処理実行部、前記第2処理実行部、前記第3処理実行部または前記第4処理実行部で処理が実行されている仮想プロセッサに対応付けられている記憶領域に書き込むための制御を行う
    請求項3記載の計算機システム。
  6. 前記コンテキストは、前記分割キャッシュメモリが有する前記複数の記憶領域のうち、当該コンテキストに対応する仮想プロセッサが対応付けられた記憶領域を示すキャッシュ割当て情報を含み、
    前記分割キャッシュ制御部は、前記分割キャッシュメモリがキャッシュミスをした場合に、前記主記憶装置からキャッシュミスをしたデータを読み込み、読み込んだデータを、前記コンテキストメモリに記憶されている複数の前記コンテキストを参照することにより得られる前記キャッシュミスを生じさせた仮想プロセッサに対応付けられた記憶領域に書き込むための制御を行う
    請求項1〜5のいずれか1項に記載の計算機システム。
  7. 前記分割キャッシュメモリは、キャッシュ方式がnウェイセットアソシアティブ方式のウェイ単位またはキャッシュライン単位で前記複数の記憶領域に分割されている
    請求項1〜6のいずれか1項に記載の計算機システム。
  8. 前記コンテキストは、仮想プロセッサが独占的に使用する分割キャッシュメモリ上のウェイ位置およびウェイ数、またはキャッシュライン位置およびキャッシュライン数を示す情報を記憶している
    請求項7記載の計算機システム。
  9. 前記共用キャッシュメモリは1次キャッシュメモリであり、
    前記分割キャッシュメモリは2次キャッシュメモリである
    請求項1〜8のいずれか1項に記載の計算機システム。
  10. 前記共用キャッシュメモリは2次キャッシュメモリであり、
    前記分割キャッシュメモリは3次キャッシュメモリである
    請求項1〜8のいずれか1項に記載の計算機システム。
JP2010112657A 2010-05-14 2010-05-14 計算機システム Active JP5336423B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010112657A JP5336423B2 (ja) 2010-05-14 2010-05-14 計算機システム
CN201180017753.8A CN102822809B (zh) 2010-05-14 2011-01-06 计算机系统
PCT/JP2011/000015 WO2011142058A1 (ja) 2010-05-14 2011-01-06 計算機システム
US13/645,127 US9063794B2 (en) 2010-05-14 2012-10-04 Multi-threaded processor context switching with multi-level cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010112657A JP5336423B2 (ja) 2010-05-14 2010-05-14 計算機システム

Publications (2)

Publication Number Publication Date
JP2011242896A JP2011242896A (ja) 2011-12-01
JP5336423B2 true JP5336423B2 (ja) 2013-11-06

Family

ID=44914121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010112657A Active JP5336423B2 (ja) 2010-05-14 2010-05-14 計算機システム

Country Status (4)

Country Link
US (1) US9063794B2 (ja)
JP (1) JP5336423B2 (ja)
CN (1) CN102822809B (ja)
WO (1) WO2011142058A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361237B2 (en) * 2012-10-18 2016-06-07 Vmware, Inc. System and method for exclusive read caching in a virtualized computing environment
US9250954B2 (en) * 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US9396012B2 (en) * 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
EP2840503A1 (de) * 2013-08-22 2015-02-25 Continental Automotive GmbH Verfahren zum Betreiben eines Pufferspeichers einer Datenverarbeitungsanlage und Datenverarbeitungsanlage
CN108009007B (zh) * 2016-10-27 2021-01-15 华为技术有限公司 轻量级线程的调度方法及协同管理器、vCPU调度器
CN108255572A (zh) * 2016-12-29 2018-07-06 华为技术有限公司 一种vcpu切换方法和物理主机
JP6859755B2 (ja) * 2017-03-02 2021-04-14 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US10380034B2 (en) 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
US11074001B2 (en) * 2018-04-09 2021-07-27 Red Hat, Inc. Managing virtual-machine image cloning

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001236221A (ja) * 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6507892B1 (en) * 2000-02-21 2003-01-14 Hewlett-Packard Company L1 cache memory
JP3620473B2 (ja) 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
JP3813930B2 (ja) 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US6857046B1 (en) * 2002-03-28 2005-02-15 Cisco Technology, Inc. Caching for context switching applications
US7844801B2 (en) * 2003-07-31 2010-11-30 Intel Corporation Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
JP2006099332A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP4487744B2 (ja) * 2004-11-29 2010-06-23 富士通株式会社 マルチスレッド制御装置及び制御方法
JP4388005B2 (ja) * 2005-10-06 2009-12-24 パナソニック株式会社 コンテキスト切替え装置
JP5379122B2 (ja) 2008-06-19 2013-12-25 パナソニック株式会社 マルチプロセッサ

Also Published As

Publication number Publication date
US9063794B2 (en) 2015-06-23
WO2011142058A1 (ja) 2011-11-17
CN102822809A (zh) 2012-12-12
JP2011242896A (ja) 2011-12-01
US20130031310A1 (en) 2013-01-31
CN102822809B (zh) 2015-08-05

Similar Documents

Publication Publication Date Title
JP5336423B2 (ja) 計算機システム
US10198369B2 (en) Dynamic memory remapping to reduce row-buffer conflicts
US8732711B2 (en) Two-level scheduler for multi-threaded processing
US8719508B2 (en) Near neighbor data cache sharing
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
US10255228B2 (en) System and method for performing shaped memory access operations
US20080098178A1 (en) Data storage on a switching system coupling multiple processors of a computer system
US20130179662A1 (en) Method and System for Resolving Thread Divergences
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
JP4888839B2 (ja) キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US8806168B2 (en) Producer-consumer data transfer using piecewise circular queue
JP2005293300A (ja) セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
JP5499987B2 (ja) 共有キャッシュメモリ装置
Kopser et al. Overview of the next generation Cray XMT
US10585701B2 (en) Dynamically allocating storage elements to provide registers for processing thread groups
US8472455B2 (en) System and method for traversing a treelet-composed hierarchical structure
US8356141B2 (en) Identifying replacement memory pages from three page record lists
JP2004326175A (ja) プロセッサ、キャッシュシステム及びキャッシュメモリ
US11354127B2 (en) Method of managing multi-tier memory displacement using software controlled thresholds
US8966183B2 (en) Opportunistic cache replacement policy
JP2009151457A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
Aamodt et al. Memory System
JP2004326187A (ja) 情報処理装置およびその制御方法
WO2023099796A1 (es) Método para almacenar y acceder a un operando de datos en una unidad de memoria

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130801

R150 Certificate of patent or registration of utility model

Ref document number: 5336423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250