JP5378450B2 - アーキテクチャイベントの間のプロセッサリソースの保持 - Google Patents

アーキテクチャイベントの間のプロセッサリソースの保持 Download PDF

Info

Publication number
JP5378450B2
JP5378450B2 JP2011106137A JP2011106137A JP5378450B2 JP 5378450 B2 JP5378450 B2 JP 5378450B2 JP 2011106137 A JP2011106137 A JP 2011106137A JP 2011106137 A JP2011106137 A JP 2011106137A JP 5378450 B2 JP5378450 B2 JP 5378450B2
Authority
JP
Japan
Prior art keywords
address space
address
processor
asid
tlb
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.)
Expired - Fee Related
Application number
JP2011106137A
Other languages
English (en)
Other versions
JP2011181095A (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 JP2011181095A publication Critical patent/JP2011181095A/ja
Application granted granted Critical
Publication of JP5378450B2 publication Critical patent/JP5378450B2/ja
Expired - Fee Related 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/12Replacement control
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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)

Description

本発明は、データ処理システム全般に関し、より詳細には、プロセッサを使用した異なるコンテクストにおける処理に関する。
多くの現在のコンピュータシステムは、バーチャルメモリシステムを使用し、メモリを管理し、システム内で実行する各種プロセッサに割り当て、これにより、システムでの実行するそれぞれのシステムは、システムにより供給されたフルレンジのアドレスの制御を有するかのように動作可能である。オペレーティングシステム(OS)は、それぞれのプロセスのための仮想的なアドレス空間をシステムのための実際の物理的なアドレス空間にマッピングする。物理アドレスから仮想アドレスへのマッピングは、ページテーブルの使用を通して典型的に保持される。
プロセッサのパフォーマンスは、マルチステージパイプラインアーキテクチャを介して改善され、このアーキテクチャでは、キャッシュ、バッファ、アレイ等のようなパイプラインリソースは、命令をより効率的に実行するために使用される。仮想メモリシステムの使用を改善する1つのかかるパイプラインリソースは、TLB(Translation Lookaside Buffer)である。TLBは、システムの仮想アドレスの一部を物理アドレスの変換にキャッシュする、プロセッサパイプラインにおけるメモリの比較的小さなセクションである。特に、幾つかの変換セットのエレメントは、プロセッサが極端に迅速にアクセスすることができるTLBに記憶される。様々なTLBがシステムに存在する。たとえば、個別のTLBが命令及びデータについて存在する(それぞれ、命令TLB(iTLB)及びデータTLB(dTLB))。さらに、所定のシステムでは、第二のレベルのdTLBが存在する。
特定の仮想アドレスの変換がTLBに存在しない場合、「変換ミス」が生じ、アドレスの変換は、更に一般的なメカニズムを使用して解かれる。このように処理は、コンテクストの切り替えが行われるまで継続する。コンテクストの切り替えは、マルチタスクのOSが1つのプロセス(たとえばアプリケーション)の実行を停止し、別のプロセスを実行し始めるときに行われる。コンテクストの切り替えが行われるとき、新たなプロセスのためのページディレクトリ及びページテーブルを含むページテーブルがロードされ、TLB及び他のパイプラインリソースがフラッシュされる必要がある。フラッシュされることで、リソースのコンテンツがクリアされる。
所定のシステムは、仮想マシン(VM:Virtual Machine)環境を実現し、この環境では、仮想マシンモニタ(VMM)は、1以上の仮想マシンのアブストラクションを他のソフトウェアに提供する。それぞれのVMは、自己包含型(self-contained)のプラットフォームとして機能し、それ自身の“guest operating system”(すなわちVMMにより主催されるOS)、及び、ゲストソフトウェア(又は単に“guest”)と集合的に呼ばれる他のソフトウェアを実行する。ゲストソフトウェアは、仮想マシンよりはむしろ、まるで専用のコンピュータで実行されているかのように動作することが期待される。したがって、ゲストソフトウェアは、各種イベントを制御することを期待し、プロセッサレジデントリソース、メモリにあるリソース、及び、基礎をなすハードウェアプラットフォームにあるリソースのような、ハードウェアリソースへのアクセスを有する。
仮想マシン環境では、VMMは、これらのイベント及びハードウェアリソースにわたる最終的な制御を一般に有し、ゲストソフトウェアの適切な動作を提供し、異なる仮想マシンで実行するソフトウェアからのプロテクション及びゲストソフトウェア間のプロテクションを提供する。これを達成するため、VMMは、典型的に、ゲストソフトウェアがプロテクトされたリソースにアクセスするとき、又は(割り込み又は除外のような)他のイベントが生じたとき、制御を受ける(すなわち、コンテクストの切り替えに影響を及ぼす)。
VM又は他の環境におけるコンテクストの切り替えは、現代のマイクロプロセッサにおいてかなりのオーバヘッドを引き起こす。このオーバヘッドは、それぞれのコンテクストの切り替えでフラッシュされ、リロードされる大規模な第二レベルのTLBにより悪化される。したがって、このオーバヘッドは、特に多くのアクティブコンテクストをもつシステムにおいて、パフォーマンスに悪影響を及ぼす可能性がある。したがって、コンテクストの切り替えでパイプラインのリソースを更に効果的に維持する必要がある。
本発明の様々な実施の形態では、TLB、トレースキャッシュ(TC)、ブランチ予測ユニット(BPU)アレイ、ミニタグ等のようなパイプラインリソース又は構造は、多数のアドレス空間をサポートする。本明細書で使用されるように、用語「アドレス空間」とは、所与のアプリケーション(たとえばコンテクスト)に対応するメモリにおけるアドレスのセットを意味する。
様々な実施の形態では、アドレススペースは、リニア−物理変換を決定又は影響を及ぼす、(たとえば、ページディレクトリベースレジスタ(CR3.PDBR)、ページレベルキャッシュディスエーブルビット(PCD)、ページレベルライトスルービット(PWT)を含む制御レジスタ3;ページングビット(CR0.PG)、プロテクションイネーブルビット(CR0.PE)を含む制御レジスタ0;ページサイズエクステンションビット(CR4.PSE)及びページグローバルイネーブルビット及び物理アドレスエクステンションビット(CR4.PGE及びPAE)、エクステンデッド・フィーチャイネーブル・レジスタロング・モードアドレッシング(EFER.LMA)及び実行なしビット(EFER.NXE)を含む制御レジスタ4)アーキテクチャ制御レジスタの組み合わせにより制御される。
様々な実施の形態では、アドレス空間識別子(ASID)が使用され、各種パイプラインリソースにおけるリニアアドレスをそれらが関連されるコンテクストへのポインタで増加させる。本明細書で使用されるように、「アドレス空間識別子」は、何れかの数、コード、又は、それが関連される1以上のアドレス空間を識別する他の表記である。1実施の形態では、ASIDは、スレッド当たり2ビットのASID(すなわち4つのアドレス空間のコンテクスト)を使用して実現されるが、本発明の範囲は、そのように限定されるものではない。これにより、マルチプルアプリケーションコンテクストはパイプライン構造を共有することが可能であり、コンテクストの切り替えのオーバヘッドを低減する。たとえば、コンテクストの切り替えが行われたとき、現在のASID値は、パイプライン構造をフラッシュするよりはむしろ変化される。同様に、所定の実施の形態では、スレッド識別子(スレッドID)は、対応するアドレス空間のための所与のプロセッサスレッドを識別するために提供される。
様々なアーキテクチャイベントは、本発明の実施の形態に従ってTLBの選択的なフラッシュを生じさせる。たとえば、これらイベントは、(CR0又はCR4におけるページングモードビットが変化した場合)CR3に移動(MOV to CR3)命令;CR0ページモードビット:CR0.PE及びCR0.PG及びEFER.LMAを変化;CR4ページモードビットを変化;VM Entry/Exit;32ビットコンテクストの切り替えを含む。予定の実施の形態では、これらのイベントのうち、MOV to CR3動作又はVMエントリ(Entry)/VMエグジット(Exit)イベントのみがASIDを変化/インクリメントする。
多くのパイプライン構造は、リニアにタグ付け又は索引付けされる。様々な実施の形態では、ASIDは、対応するアドレス空間へのポインタで、これらパイプラインリソースにおけるリニアアドレスを増加する。かかる実施の形態では、マイクロプロセッサは、新たなアドレス空間が形成されたとき、又は異なる以前に見られたアドレス空間に変化するときに更新される全体的な現在のASIDレジスタを保持する。TLBの挿入は、現在のASID値で拡張され、TLBは、ASIDタグが現在のASID値に一致する場合にのみ一致を照合する。コンテクストの切り替え(たとえばMOV to CR3、又はVM Entry/Exit)がアドレス空間の変化をトリガしたとき、マイクロプロセッサは、TLB及び他のパイプライン構造をフラッシュする代わりに、新たなアドレス空間を表す異なるASID値に切り替える。所定の実施の形態では、特定のアドレス空間に対応するエントリをフラッシュしないか、若しくはエントリの一部又は全部をフラッシュするかにより、多数のコンテクストにより環境について大幅なパフォーマンスのゲインが提供される。
本発明の実施の形態に係るリニアアドレス変換を示す図である。 本発明の1実施の形態に係るシステムの一部のブロック図である。 本発明の1実施の形態に係る方法のフローチャートである。 本発明の別の実施の形態に係る方法のフローチャートである。 本発明の更に別の実施の形態に係る方法のフローチャートである。 本発明の1実施の形態に係る代表的なコンピュータシステムのブロック図である。
図1を参照して、本発明の実施の形態に係るリニアアドレス変換が示されており、64ビットのアドレス変換を含んでいる。図1に示されるように、メモリ240におけるページは、リニアアドレス300を使用してアドレス指定される。図示されるように、リニアアドレス300は、メモリ240における物理アドレスにアクセスするための4レベルのページング構造を索引付けするため、多数のフィールドを含む。オフセットフィールド(ビット0−11)は、メモリ240のページ内で物理アドレスをアドレス指定するために使用される。ページテーブルエントリ(ビット12−20)は、ページテーブル(PT)310におけるページテーブルエントリのアドレスを決める。ページディレクトリポインタ(ビット30−38)は、ページディレクトリポインタテーブル(PDPT)330におけるページディレクトリポインタエントリのアドレスを決める。最後に、ページマップレベル4(PML4)ポインタ(ビット39−47)は、PML4 340におけるPML4エントリのアドレスを決める。PML4 340のベースは、CR3におけるポインタを使用してアクセスされる。かかるように、64ビットリニアアドレスは、物理アドレスにアクセスするための4レベルページング構造を実現するために使用される。
様々な実施の形態では、実施の形態に係るTLBは、対応するリニア及び物理アドレスに合わせて、物理アドレス(タグアドレス)、及び関連される有効なスレッドID及びASIDビットを含む。TLBエントリは、それらが対応するアドレス空間を示すそれらのタグにおけるASIDフィールドを含む。そのASIDフィールドは、そのTLBエントリがロードされたとき、現在のASIDの値を含む。ASIDフィールドはTLBエントリにおけるタグにあるので、TLBエントリは、現在のASID値がそのTLBエントリにおけるASIDフィールドに一致する場合にのみヒットする。
アドレス空間の変化(すなわちコンテクストの切り替え)、マイクロコードは、現在のアドレス空間/ASID(CR3,CR0及びCR4ページングビット、LMA)に関する情報をスクラッチパッドに保存し、新たなアドレス空間をそれぞれのASIDの記憶されたアドレス空間情報に比較する。記憶されたアドレス空間/ASIDが新たなアドレス空間に一致しない場合、アドレス空間は前に見られていない。したがって、マイクロコードは、このアドレス空間のために新たなASIDを割り当てるか、又は、既存のASIDを選択し、たとえば最も過去に使用された(LRU:a Least Recently Used)ポリシーと置き換える。後者のケースでは、マイクロコードは、LRU ASIDのためにTLBエントリをフラッシュする。
ここで図2を参照して、本発明の1実施の形態に係るシステムの一部のブロック図が示されている。図2に示されているように、システム10は、第一のゲストソフトウェア(すなわち第一のゲスト)30,第二のゲストソフトウェア(すなわち第二のゲスト)40及び仮想マシンエクステンション(VMX:Virtual Machine eXtention)モニタ50を含めて、システムメモリ20及び様々なソフトウェアエンティティを含む。1実施の形態では、システムメモリ20は、両方のコードを含み、たとえばダイナミックランダムアクセスメモリ(DRAM)から構成されている。
図2の実施の形態では、VMXモニタ50は、1以上の仮想マシンのアブストラクションを他のソフトウェア(たとえばゲストソフトウェア)に提供する。VMXモニタ50は、同じ又は異なるアブストラクションを様々なゲストに提供する。それぞれのVMで実行しているゲストソフトウェアは、ゲストOS及び様々なゲストソフトウェアアプリケーションを含む。集合的に、ゲストOS及びソフトウェアアプリケーションは、本明細書ではゲストソフトウェアと呼ばれる。ゲストソフトウェアは、ゲストソフトウェアが実行されているVM内の(たとえばプロセッサレジスタ、メモリ及び入力/出力(I/O)装置といった)物理的なリソースにアクセスするのを期待する。VMXモニタ50は、プラットフォームハードウェア内のリソースにわたる最終的な制御を保持する間、ゲストソフトウェアにより望まれるリソースへのアクセスを容易にする。
1実施の形態では、(図2に特に示されない)仮想マシン制御構造(VMCS)における1以上の専用フィールドに記憶されるデータを使用して、基準(制御伝達基準及び/又は故障基準)が定義される。たとえば、VMCSは、ゲストソフトウェアの状態及びその動作を制御するための情報を記憶する。VMCSは、メモリ20にあり、プロセッサにより保持される。他のデータ構造(たとえばオンチップキャッシュ、ファイル、ルックアップテーブル等)は、VMCSに記憶される情報を記憶するために使用されることが理解される。
1実施の形態では、現在のイベントがVMXモニタ50により処理される必要があると伝達基準が判定した場合、VMXモニタ50に制御が移る。VMXモニタ50は、そのイベントを処理し、ゲストソフトウェアに制御を移す。VMM又はVMXモニタからゲストソフトウェアへの制御の転送は、本明細書ではVMエントリと呼ばれ、ゲストソフトウェアからVMM又はVMXモニタへの制御の転送は、本明細書ではVMエグジットと呼ばれる。
図2に示されるように、メモリ20は、第一のゲストソフトウェア30のためのページテーブルエントリ(PTE)を使用してアクセスされる第一のページ35、第二のゲストソフトウェア40のためのPTEを使用してアクセスされる第二のページ45を含む。すなわち、第一のページ35及び第二のページ45は、第一のゲスト30及び第二のゲスト40のそれぞれに対応するコード及び/又はデータを含む。図2の実施の形態では、メモリ20は、両方のコード及びデータを含む物理的なアドレス空間に対応し、ゲストソフトウェア30及びゲストソフトウェア40のASIDに対応するアドレスは、物理アドレス空間を示すために使用されるリニアアドレス(又はその一部)に対応する。
更に図2を参照して、第一のゲスト30は、第一のASIDの値(すなわちASID=1)を有し、第一のアドレス空間に対応するCR3値を更に含む。また、第二のゲスト40は、第二のASID値(すなわちASID=2)を有し、それに関連されるCR3値を更に有する。
第一のソフトウェア30及び第二のソフトウェア40の実行を制御するVMXモニタは、それに関連されるASID値をも有する。たとえば、図2の実施の形態に示されるように、VMXモニタ50は、それに関連される3つのASID値を有する。
図2に示されるように、MOV to CR3命令は、矢印55により示されるように、コンテクストの切り替えを生じさせるために実行される。さらに、VMXモニタ50は、VMXモニタ50に強制的に制御を戻すために現在実行しているゲストからエグジットさせる、参照符号60で表される、VMエグジットを行わせることでゲストソフトウェアの動作を制御する。同様に、VMXモニタ50は、(図2における参照符号70により表される)VMエントリを実行することでゲストの始動又は再始動を行わせる。
様々な実施の形態では、VMXアーキテクチャエンハンスメントにより、VMXモニタは、ASIDを使用することで、コンテクストの切り替え及びVMXの遷移に関して、TLB又は他の類似のプロセッサリソースをフラッシュするのを回避することができる。様々な実施の形態では、ソフトウェア又はハードウェアにおける明示的なASID管理は、クロスアドレス空間の汚染(cross-address space pollution)を検出するために必要とされない。
様々な実施の形態では、MOV to CR3命令、VMエグジット、又はVMエントリを使用して実行されるコンテクストの切り替えを含めて、図2に示されるようなイベントに応じて、TLB及び他のプロセッサリソースのフラッシュが回避され、パフォーマンスが改善され、かかるコンテクストの切り替え及び他のアーキテクチャイベントに関するオーバヘッドが低減される。
所定の実施の形態では、システムメモリ20内のページ又は他のキャッシュされたページは、全てのアドレス空間にわたりVMXモニタ50によりプロテクトされ、試みられたかかるページへの記憶は、かかる記憶を始動するゲストソフトウェアからのVMXエグジットを引き起こす。かかるイベントに関して、VMXモニタ50は、かかる記憶に対応するアドレスを全てのTLB及び他のプロセッサリソースにおいて無効にさせる。
様々な実施の形態では、プロセッサは、所定のイベント及びVMX遷移を異なって処理する。異なる命令及びイベントのかかる異なる実現は、プロセッサのマイクロコードで行われる。たとえば、ゲストにおけるMOV to CR3命令、VMエグジット又はVMエントリに関して、プロセッサは、新たなアドレス空間に一致する既存のASIDを探す。かかる決定は、新たなアドレス空間のASIDをプロセッサにより保持されるASIDのリストに比較することで行われる。一致が存在する場合、プロセッサは、TLBエントリをフラッシュすることなしに、そのASIDを現在のASIDにする。さもなければ、1実施の形態では、LRU ASIDに対応する全てのTLBエントリはフラッシュされ、最も過去に使用されたASIDのASID値は、現在のASIDにされる。前のアドレス空間からのTLBエントリは、そのASIDがフラッシュされない場合に保持される。
対照的に、指定されたページについてTLBエントリを無効にする命令(たとえばINVLPG命令)は、異なって扱われる。たとえば、1実施の形態では、リニアアドレス空間は、かかる命令に応じて全てのTLBで無効にされる。更に異なる動作は、他の命令について行われる。たとえば、1実施の形態では、CR4値において変化を検出しないMOV to CR4命令は、それぞれのASIDにおける全てのTLBエントリを無効にする。
ここで図3を参照して、本発明の1実施の形態に係る方法のフローチャートが示されている。方法100は、プロセッサ内で異なるコンテクスト間で切り替えるために使用される。図3に示されるように、第一及び第二のアドレス空間の間の切り替えが行われる(ブロック110)。図3に示されていないが、かかる切り替えの前に、第一のアドレス空間は、現在のアドレス空間の識別子に対応する制御レジスタ(又は他のメモリ)に保存される。他の実施の形態では、かかる保存は、他の時間で行われる場合がある。
アドレス空間の切り替えは、VMエグジット又はVMエントリに対応するか、MOV to CR3命令又は別の係るイベントにより引き起こされる場合がある。つぎに、第二のアドレス空間がASIDリストに存在するかが判定される(ダイアモンド120)。かかるリストは、異なるアクティブなアドレス空間、これに対応するリニアアドレス空間における位置、及び任意に他の情報を識別するため、プロセッサにより保持される。たとえば、ASIDリストは、プロセッサにおけるスクラッチパッドである。
第二のアドレス空間がASIDリストに存在する場合、制御はブロック130に移り、ここで、第一のアドレス空間は、第一のアドレス空間に対応するTLB内のエントリを含めて保持される。さらに、第二のASIDは、第二のアドレス空間(すなわちダイアモンド120で検されたアドレス空間)がプロセッサ内の現在実行しているアドレス空間であることを示すため、(たとえば現在のASIDレジスタ)(又は他のメモリロケーション)プロセッサの制御レジスタに記憶される(ブロック135)。
代わりにダイアモンド120で、第二のアドレス空間がASIDリストに存在しないと判定された場合、つぎに、ASIDリストがフルであるかが判定される(ダイアモンド140)。リストがフルでない場合、制御はブロック145に移り、ここで、第一のアドレス空間は、第一のアドレス空間に対応するTLB内のエントリを含めて保持される。さらに、第二のASIDは、第二のアドレス空間(以下に説明される、ブロック160からのエンプティアドレス空間又はフリードアドレス空間)がプロセッサ内の現在実行しているアドレス空間であることを示すために、(たとえば、現在のASIDレジスタ、又は他のメモリロケーション)プロセッサの制御レジスタに記憶される(ブロック150)。
ダイアモンド140で、代わりに、ASIDリストがフルであることが判定され、ASIDリストにおけるLRUエントリに対応するTLB内のエントリがフラッシュされる(ダイアモンド160)。次いで、制御は、先に説明したように更なる処理のためにブロック145に移り、ここで、第二のASIDは、LRUエントリに記憶される場合がある。これに応じて、第二のASIDに関連されるTLBエントリ及び他のリソースがイネーブルにされる。
図3の実施の形態では、TLBエントリをフラッシュするためのLRUポリシーを使用するものとして示されているが、他の実施の形態では、ASIDリストがフルであるときにフラッシュするための適切なアドレス空間を判定するために、他のポリシー又はメカニズムが使用されることを理解されたい。
所定の実施の形態では、アドレス空間の切り替えの原因に依存して、TLB又は他のプロセッサリソース内の特定のエントリがソフトウェアを使用してフラッシュされる。たとえば、先に説明されたように、プロテクトされたページへの試みられた記憶によりVMエグジットが引き起こされた場合、プロテクトされた空間に対応するTLB内のアドレスがフラッシュされる。すなわち、VMXアーキテクチャの様々な実現では、VMXモニタは、それぞれのページングヒエラルキーをプロテクトする。可視化の環境では、ソフトウェアが使用され、ゲストにより命令されたとしてTLB又は他のリソースをフラッシュする。次いで、ゲストにより行われた所定のイベント(たとえば、MOV to CR3命令)は、可視化のソフトウェアが本明細書で記載されたようにフラッシュアクティビティを扱うためにリソースをフラッシュしない。したがって、ゲストでは、記憶の命令がCR3ターゲット値におけるCR3により使用されるTLBエントリを変更する場合、VMエグジットが行われる。
本発明の実施の形態に係るトランスルーセントなASIDによれば、かかるVMエグジットの後、ソフトウェアは、たとえTLBエントリがVMエグジットの時間でゲストにより使用中でなかったとしても、VMエグジットを生じた記憶の命令に対応する全てのTLBエントリをフラッシュする。かかる実施の形態では、ソフトウェアが個々のエントリをフラッシュするのを望む場合、ソフトウェアは、適切なアドレス空間でそのTLBエントリに対応するリニアアドレスでINVLPG命令を実行する。かかるソフトウェアで発せられるINVLPGについて、プロセッサは、それらのASIDに関わらず、そのリニアアドレスに対応するTLBエントリをフラッシュする。INVLPG命令を使用して実現されるとして記載されたが、他の実施の形態では、他の命令又は動作は、かかるエントリをフラッシュする場合がある。
ここで図4を参照して、本発明の1実施の形態に係る方法のフローチャートが示されている。より詳細には、図4は、TLB内の所定のエントリをフラッシュするための方法200を示す。かかる方法は、VM環境で実行され、VMエグジットに応じて始動される。図4で示されるように、本方法200は、VMエグジットの原因を判定することで開始される(ブロック210)。たとえば、1実施の形態では、VMエグジットの前の最後の動作は、プロテクトされたメモリ空間への記憶又は他のメモリ動作がVMエグジットを引き起こしたかを判定するために分析される。勿論、VMエグジットが生じた多くの他の理由が存在する。
次いで、ダイアモンド220で、記憶動作が(たとえば異なるアドレス空間に対応する)プロテクトされたTLBエントリのようなプロテクトされたエントリを変更するために試みられたかが判定される。試みたと判定されなかった場合、VMXモニタの通常の実行が継続される(ブロック230)。かかる実行は、プログラム命令に依存して、多くの形式をとる。かかる実行の後、望まれる場合、制御はゲストに戻る。
代わりに、記憶がプロテクトされたエントリを変更するのを試みたと判定された場合、VMXモニタは、ゲストが有さないプロテクトされたロケーションへのアクセスを有するので、記憶動作を実行する(ブロック235)。次いで、記憶アドレスに対応する全てのTLBエントリは、全てのTLB及び他のプロセッサリソースからフラッシュされる(ブロック240)。VMエントリは、継続された実行のためにゲストに制御を戻す(ブロック245)。かかる実行は、たとえばゲストの次の命令で継続する。
更に他の実施の形態では、全てのTLB内の全てのエントリをフラッシュすることが望まれる場合がある。たとえば、ハイレベルのページングメカニズムが変更された場合、かかるフラッシュは、VMXモニタがもはやそれをプロテクトしないとき、TLBをクリアするか又はTLBからアドレス空間を除くことが望まれる。1実施の形態では、ソフトウェアがアドレス空間について全体のTLBをフラッシュすることを望む場合、ソフトウェアは、そこに既に記憶された正確に同じ値でMOV to CR4を実行する。プロセッサがかかるCR4 writeを見たとき、どのASIDがフラッシュされる必要があるかをソフトウェアが指定しないので、全てのASIDについて全てのTLBをフラッシュする。様々な実施の形態では、PDE(又は高い)エントリが変化された場合、又は、CR3がCR3ターゲット値から除かれ、モニタがそれをもはやプロテクトしない場合、ソフトウェアは、アドレス空間について全体のTLBをフラッシュする場合がある。
ここで図5を参照して、本発明の実施の形態に係る別の方法のフローチャートが示されている。特に、本方法250は、全てのASIDについて全てのTLBをフラッシュするために使用される。図5に示されるように、かかる方法は、MOV to CR4命令を受信することで始まる(楕円255)。かかる命令の受信に応じて、プロセッサは、新たなCR4の値がその前の値と同じであるかを判定する(ダイアモンド260)。新たなアドレス値が同じでない場合、通常のCR4の動作が実行される(ブロック270)。かかる動作は、CR4における異なるビットの状態に基づいて変化する。たとえば、ビット状態に基づいて、TLBのようなプロセッサリソースがフラッシュされ、他の処理が行われる。たとえば、データを変えるCR4の遷移は、少なくとも現在のTLBにおけるエントリをフラッシュするための必要を引き起こす。さらに、かかるCR4の遷移は、アドレス空間における変換を必要とする。かかるアドレス空間の変化は、図3に関して先に記載されたのと類似のやり方で実行される場合がある。
代わりに、新たな値が前の値と同じであると判定された場合、これは、VMXモニタ又は他のエンティティが全てのTLBをフラッシュするのを望むことを示すフラグである。先に記載されたように、全てのTLBをフラッシュするために様々な理由がある。これに応じて、ブロック280で、全てのTLBは、全てのASIDについてフラッシュされる。最後に、実行は、(たとえば同じ命令で)同じ(すなわちオリジナルの)アドレス空間で継続する(ブロック290)。
MOV to CR4命令に応じて実現されるように図5の実施の形態において記載されたが、他の実施の形態において、VMXモニタ又は他のエンティティが全てのTLBをフラッシュするのを望むことを示すためのフラグとして、他の命令又は動作が使用される場合があることを理解されたい。さらに、この特定の実現により図5を参照して記載されたが、他の実施の形態では、予め決定された命令から得られる選択された値が、値が変化したかを判定するために分析される場合がある。値が変化していないと判定するため、所望のアクションが1以上のプロセッサリソースで行われる。
ここで図6を参照して、本発明の1実施の形態に係る代表的なコンピュータシステム400のブロック図が示されている。図6に示されるように、コンピュータシステム400は、プロセッサ401を含む。プロセッサ401は、1実施の形態では、メモリバスを介して共有されるメインメモリ440に結合される、メモリハブ430にフロントサイドバス420を通して結合される。図6に示されるように、プロセッサ401は、本発明の実施の形態に係るTLB403及びASIDリスト405を含む場合がある。さらに、レベル2(L2)キャッシュ407がプロセッサ401に結合される。
また、メモリハブ430は、I/O拡張バス455及び周辺バス450に結合されるI/Oハブ435に(ハブリンクを介して)結合される。様々な実施の形態では、I/O拡張バス455は、他の装置のうちで、キーボード及びマウスのような各種I/O装置に結合される。周辺バス450は、フラッシュメモリ、アッドインカード等のようなメモリ装置である周辺装置470のような各種コンポーネントに結合される。記述はシステム400の特定のコンポーネントを参照してなされるが、例示された実施の形態の様々な変更が可能である。
実施の形態は、コンピュータシステムが実施の形態を実行するのをプログラムするための命令を有する記憶媒体に記憶されたコンピュータプログラムで実現される。記憶媒体は、限定されるものではないが、フロプティカルディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)及び光磁気ディスクのようなディスクタイプ、リードオンリメモリ(ROM)、ダイナミックRAM及びスタティックRAMのようなランダムアクセスメモリ(RAM)、イレーザブル・プログラマブル・リードオンリメモリ(EPROM)、エレクトリカリ・イレーザブル・プログラマブル・リードオンリメモリ(EEPROM)、フラッシュメモリのような半導体デバイス、磁気又は光カード、若しくは、電気的な命令を記憶するために適したメディアのタイプを含んでいる。他の実施の形態は、プログラマブル制御装置により実行されるソフトウェアモジュールとして実現される。
ソフトウェアがプロセッサプロテクト及び無効なTLBエントリに役立つため、様々な実施の形態では、TLBエントリは、(たとえばMOV to CR3,VMエグジット及びVMエントリといった)コンテクストの切り替えに関して保持される。したがって、様々な実施の形態では、覗きまわる(snoopy)TLBハードウェアが必要とされず、覗きまわるTLBのキャパシティ又は他の制約が回避される。
他の実施の形態では、トランスルーセントなASIDは、異なるアドレス空間にIDを明示的に割り当てないが、たとえそのTLBが現在のアドレス空間により現在使用中ではないとしても、ページテーブルを変更した後にTLBエントリをフラッシュするための特別のアクションをプロセッサが行うことを必要とする、アーキテクチャを含むページテーブルで使用される。
したがって、様々な実施の形態では、プロセッサは、クロスアドレス空間の汚染を検出するための専用のハードウェア、若しくは明示的なソフトウェア制御及びASID割り当てなしに、ASIDをサポートし、(たとえばコンテクストの切り替えに関して)TLBフラッシュを回避する。
本発明は制限された数の実施の形態に関して記載されたが、当業者であれば、これより様々な変更及び変形を理解されるであろう。特許請求の範囲は、本発明の真の精神及び範囲に含まれるとして全ての係る変更及び変形をカバーすることが意図される。

Claims (10)

  1. アドレス空間に対応するページディレクトリに基づくアドレスを記憶する制御レジスタと、
    アドレス空間識別子のフィールドを含むエントリを有する変換ルックアサイドバッファと、
    アクティブなアドレス空間のリストを記憶するスクラッチパッドメモリと
    第二のアドレス空間が前記アクティブなアドレス空間のリストにある場合、前記変換ルックアサイドバッファをフラッシュすることなしに第一のアドレス空間と前記第二のアドレス空間との間で切り替えを行うため、「MOV to CR3制御レジスタ」命令を実行する実行ロジックと、
    を備えるプロセッサ。
  2. 前記実行ロジックは、前記変換ルックアサイドバッファをフラッシュすることなしに第一のプロセスと第二のプロセスとの間で切り替える、
    請求項1記載のプロセッサ。
  3. 前記実行ロジックは、前記変換ルックアサイドバッファをフラッシュすることなしに第一のゲストソフトウェアと第二のゲストソフトウェアとの間で切り替える、
    請求項1記載のプロセッサ。
  4. 前記変換ルックアサイドバッファは、アドレス空間識別子(ASID)を記憶する、
    請求項1記載のプロセッサ。
  5. 前記アドレス空間識別子のフィールドは、複数のビットを含む、
    請求項1記載のプロセッサ。
  6. アドレス空間に対応するページディレクトリに基づくアドレスを制御レジスタに記憶するステップと、
    アドレス空間識別子を変換ルックアサイドバッファに記憶するステップと、
    アクティブなアドレス空間のリストをスクラッチパッドメモリに記憶するステップと
    第二のアドレス空間が前記アクティブなアドレス空間のリストにある場合、前記変換ルックアサイドバッファをフラッシュすることなしに第一のアドレス空間と前記第二のアドレス空間との間で切り替えを行うため、「MOV to CR3制御レジスタ」命令を実行ロジックが実行するステップと、
    を含む方法。
  7. 前記変換ルックアサイドバッファをフラッシュすることなしに第一のプロセスと第二のプロセスとの間で切り替えを行うステップを更に含む、
    請求項記載の方法。
  8. 前記変換ルックアサイドバッファをフラッシュすることなしに第一のゲストソフトウェアと第二のゲストソフトウェアとの間で切り替えを行うステップを更に含む、
    請求項記載の方法。
  9. 前記アドレス空間識別子のフィールドは、複数のビットを含む、
    請求項記載の方法。
  10. 1以上の仮想マシンをゲストソフトウェアに提供する仮想マシンモニタを実行するプロセッサであって、
    アドレス空間に対応するページディレクトリに基づくアドレスを記憶する制御レジスタと、
    アドレス空間識別子のフィールドを含むエントリを有する変換ルックアサイドバッファと、
    アクティブなアドレス空間のリストを記憶するスクラッチパッドメモリと
    第二のゲストソフトウェアのアドレス空間が前記アクティブなアドレス空間のリストにある場合、前記変換ルックアサイドバッファをフラッシュすることなしに第一のアドレス空間識別子に対応する第一のゲストソフトウェアのアドレス空間と第二のアドレス空間識別子に対応する前記第二のゲストソフトウェアのアドレス空間との間で切り替えを行うため、「MOV to CR3制御レジスタ」命令を実行する実行ロジックと、
    を備えるプロセッサ。
JP2011106137A 2004-07-30 2011-05-11 アーキテクチャイベントの間のプロセッサリソースの保持 Expired - Fee Related JP5378450B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/903,704 US7562179B2 (en) 2004-07-30 2004-07-30 Maintaining processor resources during architectural events
US10/903,704 2004-07-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007523610A Division JP2008508598A (ja) 2004-07-30 2005-07-14 アーキテクチャイベントの間のプロセッサリソースの保持

Publications (2)

Publication Number Publication Date
JP2011181095A JP2011181095A (ja) 2011-09-15
JP5378450B2 true JP5378450B2 (ja) 2013-12-25

Family

ID=35207593

Family Applications (10)

Application Number Title Priority Date Filing Date
JP2007523610A Pending JP2008508598A (ja) 2004-07-30 2005-07-14 アーキテクチャイベントの間のプロセッサリソースの保持
JP2010179220A Active JP5214676B2 (ja) 2004-07-30 2010-08-10 アーキテクチャイベントの間のプロセッサリソースの保持
JP2010179219A Pending JP2011023017A (ja) 2004-07-30 2010-08-10 アーキテクチャイベントの間のプロセッサリソースの保持
JP2011106137A Expired - Fee Related JP5378450B2 (ja) 2004-07-30 2011-05-11 アーキテクチャイベントの間のプロセッサリソースの保持
JP2011106136A Expired - Fee Related JP5372994B2 (ja) 2004-07-30 2011-05-11 アーキテクチャイベントの間のプロセッサリソースの保持
JP2013092397A Expired - Fee Related JP5670508B2 (ja) 2004-07-30 2013-04-25 アーキテクチャイベントの間のプロセッサリソースの保持
JP2013204470A Pending JP2013257911A (ja) 2004-07-30 2013-09-30 アーキテクチャイベントの間のプロセッサリソースの保持
JP2015020410A Pending JP2015084260A (ja) 2004-07-30 2015-02-04 プロセッサ及びシステム
JP2016159588A Pending JP2016192241A (ja) 2004-07-30 2016-08-16 プロセッサ及びシステム
JP2018217401A Active JP6995731B2 (ja) 2004-07-30 2018-11-20 プロセッサ

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2007523610A Pending JP2008508598A (ja) 2004-07-30 2005-07-14 アーキテクチャイベントの間のプロセッサリソースの保持
JP2010179220A Active JP5214676B2 (ja) 2004-07-30 2010-08-10 アーキテクチャイベントの間のプロセッサリソースの保持
JP2010179219A Pending JP2011023017A (ja) 2004-07-30 2010-08-10 アーキテクチャイベントの間のプロセッサリソースの保持

Family Applications After (6)

Application Number Title Priority Date Filing Date
JP2011106136A Expired - Fee Related JP5372994B2 (ja) 2004-07-30 2011-05-11 アーキテクチャイベントの間のプロセッサリソースの保持
JP2013092397A Expired - Fee Related JP5670508B2 (ja) 2004-07-30 2013-04-25 アーキテクチャイベントの間のプロセッサリソースの保持
JP2013204470A Pending JP2013257911A (ja) 2004-07-30 2013-09-30 アーキテクチャイベントの間のプロセッサリソースの保持
JP2015020410A Pending JP2015084260A (ja) 2004-07-30 2015-02-04 プロセッサ及びシステム
JP2016159588A Pending JP2016192241A (ja) 2004-07-30 2016-08-16 プロセッサ及びシステム
JP2018217401A Active JP6995731B2 (ja) 2004-07-30 2018-11-20 プロセッサ

Country Status (6)

Country Link
US (14) US7562179B2 (ja)
JP (10) JP2008508598A (ja)
CN (2) CN1993683B (ja)
DE (3) DE112005003859B4 (ja)
HK (1) HK1101436A1 (ja)
WO (1) WO2006019914A2 (ja)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7395400B2 (en) * 2004-09-20 2008-07-01 Hewlett-Packard Development Company, L.P. Adaptive address space operating system
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7386669B2 (en) * 2005-03-31 2008-06-10 International Business Machines Corporation System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8479264B2 (en) * 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
US7945761B2 (en) * 2006-11-21 2011-05-17 Vmware, Inc. Maintaining validity of cached address mappings
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US7596677B1 (en) * 2007-02-06 2009-09-29 Parallels Software International, Inc. Paging cache optimization for virtual machine
US8171255B1 (en) 2007-02-06 2012-05-01 Parallels IP Holdings GmbH Optimization of paging cache protection in virtual environment
US7685355B2 (en) * 2007-05-07 2010-03-23 Microsoft Corporation Hardware memory management unit simulation using concurrent lookups for address translation data
US8549254B2 (en) * 2007-12-31 2013-10-01 Intel Corporation Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts
US20090172346A1 (en) * 2007-12-31 2009-07-02 Ravi Sahita Transitioning between software component partitions using a page table pointer target list
US8560806B2 (en) * 2007-12-31 2013-10-15 Intel Corporation Using a multiple stage memory address translation structure to manage protected micro-contexts
US9098625B2 (en) * 2008-02-29 2015-08-04 International Business Machines Corporation Viral trace
FR2929729A1 (fr) * 2008-04-03 2009-10-09 Alveol Technology Sarl Dispositif de gestion de la memoire d'un environnement informatique
US8316211B2 (en) * 2008-06-30 2012-11-20 Intel Corporation Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
KR20120068573A (ko) * 2010-12-17 2012-06-27 삼성전자주식회사 심리스 애플리케이션 통합 장치 및 방법
KR20120071554A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 완전가상화를 위한 주소공간 전환 방법 및 장치
US9158592B2 (en) * 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
WO2013099414A1 (ja) * 2011-12-26 2013-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション レジスタ・マッピング方法
WO2013100921A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Allocating memory access control policies
US9465748B2 (en) * 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10169091B2 (en) 2012-10-25 2019-01-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10078518B2 (en) * 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US9158702B2 (en) * 2012-12-28 2015-10-13 Intel Corporation Apparatus and method for implementing a scratchpad memory using priority hint
CN104239237B (zh) * 2013-06-20 2017-07-14 华为技术有限公司 一种tlb管理方法及装置
WO2015030746A1 (en) * 2013-08-28 2015-03-05 Empire Technology Development, Llc Virtual machine exit analyzer
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9626221B2 (en) * 2015-02-24 2017-04-18 Red Hat Israel, Ltd. Dynamic guest virtual machine identifier allocation
US11354128B2 (en) 2015-03-04 2022-06-07 Intel Corporation Optimized mode transitions through predicting target state
TWI518585B (zh) * 2015-05-18 2016-01-21 國立成功大學 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法
WO2017044124A1 (en) * 2015-09-11 2017-03-16 Hewlett Packard Enterprise Development Lp Switch process virtual address space
US9946566B2 (en) * 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
US20170220466A1 (en) * 2016-01-30 2017-08-03 Intel Corporation Sharing a guest physical address space among virtualized contexts
KR102525229B1 (ko) * 2016-05-13 2023-04-25 에스케이하이닉스 주식회사 메모리 모듈 및 이를 포함하는 시스템
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
KR102439466B1 (ko) * 2017-03-27 2022-09-02 엘지전자 주식회사 단말기 및 그 제어 방법
US10866904B2 (en) * 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US11579770B2 (en) * 2018-03-15 2023-02-14 Western Digital Technologies, Inc. Volatility management for memory device
JP2019212244A (ja) * 2018-06-08 2019-12-12 富士通株式会社 通知制御プログラム、通知制御方法および情報処理装置
US11797665B1 (en) * 2018-06-28 2023-10-24 Advanced Micro Devices, Inc. Protection against branch target buffer poisoning by a management layer
US10970224B2 (en) * 2019-06-28 2021-04-06 International Business Machines Corporation Operational context subspaces
US10891238B1 (en) 2019-06-28 2021-01-12 International Business Machines Corporation Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context
US11074195B2 (en) 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
CN112099907B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 一种虚拟机运行方法、装置及服务器
US11513963B2 (en) * 2021-03-11 2022-11-29 Western Digital Technologies. Inc. Data storage device and method for application identifier handler heads-up for faster storage response

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3855456A (en) * 1972-11-22 1974-12-17 Ebasco Serv Monitor and results computer system
JPS553077A (en) 1978-06-23 1980-01-10 Fujitsu Ltd Multi-virtual data processing system
JPS6091462A (ja) * 1983-10-26 1985-05-22 Toshiba Corp 演算制御装置
JPS60100245A (ja) 1983-11-02 1985-06-04 Mitsubishi Electric Corp アドレス変換装置
AU559311B2 (en) * 1984-02-15 1987-03-05 Matsushita Electric Industrial Co., Ltd. Pay tv charge/time data display
US5123101A (en) * 1986-11-12 1992-06-16 Xerox Corporation Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
JPH0336648A (ja) * 1989-07-03 1991-02-18 Hitachi Ltd 電子計算機及びtlb装置とマイクロプロセッサチップ
JPH03185539A (ja) * 1989-12-14 1991-08-13 Hitachi Ltd データ処理装置
EP0464333A3 (en) * 1990-07-03 1992-07-29 International Business Machines Corporation Virtual memory
JPH04349548A (ja) 1991-05-28 1992-12-04 Nec Eng Ltd アドレス変換方式
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US6356989B1 (en) * 1992-12-21 2002-03-12 Intel Corporation Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled
JPH06332803A (ja) * 1993-05-25 1994-12-02 Hitachi Ltd 仮想計算機システムにおけるtlb制御方法
US5892944A (en) * 1993-07-20 1999-04-06 Kabushiki Kaisha Toshiba Program execution and operation right management system suitable for single virtual memory scheme
JPH0784883A (ja) * 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
JPH07105091A (ja) 1993-10-01 1995-04-21 Hitachi Ltd キャッシュの制御装置および制御方法
EP0727067A4 (en) * 1993-11-02 1998-04-15 Paracom Corp APPARATUS FOR ACCELERATING TRANSACTION PROCESSING ON COMPUTER DATABASES
JPH07134658A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
JPH07134659A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
GB9502864D0 (en) * 1995-02-14 1995-04-05 Digicash Bv Cryptographic reduced instruction set processor
JPH09109380A (ja) 1995-10-20 1997-04-28 Brother Ind Ltd インクジェットプリンタ
JP3557026B2 (ja) * 1996-01-12 2004-08-25 株式会社東芝 仮想記憶管理方法
US5906001A (en) * 1996-12-19 1999-05-18 Intel Corporation Method and apparatus for performing TLB shutdown operations in a multiprocessor system without invoking interrup handler routines
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
JPH117411A (ja) 1997-06-17 1999-01-12 Fujitsu Ltd アドレス変換装置
JPH1117411A (ja) 1997-06-27 1999-01-22 Nec Corp マイクロ波回路
GB2339037B (en) 1998-07-03 2002-11-20 Advanced Risc Mach Ltd Memory address translation in a data processing system
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6230248B1 (en) * 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6418521B1 (en) * 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6327646B1 (en) * 1999-03-12 2001-12-04 Intel Corporation Translation look-aside buffer utilizing high-order bits for fast access
US6604184B2 (en) 1999-06-30 2003-08-05 Intel Corporation Virtual memory mapping using region-based page tables
JP2001022927A (ja) 1999-07-06 2001-01-26 Fuji Photo Film Co Ltd 画像処理装置、画像処理方法、及び記憶媒体
US6625720B1 (en) * 1999-08-17 2003-09-23 Nec Electronics, Inc. System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6510508B1 (en) * 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
EP1182568A3 (en) * 2000-08-21 2004-07-21 Texas Instruments Incorporated TLB operation based on task-id
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6854046B1 (en) * 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
US6646899B2 (en) 2001-09-21 2003-11-11 Broadcom Corporation Content addressable memory with power reduction technique
US20050015637A1 (en) 2001-12-14 2005-01-20 Josephus Theodorus Johannes Van Eijndhoven Data processing system
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US6920521B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method and system of managing virtualized physical memory in a data processing system
US6904490B2 (en) * 2002-10-10 2005-06-07 International Business Machines Corporation Method and system of managing virtualized physical memory in a multi-processor system
US7073042B2 (en) 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7552255B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050182903A1 (en) * 2004-02-12 2005-08-18 Mips Technologies, Inc. Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US8312452B2 (en) * 2005-06-30 2012-11-13 Intel Corporation Method and apparatus for a guest to access a privileged register
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US8751833B2 (en) * 2010-04-30 2014-06-10 Arm Limited Data processing system
US8667258B2 (en) * 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US9465748B2 (en) * 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9009413B2 (en) * 2012-12-21 2015-04-14 Intel Corporation Method and apparatus to implement lazy flush in a virtually tagged cache memory
US9703951B2 (en) * 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
US10209991B2 (en) * 2016-01-21 2019-02-19 Advanced Micro Devices, Inc. Instruction set and micro-architecture supporting asynchronous memory access

Also Published As

Publication number Publication date
US20090193222A1 (en) 2009-07-30
US7562179B2 (en) 2009-07-14
CN101872316A (zh) 2010-10-27
JP6995731B2 (ja) 2022-01-17
JP2011181094A (ja) 2011-09-15
US20190324920A1 (en) 2019-10-24
US20130097360A1 (en) 2013-04-18
DE112005001798B4 (de) 2018-09-06
JP2013145599A (ja) 2013-07-25
WO2006019914A3 (en) 2006-06-22
HK1101436A1 (en) 2007-10-18
US20110125952A1 (en) 2011-05-26
US7904694B2 (en) 2011-03-08
US20150113200A1 (en) 2015-04-23
WO2006019914A2 (en) 2006-02-23
US20180357179A1 (en) 2018-12-13
US20170235678A1 (en) 2017-08-17
JP2011023017A (ja) 2011-02-03
JP2013257911A (ja) 2013-12-26
US8543793B2 (en) 2013-09-24
DE112005001798T5 (de) 2007-05-24
JP5372994B2 (ja) 2013-12-18
CN1993683B (zh) 2010-09-01
CN101872316B (zh) 2013-04-10
US8788790B2 (en) 2014-07-22
US20150227470A1 (en) 2015-08-13
US9086958B2 (en) 2015-07-21
JP5670508B2 (ja) 2015-02-18
JP2016192241A (ja) 2016-11-10
US9507730B2 (en) 2016-11-29
JP2008508598A (ja) 2008-03-21
US20060026384A1 (en) 2006-02-02
DE112005003859A5 (de) 2014-09-04
US20090248951A1 (en) 2009-10-01
JP2011181095A (ja) 2011-09-15
US20130232316A1 (en) 2013-09-05
JP2011008805A (ja) 2011-01-13
JP2015084260A (ja) 2015-04-30
US20130212314A1 (en) 2013-08-15
DE112005003859B4 (de) 2022-01-27
US9164901B2 (en) 2015-10-20
US9164918B2 (en) 2015-10-20
US9152561B2 (en) 2015-10-06
US9996475B2 (en) 2018-06-12
US8806172B2 (en) 2014-08-12
JP2019050027A (ja) 2019-03-28
DE112005003863B3 (de) 2022-02-10
US10303620B2 (en) 2019-05-28
US20150113199A1 (en) 2015-04-23
US7899972B2 (en) 2011-03-01
JP5214676B2 (ja) 2013-06-19
US10740249B2 (en) 2020-08-11
CN1993683A (zh) 2007-07-04
US20160011986A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
JP6995731B2 (ja) プロセッサ
US7461232B2 (en) Translation look-aside buffer supporting mutually untrusted operating systems
US10592431B2 (en) Independent shared and process virtual address translations
US7552254B1 (en) Associating address space identifiers with active contexts
US7552255B1 (en) Dynamically partitioning pipeline resources

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130925

R150 Certificate of patent or registration of utility model

Ref document number: 5378450

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees