JP6963572B2 - 条件付きメモリアクセスプログラム命令のための許可制御 - Google Patents

条件付きメモリアクセスプログラム命令のための許可制御 Download PDF

Info

Publication number
JP6963572B2
JP6963572B2 JP2018567174A JP2018567174A JP6963572B2 JP 6963572 B2 JP6963572 B2 JP 6963572B2 JP 2018567174 A JP2018567174 A JP 2018567174A JP 2018567174 A JP2018567174 A JP 2018567174A JP 6963572 B2 JP6963572 B2 JP 6963572B2
Authority
JP
Japan
Prior art keywords
memory
conditional
memory access
access
permission
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
JP2018567174A
Other languages
English (en)
Other versions
JP2019525298A (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 JP2019525298A publication Critical patent/JP2019525298A/ja
Application granted granted Critical
Publication of JP6963572B2 publication Critical patent/JP6963572B2/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
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/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]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、データ処理システムの分野に関する。より具体的には、本開示は、条件付き(contingent)メモリアクセスプログラム命令をサポートするデータ処理システム内の許可制御(permission control)に関する。
条件付きメモリアクセスプログラム命令は、メモリアクセス動作に関してソフトウェア管理による推測を実行することを可能にする、すなわち、条件付きメモリアクセスプログラム命令は、少なくとも1つの条件付きメモリアクセス動作を指定し、次のプログラム命令へのプログラムフローは、条件付きメモリアクセス動作が許可されるか否かに応じて変更されない、例えば、条件付きメモリアクセス動作が許可条件を満たさない場合に、例外は引き起こされない(トリガーされない)。条件付きメモリアクセスプログラム命令をサポートするシステムに関する潜在的なセキュリティ問題は、例外を引き起こさせずに(トリガーせずに)、またはオペレーティングシステム介入なしに、そのような条件付きメモリアクセスプログラム命令を使用してメモリアドレス空間を「走査(scan)」することによって悪意のある者がシステムの構成に関する情報を入手するのを容易にし、その後、タイミング解析などの手法を使用して、メモリアドレス空間のどの部分が特定の方法でマッピングまたは構成されているかを判定し得るということである。
本開示の少なくともいくつかの実施形態は、データを処理するための装置であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路であって、
前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
を備える装置を提供する。
本開示の少なくともいくつかの実施形態は、データを処理する方法であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するステップであって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されているかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行される次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
メモリ許可回路を使用して前記メモリアクセスが許可されるかどうかを制御するステップであって、
前記1つまたは複数の条件付きメモリアクセスに関して、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
を含む方法を提供する。
本開示の少なくともいくつかの実施形態は、上記の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラムを提供する。
例として、添付図面を参照しながら、実施形態例を説明する。
条件付きメモリアクセスプログラム命令をサポートし、メモリ許可回路を使用するデータ処理システムの概略図である。 許可データを含む変換テーブルデータに対する複数の例外レベルおよび関連ポインタの概略図である。 それぞれ独自の関連変換テーブルを有する高領域および低領域を含むように構成された図1のシステムのメモリアドレス空間の概略図である。 条件付きアクセス許可チェック無効フラグを含む構成フラグを記憶する変換制御レジスタの概略図である。 2つのメモリ領域に対する条件付きアクセス許可チェック無効フラグが異なるタイプの動作に対してどのように設定され得るかを示す表である。 第1のfaultingロード命令およびnon−faultingロード命令の形式の条件付きメモリアクセスプログラム命令の概略図である。 トランザクショナルメモリシステム内のメモリトランザクションとしてマークされたコードブロック内のメモリアクセスプログラム命令の形式の条件付きメモリアクセスプログラム命令の概略図である。 プリフェッチ命令の形式の条件付きメモリアクセスプログラム命令の概略図である。 メモリアクセス動作に関するアクセス許可の決定および使用を概略的に示すフローチャートである。 仮想マシン実装を示す図である。
図1は、メモリ6(例えば、1つまたは複数の物理メモリにマッピングされる仮想アドレス)に結合されたプロセッサコア4を含むデータ処理システム2を概略的に示す。プロセッサコア4は、メモリ6からプログラム命令をフェッチし、それらのプログラム命令を命令パイプライン8に供給するフェッチユニット5を含む。命令パイプライン8は、デコーダ回路10がプログラム命令をデコードし、デコードされたプログラム命令によって指定された処理動作を実行するためにプロセッサコア4の他の要素を制御するように機能する制御信号を生成するデコードステージを含む。プロセッサコア4は、通常、図1に示されているよりも多くの要素を含むが、明確にするためにこれらの要素の全てが示されているわけではないことが理解されるであろう。
プロセッサコア4は、例えば、レジスタバンク14のレジスタ内に記憶されているデータ値に対して、一般的な計算操作および論理操作を実行するための処理回路12を含む。メモリアクセス回路16は、メモリ6内に記憶されているデータ値に関して、ロードおよびストア(記憶)など、デコーダ回路10によってデコードされたメモリアクセスプログラム命令によって指定されたメモリアクセス動作を実行するように機能する。メモリ管理ユニット18は変換テーブルデータ20に応答して実行すべきメモリアクセスが許可されるか否かを制御する。メモリ管理ユニット18はさらに、プロセッサコア4によって実行されるプログラム命令によって指定されるような仮想アドレスとメモリ6をアドレス指定するために使用されるような物理アドレス間で変換するように機能する。アクセス許可を判定するためにメモリ管理ユニット18によって使用される変換テーブルデータ20は、メモリ管理ユニット18内のウォークステートマシン(walk state machine)22によって制御されるテーブルウォーク動作(table walking operation(s))を介して復元される。ウォークステートマシン22は、以下でさらに説明するように、条件付きメモリアクセス動作に対して選択的に無効にされ得るメモリ許可回路の一例である。ウォークステートマシン22によって変換テーブルデータ20からのこのようなテーブルウォーク(table walking)によって取得される、直近で受信された変換テーブルデータは、メモリ管理ユニット18内の変換ルックアサイドバッファ24内にキャッシュされ得る。この変換ルックアサイドバッファ24は、通常、直近で使用されたアクセス許可データおよび直近で使用された仮想アドレスから物理アドレスへの変換データを記憶するので、アクセス許可キャッシュとして機能する。
メモリ6からフェッチユニット5によってフェッチされたメモリアクセスプログラム命令によって指定されるようなメモリアクセス動作を実行しなければならない場合、メモリ管理ユニット18は、適用すべき仮想−物理アドレス変換を判定し、実行すべきメモリアクセス動作が、例えば、関連するデータにアクセスする許可を得るための現在適切な例外レベルにあるプロセッサコア4である、許可されたタイプのメモリアクセス動作である(例えば、読み取り専用として定義されたデータへの書き込み動作ではない)などのアクセス許可条件を満たしているか否かを判定する。メモリ管理ユニット18は、それが必要とするアクセス許可(および変換)データが、実行すべきメモリアクセス動作(単数または複数)のために変換ルックアサイドバッファ24内に存在するかどうかを判定する。実行すべきメモリアクセス動作(単数または複数)と変換ルックアサイドバッファ24内の記憶されているコンテンツとの間に一致(ヒット)がある場合、この記憶されているコンテンツは、適用すべきアドレス変換およびメモリアクセスがアクセス許可を満たしているか否かを判定するために使用される。変換ルックアサイドバッファ24内に一致がない場合、ウォークステートマシン22は(有効な場合)、変換テーブルデータ20内で、実行すべきメモリアクセス動作(単数または複数)に対して対応する変換アクセス許可データにアクセスするためにテーブルウォーク動作を実行する。変換テーブルデータ20内にそのような変換またはアクセス許可データが見つからない場合、変換フォールトが発生する。そのような変換フォールトは、比較的迅速に識別され得、例えば、変換すべき仮想アドレスは、変換テーブルデータ20内でマッピングが保持されている仮想アドレスの範囲外にある。変換アクセス許可データがテーブルウォーク動作によって識別される場合、そのような変換アクセス許可データは、メモリアクセス動作が許可されるか否かを判定するために使用され、許可された場合、メモリアクセス動作に使用すべきメモリ6内の適切な物理アドレスを生成するために使用される。
例外レベル制御回路26は、プロセッサコア4が動作する現在の例外レベル(特権レベル)を制御し、現在の例外レベルが何であるかを示す信号をメモリ管理ユニット18に提供するように機能する。例えば、プログラム命令実行ポイントのリダイレクトおよび例外レベルの変更を引き起こすことにより生じる例外条件のように、現在の例外レベルに変更を加え得る様々な方法がある。変換テーブルベースレジスタ28は、異なる例外レベルで動作するときに使用すべきそれぞれの変換テーブルデータの位置を示す複数の変換テーブルベースアドレス値を記憶するために設けられる。したがって、異なる例外レベルは、異なる形式の仮想−物理アドレスマッピングおよび異なるアクセス許可を適用するために異なる変換テーブルデータを利用し得る。変換制御構成レジスタ30は、ウォークステートマシン22を含むメモリ管理ユニット18の動作を制御するように機能する構成フラグを記憶する。これらの構成フラグは、例えば、オペレーティングシステムプログラムまたはハイパーバイザプログラムなどによってソフトウェア制御下で設定され得る。
図1に概略的に示されているように、メモリ6は、ボトムアドレスからトップアドレスまで延在するメモリアドレス空間を含む。このメモリアドレス空間の全てが使用可能であるとは限らない。例えば、メモリアドレス空間の一端に、オペレーティングシステムプログラムによって使用されかつ変換テーブルデータ20を安全に記憶するために使用される高領域が設けられ得る。メモリアドレス空間の他端には、ユーザプログラムによる使用のための低領域が設けられ得る。高領域および低領域は、それぞれの変換テーブルベースレジスタ値によって指し示される別々の変換テーブルデータが提供され得る。
図2は、プロセッサコア4が動作し得る複数の可能な例外レベルを概略的に示す。例外レベルEL0は、最低レベルの特権を有し、ユーザプログラムの実行に使用される。特権レベル(およびアクセス権)が上昇すると、例外レベルEL1(通常はオペレーティングシステムプログラムによって使用される)、例外レベルEL2(通常はハイパーバイザプログラムによって使用される)、および例外レベルEL3(通常はセキュアモニタプログラムによって使用される)がさらに提供される。例外レベルEL0およびEL1は、変換テーブルデータを共有し、変換テーブルベースレジスタ値TTBR0_EL1およびTTBR1_EL1によってメモリアドレス空間内でそれぞれ指し示される2組の変換テーブルデータが提供される。例外レベルEL2およびEL3はそれぞれ、各々の変換テーブルベースレジスタ値TTBR_EL2およびTTBR_EL3によって指し示されるように、それら自身の変換テーブルデータ、または少なくともそれら自身のそのような変換テーブルデータを提供する能力を有する。
図3は、例外レベルEL0およびEL1で動作するときのメモリ6のメモリアドレス空間のレイアウトおよび使用の一例を概略的に示す。上述したように、メモリアドレス空間は、その上端に高領域32を備え、その下端に低領域34を備える。高領域32は、通常、オペレーティングシステムカーネルプログラムの一部の記憶および実行に使用される。データ処理システムを不適切に制御しようとする悪意のある試みをより困難にするために、KASLR(カーネルアドレス空間レイアウトランダム化)のような技術を使用して、オペレーティングシステムカーネルプログラムのその一部が高領域32内に配置され得る。高領域32はさらに、高領域32および低領域34の両方に関して仮想−物理アドレスマッピングおよびアクセス許可をマッピングするために使用される変換テーブルデータTT0、TT1を記憶する。より具体的には、高領域32は、第1の変換テーブルベースレジスタ値TTBR1_EL1によって指し示される第1の変換テーブルデータTT1を使用する。低領域34は、第2の変換テーブルベースレジスタ値TTBR0_EL1によって指し示される第2の変換テーブルデータTT0を使用する。
低領域34は、高領域32内に記憶されているオペレーティングシステムと協働して実行するためのユーザプログラムを記憶する。図3の右側部分には、実行すべきメモリアクセスに関して仮想−物理アドレスマッピングデータおよびアクセス許可データにアクセスするために、メモリ管理ユニット18によって実行され得るそれぞれの変換テーブルウォーク動作が示されている。このような変換テーブルウォーク動作は、プロセッサコア4がテーブルデータエントリの階層から適切なデータを検索するためにメモリ6内で複数の比較的遅いメモリアクセスを通常行う必要があるので、実行するのに比較的長い時間がかかる。悪意のある者にとって有用であり得る方法でメモリアドレス空間が変換テーブルデータによってどのように構成されているかを示す少なくともいくつかの特性を判定するために、特定のメモリアクセスがそのような比較的遅いページテーブルウォーク動作を呼び出すか否かが監視され得る。
図4は、より詳細に変換制御レジスタ30を概略的に示す。特に、図4は、例外レベルEL0およびEL1に使用される変換制御レジスタの部分を示す。変換制御レジスタ30内に記憶されているフラグ内に含まれるのは、高領域32へのメモリアクセスに適用される第1の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD1と、低領域34へのメモリアクセスに適用される第2の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0である。
条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0およびTCR_EL1_NFD1は、第1の値「1」を有するとき、ウォークステートマシン22(メモリ許可回路の一例)が条件付きメモリアクセス動作に関してページテーブルウォークを実行することを無効にするように機能し、非条件付きメモリアクセス動作に関してページテーブルウォークの実行は許可される。このようにして、条件付きメモリアクセスプログラム命令およびタイミング解析を用いたメモリ構成の走査はより困難になり得る。
変換ルックアサイドバッファ24は、メモリアクセスのための適切なアドレス変換データおよびアクセス許可データを含む場合、条件付きアクセス許可チェック無効フラグまたはフラグTCR_EL1.NFD0およびTCR_EL1.NFD1の値に関係なく、使用のためにこのデータを提供する。変換ルックアサイドバッファ24は、一致が生じた場合、メモリアクセス動作が許可されているか否かを変換エラー(translation error)(マッピングされていない)または許可エラー(permission error)(不正確なアクセス許可)によって判定する間の時間差がメモリレイアウトを理解しようとしている悪意のある人に有用な情報を提供するには不十分であるように、十分に迅速にアクセス許可データおよび変換データを返すことができる。
図5は、異なるタイプの所望の動作に使用され得る第1の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0および第2の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD1の異なる値を概略的に示す。通常のユーザプログラムを実行する場合、条件付きメモリアクセス動作に対して、ユーザプログラム自体を記憶する低領域34の変換テーブルデータを介したテーブルウォークは許可され得、オペレーティングシステムを記憶する高領域32の変換テーブルデータを介したテーブルウォークは無効にされ得る。逆に、低領域34内でセキュアモードでユーザプログラムを実行する場合には、低領域34と高領域32の両方で、条件付きメモリアクセス動作に対するテーブルウォークを無効にすることが望ましい場合がある。このことにより、悪意のあるプログラムが低領域34内で実行している同じプログラムの他の部分のメモリレイアウトに関する情報を取得することを回避することができる。
条件付きメモリアクセスプログラム命令は、多種多様な異なる形式をとり得る。図6は、このような2つの形式の例を概略的に示す。これらの形式の例は、実行すべきメモリアクセス動作のシーケンスを指定する第1のfaultingロード命令LDRFFである。LDRFF命令に応答して実行すべき第1のメモリアクセス動作は非条件付きメモリアクセス動作であり、それがそのアクセス許可に失敗(fault)すると、例外が引き起こされる(トリガーされる)。LDRFF命令に対する残りのメモリアクセス動作は条件付きメモリアクセス動作であり、それらがアクセス許可に失敗した場合、LDRFF命令は、図6に示すように、第1のfaultingレジスタFFR内に対応する合否の値を設定することによって示されるが、プログラムフローには影響しない、つまり、実行する次のプログラム命令である。
図6に描かれた条件付きメモリアクセスプログラム命令の他の変形形式は、non−faultingロード命令LDRNFである。この場合、関係するメモリアクセス動作のシーケンス内の全てのメモリアクセス動作は条件付きメモリアクセス動作であり、そのために、それらがアクセス許可に失敗した場合、LDRNFは、実行する次のプログラム命令であることは変わらないが、表されているように、第1のfaultingレジスタFFR内の適切なフラグ値によって示される。
上記の条件付きメモリアクセスプログラム命令のそれぞれによって実行される条件付きメモリアクセス動作のシーケンスは、いくつかの形式の命令では連続するシーケンスのアドレスであり得、他の形式の命令ではアドレスアクセスは不連続であり得る。例えば、ロードは、メモリアドレス空間内で間隔を置いて配置された様々なメモリアドレス位置からデータ値を収集する収集ロードである。
図7は、本開示の他の実施形態において、それ自体でまたは他の形態の条件付きメモリアクセスプログラム命令と組み合わせて使用され得る別の形式の条件付きメモリアクセスプログラム命令を概略的に示す。この例では、データ処理システム2はトランザクションメモリをサポートするものであり、そのことにより、プログラム命令のブロックは変換開始命令およびトランザクション終了プログラム命令によって区切られ、それらの区切り点間のメモリアクセス動作がメモリトランザクションの一部であることを示す。トランザクショナルメモリシステムは、対象のメモリトランザクションが実行されている間に競合する他のメモリトランザクションが発生するかどうかを判定するために監視し、そのような競合が発生すると、一方または両方のメモリトランザクションが巻き戻され(メモリの状態はメモリトランザクションが開始される前の状態に復元される)、その後、メモリトランザクションは後で再試行されるか、またはメモリロックの使用のように、他のメカニズムによって競合が発生しないように修正される。図7の状況下では、メモリアクセス命令LDR、STR、STRは、実行中のプログラムコード内で定義されたメモリトランザクションのデリミタ内にあるので、それらの文脈によって条件付きメモリアクセスプログラム命令にされる。メモリトランザクションの一部としてのこのような条件付きメモリアクセスプログラム命令は、それ自体デコーダ回路10によって識別され、結果的に、現在のメモリトランザクション内のいずれかのメモリアクセス動作によって呼び出された場合に、その許可チェック動作を無効にするために条件付きアクセス許可チェック無効フラグによって制御されるメモリ許可回路(例えばウォークステートマシン22)によって識別される。
図8は、他の実施形態において、または上述のタイプの条件付きメモリアクセスプログラム命令と組み合わせて使用され得るさらに別のタイプの条件付きメモリアクセスプログラム命令を概略的に示す。図8の例では、条件付きメモリアクセスプログラム命令は、プログラムコードの一部を形成し、性能上の理由からメモリ6からキャッシュメモリ(図示せず)にデータ値をプリフェッチするように機能するプリフェッチ命令である。このようなプリフェッチ命令は、通常、プリフェッチすべきメモリブロックの開始アドレスとそのメモリブロックの長さを指定する。プリフェッチ命令はデコーダ回路10によって条件付きメモリアクセスプログラム命令として識別され、したがって、プリフェッチ命令がテーブルウォークを実行するためにウォークステートマシン22を呼び出した場合、ウォークステートマシン22がそのような条件付きメモリアクセスプログラム命令に対して無効にされ、したがって許可チェックが無効にされることを示す値を条件付きアクセス許可チェック無効フラグが有する場合に、テーブルウォークは、条件付きアクセス許可チェック無効フラグの動作によって抑制される。
したがって、条件付きメモリアクセスプログラム命令は、
トランザクショナルメモリへのメモリトランザクションに対応するプログラム命令のシーケンス内のメモリアクセス命令、および
プリフェッチ命令
のうちの1つであり得る。
図9は、アクセス許可判定におけるデータ処理システム2の動作を概略的に示すフローチャートである。実際には、図9に示すプロセスと同時に、かつ時間的に重複して、データ処理システム2の動作の一部として多くの他のプロセスがさらに実行されることは理解されるであろう。
ステップ36において、処理は、実行するメモリアクセス動作が受信されるまで待機する。次に、ステップ38は、受信したメモリアクセス動作が変換ルックアサイドバッファ24内に既に記憶されている(キャッシュされている)変換アクセス許可データと一致するか否かを判定する。変換ルックアサイドバッファ24内に記憶されているデータを選択する方法は様々であるが、ウォークステートマシン22によって実行されるテーブルウォークによって検索される、新たにフェッチされた変換アクセス許可データのための空間を作るために、最も長く使用されていないエントリのようなアルゴリズムに基づいて制御され得る。
変換ルックアサイドバッファ24内でヒットがあった場合、処理はステップ40に進み、そこで実行すべきメモリアクセスがその許可テストに合格したか否か、例えば、適切な例外レベルのメモリアクセスであるか否か、適切なタイプのメモリアクセスであるか否かなどについての判定が行われる。許可アクセステストに合格(pass)した場合、ステップ42は、変換ルックアサイドバッファ24から取得した変換済み物理アドレスを使用してアクセスを実行するように働く。許可が合格でなかった場合、ステップ44は許可フォールト(permission fault)を通知するように働く。このような許可フォールトは、例えば、図6の第1のfaultingレジスタFFR内のフラグ値を設定することによって、図7のトランザクショナルメモリの場合にはメモリトランザクションの失敗を通知することによって、図8のプリフェッチ命令の場合には単にプリフェッチ動作の残りの部分を停止することによって(通常、これはアーキテクチャに影響を与えない)、条件付きメモリアクセス動作に対して様々な方法で通知され得る。非条件付きメモリアクセス動作の場合、許可フォールトは、例外またはトラップを引き起こし得る。
ステップ38において、変換ルックアサイドバッファ24内にヒットがないと判定された場合、そのメモリアクセス動作のための変換アクセス許可データが検索されなければならない場合に、ウォークステートマシン22(メモリ許可回路)によるテーブルウォークが必要である。そのようなテーブルウォーク動作が実行される前に、ステップ46は、検討中のメモリアクセス動作が図6、図7および/または図8に関連して説明したものの1つのような条件付きメモリアクセスであるかどうかを判定する。ステップ46において、メモリアクセス動作が条件付きメモリアクセス動作であると判定された場合、処理はステップ48に進み、そこで条件付きアクセス無効フラグが、ウォークステートマシン22が条件付きメモリアクセス動作に関して無効にされたことを示す第1の値「1」を有するかどうかについて判定される。条件付きアクセス許可チェック無効フラグが第1の値を有する場合、処理はステップ50に進み、そこで変換フォールト、例えば、そのメモリアクセス動作に利用可能な変換テーブルデータがないことに対応するフォールトが通知される。
ステップ48で条件付きアクセス無効フラグが第2の値「0」を有すると判定された場合、これはウォークステートマシン22が条件付きメモリアクセスに関して無効にされていないことを示し、したがって、処理はステップ52に進み、そこでウォークステートマシン22は変換テーブルデータ20を介してテーブルウォーク動作を実行する。ステップ54は、関連するメモリアクセスに対する変換データおよびアクセス許可データがテーブルウォーク動作によって見つかったか否かを判定する。変換が見つからなかった場合、処理はステップ50に進み、そこで変換フォールトが通知される。ステップ54において、変換が見つかったと判定された場合、処理はステップ54に進み、そこで関連するメモリアクセスに関するアクセス許可がテストされる。テーブルウォークで有効な変換が見つかった場合、その変換はTLBに記憶される。
図10は、使用され得る仮想マシンの実装を示す。上述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するものであるが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を実行するホストプロセッサ530上で動作する。通常、適度な速度で実行する仮想マシンの実装を提供するのに大規模で強力なプロセッサが必要であるが、互換性または再利用のために別のプロセッサにネイティブのコードを実行したい場合のような特定の状況では、このようなアプローチは妥当であり得る。仮想マシンプログラム510は、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるであろうアプリケーションプログラムインターフェースと同じアプリケーションプログラムインターフェースをアプリケーションプログラム500に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの対話をモデル化するために仮想マシンプログラム510を使用してアプリケーションプログラム500内から実行され得る。
例示的な実施形態を添付図面を参照しながら本明細書で詳細に説明してきたが、特許請求の範囲はこれらの正確な実施形態に限定されず、添付の特許請求の範囲に記載の範囲および趣旨から逸脱せずに、当業者によって様々な変更、追加および修正が可能であることを理解されたい。例えば、従属請求項の特徴の種々の組み合わせは、独立請求項の特徴を用いてなされ得る。

Claims (14)

  1. データを処理するための装置であって、
    プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
    前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
    前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
    許可テーブルデータを介して許可テーブルウォークを実行することによって前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路を備えるメモリ管理ユニットであって、
    前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
    前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路による制御が無効にされると、前記メモリ許可回路は、許可テーブルウォークの実行が無効にされ、前記メモリ許可回路によってアクセスが制御される条件付きメモリアクセスに対してフォールトが通知され、
    前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
    を備える装置。
  2. 前記メモリ許可回路は、前記メモリアドレス空間内のメモリアドレスへのアクセスを制御するためにアクセス許可データに応答する、請求項1に記載の装置。
  3. 前記許可テーブルデータは、仮想アドレスから物理アドレスへのマッピングを指定する変換テーブルデータである、請求項に記載の装置。
  4. 前記条件付きメモリアクセスプログラム命令は、一連のメモリアクセス動作を指定する条件付きベクトルメモリアクセス命令であり、前記一連のメモリアクセス動作の少なくともいくつかは、条件付きメモリアクセス動作である、請求項〜3のいずれか一項に記載の装置。
  5. 前記一連のメモリアクセス動作内の第1のメモリアクセス動作は、非条件付きメモリアクセス動作であり、前記一連のメモリアクセス動作内の1つまたは複数の他のメモリアクセス動作は、条件付きメモリアクセス動作である、請求項に記載の装置。
  6. 前記一連のメモリアクセス動作は、前記メモリアドレス空間内の非連続アドレスに対する動作である、請求項に記載の装置。
  7. 前記一連のメモリアクセス動作の全ては、条件付きメモリアクセス動作である、請求項に記載の装置。
  8. 前記一連のメモリアクセス動作は、前記メモリアドレス空間内の連続アドレスに対する動作である、請求項に記載の装置。
  9. 前記メモリアドレス空間は、第1のメモリアドレス領域と第2のメモリアドレス領域とを含み、前記メモリ許可回路は、第1の条件付きアクセス許可チェック無効フラグに応答して、前記第1のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にし、前記メモリ許可回路は、第2の条件付きアクセス許可チェック無効フラグに応答して、前記第2のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にする、請求項1〜のいずれか一項に記載の装置。
  10. 動作の各々の特権レベルに対応する複数の例外レベルのうちの選択可能な1つ例外レベルの範囲内で動作するように前記装置を制御するための例外レベル制御回路を備える、請求項1〜のいずれか一項に記載の装置。
  11. 前記複数の例外レベルのうちの2つの例外レベルは、アクセス許可データを共有する、請求項10に記載の装置。
  12. アクセス許可データを記憶するためのアクセス許可キャッシュを含み、前記アクセス許可キャッシュは、前記1つまたは複数の条件付きメモリアクセスと一致するアクセス許可データを記憶するときに、前記条件付きアクセス許可チェック無効フラグに関係なく、前記メモリアクセス回路が前記1つまたは複数の条件付きメモリアクセスを実行することが許可されるかどうかを制御する、請求項1〜11のいずれか一項に記載の装置。
  13. データを処理する方法であって、
    プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するステップであって、
    前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
    前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
    メモリ管理ユニットのメモリ許可回路を使用し許可テーブルデータを介して許可テーブルウォークを実行することによって前記メモリアクセスが許可されるかどうかを制御するステップであって、
    前記1つまたは複数の条件付きメモリアクセスに関して、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
    前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路による制御が無効にされると、前記メモリ許可回路は、許可テーブルウォークの実行が無効にされ、前記メモリ許可回路によってアクセスが制御される条件付きメモリアクセスに対してフォールトが通知され、
    前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
    を含む方法。
  14. 請求項1〜12のいずれかに記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラム。
JP2018567174A 2016-06-29 2017-05-18 条件付きメモリアクセスプログラム命令のための許可制御 Active JP6963572B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16386010.9A EP3264317B1 (en) 2016-06-29 2016-06-29 Permission control for contingent memory access program instruction
EP16386010.9 2016-06-29
PCT/EP2017/062043 WO2018001643A1 (en) 2016-06-29 2017-05-18 Permission control for contingent memory access program instruction

Publications (2)

Publication Number Publication Date
JP2019525298A JP2019525298A (ja) 2019-09-05
JP6963572B2 true JP6963572B2 (ja) 2021-11-10

Family

ID=56418479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018567174A Active JP6963572B2 (ja) 2016-06-29 2017-05-18 条件付きメモリアクセスプログラム命令のための許可制御

Country Status (9)

Country Link
US (1) US10824350B2 (ja)
EP (1) EP3264317B1 (ja)
JP (1) JP6963572B2 (ja)
KR (1) KR102346255B1 (ja)
CN (1) CN109313693B (ja)
IL (1) IL263204B (ja)
MY (1) MY191044A (ja)
TW (1) TWI746576B (ja)
WO (1) WO2018001643A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018100363A1 (en) 2016-11-29 2018-06-07 Arm Limited Memory address translation
US10831673B2 (en) 2017-11-22 2020-11-10 Arm Limited Memory address translation
US10866904B2 (en) * 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US10929308B2 (en) 2017-11-22 2021-02-23 Arm Limited Performing maintenance operations
US11221957B2 (en) * 2018-08-31 2022-01-11 International Business Machines Corporation Promotion of ERAT cache entries
US11226902B2 (en) 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US6374342B1 (en) * 2000-01-31 2002-04-16 Kabushiki Kaisha Toshiba Translation lookaside buffer match detection using carry of lower side bit string of address addition
US7178062B1 (en) * 2003-03-12 2007-02-13 Sun Microsystems, Inc. Methods and apparatus for executing code while avoiding interference
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
US7581919B2 (en) * 2005-05-23 2009-09-01 Feon Societa' A Responsabilita' Limitata Universal method for the quick layer palletization of objects and relative system with rollup planes
GB2448151B (en) * 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
EP2332043B1 (en) * 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
GB2482700A (en) * 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
US8499173B2 (en) * 2010-11-23 2013-07-30 Lockheed Martin Corporation Apparatus and method for protection of circuit boards from tampering
JP6106765B2 (ja) * 2013-02-05 2017-04-05 エイアールエム リミテッド メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US10073972B2 (en) * 2014-10-25 2018-09-11 Mcafee, Llc Computing platform security methods and apparatus
US20160210069A1 (en) * 2015-01-21 2016-07-21 Bitdefender IPR Management Ltd. Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability

Also Published As

Publication number Publication date
KR20190021372A (ko) 2019-03-05
TWI746576B (zh) 2021-11-21
US20190171376A1 (en) 2019-06-06
US10824350B2 (en) 2020-11-03
JP2019525298A (ja) 2019-09-05
WO2018001643A1 (en) 2018-01-04
IL263204A (en) 2018-12-31
CN109313693B (zh) 2023-06-20
IL263204B (en) 2021-04-29
MY191044A (en) 2022-05-30
EP3264317B1 (en) 2019-11-20
EP3264317A1 (en) 2018-01-03
KR102346255B1 (ko) 2022-01-03
TW201802693A (zh) 2018-01-16
CN109313693A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
JP6963572B2 (ja) 条件付きメモリアクセスプログラム命令のための許可制御
CN112074823B (zh) 预测限制存储器区域类型的装置、方法、计算机可读存储介质
KR102695593B1 (ko) 포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법
JP2021532468A (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
JP2022503562A (ja) 範囲チェック命令
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
EP3881189B1 (en) An apparatus and method for controlling memory accesses
CN110036377B (zh) 可缓存的但不可通过推测指令访问的内存类型
KR20220058934A (ko) 변환 색인 버퍼 무효화
US10558486B2 (en) Memory address translation management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210401

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211015

R150 Certificate of patent or registration of utility model

Ref document number: 6963572

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250