JP2013522775A - 仮想化処理システムにおけるアドレスマッピング - Google Patents

仮想化処理システムにおけるアドレスマッピング Download PDF

Info

Publication number
JP2013522775A
JP2013522775A JP2013500172A JP2013500172A JP2013522775A JP 2013522775 A JP2013522775 A JP 2013522775A JP 2013500172 A JP2013500172 A JP 2013500172A JP 2013500172 A JP2013500172 A JP 2013500172A JP 2013522775 A JP2013522775 A JP 2013522775A
Authority
JP
Japan
Prior art keywords
identifier
search key
entry
tlb
path
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.)
Granted
Application number
JP2013500172A
Other languages
English (en)
Other versions
JP2013522775A5 (ja
JP5680179B2 (ja
Inventor
ダノウスキ ウベ
ディーステルホースト シュテファン
ビーミューラー ゼバスティアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013522775A publication Critical patent/JP2013522775A/ja
Publication of JP2013522775A5 publication Critical patent/JP2013522775A5/ja
Application granted granted Critical
Publication of JP5680179B2 publication Critical patent/JP5680179B2/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/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate 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/1052Security 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/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

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

Abstract

処理システムは、ハイパーバイザによって管理される、複数の仮想マシンを実装する。各仮想マシンは、1つ以上の対応するゲストオペレーティングシステム(OS)の実行のための環境を提供する。各ゲストOS、ならびにハイパーバイザ自体は、対応する「WorldID」で識別される、関連アドレス空間を有する。さらに、各仮想マシンおよびハイパーバイザは、対応する「ASID」で識別される、複数の下位レベルのアドレス空間を管理することができる。処理システムのアドレス変換ロジックは、現在のアドレス空間コンテキストのWorldIDおよびASIDを、本来の識別子よりも少ないビットを有する、対応するWorldIDおよびASID検索キーに変換する。得られたWorldIDおよびASIDの検索キーは、1つ以上のTLBルックアップを実施して、WorldID/ASIDの組み合わせによって表される特定のアドレス空間に関するアドレスマッピング情報を取得するために使用される。
【選択図】図2

Description

本開示は、概して、メモリ管理に関し、より具体的には、仮想メモリアドレスから物理メモリへのアドレス変換に関する。
処理システムは、一般的に、仮想アドレス指定スキームを利用して、対応する仮想アドレス空間の中の仮想アドレスが、ページテーブルおよびトランスレーションルックアサイドバッファ(TLB)の使用を通して、メモリの場所の物理的アドレスおよび入力/出力(IO)インターフェースにマッピングされるようにする。
プロセッサの仮想化の出現により、処理システム内に実装される場合がある異なる仮想アドレス空間の数に起因して、また実装された仮想マシンの中で効果的隔離を提供したいという望みに起因して、この仮想アドレスから物理アドレスへのマッピングが複雑化している。処理システムは、対応する仮想アドレス空間を表す識別子を使用して、TLBタグ付けをサポートする場合がある。これらの識別子はしばしば、何十ものビットを有し、このサイズの検索を取り扱うために必要なTLBヒットロジックは、概して、実装が極めて複雑である。したがって、従来の仮想化処理システムはしばしば、ソフトウェアの制御下でこれらのアドレスマッピングを維持し、実装するために必要とされる相当なオーバーヘッドを犠牲にして、ソフトウェアベースのアドレスマッピングを利用している。
本開示は、添付の図面を参照することによって、より理解が深められ、その多数の特徴および利点が当業者に明らかになるだろう。異なる図面中の同一参照記号の使用は、類似または同一の項目を示す。
本開示の少なくとも一実施形態による、ハードウェアベースのメモリマッピングを有する仮想化処理システムを示す模式図である。 本開示の少なくとも一実施形態による、比較的長いアドレス空間識別子から、比較的短い検索キーを生成するための検索キーテーブルの例示的実装を示す模式図である。 本開示の少なくとも一実施形態による、仮想化処理システムの中のアドレス変換のための例示的方法を示す流れ図である。 本開示の少なくとも一実施形態による、アドレス空間識別子に基づく検索キーを使用する、例示的TLBルックアップを示す模式図である。
図1〜図4は、仮想化処理環境における仮想アドレスから物理アドレスへの変換のための例示的技法を示す。少なくとも一実施形態において、処理システムは、ハイパーバイザ(仮想マシンマネージャ、すなわちVMMとしても知られる)によって管理される複数の仮想マシンを実装する、1つ以上のプロセッサを有する。各仮想マシンは、1つ以上の仮想プロセッサのために安全かつ隔離されたハードウェアエミュレーション環境を提供し、それによって、各仮想プロセッサが対応するゲストオペレーティングシステム(OS)を実行する。各ゲストOS/仮想プロセッサ、ならびにハイパーバイザ自体は、関連のアドレス空間を有する。さらに、各仮想マシンおよびハイパーバイザは、仮想マシンのゲストOSの制御下で実行された特定のソフトウェアアプリケーションに関連するアドレス空間等の、複数の下位レベルのアドレス空間を管理することができる。各ゲストOSは一般的に、本明細書では「WorldID」として称される、特定の識別子を使用して識別され、ゲストOSによって管理される下位レベルのアドレス空間は、本明細書では「アドレス空間識別子」または「ASID」と称される、特定の識別子を使用して識別される。典型的に、WorldIDおよびASIDは、長さが何十ものビットであり、そのため、TLBヒットロジックによって直接使用されるには大き過ぎる場合がある。したがって、少なくとも一実施形態において、以下に記載の処理システムのアドレス変換ロジックは、処理システムの現在の仮想アドレス空間コンテキストに関連するWorldIDおよびASIDを、本来の識別子よりも少ないビットを有し、このため、複雑度の低いTLBヒットロジックを必要とする、対応するWorldIDおよびASID検索キーに変換する。得られたWorldID検索キーおよびASID検索キーはバッファされ、1つ以上のTLBルックアップを実施して、WorldID/ASIDの組み合わせによって表される特定のアドレス空間に関するアドレスマッピング情報を取得するために使用される。アドレスマッピング情報は、次いで、メモリアクセスリクエストに関連する仮想アドレスを、対応する物理アドレスに変換するために使用される。
図1は、本開示の少なくとも一実施形態による、ハードウェアベースの仮想アドレスから物理アドレスへのマッピングを実装する仮想化処理システム100を示す。図示される例において、処理システム100は、1つ以上のプロセッサ102と、メモリサブシステム104とを含む。プロセッサ102は、1つ以上のプロセッサコア106と、キャッシュサブシステム108と、メモリ管理ユニット(MMU)110とを含む。メモリサブシステム104は、1つ以上のバス、クロスバースイッチ、またはこれらの組み合わせを介して、プロセッサコア106およびキャッシュサブシステム108に接続される。メモリサブシステム104は、システムメモリと、外部キャッシュと、入力/出力(I/O)デバイスと、処理システム100の全アドレス空間内の1つ以上の物理アドレスが割り当てられた他のコンポーネントとを含むことができる。一実施形態において、プロセッサ102のコンポーネントのうちのいくつかまたは全ては、処理デバイスの電気および電子設計を生成するように統合される、プロセッサ102の機能性を定義する、1組のレジスタ転送レベル(RTL)またはベリログ(Verilog)命令に基づいて、設計することができる。
処理システム100は、複数のゲストオペレーティングシステム(OS)の実装を制御するハイパーバイザ112(仮想マシンマネージャ、すなわちVMMとしても知られる)を実装する仮想化ソフトウェアまたは仮想化ファームウェアの実行を通して、1つ以上のソフトウェアベースの仮想マシンを実装するために、仮想化をサポートするように構成される。ハイパーバイザ112は、各ゲストOSの動作と関係するアプリケーションの動作との安全な隔離を保証するために、ページテーブルの変更等、ある所定の動作をインターセプトし、エミュレートすることによって、プロセッサシステム100の処理ハードウェア114に関する完全制御の状況を各ゲストOSに提供する。したがって、ゲストOSおよびゲストOSによって制御される任意の対応するアプリケーションの実行が、「仮想マシン」と称される。図1は、これによりハイパーバイザ112が、仮想マシン116、117、118、および119(それぞれ、VM1、VM2、VM3、およびVM4とも称される)という、4つの仮想マシンを管理する例を示す。例示を簡便にするために、各仮想マシン116は、単一のOSをサポートするものとして図示される。仮想マシン116は、アプリケーション122および123(AS1およびAS2)を含むゲストOS121を実行し、仮想マシン117は、アプリケーション125(AS3)を含むゲストOS124を実行し、仮想マシン118は、ゲストOS126を実行し、仮想マシン119は、アプリケーション128および129(AS4およびAS5)を含むゲストOS127を実行する。他の実装において、各仮想マシンは、複数のゲストオペレーションシステムをサポートすることができる。
仮想化の一般的な目標は、オペレーティングシステムとそれらに関連するソフトウェアアプリケーションとの間にリソースを保証する安全な隔離を維持しながら、単一の処理デバイスが複数のオペレーティングシステムを稼動することを可能にすることである。この隔離を実装するために、ゲストOSがアクセスすることを許可されている特定のメモリ場所を制御するよう、異なるゲストオペレーティングシステム/仮想マシンに対して、異なる仮想アドレス空間が使用される。各ゲストOSは、メモリサブシステム104に対する独自の「世界」において動作し、このため、各ゲストOSには、本明細書では「WorldID」と称される、一意の識別子が割り当てられる。さらに、所与のOS環境内でアプリケーションを隔離することはしばしば利点であり、このため、各ゲストOSは、ゲストOSまたはゲストOSによってサポートされるソフトウェアアプリケーションのある所定のカーネル動作等、ゲストOSによってサポートされる特定の機能に対して異なる仮想アドレス空間を割り当てる場合がある。例示のために、アプリケーション122および123の各々は、ゲストOS121によって割り当てられた別々のアドレス空間の中で動作してもよく、または、ゲストOS121が、アプリケーション122および123の両方に対して同じアドレス空間を実装してもよい。処理システム100は、本明細書では「アドレス空間識別子」または「ASID」と称される、一意の識別子を、ゲストOSによって管理される各仮想アドレス空間に関連付ける。このように、特定のWorldIDおよび特定のASIDの組み合わせは、対応するページテーブル、または1組のページテーブルを識別し、これが、特定のWorldIDおよびASIDに関連するアプリケーションまたはOSによって生成された仮想アドレスを、対応する物理アドレスに変換するために使用される。
例示を簡便にするために、これによってMMU110がこの仮想アドレスから物理アドレスへの変換を提供するように構成され、かつ別の方法で、異なる仮想マシン116〜119内で開始されたメモリアクセスリクエストを促進する実施形態が記載される。しかしながら、他の実施形態において、本明細書に記載されるアドレス変換技法は、処理システム100の他のコンポーネントによって実装されてもよい。例えば、開示されるアドレス変換技法は、キャッシュサブシステム108のTLBロジック111によって、または命令キャッシュ(図示せず)のTLBロジックによって実装される場合がある。
一実施形態において、MMU110は、1つ以上のページテーブル130と、トランスレーションルックアサイドバッファ(TLB)132と、1組の検索キーテーブル134および136と、ハードウェアコントローラ138とを含む。各ページテーブル130は、特定の仮想アドレス空間の仮想アドレスと対応する物理アドレスとの間のマッピングを表す情報を記憶する。TLB132は、処理システム100によって最近使用された仮想アドレスから物理アドレスへのマッピングをキャッシュする。検索キーテーブル134および136は、以下に詳細を記載するように、仮想マシン116〜119において使用されたWorldIDおよびASIDから、TLB132のTLBヒットロジックのための検索キーを生成するために使用される。
ハードウェアコントローラ138は、メモリサブシステム104へのアクセスを管理するように動作する。仮想マシンが、メモリがマッピングされた場所にアクセスを試みると、ハイパーバイザ112は、リクエストされたメモリアクセス動作142を実行に移すために、MMU110による処理のためのメモリアクセスリクエスト140を開始する。メモリアクセスリクエスト140は典型的に、問題のメモリ場所の仮想アドレスを含み、さらに、メモリアクセスを開始した仮想マシンのWorldIDを含むか、またはこれに関連付けられる。さらに、メモリアクセスリクエスト140は、メモリアクセスを開始したアプリケーションまたは機能に関連するASIDも含むか、またはこれに関連付けられる。一実施形態において、x86ベースのアーキテクチャの中に見られる制御レジスタCR3は、所与のプロセッサコアに対する現在のASIDを記憶するために使用され、このために、ASIDは、例えば、制御レジスタCR3の中に記憶されたビットの一部または全体を含むことができる。WorldID、またはWorldIDとASIDの組み合わせは、メモリアクセスリクエスト140に伴って供給される仮想アドレスに関連する特定の仮想アドレス空間を識別する。したがって、ハードウェアコントローラ138は、WorldIDおよびASIDを使用して、仮想アドレスを対応する物理アドレスに変換するために使用されることになる、特定の仮想アドレスから物理アドレスへの変換を識別する。ハードウェアコントローラ138は、示されたアドレス変換を実施し、次いで、メモリサブシステム104が示されたメモリ場所にアクセスするよう命令するために、メモリアクセス動作142の一部として、得られた物理アドレスをメモリサブシステム104へ送信する。
記載のように、ページテーブル130の各々は、仮想アドレス空間の仮想アドレスと対応する物理アドレスとの間の特定のマッピングを提供するために、特定の仮想アドレス空間に対応する。ページテーブル130に直接アクセスする際に比較的高いレイテンシが存在するため、ハードウェアコントローラ138は、最近使用された仮想から物理へのマッピングをキャッシュするためにTLB132を利用する。メモリアクセスリクエスト140のために仮想アドレスから物理アドレスへの変換を実施する際、ハードウェアコントローラ138は、最初に、TLB132を確認して、TLB132がメモリアクセスリクエスト140のために必要な特定の仮想から物理へのマッピングを既に含んでいるか判定する。一実施形態において、ハードウェアコントローラ138は、TLBタグ付けおよびTLBヒットロジックを使用して、対応する仮想アドレス空間のマッピング情報がTLB132のエントリ内に存在するか識別する。記載のように、メモリアクセスリクエスト140に伴って送信されたWorldIDおよびASIDは、対応する物理アドレスに変換されることになる、仮想アドレスに関連する一意の仮想アドレス空間を識別する。しかしながら、これらの値はしばしば、何十ものビットの長さであり、このために、TLB132のタグ配列に対する検索キーとして直接使用された場合、相当に複雑なTLBヒットロジックが必要になる。したがって、少なくとも一実施形態において、ハードウェアコントローラ138は、検索キーテーブル134および136を使用して、メモリアクセスリクエスト140に伴って送信されたWorldIDおよびASIDを、より小さい検索キーに変換し、これは、その後、TLB132のTLBヒットロジックによって使用される場合がある。一例示的実施形態において、検索キーテーブル134および136の使用を通して、WorldIDは、16ビットの値から2ビットのWorldID検索キーに変換することができ、ASIDは、36ビットの値から3ビットのASID検索キーに変換することができる。
WorldIDおよびASIDを、それぞれ対応するWorldID検索キーおよびASID検索キーに初めに変換した後、ハードウェアコントローラ138は、得られたWorldIDおよびASIDの検索キーをバッファし、ハイパーバイザ112とゲストOSとの間の実行の切り替え時等、またはあるアプリケーションの実行から別のアプリケーションの実行への切り替え時に制御レジスタCR3の中のASIDを更新することによって、ゲストOSがアプリケーションレベルのアドレス空間を切り替える時等、コンテキスト変化に起因して、WorldIDまたはASIDのうちの1つ、あるいは両方に対する更新があるまで、これらのバッファされた検索キーをTLBルックアップのために引き続き使用する。このように、WorldIDおよびASIDをWorldIDおよびASIDの検索キーに変換するためにハードウェアコントローラ138によって利用されるマッピングロジックは、WorldIDまたはASIDに対する更新につき1回しか実行する必要がない。
図2は、検索キーテーブル134および136の例示的実装を示す。検索キーテーブル134(本明細書では「WorldIDテーブル134」と称される)は、2X件のエントリを含む完全連想キャッシュまたは他のデータ構造を備え、Xは、得られたWorldID検索キー201の中のビット数である。図示された例において、WorldIDテーブル134は、4(22)エントリを有し、それによって、2ビットのWorldID検索キー201の生成をもたらす。WorldIDテーブル134の各エントリは、対応する経路(例えば、図2の例の0〜3)に関連し、各エントリは、対応するWorldIDを記憶するように構成されたWorldIDフィールド202を含む。各エントリはさらに、対応するエントリが有効なエントリであるかどうかを示す有効ビットを記憶するための有効フィールド203等の様々なステータスフィールド、ならびに最も長く使用されていない(LRU)または最も最近使用された(MRU)情報を記憶するためのフィールド等を含むことができる。
検索キーテーブル136(本明細書では「ASIDテーブル136」と称される)は、X個のインデックスを含む群連想キャッシュまたは他のデータ構造を備え、各インデックスがWorldIDテーブル134の対応する経路に関連し、各インデックスは1組の2Y件のエントリを備え、Yは、それによって得られるASID検索キー211の中のビット数である。図示された例において、ASIDテーブル136は、8(23)エントリを有し、このため、3ビットのASID検索キー211の生成をもたらす。ASIDテーブル136の各エントリは、対応する経路(例えば、図2の例の0〜7)に関連し、各エントリは、対応するASIDを記憶するように構成されたASIDフィールド204を含む。各エントリはさらに、対応するエントリが有効なエントリであるかどうかを示す有効ビットを記憶するための有効フィールド205等の様々なステータスフィールド、ならびにLRUまたはMRU情報を記憶するためのフィールド等を含むことができる。
一実施形態において、WorldID検索キー201およびASID検索キー211の判定は、2段階のプロセスを含む。WorldIDに対応するWorldID検索キー201を判定するために、ハードウェアコントローラ138は、WorldIDテーブル134を検索して、WorldIDを記憶する、一致するエントリが存在するかどうかを判定する。そのようなエントリがWorldIDテーブル134の中で検出された場合、WorldID検索キー201は、検出されたエントリの経路に設定される。例として、WorldIDテーブル134の第3のエントリ(経路=2)が一致するWorldIDを記憶する場合、WorldID検索キー201は、第3のエントリ、すなわち、10b(2)の経路に設定されることになる。WorldID検索キー201を識別した後、ハードウェアコントローラ138は、WorldIDテーブル134の中の一致するエントリの経路を使用することによって、ASIDに対応するASID検索キー211を判定して、検索されることになるASIDテーブル136の対応するインデックスを識別する。前述の例を使用すると、WorldIDテーブル134の一致するエントリの経路は、インデックス=2であり、このため、ハードウェアコントローラ138は、ASIDテーブル136の(インデックス0〜3のうちの)インデックス2を検索して、インデックス2の中のエントリ0〜7のうちのいずれかがメモリアクセスリクエストに関連するASIDを記憶するかどうかを判定することになる。そのようなエントリがASIDテーブル136の示されたインデックスの中で検出された場合、ASID検索キー211は、エントリの経路に設定される。例として、ASIDテーブル136の第4のエントリ(経路=3)が一致するASIDを記憶する場合、ASID検索キー211は、011b(3)に設定されることになる。
図3は、本開示の少なくとも一実施形態による、図2のWorldIDテーブル134およびASIDテーブル136を使用して、WorldIDおよびASIDの検索キーを判定するための、ハードウェアコントローラ138の動作の例示的方法300を示す。方法300は、ブロック302で、アドレス空間コンテキストに対する更新に応答して開始する。この更新は、現在のASID、現在のWorldID、または両方の中の変化を含むことができる。例として、コンテキスト切り替えがハイパーバイザ112とゲストOSとの間、またはゲストOSの間で発生すると、WorldIDおよびASIDは、新しいアドレス空間を反映するように更新される。同様に、現在実行されているゲストOSがアドレス空間を切り替えると(例えば、アプリケーション間の切り替え時等)、ASIDが更新される。x86ベースのプロセッサアーキテクチャにおいて、制御レジスタCR3はしばしば、現在のアドレス空間に関連する特定のページテーブルをポイントする、ページディレクトリベースレジスタ(PDBR)として働き、このため、制御レジスタCR3の中に記憶されたビットのいくらかの部分または全体は、ASIDとして使用することができる。したがって、使用中の現在のASIDに対する更新は、制御レジスタCR3の中に記憶された値に対する更新として検出することができる。
ブロック304で、ハードウェアコントローラ138は、ヒットロジックを採用して、WorldIDテーブル134で、WorldIDを記憶しているエントリを検索する。同じWorldIDを記憶するエントリが全く検出されない場合、ブロック306で、ハードウェアコントローラ138は、メモリアクセスリクエストに関連するWorldIDに対して、WorldIDテーブル134の中のエントリを割り当てる。エントリの割り当ては、未使用のエントリを割り当てること、または現在使用中のエントリを排除することを含むことができる。排除されるエントリは、例えば、最も長く使用されていないエントリとして選択することができる。WorldIDテーブル134の中の割り当てられたエントリは、次に、ブロック302で受信されたWorldIDで投入され、適切なステータスフラグが設定される。ブロック308で、WorldID検索キーは、ブロック306で割り当てられた、WorldIDテーブル134の中のエントリの経路に設定される。ブロック310で、WorldIDテーブル134の割り当てられたエントリに対応するASIDテーブル136のインデックスのエントリがフラッシュされ、インデックスのエントリが選択され、ブロック302で受信されたASIDで投入される。
ブロック304に戻ると、WorldIDテーブル134の一致するエントリが検出された場合、ブロック312で、ハードウェアコントローラ138は、WorldIDキー201を一致するエントリの経路に設定する。ブロック314で、ハードウェアコントローラ138は、WorldIDテーブル134の一致するエントリに関連するASIDテーブル136のインデックスを選択し、ブロック316で、ハードウェアコントローラ138は、ASIDテーブル136の選択されたインデックスの1組のエントリで、ブロック302で受信されたASIDを記憶する、一致するエントリを検索する。
選択された経路の一致するエントリが全く検出されない場合、ブロック318で、ハードウェアコントローラ138は、未使用のエントリを選択すること、または使用中のエントリを排除することのいずれかによって、ASIDテーブル136の選択されたインデックスのエントリを割り当てて、ASIDを記憶する。ブロック320で、ハードウェアコントローラ138は、ASID検索キーを、ブロック318で割り当てられたエントリの経路に設定する。ブロック322で、ハードウェアコントローラ138は、ブロック302〜322のプロセスを経て判定されたWorldIDおよびASID検索キーに一致する、TLB132のあらゆるエントリをフラッシュする。ブロック316に戻ると、選択された経路の一致するエントリが検出された場合、ブロック324で、ハードウェアコントローラ138は、ASIDキー211を、一致するエントリの経路に設定する。
最新のWorldIDおよびASID検索キーを設定後、ブロック326で、ハードウェアコントローラ138は、WorldIDおよびASIDの検索キーを利用して、ページウォークを通してページ変換情報でTLB132の対応するエントリを投入し、次のアドレス空間のコンテキスト変化まで、仮想メモリアドレスから物理メモリアドレス変換のためのTLBルックアップを実施することができ、その時点で、更新されたWorldID/ASIDに対して、方法300の次の反復が開始される。
図4は、本開示の少なくとも一実施形態による、WorldID検索キー201およびASID検索キー211を使用する、TLBルックアップの例示的実装を示す。図示された例において、TLB132は、複数のエントリを含むテーブルまたは他のデータ構造を備え、各エントリは、対応する仮想ページ番号を記憶するように構成された仮想ページ番号(VPN)フィールド401と、物理ページ番号(PPN)フィールド402とを有する。各エントリはさらに、対応するWorldID検索キーを記憶するように構成されたWorldIDタグフィールド403、対応するASID検索キーを記憶するように構成されたASIDタグフィールド404、および設定されると、関連するマッピングが対応する仮想マシンに対してグローバル(すなわち、仮想マシン内の全てのアドレス空間に対してグローバル)であることを示す、グローバルビットを記憶するように構成されたグローバルアドレスフィールド405に関連する。TLBルックアップを実施するために、ハードウェアコントローラ138は、TLBヒットロジックを採用して、TLB132のエントリで、処理されているメモリアクセスリクエストの仮想メモリアドレスのWorldID検索キー201およびVPNに一致し、かつ、ASID検索キーに一致するか、またはグローバルビット設定を有するかのいずれかである、エントリを検索する。TLB132の中のエントリがこれらの検索条件の各々を満たす(すなわち、WorldID検索キーに一致すること、AND VPNに一致すること、および(ASID検索キーと一致すること、ORグローバルビットが設定されること))場合、ハードウェアコントローラ138は、エントリのPPNフィールド402の中に記憶された物理ページ番号(PPN_X)を使用して、メモリアクセスリクエストの仮想アドレスを対応する物理アドレスに変換する。この変換は、一般的に、物理アドレスを生成するように、仮想アドレスのいくつかの部分または全体から判定されたページオフセットに物理ページ番号を連結することによって、達成される。
本開示の別の態様は、実行時に上記の仮想アドレスから物理アドレスへの変換を実装するためのハードウェアの設計を促進するように適合される、1組の命令を表すデータを記憶するコンピュータ可読媒体を含む。このように、上記の技法を実装するデバイスは、例えば、ソフトウェア(例えば、コンピュータ可読プログラムコード)を記憶するように構成された、コンピュータ使用可能(例えば、可読)媒体の中に配置されたソフトウェアにおいて具現化される場合がある。プログラムコードは、本明細書に開示されるシステムおよび方法の加工を含む、本開示の実施形態を実施可能にさせる。例えば、これは、汎用プログラム言語(CまたはC++等)、ベリログ、ベリログA、HDL、VHDL、AlteraHDL(AHDL)等を含むハードウェア記述言語(HDL)等、または他の利用可能なプログラミングおよびまたはスキームキャプチャツール(回路キャプチャツール等)の使用を通して実現することができる。プログラムコードは、半導体、磁気ディスク、光ディスク(CD−ROM、DVD−ROM等)を含む任意の周知のコンピュータ使用可能媒体の中に配置することができる。上記のシステムおよび技法によって実現される機能および/または提供される構造は、プログラムコードの中に具現化されるコア(GPUコア等)の中に表現することができ、集積回路の製造の一部としてハードウェアに変形されてもよいことが理解される。
本開示の他の実施形態、使用、および利点が、本明細書の検討および本明細書に開示される開示の実践から、当業者には明らかであろう。本明細書および図面は例示としてのみ考慮されるべきであり、したがって、本開示の範囲は、以下の請求項およびその均等物によってのみ制限されることが意図される。

Claims (20)

  1. 複数の仮想マシンを実装する1つ以上のプロセッサを備えるシステムにおいて、
    前記複数の仮想マシンのうちの対応する仮想マシンに関連して実行されるオペレーティングシステムの第1の識別子を表す第1の検索キーを使用して、トランスレーションルックアサイドバッファ(TLB)ルックアップを実施することを含み、
    前記第1の検索キーが前記第1の識別子よりも少ないビットを有する、方法。
  2. 前記オペレーティングシステムによって管理される仮想アドレス空間の第2の識別子を表す第2の検索キーをさらに使用して、前記TLBルックアップを実施することをさらに含み、
    前記第2の検索キーが前記第2の識別子よりも少ないビットを有する、請求項1に記載の方法。
  3. 複数のエントリを含み、各エントリが、対応する経路に関連し、仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第1のテーブルに、前記第1の識別子に基づいてアクセスすることと、
    前記第1の識別子を記憶する前記第1のテーブルの選択エントリの第1の経路に基づいて、前記第1の検索キーを判定することと、
    をさらに含む、請求項2に記載の方法。
  4. その各エントリが、対応する経路を有し、対応するオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第2のテーブルの複数のインデックスのうちの選択インデックスを、前記第1の経路に基づいて判定し、前記第2の識別子に基づいて前記選択インデックスにアクセスすることと、
    第2の識別子を記憶する前記選択インデックスの選択エントリの第2の経路に基づいて、前記第2の検索キーを判定することと、
    をさらに含む、請求項3に記載の方法。
  5. 前記第1の検索キーが、前記第1の経路によって判定され、前記第2の検索キーが、前記第2の経路によって判定される、請求項4に記載の方法。
  6. 前記第1のテーブルの前記選択エントリに対する前記第1の識別子を記憶することと、
    前記第2のテーブルの前記選択インデックスの前記エントリをフラッシュし、前記選択インデックスの前記選択エントリに対する前記第2の識別子を記憶することと、
    をさらに含む、請求項4に記載の方法。
  7. 前記TLBルックアップを実施することが、
    前記第1の検索キーを有し、かつ前記第2の識別子または設定グローバルビットのうちの少なくとも1つを有する、前記TLBの選択エントリを識別するために、TLBにアクセスすることと、
    前記TLBの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成することと、
    を含む、請求項1に記載の方法。
  8. 1組の命令を記憶するためのコンピュータ可読媒体であって、前記1組の命令が、請求項1に記載の方法を実装するために前記システムの設計を判定するように構成されるハードウェア記述言語(HDL)命令を含む、コンピュータ可読媒体。
  9. 複数の仮想マシンを実装する1つ以上のプロセッサを備えるシステムにおいて、
    前記複数の仮想マシンのうちの選択仮想マシンに関連して実行されるオペレーティングシステムの第1の識別子を判定し、前記オペレーティングシステムによって管理される仮想アドレス空間の第2の識別子を判定することと、
    複数のエントリを含み、各エントリが、対応する経路を有し、前記システムの対応する仮想マシンに関連するオペレーティングシステムの識別子を記憶するように構成される、第1のテーブルに、前記第1の識別子に基づいてアクセスすることと、
    前記第1の識別子を記憶する前記第1のテーブルの選択エントリの第1の経路に基づいて、前記第1の検索キーを判定することと、
    その各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第2のテーブルの複数のインデックスのうちの選択インデックスを、前記第1の経路に基づいて判定し、前記第2の識別子に基づいて、前記選択インデックスにアクセスすることと、
    前記第2の識別子を記憶する前記選択インデックスの選択エントリの第2の経路に基づいて、前記第2の検索キーを判定することと、
    を含む、方法。
  10. ページオフセットを判定するために、前記第1の検索キーおよび前記第2の検索キーを使用して、トランスレーションルックアサイドバッファ(TLB)ルックアップを実施することと、
    前記ページオフセットおよび前記仮想アドレスに基づいて、物理アドレスを生成することと、
    をさらに含む、請求項9に記載の方法。
  11. 前記TLBルックアップを実施することが、
    前記第1の検索キーを有し、かつ前記第2の識別子または設定グローバルビットのうちの少なくとも1つを有する、前記TLBの選択エントリを識別するために前記TLBにアクセスすることを含む、請求項10に記載の方法。
  12. 前記第1の検索キーが、前記第1の識別子よりも少ないビットを有し、前記第2の検索キーが、前記第2の識別子よりも少ないビットを有する、請求項9に記載の方法。
  13. 1組の命令を記憶するためのコンピュータ可読媒体であって、前記1組の命令が、請求項9に記載の方法を実装するために前記システムの設計を判定するように構成されるハードウェア記述言語(HDL)命令を含む、コンピュータ可読媒体。
  14. 処理システムであって、
    トランスレーションルックアサイドバッファ(TLB)と、
    前記処理システムによって実装される複数の仮想マシンのうちの仮想マシンに関連して実行されるオペレーティングシステムの第1の識別子を表す第1の検索キーを使用して、TLBルックアップを実施するためのハードウェアコントローラであって、前記第1の検索キーが前記第1の識別子よりも少ないビットを有する、ハードウェアコントローラと、
    を備える、処理システム。
  15. 前記ハードウェアコントローラがさらに、前記オペレーティングシステムによって管理される仮想アドレス空間の第2の識別子を表す第2の検索キーを使用して、前記TLBルックアップを実施するためのものであり、
    前記第2の検索キーが前記第2の識別子よりも少ないビットを有する、請求項14に記載の処理システム。
  16. 複数のエントリを含む第1のテーブルであって、各エントリが、対応する経路を有し、対応する仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第1のテーブルをさらに備え、
    前記ハードウェアコントローラが、前記第1の識別子を記憶する前記第1のテーブルの選択エントリの第1の経路に基づいて、前記第1の検索キーを判定するためのものである、請求項15に記載の処理システム。
  17. 複数のインデックスを含む第2のテーブルであって、各インデックスが、前記第1のテーブルの対応するエントリに関連し、各インデックスが、複数のエントリを含み、前記第2のテーブルの各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第2のテーブルをさらに備え、
    前記ハードウェアコントローラが、前記第1の経路に基づいて前記複数のインデックスのうちの選択インデックスを判定し、前記第2の識別子を記憶する前記選択インデックスの選択エントリの第2の経路に基づいて前記第2の検索キーを判定するためのものである、請求項15に記載の処理システム。
  18. 前記第1の検索キーが、前記第1の経路であり、前記第2の検索キーが、前記第2の経路である、請求項17に記載の処理システム。
  19. 前記ハードウェアコントローラがさらに、
    前記第1のテーブルの前記選択エントリに対する前記第1の識別子を記憶し、
    前記選択インデックスの前記エントリをフラッシュし、
    前記選択インデックスの前記選択エントリに対する前記第2の識別子を記憶するためのものである、請求項17に記載の処理システム。
  20. 前記ハードウェアコントローラが、前記第1の検索キーを有し、かつ前記第2の識別子または設定グローバルビットのうちの少なくとも1つを有する、前記TLBの選択エントリを識別するために、前記TLBにアクセスすることによって、前記TLBルックアップを実施するためのものであり、
    前記ハードウェアコントローラがさらに、前記TLBの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成するためのものである、請求項14に記載の処理システム。
JP2013500172A 2010-03-16 2011-03-16 仮想化処理システムにおけるアドレスマッピング Active JP5680179B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/724,912 US8386749B2 (en) 2010-03-16 2010-03-16 Address mapping in virtualized processing system
US12/724,912 2010-03-16
PCT/US2011/028636 WO2011116070A1 (en) 2010-03-16 2011-03-16 Address mapping in virtualized processing system

Publications (3)

Publication Number Publication Date
JP2013522775A true JP2013522775A (ja) 2013-06-13
JP2013522775A5 JP2013522775A5 (ja) 2014-11-20
JP5680179B2 JP5680179B2 (ja) 2015-03-04

Family

ID=44260789

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013500172A Active JP5680179B2 (ja) 2010-03-16 2011-03-16 仮想化処理システムにおけるアドレスマッピング

Country Status (6)

Country Link
US (1) US8386749B2 (ja)
EP (1) EP2548124B1 (ja)
JP (1) JP5680179B2 (ja)
KR (1) KR101746734B1 (ja)
CN (1) CN102792286B (ja)
WO (1) WO2011116070A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
KR20130050156A (ko) * 2011-11-07 2013-05-15 한국전자통신연구원 가상 주소 공간 전환 장치
US9672583B2 (en) 2011-12-21 2017-06-06 Intel Corporation GPU accelerated address translation for graphics virtualization
CN102662869B (zh) * 2012-04-01 2015-08-26 龙芯中科技术有限公司 虚拟机中的内存访问方法和装置及查找器
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US8504757B1 (en) 2012-09-16 2013-08-06 Proximal Data, Inc. Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor
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
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US20140168227A1 (en) * 2012-12-13 2014-06-19 Nvidia Corporation System and method for versioning buffer states and graphics processing unit incorporating the same
US9459877B2 (en) 2012-12-21 2016-10-04 Advanced Micro Devices, Inc. Nested speculative regions for a synchronization facility
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
CN104239238B (zh) * 2013-06-21 2018-01-19 格芯公司 用于管理转换旁视缓冲的方法和装置
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
CN103778018B (zh) * 2014-01-16 2018-05-04 深圳艾迪宝智能系统有限公司 一种用于pcie虚拟化管理的方法
US9075945B1 (en) * 2014-06-27 2015-07-07 Google Inc. Method for implementing efficient entropy decoder by using high level synthesis
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
EP2997478B1 (en) * 2014-07-21 2019-03-13 VIA Alliance Semiconductor Co., Ltd. Efficient address translation caching in processor that supports large number of different address spaces
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
KR102473665B1 (ko) 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US11379385B2 (en) 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10592267B2 (en) 2016-05-17 2020-03-17 Vmware, Inc. Tree structure for storing monitored memory page data
US10430223B2 (en) * 2016-05-17 2019-10-01 Vmware, Inc. Selective monitoring of writes to protected memory pages through page table switching
CN107463425B (zh) * 2016-06-03 2021-03-05 阿里巴巴集团控股有限公司 获取Java虚拟机的运行状态的方法和装置
CN107783913B (zh) * 2016-08-31 2021-12-03 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
KR102511451B1 (ko) * 2016-11-09 2023-03-17 삼성전자주식회사 리치 실행 환경에서 보안 어플리케이션을 안전하게 실행하는 컴퓨팅 시스템
US11106596B2 (en) * 2016-12-23 2021-08-31 Advanced Micro Devices, Inc. Configurable skewed associativity in a translation lookaside buffer
KR102439466B1 (ko) * 2017-03-27 2022-09-02 엘지전자 주식회사 단말기 및 그 제어 방법
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
US10754790B2 (en) * 2018-04-26 2020-08-25 Qualcomm Incorporated Translation of virtual addresses to physical addresses using translation lookaside buffer information
US11113422B2 (en) 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
US11074198B2 (en) * 2018-09-18 2021-07-27 Micron Technology, Inc. Key management in computer processors
US10761996B2 (en) * 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US10691592B2 (en) * 2018-10-30 2020-06-23 Micron Technology, Inc. Error-checking in namespaces on storage devices using a namespace table and metadata
US10846239B2 (en) * 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
US11108671B2 (en) 2019-01-21 2021-08-31 Rankin Labs, Llc Systems and methods for processing network traffic using dynamic memory
WO2020214757A1 (en) * 2019-04-17 2020-10-22 John Rankin Virtual memory pool within a network which is accessible from multiple platforms
US11729184B2 (en) 2019-05-28 2023-08-15 Rankin Labs, Llc Detecting covertly stored payloads of data within a network
US11055166B2 (en) 2019-05-28 2021-07-06 Rankin Labs, Llc Covertly storing a payload of data within a network
WO2020243244A1 (en) 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
US11516048B2 (en) 2019-12-18 2022-11-29 Rankin Labs, Llc Distribution of data over a network with interconnected rings

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6057449A (ja) * 1983-09-09 1985-04-03 Hitachi Ltd 仮想計算機システムのアドレス変換方式
JPH01255945A (ja) * 1988-04-06 1989-10-12 Hitachi Ltd 仮想計算機におけるアドレス変換装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
JP2009146344A (ja) * 2007-12-18 2009-07-02 Hitachi Ltd 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム
CN101667958B (zh) 2008-09-01 2012-08-29 华为技术有限公司 选择哈希函数的方法、存储及查找路由表的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6057449A (ja) * 1983-09-09 1985-04-03 Hitachi Ltd 仮想計算機システムのアドレス変換方式
JPH01255945A (ja) * 1988-04-06 1989-10-12 Hitachi Ltd 仮想計算機におけるアドレス変換装置

Also Published As

Publication number Publication date
KR101746734B1 (ko) 2017-06-13
EP2548124B1 (en) 2020-02-12
US8386749B2 (en) 2013-02-26
US20110231630A1 (en) 2011-09-22
EP2548124A1 (en) 2013-01-23
CN102792286A (zh) 2012-11-21
KR20130048191A (ko) 2013-05-09
CN102792286B (zh) 2016-05-11
JP5680179B2 (ja) 2015-03-04
WO2011116070A1 (en) 2011-09-22

Similar Documents

Publication Publication Date Title
JP5680179B2 (ja) 仮想化処理システムにおけるアドレスマッピング
KR101770495B1 (ko) 공통 상황 항목의 동시 무효화를 지원하는 어드레스 변환 캐시
KR101729503B1 (ko) 계층 변환 테이블 제어
JP6764485B2 (ja) ページ・フォールト解決法
US8151085B2 (en) Method for address translation in virtual machines
JP2011181094A (ja) アーキテクチャイベントの間のプロセッサリソースの保持
US20070239960A1 (en) Data processor and IP module for data processor
JP2020529656A (ja) アドレス変換キャッシュ
US9740624B2 (en) Selectable address translation mechanisms within a partition
US7017024B2 (en) Data processing system having no system memory
WO2021111217A1 (en) Methods and systems for translating virtual addresses in a virtual memory based system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140312

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140312

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140604

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140904

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140911

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20141003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150106

R150 Certificate of patent or registration of utility model

Ref document number: 5680179

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