JP5543022B2 - データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法 - Google Patents

データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法 Download PDF

Info

Publication number
JP5543022B2
JP5543022B2 JP2013514780A JP2013514780A JP5543022B2 JP 5543022 B2 JP5543022 B2 JP 5543022B2 JP 2013514780 A JP2013514780 A JP 2013514780A JP 2013514780 A JP2013514780 A JP 2013514780A JP 5543022 B2 JP5543022 B2 JP 5543022B2
Authority
JP
Japan
Prior art keywords
access
local
access operation
data
shared
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
JP2013514780A
Other languages
English (en)
Other versions
JP2013528879A (ja
Inventor
フレデリック・クロード・マリー・ピリー
ルイ−マリー・ヴィンセント・モートン
ルカ・スカラブリーノ
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2013528879A publication Critical patent/JP2013528879A/ja
Application granted granted Critical
Publication of JP5543022B2 publication Critical patent/JP5543022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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
    • 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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data

Landscapes

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

Description

本発明は、データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法に関するものであり、より具体的には、そのデータ処理装置がそれぞれ、そのようなローカル・キャッシュ構造を有する複数の処理装置を備えている場合のアクセス動作を取り扱うための装置及び方法に関する。
従来、2つ以上の処理装置、例えば、プロセッサ・コアが共有メモリに対してアクセスする多重処理システムが知られている。こうしたシステムは、通常、それぞれのデータ処理動作を同時並行的に行うために異なった処理コアを配置することによってより高い性能を得るために用いられている。
そのような多重処理システム内でのデータに対するアクセス速度をさらに向上するために、その処理装置のそれぞれに、その内部に共有されたメモリ内に保存されている前記データのサブセットを保存するための少なくとも1つのローカル・キャッシュ構造を設けることが知られている。そのようなローカル・キャッシュ構造は、例えば、前記処理装置で処理されたデータを保存するために用いられるデータ・キャッシュとか、前記処理装置による実行のための命令を保存するために用いられる命令キャッシュとか、前記処理装置によって物理アドレスなどに発行された仮想アドレスを変換する時に用いられるページ・テーブル情報を保存するために用いられる変換索引バッファなどの種々の形態を採ることができる。
多重処理システム内では、アプリケーションが1つの処理装置から別の処理装置に移行される場合がある。その結果、1つの処理装置を実行する場合に1つのアプリケーションで用いられたデータが、そのアプリケーションが別の処理装置に移行された後に、その処理装置のローカル・キャッシュ構造内に残っている可能性がある。種々のローカル・キャッシュ構造内に残されたデータを追跡し続けるコヒーレンス機構を備えることは知られているが、1つの処理装置が最新の更新版のデータにいつでも確実にアクセスできるようにするために、1つのローカル・キャッシュ構造の1つ以上のエントリーに対して動作が、そのような動作の実行が適切である場合に、別の処理装置のローカル・キャッシュ構造内に保持されているデータに対して対応する動作を行わせないような場合があり得る。そのような場合の一例はキャッシュ・メインテナンス動作の性能である。
キャッシュ・メインテナンス動作は、そのローカル・キャッシュ構造への1回以上のエントリーの状態を更新するために、オペレーティング・システムによってしばしば行われる。例えば、オペレーティング・システムがハイパーバイザ・ソフトウエア層によってハードウエア・プラットホームからシールドされているモノプロセッサ・オペレーティング・システムであるような場合に、そのオペレーティング・システムがそのデータ処理装置が備えている複数の処理装置を十分に認識していない時には、そのキャッシュ・メインテナンス動作に関連性のあるデータが別の処理装置のローカル・キャッシュ構造に保存されている可能性があっても、キャッシュ・メインテナンス動作が、そのオペレーティング・システムが現在作動している処理装置に関係するローカル・キャッシュ構造に関してのみ行われることが起こり得る。純粋に例として示す場合には、特定のアドレス範囲やあるいは特定のプロセス識別子(プロセスID)に対するすべてのキャッシュ化されたエントリーを無効化すべきだと認識している状況を想定する。その動作が、オペレーティング・システムが現在作動している処理装置のローカル・キャッシュ構造に関してのみ行われた場合に、そのようなキャッシュ・メインテナンス動作はその特定のアドレス範囲内にあったり、あるいはその特定のプロセスIDに関連したそのローカル・キャッシュ構造内でキャッシュ化されているすべてのエントリーを正しく無効化する。しかしながら、他の処理装置のいずれかに対応するローカル・キャッシュ構造内に保持されているデータに対しては何の動作も行われない。前に述べたように、これらの処理装置はそのようなキャッシュ・メインテナンス動作の対象として意図されたデータを依然として保持している可能性があるが、そのオペレーティング・システムがハードウエア・アーキテクチャを認識していないので、それらのエントリーがそのキャッシュ・メインテナンス動作の対象にはならない。
こうした問題はハイパーバイザ・ソフトウエアが用いられた場合に起きるだけでなく、ハイパーバイザ・ソフトウエア層が用いられている場合にもしばしば起きる可能性がある。特に、それぞれ1つ以上のアプリケーション・プログラムを作動させている1つのオペレーティング・システムを含む処理回路内の少なくとも1つの仮想記憶装置の実行をサポートするために、ハイパーバイザ・ソフトウエアを実行してしまう可能性がある。こうした状況では、そのオペレーティング・システムとその1つ以上のアプリケーション・プログラムは根底にあるハードウエア・プラットホームに関する知識を保有している必要はなく、そして特に、多重処理システムが使用中であることを必ずしも認識していない場合がある。従って、そのアプリケーション・プログラム及び/又はそのオペレーティング・システムがモノプロセッサ環境を想定したキャッシュ・メインテナンス動作を実行してしまう可能性があり、従って、前に述べたような問題を引き起こす可能性がある。
この問題を解決するための1つの方法は、ハイパーバイザが、そのオペレーティング・システム及び/又はアプリケーションが1つの処理装置から別の処理装置に移行されている(「切り換えられている」と表現される場合もある)時に、別の形態のキャッシュ・メインテナンス動作を行うこと。例えば、切り換えられたオペレーティング・システム及び/又はアプリケーション・プログラムが新しいプロセッサ・コアに対して動作を開始出来るようにされる前に、ハイパーバイザがデータ・キャッシュ除去及び無効化動作、命令キャッシュ無効化動作、TLB無効化動作などを広範に行う場合もある。しかしながら、そのようなアプローチが問題を解決する可能性はあるが、そのことは性能にかなりの影響を及ぼし、そして、特に多重処理プラットホームを用いることでもたらされる可能性のある利点の実現を阻んでしまう。
別の方式は、そのオペレーティング・システム及び/又はアプリケーションを1つのソース処理装置から目的の処理装置に移行している時に、ハイパーバイザがその目的のプロセッサに後で行われる可能性のある動作の一部の目標になる可能性があることをマークする方法である。その場合、ハイパーバイザ・ソフトウエアはそのような動作をソース・プロセッサと同時に目的のプロセッサに対しても行う必要があるかどうかも判断することになろう。しかし、そのようなアプローチの重大な欠陥は、その目的のプロセッサに対して行われる動作をトラップする必要があることである。このことは、ハイパーバイザ・ソフトウエアが必要とされる以上に呼び出されるので、性能上のかなりの負担を生じさせることになる。特に、そのトラッピング機能が微細ベースに対して設計されていない場合には、そのハイパーバイザ・ソフトウエアはそのソース・プロセッサとの関連で何の動作も必要とされないような多数の動作のために呼び出されてしまう可能性がある。さらに、ハイパーバイザ・ソフトウエアがそのソース・プロセッサと同時に目的のプロセッサに対してもそのような動作を行う必要性があるかどうかを理解する必要性があるので、複雑性に関するかなり重大な問題が生じてしまう。
従って、それぞれがそのようなローカル・キャッシュ構造を有している複数の処理装置を有するデータ処理システム内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのより改良された技術を提供することが望ましい。
第1の態様から鑑みると、本発明は、共有されたメモリ内のデータにアクセスする必要があるデータ処理動作を行うための複数の処理装置を備えたデータ処理装置を提供するものであり、それぞれの処理装置は当該処理装置によってアクセスされる前記データのサブセットを保存するためのそれに関連したローカル・キャッシュ構造と、そのローカル・キャッシュ構造に対して行われるアクセス動作、ローカル・アクセス動作か共有アクセス動作として行われるそのローカル・キャッシュ構造に対する少なくとも1つのタイプのアクセス動作を取り扱うアクセス制御回路を備える。さらにこのデータ処理装置は、アクセス動作拡張値を記憶保存するための状況設定記憶装置と、前記複数の処理装置による共有アクセス動作の取り扱いを調整する共有アクセス調整回路とを含んでいる。そして、その共有アクセス動作を受け取ると、アクセス制御回路がその関連するローカル・キャッシュ構造に対するローカル・アクセス動作を行うのに加えて共有アクセス調整回路に共有アクセス信号を送り、そのローカル・アクセス動作を受けると、前記アクセス拡張値が設定されていなければその共有アクセス調整回路に共有アクセス信号を送らずにそのローカル・アクセス動作を行うように構成され、アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を前記共有アクセス動作として取り扱うように構成されている。
本発明によれば、一定のタイプのアクセス動作はローカル・アクセス動作あるいは共有アクセス動作として行うことができる。その場合、そのアクセス動作拡張値が設定されているかどうかに基づいてローカル・アクセス動作が取り扱われるような形態でアクセス動作拡張値を記憶保存するために、設定状況記憶装置が設けられる。1つのローカル・キャッシュ構造に関連したアクセス制御回路によって共有アクセス動作が受け取られ、そしてそのアクセス動作拡張値の値が関係のないものであれば、そのアクセス制御回路は単にその関連したローカル・キャッシュ構造に対するローカル・アクセス動作と行って、さらに、共有アクセス調整回路に共有アクセス信号を送るだけである。そして、共有アクセス調整回路はその他の処理装置に信号を一斉送信して、そのローカル・アクセス動作がそれらの関連しているローカル・キャッシュ構造に関して行われるようにするか、あるいは、その共有アクセス調整回路が保持している一定の状態に関してその信号を送るべき処理装置のサブセットを判定する。
アクセス制御回路がローカル・アクセス動作を受けた時に、アクセス動作拡張値が設定されていなければ、そのアクセス制御回路は単にその関連するローカル・キャッシュ構造に対するローカル・アクセス動作を実行するだけである。しかし、アクセス動作拡張値が設定されていれば、その場合は、本発明に従って、唯1つのローカル・アクセス動作が受け取られただけでも、そのアクセス制御回路はそのローカル・アクセス動作を共有アクセス動作として取り扱う。
そのような方式によれば、上に述べた問題が軽減されることが理解されよう。特に、一度アクセス動作拡張値が設定されてしまうと、ローカル・アクセス動作が共有アクセス動作として取り扱われるので、従って、そのローカル・アクセス動作を行わせるエンティティがその多重処理システムの構造について認識しているかどうか、あるいは、それが標的にしようとしているデータが別の処理装置のローカル・キャッシュ構造に実際に記憶保存されている可能性は問題とはならない。
さらに、本発明による方式は、多重処理プラットホーム上で動作するという性能上の利点が保持されているので、前に述べた機構と比較して、性能をかなり向上させ、複雑さを軽減してくれる。さらに、ハイパーバイザ・ソフトウエアが用いられる実施形態では、どんなローカル・アクセス動作もトラップする必要はないし、ハイパーバイザ・ソフトウエアがそのようなトラップされた動作をどのように処理すべきかを決めるためにそれらの動作を理解する必要もない。
アクセス動作拡張値が一度設定されると、一実施形態においては、その後のすべてのローカル・アクセス動作を、そのソースには関係なく共有アクセス動作として取り扱わせることができる。しかしながら、別の実施形態においては、処理回路上で実行されるソフトウエアが複数の階層レベルのソフトウエアから成り、所定の階層レベルで実行されるソフトウエアによって、アクセス動作拡張値が設定されたり設定解除されたりし、アクセス制御回路は、前記所定の階層レベルより低い階層レベルのソフトウエアによって行われるローカル・アクセス動作を取り扱う場合、それに応答するだけである。従って、1つの例として、ハイパーバイザ・ソフトウエアが用いられている実施形態を想定すると、そのハイパーバイザ・ソフトウエアが最も高い階層レベルを形成し、オペレーティング・システムがより低い階層レベルを形成し、そしてそのオペレーティング・システム上で動作するアプリケーション・プログラムがさらに低い階層レベルを形成する場合がある。ハイパーバイザ・レベルでアクセス動作拡張値が設定されると、そのオペレーティング・システムやアプリケーション・プログラムによって行われるどのローカル・アクセス動作も共有アクセス動作として取り扱われ、ハイパーバイザ・ソフトウエアはローカル・アクセス動作として取り扱われるローカル・アクセス動作を引き続き行うことができる。これは、例えば、オペレーティング・システムがモノプロセッサ・オペレーティング・システムであって、従ってその処理回路の多重処理的性質を認識していない場合に有益である。別の例でも、そのオペレーティング・システムが処理回路の多重プロセッサ的性質を認識しており、例えば、1つの動作がどのプロセッサを対象に行われるべきかを認識するような方法で最適化されているが、その知識がそのオペレーティング・システムがハイパーバイザの下で実行しているような、間違っている可能性があるような場合でも有益である。
別の実施形態において、アクセス動作拡張値がオペレーティング・システムによって設定される場合は、その下層のアプリケーション・プログラムによって行われるすべてのローカル・アクセス動作は共有アクセス動作として取り扱われるが、そのオペレーティング・システム(そして、そのオペレーティング・システムの上位にあるすべてのハイパーバイザ・レベル)は、アクセス制御回路によってローカル・アクセス動作として取り扱われるローカル・アクセス動作を引き続き行うことができる。
ローカル・アクセス動作と共有アクセス動作のいずれとしてでも行うことができる少なくとも1つのタイプのアクセス動作は、種々の形態を採ることができる。一実施形態において、1つのそのようなアクセス動作はローカル・キャッシュ構造の少なくとも1つのエントリーに記憶保存されているデータの状態を更新するために行われるメインテナンス・アクセス動作である。従って、メインテナンス・アクセス動作は必ずしもキャッシュ構造内に保存されているデータ自体を更新しなくても、その代わりにそのデータに関連したローカル・キャッシュ構造内に保持された関連した状態への変更をもたらす。1つの特殊な実施形態では、メインテナンス・アクセス動作はそのローカル・キャッシュ構造内の前記少なくとも1つのエントリーに対する除去動作か無効化動作のうちの少なくとも1つを実行する。除去動作はすべてのダーティーな、そして有効なデータをメモリに追い出し、ダーティーなデータがメモリに保持されている対応するデータより新しいデータになる。そのようなメインテナンス・アクセス動作は通常はデータ・キャッシュに関連して行われる。無効化動作は、例えば、そのエントリーに関連した有効ビットをリセットすることによって、そのローカル・キャッシュ構造内の特定のエントリーの現在の内容を無効にする。無効化動作は、例えば、命令キャッシュ、データ・キャッシュ、TLBなどの種々の異なったローカル・キャッシュ構造との関連でしばしば用いられる。
一実施形態において、処理回路はハイパーバイザ・ソフトウエアを実行してその処理回路上の少なくとも1つの仮想記憶装置の実行をサポートし、その仮想記憶装置は前記の少なくとも1つのタイプのアクセス動作を行うように構成される。各仮想記憶装置は通常1つ以上のアプリケーション・プログラムを実行するオペレーティング・システムによって構成される。上にも述べたように、多重処理システム内のそのようなハイパーバイザ・ソフトウエアの1つの使用は、モノプロセッサにその多重処理システムで実行すべきオペレーティング・システムを認識できるようにして、そのハイパーバイザ・ソフトウエアがハードウエア・プラットホームの特殊な構造をそのオペレーティング・システムから遮蔽できるようにするためである。
しかしながら、そのオペレーティング・システムが多重プロセッサで使用可能のものであっても、ハイパーバイザ・ソフトウエアの制御の下でそのようなオペレーティング・システムを実行することには依然として利点があり得る。例えば、多重プロセッサで使用可能にされたオペレーティング・システムを、複数のオペレーティング・システムが所定の多重プロセッサ・システム上で共存することが求められた場合に、ハイパーバイザ・ソフトウエアの制御下で実行させることができる。こうした方式によって、2つの知られているオペレーティング・システムをそのいずれかを修正しなくても、そのハードウエア上で同時並行的に実行させることができる。別の例として、ハイパーバイザ・ソフトウエアはプロセッサのパワー・アップ及びダウンがそのハイパーバイザの制御下で行われる場合に、多重プロセッサ・システム内でしばしば用いられることもある。そのような実施形態では、オペレーティング・システムは、通常はその上で作動しているハードウエアが作業負荷に応じて異なった数のプロセッサを有していることを認識しない。ハイパーバイザ・レベル内で多重プロセッサ・システムのパワー・アップ/ダウンを制御することにより、OEMベンダーは必要とされる多重オペレーティング・システムに修正を加えることなく、付加価値を提供することができる。
ハイパーバイザ・ソフトウエアを用いるのは、通常は、ある時点でオペレーティング・システムを複数の処理装置のうちの1つの処理装置から別の処理装置に移動させて、その移動プロセス後に、そのオペレーティング・システムが、それが移動させられた処理装置上で、下層に存在するすべてのアプリケーションと共に動作を再開させるようにする場合である。1つの特殊な実施形態で、ハイパーバイザ・ソフトウエアが1つのオペレーティング・システムをそのような状態で移動させた場合、そのハイパーバイザ・ソフトウエアはアクセス動作拡張値を設定させる。そのアクセス動作拡張値の設定に続いて、アクセス制御回路が前記少なくとも1つの仮想記憶装置によって行われたすべてのアクセス動作を共有アクセス動作として取り扱うが、そのハイパーバイザ・ソフトウエアによって行われたローカル・アクセス動作は引き続きローカル・アクセス動作として取り扱う。
前述のように、ローカル・キャッシュ構造は様々な形態を採ることができる。一実施形態において、ローカル・キャッシュ構造は前記データ処理動作に関するオペランド・データとして用いられるキャッシング・データ用のデータ・キャッシュである。あるいは、そのローカル・キャッシュ構造は前記共有メモリ内のページ・テーブルから得られて関連する処理装置内で仮想アドレスから物理アドレスへの変換を行う場合に用いられるページ・テーブル・データをキャッシングするためのトランスレーション・ルックアサイド・バッファで構成することもできる。別の例では、ローカル・キャッシュ構造は前記データ処理動作を定義するために用いられる命令をキャッシングするための命令キャッシュで構成することもできる。さらに別の例で、そのローカル・キャッシュ構造を1つの分岐を取り入れるか取り入れないかを予測する場合に分岐予測装置によって参照されるデータを保存するために用いられる分岐履歴バッファや、分岐命令のためのターゲット・アドレスを保存するために用いられる分岐・ターゲット・バッファで構成することもできる。
共有アクセス調整回路が共有アクセス信号に対応できるようにする方法は多数ある。一実施形態において、共有アクセス調整回路は前記共有アクセス信号に応答して、そのアクセス制御回路が前記アクセス信号を出した処理装置以外の処理装置のそれぞれにローカル・アクセス動作要求を一斉に送り、それによって、そのローカル・アクセス動作がそれら処理装置のそれぞれで実行される。従って、そのような実施形態では、共有アクセス調整回路は最初の共有アクセス動作の対象であるデータをどの処理装置が含んでいるのか(つまり、その最初の共有アクセス動作がその通りに行われた共有アクセス動作であるか、あるいは、アクセス動作拡張値が設定されているのでアクセス制御回路によって共有アクセス動作にアップグレードされたローカル・アクセス動作であるか)を判定しようとは試みない。その代わりに、共有アクセス調整回路は単にそれぞれの処理装置に対して要求を送り、それらの処理装置に、最初の共有アクセス動作によって指定されたデータに関してローカル・アクセス動作を行わせるだけである。
別の実施形態において、共有アクセス調整回路は前記アクセス信号に応答して、そのローカル・キャッシュ構造が共有アクセス動作によって識別されたデータを含んでいる可能性のある前記複数の処理装置から処理装置のサブセットを判定して、そのサブセットのそれぞれの処理装置にローカル・アクセス動作要求を送る。そのような方式は、共有アクセス調整回路がそのデータがどこでキャッシュ化されたかについてのなんらかの記録を保持しており、従って、その特定のデータに関して、どのローカル・キャッシュ構造がそのデータのコピーを記憶している可能性があるかが分かっているような場合に利用可能である。これによって、その共有アクセス調整回路によって出された要求を処理装置のサブセットに限定して、それによって、エネルギー効率ゲインを生み出し、可能性としては不必要なアクセス動作が実行される回数を減少することによって性能を向上させる可能性も生まれる。
上に述べた本発明の実施形態の技術はアクセス動作との関連で用いられるが、その技術は他のタイプの動作との関連で用いることもできる。例えば、1つのアプリケーション・プログラムが、例えば書き込み動作など前のメモリ動作がそのシステムの他の部分で確実に見えるようにしたり、あるいは、後のメモリ動作がそのような前のメモリ動作と順序づけられることを求めているような場合に、そのようなアプリケーション・プログラムがメモリ・アクセスの所定の順序付けを強制的に実行するか、あるいは、前のメモリ動作の結果が確実に見えるようにされるために、アプリケーション・プログラムがメモリ・バリア動作を行うことが知られている。しかしながら、当該メモリ動作とメモリ・バリア動作の間にそのアプリケーション・プログラムが1つの処理装置から別の処理装置に移行されている場合は、そのメモリ・バリア動作が意図した目的を達成できない可能性もある。しかし、一実施形態によれば、前記処理装置の最初の1つによるメモリ・バリア動作が実行されると、その最初の処理装置が、前記アクセス動作拡張値が設定されていれば、メモリ・バリア信号を送って前記メモリ・バリア動作を前記複数の処理装置のうちの少なくとも1つの処理装置上で実行させるように構成される。
他の処理装置にメモリ・バリア信号と従ってメモリ・バリア動作をローカルで実行する必要性を通知するために、専用伝達経路を設けることもできる。しかしながら、一実施形態においては、前記複数の処理装置のうちの最初の装置がそのメモリ・バリア信号を前記共通アクセス調整回路に送って、そのメモリ・バリア動作を前記複数の処理装置のうちの少なくとも1つの他の装置上で実行させる。従って、そのような実施形態では、必要な処理装置に対するメモリ・バリア動作の伝達を管理するために共有アクセス調整回路が再利用される。
共有アクセス調整回路は様々な形態を採ることができる。しかしながら、一実施形態においては、共有アクセス調整回路はそれぞれの処理装置によってアクセスされる前記データが確実に更新されるようにするためにキャッシュ・コヒーレンス・プロトコルを採用するキャッシュ・コヒーレンス回路を備える。
一実施形態においては、システム全体のために単一のアクセス動作拡張値を設けることができる。しかしながら、別の実施形態においては、設定状況記憶装置が前記複数の処理装置のそれぞれに対して個別のアクセス動作拡張値を保存しており、アクセス制御回路はローカル・アクセス動作を取り扱う時にその関連するアクセス動作拡張値を参照するようになっている。そのような一実施形態において、何らかの中央記憶装置によってそのような設定状況記憶装置が与えられる場合もあるし、あるいは、各処理装置内に個別の記憶保存装置が設けられそれらが集合的に設定状況記憶装置を形成し、各処理装置に対して適切なアクセス動作拡張値がローカルに記憶保存されるようになっている。
複数の処理装置が種々の形態を採ることもでき、一実施形態においては、それら複数の処理装置のそれぞれがプロセッサを備えている。これらのプロセッサはすべてが同一のものでなくてもよいが、一実施形態においては、それら複数のプロセッサが対称型マルチプロセッシング(SMP)処理回路を形成している。
第2の態様から鑑みると、本発明は1つのデータ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱う方法を提供し、そのデータ処理装置は共有メモリ内のデータに対するアクセスを必要とするデータ処理動作を実行するための複数の処理装置を有しており、各処理装置はその処理装置によるアクセスするために前記データのサブセットを記憶保存するためにそれ関連付けられたローカル・キャッシュ構造を有している。さらに、その方法は、前記複数の処理装置による共有アクセス動作の取り扱いを調整するための共有アクセス調整回路を設けるステップと、アクセス動作拡張値を記憶保存するステップと、それらローカル・キャッシュ構造の1つに対して行われる前記共有アクセス動作を取り扱う場合に、前記複数のローカル・キャッシュ構造のうちの前記1つのローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて、共有アクセス調整回路に対して共有アクセス信号を送るステップと、前記複数のローカル・キャッシュ構造の1つに対して行われるローカル・アクセス動作を取り扱う場合に、(i)そのアクセス動作拡張値が設定されていなければ、共有アクセス調整回路に対して共有アクセス信号を送らずに前記複数のローカル・キャッシュ構造の前記1つの構造に対してローカル・アクセス動作を実行し、そして(ii)アクセス動作拡張値が設定されていれば、その共有アクセス動作に対処するステップを備える。
第3の態様から鑑みると、本発明はデータ処理装置を提供し、このデータ処理装置は共有メモリ内のデータに対するアクセスを必要とするデータ処理動作を実行するための複数の処理装置手段を備えており、各処理装置手段はその処理装置手段によるアクセス用の前記データのサブセットを記憶保存するためにそれと関連付けられたローカル・キャッシュ構造手段と、そのローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのアクセス制御手段を有しており、そのローカル・キャッシュ構造手段に対する少なくとも1つのタイプのアクセス動作がローカル・アクセス動作か又は共有アクセス動作として行われることを特徴としている。このデータ処理装置はさらに、1つのアクセス動作拡張値を記憶保存するための設定状況記憶手段と、前記複数の処理装置手段による前記共有アクセス動作の取り扱いを調整するための共有アクセス調整手段を含んでおり、前記共有アクセス動作を受け取ると、アクセス制御手段がその関連付けられたローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて共有アクセス調整手段に共有アクセス信号を送り、前記ローカル・アクセス動作を受け取ると、アクセス制御手段が、アクセス動作拡張値が設定されていなければ、共有アクセス調整回路に共有アクセス信号を送らずに関連付けられたローカル・キャッシュ構造手段に対してローカル・アクセス動作を実行し、そして、アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を前記共有アクセス動作として処理する。
以下に、添付図面に図示されている実施形態を参照して、例示のみを目的として本発明をさらに詳しく説明する。
図1は、本発明の一実施形態による多重処理システムを図式的に示す図である。 図2は、一実施形態において、キャッシュ・メインテナンス動作がどのように取り扱われるかを示すフローチャートである。 図3は、一実施形態において、ハイパーバイザがアクセス動作拡張ビットをどのように設定することができるかを示すフローチャートである。 図4Aは、一実施形態において、アクセス動作拡張ビットが設定された場合のローカル・アクセス動作の取り扱いを図式的に示している。 図4Bは、別の一実施形態において、アクセス動作拡張ビットが設定された場合のローカル・アクセス動作の取り扱いを図式的に示している。 図5は、1つの処理装置から別の処理装置への移行によって生じる可能性のある問題を、一実施形態の技術を用いることで回避しているコード発生プロセスを示すフローチャートである。 第1の処理装置から第2の処理装置に移行され、次に前記第1の処理装置に送り返された場合に発生し得る問題を、一実施形態の技術を用いて回避しているページ・テーブル更新プロセスを図式的に示すフローチャートである。 図7は、一実施形態において、メモリ・バリア動作をどのように取り扱うことが出来るかを図式的に示すフローチャートである。 図8は、メモリ・バリア動作を含む一連の動作を図式的に示すフローチャートで、1つの処理装置から別の処理装置への切り換えを通じて生じ得る問題が一実施形態の技術を用いることで回避されていることを示している。
図1は一実施形態による多重処理システムを示している。複数の処理装置10、40が設けられており、図示されている例では、両方も処理装置とも1つのプロセッサ・コアと関連付けられたローカル・キャッシュ構造を含んでいる。プロセッサは同一である必要はないが、一実施形態においては、これらのプロセッサは同様の構造を持ち、SMPシステムを形成している。図に示すように、第1の処理回路10は一連の命令を実行するためのコア20を備えている。コア20は1つ以上のキャッシュ24へのアクセスを有しており、これらのキャッシュ24は一実施形態においては命令キャッシュと個別データ・キャッシュで構成することができる。仮想アドレスから物理アドレスへの変換などのメモリ・アクセス制御動作を行う場合には、メモリ管理装置(MMU)26によって参照されるTLB28のような他のローカル・キャッシュ構造を設けることもできる。
前記ローカル・キャッシュ構造、この例ではキャッシュ24とTLB28に関するメインテナンス動作を行うためにメインテナンス回路22も設けられている。一実施形態において、このメインテナンス回路22はプロセッサ・コア20の一部を形成しているとみなすことができ、例えば、コア20によって提供される実行原理の1つを形成していると考えることができる。プロセッサ10はプロセッサの動作を構成するために用いられる1つ以上の設定状況レジスタ30も含んでいる。本発明のこれらの実施形態によれば、この設定状況レジスタ30はキャッシュ・メインテナンス動作を実行する時にメインテナンス回路22が参照する1つのアクセス動作拡張値を含んでいる。具体的には、後でより詳細に説明するように、このアクセス動作拡張値の値に基づいて、メインテナンス回路はローカル動作として指定されたキャッシュ・メインテナンス動作をどのように取り扱うかを変更する。
図示してある実施形態では、プロセッサ40がプロセッサ10に対して同じ形態で構成されており、従って、コア50、メインテナンス回路52、キャッシュ54、MMU56内部のTLB58、及び1つ以上の設定状況レジスタ60を含んでいる。
種々の処理装置10、40はコヒーレント相互接続70を介して共有メモリ75に接続されている。コヒーレント相互接続70は種々のローカル・キャッシュ構造内に保存されているデータを確実にコヒーレントな状態で保存するので、従って、各プロセッサはそのデータを同じように見ている。それ故、例として言えば、コア50がそのデータ・キャッシュ54内に無いデータ・アクセス要求を出した場合、これはコヒーレント相互接続70に要求を出させることになり、それが要求されたデータが処理装置10の対応するデータ・キャッシュ24内に保存されているかどうかを判断することになる。保存されていれば、そのデータは処理装置10のデータ・キャッシュから引き出されて、処理装置40に提供される。コヒーレント相互接続70によって用いられるコヒーレンス・プロトコルに従って、処理装置10のデータ・キャッシュ内の関連性のあるデータを無効としてマークすることもできるし、あるいは、処理装置10と40の両方がそのデータのコピーを共有のものとマークすることもできる。このことは、次に、そのデータに関連して行われるその後のアクセス動作がどのように取り扱われるかに影響を及ぼす。要求されているデータをその他のキャッシュの1つに見出せない場合だけ、そのデータはメモリ75からアクセスされる。
そのような技術はデータのコヒーレンスを維持する上ではうまく働くが、ハードウエアで作動するオペレーティング・システムとより下層のアプリケーションがそのハードウエアの多重プロセッサ的な性質を認識していないと、複数の仮想記憶装置を稼動させようとしてハイパーバイザ・ソフトウエアを用いる場合に起きるような問題が発生する可能性がある。特に、図1に示すように、ハイパーバイザ・ソフトウエア80が処理回路上の少なくとも1つの仮想記憶装置90の作動をサポートするために、複数の処理装置10、40から成るハードウエア・プラットホーム上で実行される場合がある。各仮想記憶装置は1つ以上のアプリケーション・プログラム94、96を作動させるオペレーティング・システム92から成る。以下により詳細に述べるように、本発明の前記の実施形態の技術は単一の仮想記憶装置90だけがハイパーバイザ80によって実行される場合に用いることができるが、その作動がハイパーバイザ・ソフトウエアによってサポートされる2つ以上の仮想記憶装置が存在する場合もある。従って、点線で囲んだ箇所に示すように、複数のアプリケーション・プログラム104、106を作動させるオペレーティング・システム102なら成る少なくともさらに1つの仮想記憶装置100を設けることもできる。
動作中に、ハイパーバイザ・ソフトウエア80が、例えば、各処理装置10、40のデータ流負荷を考慮して性能を増大させようとする場合のように、仮想記憶装置を1つの処理装置から別の処理装置に移行させることができる。下層にあるハードウエアがハイパーバイザ・ソフトウエア80によってその仮想記憶装置から遮蔽されているので、仮想記憶装置90は、通常、処理装置10と40のいずれで作動しているかを認識しておらず、さらに、その動作が1つの処理装置から別の処理装置に切り換えられた時点も通常は認識していない。従って、オペレーティング・システム92及び/又はアプリケーション・プログラム94、96は、仮想記憶装置がこれらのキャッシュ・メインテナンス動作の対象であるデータがローカル・キャッシュ構造内に保存されていると予想するので、ローカル・キャッシュ・メインテナンス動作として指定されるキャッシュ・メインテナンス動作を行う。しかしながら、そのデータが最初にキャッシュ構造に保存されていた時とそのキャッシュ・メインテナンス動作が行われた時との間に、その仮想記憶装置が1つの処理装置から別の処理装置に移されていたとすると、この前提条件は正しくなくなり、そのキャッシュ・メインテナンス動作の対象であるデータのすべてが必ずしもそのキャッシュ・メインテナンス動作の対象とはされないことから、間違った動作をもたらす可能性がある。
コヒーレント相互接続70の存在と特定のキャッシュ・エントリーを共有のものとマークすることは、それ自体では、問題が確実に発生しないようにする上で十分ではない。例えば、1つの仮想記憶装置が10個のデータ値をキャッシュに書き込んで、それらのデータ値のうちの3つが処理装置10のキャッシュ24に書き込まれ、仮想記憶装置90が処理装置10で作動しており、次に仮想記憶装置90を処理装置40への切換えがハイパーバイザによって行われ、残りの7つのデータ値がデータ・キャッシュ54に書き込まれる場合を想定する。次に、キャッシュ・メインテナンス動作がこれら10個のデータ値を含む一連のアドレスを除去するためにキャッシュ・メインテナンス動作が行われて、仮想記憶装置90が依然として処理装置40上で作動しているとすると、キャッシュ54内の7つのデータ値がそのキャッシュに存在しており、必要な除去作業が行われることは明らかである。これらのエントリーが共有のものとマークされていると、そのデータの他のすべてもコピーも確実に無効化されるように、コヒーレント相互接続70に対しても信号が送られる。しかしながら、問題の他の3つのデータ値に関しては、処理装置40内のローカルに実行されるキャッシュ・メインテナンス動作がこれらの関連付けられたアドレスに関連してキャッシュ・ミスを検出するだけで、さらに別の動作は行わない(その代わりに、そのデータはすでにメモリに追い出されたと想定される)。しかし、その結果として、これら3つのデータ値は依然としてキャッシュ24内に存在しており、除去されていないから、これら3つのデータ値に関して共有メモリ75が更新されていないという結果になる。このことは仮想記憶装置の正しくない動作を引き起こす可能性がある。
本発明の実施形態によれば、この問題はアクセス動作拡張ビットの提供を通じて解決される。このアクセス動作拡張ビットは特定の階層レベルのソフトウエアによって設定され、一度設定されると、その階層のより低いレベルのソフトウエアによって行われるローカル・キャッシュ・メインテナンス動作の取り扱い方に影響を及ぼす。従って、一実施形態においては、このアクセス動作拡張ビットは、オペレーティング・システム92によって設定され、アプリケーション94、96によって行われるその後のすべてのキャッシュ・メインテナンス動作は、そのオペレーティング・システムがアクセス動作拡張ビットを設定してあるか否かによって異なった状態で取り扱われるようにされる。しかしながら、以下の検討では、仮想記憶装置によって(オペレーティング・システム92によるものかアプリケーション・プログラム94、94のいずれか1つに依るかは関係なく)行われるすべてのキャッシュ・メインテナンス動作が、アクセス動作拡張ビットが設定されているか否かによって異なった状態で取り扱われるように、そのアクセス動作拡張ビットはハイパーバイザ・ソフトウエア80によって設定可能であることを想定している。
図2は、一実施形態によるアクセス動作拡張ビットの値によってローカル・キャッシュ・メインテナンス動作の取り扱いがどのように影響を受けるかを示すフローチャートである。具体的には、ステップ150で、メインテナンス回路がキャッシュ・メインテナンス動作の受け入れを待機している。キャッシュ・メインテナンス動作が受け取られると、ステップ155で、そのキャッシュ・メインテナンス動作がローカル・アクセス動作か否かが判定される。否であれば、プロセスはステップ165に進んで、共有アクセス信号がコヒーレント相互接続に送られて、1つ以上の他の処理装置上でローカル・アクセス動作を行わせ、さらに、ステップ170で、ステップ150でキャッシュ・メインテナンス動作を受け入れるメインテナンス回路に関連付けられたローカル・キャッシュ構造に関して、ローカル・キャッシュ・メインテナンス動作が行われる。
なお、ステップ165と170が連続して示されているが、これらのステップは逆の順番で行われてもよく、あるいは、並行的に行われてもよい。さらにいくつかの実施形態では、ステップ170で行われるローカル・キャッシュ・メインテナンス動作はその共有アクセス信号に対して、その他のいずれの処理装置上での対応するローカル・キャッシュ・メインテナンス動作の実行結果には無関係に実行される。しかしながら、別の実施形態においては、ステップ170でのローカル・キャッシュ・メインテナンス動作の実行は、ステップ165でコヒーレント相互接続で出された共有アクセス信号に応答して、他の種々の処理装置がそれぞれのローカル・キャッシュ・メインテナンス動作の実行を完了するまで遅延されてしまう場合がある。
ステップ155で、キャッシュ・メインテナンス動作がローカル・アクセス動作であると判断された場合、ステップ160で、アクセス動作拡張ビットが設定されているか否かが判定される。否であれば、そのキャッシュ・メインテナンス動作は単にローカルな動作として取り扱われ、従って、そのローカル。キャッシュ・メインテナンス動作はステップ170で実行される。しかしながら、そのアクセス動作拡張ビットがステップ160で設定済みと判断された場合は、そのローカル・アクセス動作は実際に共有アクセス動作として対処される。従って、ステップ165とステップ170が実行される。その結果、アクセス動作拡張ビットが設定されている場合、ローカル・アクセス動作として指定されたキャッシュ・メインテナンス動作が『アップグレード』されて共有アクセス動作として対処される。従って、これによって、どの処理装置上で仮想記憶装置が現在作動しているかには関係なく、関係するすべてのキャッシュ構造で確実に実行される。
図3は一実施形態においてアクセス動作拡張ビットをいつ設定するかを、ハイパーバイザ・ソフトウエア80がどのように判断するかを示すフローチャートである。ステップ200で、ハイパーバイザはオペレーティング・システムをソース処理装置から目的の処理装置に移行させる。このプロセスの間、ハイパーバイザ・ソフトウエアはステップ205でそのオペレーティング・システムが多重プロセッサを認識しているかどうか、この例では、ハードウエアがSMP処理回路であるから「SMPを認識しているかどうか」を判定する。オペレーティング・システムがSMPを認識していなければ、プロセスがステップ210に進んで、アクセス動作拡張ビットが設定され、そのオペレーティング・システムがSMPを認識しているのであれば、ステップ215でそのアクセス動作拡張ビットが除去される。ステップ210あるいは215に続いて、ハイパーバイザはそのオペレーティング・システムがステップ220で目的の処理装置上で作動を開始できるようにする。
図3を参照して説明した実施形態では、オペレーティング・システムがSMPを認識していれば、それがキャッシュ・メインテナンス動作を行い、共有かローカルかが正しく識別される。しかし、別の実施形態においては、オペレーティング・システムがSMPを認識しているか否かに関係なく、単にオペレーティング・システムを1つの処理装置から別の処理装置に移動させる度に、アクセス動作拡張ビットを設定するように構成される場合もある。こうした方式は、SMPで稼動可能にされるオペレーティング・システムが、どのプロセッサの上で動作が行われるべきかを理解するような方法で最適化されている場合には有効である。何故なら、この知識はそのオペレーティング・システムがハイパーバイザ層の下で稼動している場合は間違っている可能性があるからである。
図4Aは、一実施形態において、ローカル・アクセス動作がどのように取り扱われるかを図式的に示している。この例の目的に合わせて、多重処理システムが3つの処理装置300、320、340を有していると仮定されている。図示のために、これらの処理装置の関連性のある内部構造だけを示してある。従って、キャッシュ処理装置300、320、340は関連するメインテナンス回路305、325、345を有しており、これらは1つ以上のローカル・キャッシュ構造310、330、350と結合されている。アクセス動作拡張ビット307が処理装置300との関連で示されており、この例では、そのアクセス動作拡張ビットが設定されることを想定している。種々の信号ラインに沿って示されている丸で囲んだ数字は、メインテナンス回路305が受け取ると起きるローカル・アクセス動作の順番を示している。従って、図に示されているように、ローカル・アクセス動作がメインテナンス回路305によって一度受け取られると、それはアクセス動作拡張ビット307を参照するが、この例では、それは設定されている。従って、メインテナンス回路305はその関連するローカル・キャッシュ構造310に対してローカル・アクセス動作を行うと同時に、コヒーレント相互接続360内の調整回路370に対しても共有アクセス信号を送る。この例では、その調整回路は共有アクセス信号を受信すると他の処理装置のそれぞれに要求を一斉に送るだけであるから、従って、メインテナンス回路325とメインテナンス回路345の両方は要求を受け取って、ローカル・アクセス動作を実行する。従って、図4Aに示すように、メインテナンス回路325、340の両方はそれらが関連付けられているローカル・キャッシュ構造330、350に対してそれぞれローカル・アクセス動作を実行する。
ローカル・キャッシュ構造310に関するローカル・アクセス動作の実行は調整回路に共有アクセス信号を送るプロセスやその後の他のローカル・アクセス動作とは完全に切り離すことができるが、一実施形態においては、メインテナンス回路305は他のローカル・アクセス動作がすべて実行されて、それらのローカル・アクセス動作の結果が調整回路370を介してメインテナンス回路305に戻されるまで、そのローカル・アクセス動作の実行を遅らせることができる。従って、メインテナンス回路305とローカル・キャッシュ構造310の間のローカル・アクセス動作信号経路の近くの丸で囲んだ数字6が示すように、そのローカル・アクセス動作はその他の動作が完了した後で実行されてもよい。
図4Bは、別の実施形態を示しており、この実施形態では、調整回路370が共有アクセス信号を受信したら他のどの処理装置が要求を送るべきかの判断を可能にする履歴データを保持している。図4Bに示しているこの特殊な例では、調整回路370がローカル・キャッシュ構造に対する割り当てデータの履歴380を保持している。従って、調整回路370によって共有アクセス信号が受信されると、その調整回路はその共有アクセス信号で識別されたデータ・アドレスを考慮に入れて、その割り当て履歴380を参照して、ローカル・キャッシュ構造330、350のいずれがそのアドレスで以前にキャッシュ化されたデータを有しているかを判断することができる。図示されている例では、調整回路370はローカル・キャッシュ構造330がそのアドレスで以前にキャッシュ化されたデータを有しており、ローカル・キャッシュ構造350の方は有していないと判断する。従って、その要求はメインテナンス回路325に送られるだけで、メインテナンス回路345には送られない。
調整回路370は様々な形態を採り得るが、一実施形態においては、キャッシュ・コヒーレンス・プロトコルによって必要とされるようなスヌープ動作を実行するために用いられるスヌープ制御装置によって形成される。その機能はデータ・キャッシュに関してばかりでなく、命令キャッシュ、TLBなどに関しても行われるように拡張することができる。
図5は、仮想記憶装置で実行できる動作の特殊なシーケンスを図示するフローチャートである。具体的に、ステップ400であるコードが発生されると、その間に、そのコードは通常はデータ・キャッシュに書き込まれる。しかしながら、そのコードが実行される前に、最初にメモリの外部に保存され、それから命令キャッシュ内に取り込まれる。従って、ステップ410で、ローカル・データ・キャッシュ除去動作が行われて、そしてステップ420で、ローカル命令キャッシュ無効化動作が行われる。このローカル・キャッシュ除去動作410は有効ではあるがダーティーなデータをデータ・キャッシュ内にもたらし、それらのデータはメモリに追い出されるが、ローカル命令キャッシュ無効化動作は、コード発生ステップ400で更新された可能性のあるすべての命令を確実に無効化して、新しいコードの実行が開始された際に誤って参照されないようにする。従って、ステップ430で、その新しいコードが実行される際、メモリから正しい命令が受け取られ、通常は命令キャッシュに保存される。
本発明の実施形態による上に述べた技術が用いられないとしたら、1つの処理装置から別の処理装置への仮想記憶装置の実行の切り換えが、正しくない動作を引き起こしてしまう可能性があるだろう。具体的には、図5に示す時間帯A(これはコード発生プロセスが開始してから若干後に始まり、ステップ410でローカル・データ除去動作が行われる前に終了する)の間に、仮想記憶装置が第1の処理装置から第2の処理装置に切り換えられると、その後、第2の処理装置のデータ・キャッシュに保存されているデータだけが取り除かれることになる。このことは、新しく発生されたコードのいくつかが第1の処理装置のデータ・キャッシュに残ってしまい、そのデータは取り除かれないという事態をもたらす可能性がある。しかしながら、上に述べた技術を用いれば、ステップ410で行われるローカル・データ・キャッシュのデータ除去動作が共有データ・キャッシュのデータ除去動作にアップグレードされるので、これらのエントリーが第2の処理装置のデータ・キャッシュ内にあるのか、あるいは第1の処理装置のデータ・キャッシュ内にあるのかには関係なく、必要なエントリーのすべてを取り除いてくれる。
同様に、時間帯Bの間に、第2の処理装置から第1の処理装置に仮想記憶装置の実行が切り戻されると、問題が発生する可能性がある。そのような例では、本発明を用いなければ、第1の処理装置のローカル命令キャッシュがステップ420で無効化されていないから、従って、ステップ430で正しくない命令が実行されてしまう可能性がある。しかしながら、上に述べた技術を用いることにより、ローカル命令キャッシュ無効化動作がステップ420で共有命令キャッシュ無効化動作にアップグレードされるので、両方の命令キャッシュの関連するエントリーが確実に無効化される。
図6はページ・テーブル更新プロセスを示すフローチャートである。特に、ステップ450で、ページ・テーブル・エントリーを用いてアドレス変換が行われ、その間に、ページ・テーブル・エントリーは通常はMMUのTLB内に保存される。その後、そのページ・テーブル・エントリーを更新する必要がある。従って、ローカルTLB無効化動作がステップ460で行われて、更新される予定のTLB内のすべてのキャッシュ・エントリーが無効化される。その後、関連するページ・テーブル・エントリーがステップ470で修正される。そして、ステップ480でページ・テーブル・エントリーを用いてそのプロセスが再開されてアドレス変換が行われ、その間に、ページ・テーブル・データが再びメモリからTLBに保存される。そのようなプロセスが単一の処理装置で行われるなら、何の問題も起こらない。しかしながら、仮想記憶装置の動作が図6の時間帯Aのいつかの時点で第1の処理装置から第2の処理装置に切り換えられて、その後に、その仮想記憶装置の動作が時間帯Bのいつかの時点で第2の処理装置から第1の処理装置に切り戻されたとしたら、本発明の実施形態の技術が用いられていなければ、問題が発生する。具体的には、時間帯A中に起きる切り換えのせいで、ステップ460でのローカルTLB無効化動作が第1の処理装置のTLB内の関連するページ・テーブル・エントリーを無効化しない。このことは、実行が後で時間帯B中に第1の処理装置に戻されると、第1の処理装置のTLB内にまだ残っている古くなったデータの存在によりヒットが送る可能性があることを意味している。しかしながら、上に述べた本発明の実施形態の技術を用いることによって、この問題は発生しなくなる。何故なら、ステップ460で行われるローカルTLB無効化動作が共有TLB無効化動作にアップグレードされて、従って、両方のTLBの関連するエントリーが無効化されるからである。
本発明の実施形態による技術をキャッシュ・メインテナンス動作の取り扱いとの関連で上に述べたが、それらの技術は以下に図7と8を参照して述べるように、メモリ・バリア動作を確実に正しく行わせるためにも用いることができる。当業者なら分かるが、プログラムが書き込み動作などの前に行ったメモリ動作の結果をシステム内のいくつかの他のエージェント(agent)にはっきりと確実に見えるようにすることを望んだり、あるいは、何らかのメモリ動作がその後で行われる前に前のメモリ動作が確実に完了しているようにすることを望むのであれば、メモリ・バリア動作を実行することができる。従って、図7のステップ500に示すように、メモリ・バリア動作を実行すべきかどうかについての判断が行われ、メモリ・バリア動作を実行すると判断された時にはいつでも、ステップ510でアクセス動作拡張ビットが設定されているかどうかの判定がなされる。メモリ・バリア動作を実行しない場合、ステップ530で、仮想記憶装置が現在実行されている処理装置上でメモリ・バリア動作が単にローカルに実行されるだけである。しかし、アクセス動作拡張ビットが設定されていれば、ステップ520でメモリ・バリア信号520がコヒーレント相互接続に送られ、そして、ステップ530でメモリ・バリア動作がローカルに行われる。そして、コヒーレント相互接続が適切な要求を他の処理装置に送らせて、それらの処理装置にもメモリ・バリア動作をローカルに実行させる。そのような方式の利点は、図8に示すイベントのシーケンス例を想定した場合にはっきり理解することができる。
具体的には、ステップ550で、書き込み動作が行われて、その書き込みデータがバッファされる。具体的に、多くのシステムで、書き込み動作はその書き込み動作が書き込みバッファに置かれた時点で改良したと想定され、実際には、書き込みバッファがドレインされて、その書き込みデータは実際にメモリに入れられるのは多くのサイクルの後であることがある。
従って、書き込みデータを後の何らかの動作に見えるようにすることが重要である場合には、通常は、図8のステップ560で示されているように、書き込み動作に続いてメモリ・バリア動作が行われる。その後、前の書き込み動作の書き込み動作が見えることを期待する動作がステップ570で行われると、ステップ560で行われるメモリ・バリア動作がその書き込みデータを確実に実際に見えるようにする。しかしながら、仮想記憶装置の実行が図8に示す時間Aで1つの処理装置から別の処理装置に切り換えられると、本発明の実施形態の技術が採用されなければ、メモリ・バリア動作560はその目的を達成できないことが明らかである。何故ならば、その動作は仮想記憶装置が現在作動している処理装置にローカルに実施されるが、書き込みデータは実際には別の処理装置の書き込みバッファに保持されているからである。しかしながら、本発明の実施形態の技術を使用すれば、ステップ560で行われるメモリ・バリア動作が共有メモリ・バリア動作にアップグレードされて、そのメモリ・バリア動作を両方の装置で行われるようにし、従って、その書き込みデータをメモリに排出させ、そして後の動作がステップ570で行われると見えるようにするからである。
具体的な実施形態を上に述べたが、本発明はこれらの実施形態に限定されるものではなく、本発明の範囲内で多くの修正や付け加えが可能であると理解されるべきである。例えば、以下の従属請求項の特徴の様々な組み合わせを、本発明の範囲を逸脱せずに行うことも可能である。
10 第1の処理回路、プロセッサ、処理装置
20 コア、プロセッサ・コア
22 メインテナンス回路
24 キャッシュ、データ・キャッシュ
26 メモリ管理装置(MMU)
30 設定状況レジスタ
40 プロセッサ、処理装置
50 コア
52 メインテナンス回路
54 キャッシュ、データ・キャッシュ
60 設定状況レジスタ
70 コヒーレント相互接続
75 共有メモリ、メモリ
80 ハイパーバイザ・ソフトウエア、ハイパーバイザ
90 仮想記憶装置
92 オペレーティング・システム
94 アプリケーション・プログラム
96 アプリケーション・プログラム
100 仮想記憶装置
102 オペレーティング・システム
104、106 アプリケーション・プログラム
300 処理装置、キャッシュ処理装置
305 メインテナンス回路
307 アクセス動作拡張ビット
310 ローカル・キャッシュ構造
325 メインテナンス回路
330 ローカル・キャッシュ構造
345 メインテナンス回路
350 ローカル・キャッシュ構造
360 コヒーレント相互接続
370 調整回路
380 割り当て履歴

Claims (19)

  1. データ処理装置であって、
    共有メモリ内のデータへのアクセスを必要とするデータ処理動作を実行するための複数の処理装置を備える処理回路であって、複数の階層レベルのソフトウエアから成るソフトウエアを実行するように構成された処理回路
    アクセス動作拡張値を記憶保存するための設定状況記憶装置であって、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除される設定状況記憶装置と、
    前記複数の処理装置による共有アクセス動作の取り扱いを調整するための共有アクセス調整回路と、を備え、
    それぞれの前記処理装置は、その処理装置によるアクセスのために前記データのサブセットを記憶保存するための、それと関連付けられたローカル・キャッシュ構造と、前記ローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのアクセス制御回路とを有し、
    前記アクセス動作の少なくとも1つのタイプは、ローカル・アクセス動作又は前記共有アクセス動作として行われ、
    前記共有アクセス動作を受けると、前記アクセス制御回路が前記関連付けられたローカル・キャッシュ構造へのローカル・アクセス動作を行うのに加えて前記共有アクセス調整回路に共有アクセス信号を送り、
    前記ローカル・アクセス動作を受けると、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、前記アクセス制御回路が、前記アクセス動作拡張値が設定されていなければ前記共有アクセス調整回路に共有アクセス信号を送ることなく前記関連付けられたローカル・キャッシュ構造に対してローカル・アクセス動作を行い、前記アクセス動作拡張値が設定されていれば前記ローカル・アクセス動作を共有アクセス動作として対処するように構成されるデータ処理装置。
  2. 前記少なくとも1つのタイプのアクセス動作が、前記ローカル・キャッシュ構造の少なくとも1つのエントリー内に保存されているデータの状態を更新するために行われるメインテナンス・アクセス動作を備えていることを特徴とする、請求項1記載のデータ処理装置。
  3. 前記メインテナンス・アクセス動作が、前記ローカル・キャッシュ構造の前記少なくとも1つのエントリーに関して、除去動作と無効化動作のうちの少なくとも1つを実行することを特徴とする、請求項記載のデータ処理装置。
  4. 前記処理回路がその処理回路上での少なくとも1つの仮想記憶装置の作動実行をサポートするためにハイパーバイザ・ソフトウエアを作動させ、その仮想記憶装置が少なくとも1つのタイプのアクセス動作を行うことを特徴とする、請求項1からのいずれか1項に記載のデータ処理装置。
  5. 前記少なくとも1つの仮想記憶装置のそれぞれが1つ以上のアプリケーション・プログラムを実行させるオペレーティング・システムを備えていることを特徴とする、請求項記載のデータ処理装置。
  6. 前記ハイパーバイザ・ソフトウエアが前記オペレーティング・システムを前記複数の処理装置のうちの第1の処理装置から前記複数の処理装置のうちの第2の処理装置に移行させた場合に、前記ハイパーバイザ・ソフトウエアが前記アクセス動作拡張値を設定させることを特徴とする、請求項記載のデータ処理装置。
  7. 前記アクセス動作拡張値の設定に続いて、前記アクセス制御回路が前記少なくとも1つの仮想記憶装置によって行われたすべてのローカル・アクセス動作を前記共有アクセス動作として対処するが、引き続き、前記ハイパーバイザ・ソフトウエアによって行われたローカル・アクセス動作をローカル・アクセス動作として取り扱うことを特徴とする、請求項記載のデータ処理装置。
  8. 前記ローカル・キャッシュ構造が、前記データ処理動作のためのオペランド・データとして用いられたデータをキャッシュ化するためのデータ・キャッシュであることを特徴とする、請求項1からのいずれか1項に記載のデータ処理装置。
  9. 前記ローカル・キャッシュ構造が、前記共有メモリ内のページ・テーブルから得られ、前記関連付けられた処理装置内で仮想アドレスから物理アドレスへの変換を行う際に用いられるページ・テーブル・データをキャッシュ化するための変換ルックアサイド・バッファを備えていることを特徴とする、請求項1からのいずれか1項に記載のデータ処理装置。
  10. 前記ローカル・キャッシュ構造が、前記データ処理動作を定義するために用いられる命令をキャッシュ化するための命令キャッシュであることを特徴とする、請求項1からのいずれか1項に記載のデータ処理装置。
  11. 前記共有アクセス調整回路が、前記共有アクセス信号に応答して、そのアクセス制御回路が前記共有アクセス信号を発行した処理装置以外の各処理装置に対してローカル・アクセス動作要求を一斉に送り、それによってそのローカル・アクセス動作がそれら各処理装置上で実行されることを特徴とする、請求項1から10のいずれか1項に記載のデータ処理装置。
  12. 前記共有アクセス調整回路が前記共有アクセス信号に応答して、そのローカル・キャッシュ構造が前記共有アクセス動作で識別されたデータを含んでいる可能性のある前記複数の処理装置のうちの処理装置のサブセットを判定して、そのサブセット内の処理装置のそれぞれにローカル・アクセス動作要求を送ることを特徴とする、請求項1から10のいずれか1項に記載の処理装置。
  13. 前記処理装置のうちの第1の処理装置によってメモリ・バリア動作が実行されると、前記処理装置のうちの前記第1の処理装置が、前記アクセス動作拡張値が設定されていれば、メモリ・バリア信号を送って前記メモリ・バリア動作を前記処理装置のうちの少なくとも1つの他の処理装置で実行させるようにすることを特徴とする、請求項1から12のいずれか1項記載のデータ処理装置。
  14. 前記処理装置のうちの前記第1の処理装置が前記メモリ・バリア信号を前記共有アクセス調整回路に送って、前記メモリ・バリア動作を前記処理装置のうちの前記少なくとも1つの処理装置上で実行させることを特徴とする、請求項13記載のデータ処理装置。
  15. 前記共有アクセス調整回路がキャッシュ・コヒーレンス・プロトコルを用いるキャッシュ・コヒーレンス回路を備えており、各処理装置によってアクセスされた前記データが確実に最新の状態に更新されていることを特徴とする、請求項1から14のいずれか1項に記載のデータ装置。
  16. 前記設定状況記憶装置が前記複数の処理装置のそれぞれに対して個別のアクセス動作拡張値を記憶保存しており、ローカル・アクセス動作を取り扱う際に前記アクセス制御回路がその関連付けられたアクセス動作拡張値を参照することを特徴とする、請求項1から15のいずれか1項に記載のデータ装置。
  17. 前記複数の処理装置が対称型マルチプロセッシング(SMP)処理回路の複数のプロセッサを形成していることを特徴とする、請求項1から16のいずれか1項に記載のデータ装置。
  18. 複数の階層レベルのソフトウエアから成るソフトウエアを実行するように構成され、共有メモリ内のデータへのアクセスを必要とするデータ処理動作を行うための複数の処理装置を有しているデータ処理装置であって、各処理装置がその処理装置によるアクセスのための前記データのサブセット保存用に関連付けられたローカル・キャッシュ構造を有しているデータ処理装置、の内の前記ローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための方法であって、
    前記複数の処理装置による共有アクセス動作の取り扱いを調整する共有アクセス調整回路を設けるステップと、
    アクセス動作拡張値を記憶保存し、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除されるステップと、
    前記ローカル・キャッシュ構造の1つに対して行われる前記共有アクセス動作を取り扱う際に、その1つのローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて、前記共有アクセス調整回路に共有アクセス信号を送るステップと、
    前記ローカル・キャッシュ構造の1つに対して行われるローカル・アクセス動作を取り扱う際に、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、
    (i) 前記アクセス動作拡張値が設定されていなければ、前記共有アクセス調整回路に共有アクセス信号を送らずに、前記ローカル・キャッシュ構造の前記1つに対してローカル・アクセス動作を行い、
    (ii) 前記アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を共有アクセス動作として対処するステップ、とを備えるアクセス動作を取り扱う方法。
  19. データ処理装置であって、
    共有メモリ内のデータに対するデータ処理動作を行うための複数の処理装置手段を備え、複数の階層レベルのソフトウエアから成るソフトウエアを実行するための処理手段回路であって、各処理装置手段が、その処理装置手段によるアクセス用の前記データのサブセットを記憶保存するための、それと関連付けられたローカル・キャッシュ構造手段と、そのローカル・キャッシュ構造手段に対して行われるアクセス動作を取り扱い、そのローカル・キャッシュ構造に対して行われる少なくとも1つのタイプのアクセス動作がローカル・アクセス動作か共有アクセス動作として行われるアクセス制御手段と、を有する処理手段回路と、
    アクセス動作拡張値を記憶保存するための設定状況記憶保存手段であって、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除される設定状況記憶保存手段と、
    前記複数の処理装置手段による前記共有アクセス動作を調整するための共有アクセス調整手段と、を備え、
    前記共有アクセス動作を受けると、前記アクセス制御手段が、関連付けられたローカル・キャッシュ構造に対してローカル・アクセス動作を実行するに加えて前記共有アクセス調整手段に対して共有アクセス信号を送り、
    前記ローカル・アクセス動作を受けると、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、前記アクセス制御手段が、アクセス動作拡張値が設定されていなければ共有アクセス調整手段に対して共有アクセス信号を送らずにその関連付けられたローカル・キャッシュ構造手段にローカル・アクセス動作を行い、アクセス動作拡張値が設定されていればそのローカル・アクセス動作を前記共有アクセス動作として対処するデータ処理装置。
JP2013514780A 2010-06-16 2011-05-11 データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法 Active JP5543022B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1010114.5 2010-06-16
GB1010114.5A GB2481232A (en) 2010-06-16 2010-06-16 Cache for a multiprocessor system which can treat a local access operation as a shared access operation
PCT/GB2011/050902 WO2011158012A1 (en) 2010-06-16 2011-05-11 Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2013528879A JP2013528879A (ja) 2013-07-11
JP5543022B2 true JP5543022B2 (ja) 2014-07-09

Family

ID=42471761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013514780A Active JP5543022B2 (ja) 2010-06-16 2011-05-11 データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法

Country Status (10)

Country Link
US (1) US8706965B2 (ja)
EP (1) EP2583182B1 (ja)
JP (1) JP5543022B2 (ja)
KR (1) KR101677900B1 (ja)
CN (1) CN102971718B (ja)
GB (1) GB2481232A (ja)
IL (1) IL222671A (ja)
MY (1) MY162612A (ja)
TW (1) TWI493349B (ja)
WO (1) WO2011158012A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102291455B (zh) * 2011-08-10 2014-02-19 华为技术有限公司 分布式集群处理系统及其报文处理方法
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
WO2015046552A1 (ja) * 2013-09-30 2015-04-02 日本電気株式会社 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539428B (en) * 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
KR102428563B1 (ko) 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
US10241913B2 (en) * 2016-01-20 2019-03-26 International Business Machines Corporation Operating local caches for a shared storage device
US10157139B2 (en) * 2016-09-19 2018-12-18 Qualcomm Incorporated Asynchronous cache operations
US10339058B2 (en) * 2017-05-16 2019-07-02 Qualcomm Incorporated Automatic cache coherency for page table data
US10353826B2 (en) * 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US11210222B2 (en) * 2018-01-23 2021-12-28 Vmware, Inc. Non-unified cache coherency maintenance for virtual machines
EP3924832A4 (en) * 2019-02-14 2022-11-23 Telefonaktiebolaget Lm Ericsson (Publ) MEMORY MANAGEMENT CONTROL METHODS AND DEVICES

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04215168A (ja) * 1990-12-13 1992-08-05 Nec Corp コンピュータシステム
JPH0816470A (ja) * 1994-07-04 1996-01-19 Hitachi Ltd 並列計算機
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
US6615322B2 (en) * 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US8407451B2 (en) * 2007-02-06 2013-03-26 International Business Machines Corporation Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
TWI435213B (zh) * 2007-03-28 2014-04-21 Ibm 於虛擬資料處理環境中多個邏輯分割間平衡存取各實體系統資源及動態調諧一判定調度排程之排程器的方法、系統及電腦可讀媒體
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
JP5104588B2 (ja) * 2007-10-18 2012-12-19 富士通株式会社 マイグレーションプログラム、および仮想マシン管理装置
JP2009193385A (ja) * 2008-02-15 2009-08-27 Nec Corp コンピュータシステム
US8429353B2 (en) * 2008-05-20 2013-04-23 Oracle America, Inc. Distributed home-node hub
EP2343655A4 (en) * 2008-10-02 2012-08-22 Fujitsu Ltd MEMORY ACCESS PROCEDURE AND INFORMATION PROCESSING DEVICE
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8458688B2 (en) * 2009-12-28 2013-06-04 International Business Machines Corporation Virtual machine maintenance with mapped snapshots

Also Published As

Publication number Publication date
TWI493349B (zh) 2015-07-21
GB2481232A (en) 2011-12-21
WO2011158012A1 (en) 2011-12-22
US8706965B2 (en) 2014-04-22
JP2013528879A (ja) 2013-07-11
TW201211777A (en) 2012-03-16
EP2583182A1 (en) 2013-04-24
MY162612A (en) 2017-06-30
GB201010114D0 (en) 2010-07-21
KR20130114606A (ko) 2013-10-17
US20110314224A1 (en) 2011-12-22
CN102971718B (zh) 2015-12-16
IL222671A (en) 2015-11-30
CN102971718A (zh) 2013-03-13
EP2583182B1 (en) 2014-11-19
IL222671A0 (en) 2012-12-31
KR101677900B1 (ko) 2016-11-21

Similar Documents

Publication Publication Date Title
JP5543022B2 (ja) データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
EP3441886B1 (en) Method and processor for processing data
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US7305523B2 (en) Cache memory direct intervention
JP5414912B2 (ja) キャッシュコヒーレンシ制御の方法、システムおよびプログラム
US7225299B1 (en) Supporting speculative modification in a data cache
US9471494B2 (en) Method and apparatus for cache line write back operation
US7707361B2 (en) Data cache block zero implementation
JP7221979B2 (ja) 上位層キャッシュ内のエントリに基づいて下位層キャッシュへの流入をログすることによるトレース記録
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US20070239940A1 (en) Adaptive prefetching
US20090106498A1 (en) Coherent dram prefetcher
JP2007011580A (ja) 情報処理装置
US11231931B1 (en) Mechanism for mitigating information leak via cache side channels during speculative execution
US20110314227A1 (en) Horizontal Cache Persistence In A Multi-Compute Node, Symmetric Multiprocessing Computer
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
TW202139014A (zh) 具混和回寫及完全寫入資料快取
WO2017105685A1 (en) Apparatus and method for shared least recently used (lru) policy between multiple cache levels
US11899607B2 (en) Sending a request to agents coupled to an interconnect
JP2011100390A (ja) データ処理装置
KR20120072952A (ko) 멀티코어 시스템 및 멀티코어 시스템의 메모리 관리 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130624

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: 20140407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140507

R150 Certificate of patent or registration of utility model

Ref document number: 5543022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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