JP2021512405A - メモリ・アクセスにおける保護タグ・チェックの制御 - Google Patents

メモリ・アクセスにおける保護タグ・チェックの制御 Download PDF

Info

Publication number
JP2021512405A
JP2021512405A JP2020540601A JP2020540601A JP2021512405A JP 2021512405 A JP2021512405 A JP 2021512405A JP 2020540601 A JP2020540601 A JP 2020540601A JP 2020540601 A JP2020540601 A JP 2020540601A JP 2021512405 A JP2021512405 A JP 2021512405A
Authority
JP
Japan
Prior art keywords
tag
memory access
address
subset
sequence
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
JP2020540601A
Other languages
English (en)
Other versions
JP7349437B2 (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 JP2021512405A publication Critical patent/JP2021512405A/ja
Application granted granted Critical
Publication of JP7349437B2 publication Critical patent/JP7349437B2/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/1466Key-lock mechanism
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/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/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

装置は、対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路を備え、タグで保護されたメモリ・アクセスは、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む。メモリ・アクセス回路は、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに応答して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する。

Description

本技法は、データ処理の分野に関する。
データ処理装置によって実行されるソフトウェアは、通常、高水準プログラミング言語で記述され、次いでソフトウェアが実行される装置によってサポートされる命令セット・アーキテクチャに従ってコードにコンパイルされ得る。例えば、ソフトウェアは最初にJava、C、又はC++などの高水準言語で記述され、次いでx86又はArm(登録商標)などのネイティブにサポートされる命令セット・アーキテクチャにコンパイルされ得る。
Javaなどのいくつかの高水準プログラミング言語は、メモリ・アクセスに関連する一定のエラーをチェックするための実行時エラー検出チェックを含むので、メモリ安全な言語とみなされる。対照的に、C及びC++などのメモリ安全でない言語は、そのような実行時エラー・チェックを含まない。メモリ安全でない言語の使用が永続的に普及するということは、所与の命令セット・アーキテクチャに従ってコンパイルされたコード内に、攻撃者又は他の悪意のある当事者による悪用に対して脆弱である可能性があるメモリ関連エラーが多数存在し得ることを意味する。このようなエラーには、以下が含まれ得る。
・コードによって提供された配列のインデックスが配列の正当な境界の外側にある場合の、境界違反。
・メモリ位置がすでに割当て解除又は解放された後にそのメモリ位置へのアクセスが行われた場合の、解放後使用エラー。
・関数内で使用される変数(スタック上の値など)に関連付けられたアドレスへのメモリ・アクセスが、関数からすでに戻った後に行われた場合の、リターン後使用。
・変数が宣言されているスコープ外でアクセスされた場合の、スコープ外使用のエラー。
・変数に関連付けられたメモリ・アドレスが、変数が初期化される前にアクセスされた場合の、初期化前使用エラー。
これらは、予測不可能な挙動を引き起こし、悪用するための手段を攻撃者に潜在的に提供する恐れがあるメモリ関連エラーのごく一部の実例であり、したがって、所与の処理装置によってサポートされる命令セット・アーキテクチャ内で、一定のクラスのメモリ・エラーの実行時検出を支援するためのアーキテクチャ・サポートを提供することが望ましい場合がある。
「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53〜63頁
少なくともいくつかの実例は、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路を備え、
メモリ・アクセス回路が、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに応答して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する装置を提供する。
少なくともいくつかの実例は、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するステップであって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、ステップと、
アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行するステップと
を含む方法を提供する。
少なくともいくつかの実例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックを含み、
メモリ・アクセス・プログラム・ロジックが、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する
コンピュータ・プログラムを提供する。
記憶媒体は、上記のコンピュータ・プログラムを記憶してもよい。記憶媒体は、非一時的記憶媒体であってもよい。
添付の図面に示されるようなその実施例を参照して、本技法を単なる一例としてさらに説明する。
データ処理装置の一実例を概略的に示す図である。 アドレス・タグが保護タグと一致するかどうかをチェックすることを含むタグで保護されたメモリ・アクセス動作の一実例の図である。 タグで保護されたメモリ・アクセス動作を実行する方法を示すフロー図である。 例示的なシステムにおけるメモリ・アクセス回路を概略的に示す図である。 例示的なシステムにおけるメモリ・アクセス回路をより詳細に概略的に示す図である。 一実例においてメモリ・アクセスのサブセットに保護タグ・チェックがどのように適用されるかを示すフロー図である。 一実例においてメモリ・アクセスのサブセットに保護タグ・チェックがどのように適用されるかを示すフロー図である。 アドレス変換ロジックをサポートするシミュレータの一実例の図である。
少なくともいくつかの実施例は、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路を備え、
メモリ・アクセス回路が、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに応答して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する装置を提供する。
上述のタイプの一定のメモリ使用エラーから保護するための1つの手法は、1つ又は複数のメモリ位置のブロックに関連付けてメモリ・システムに記憶される保護タグを提供することである場合がある。メモリ・システム内の特定のアドレス指定された位置を識別する対象アドレスに基づいて、タグで保護されたメモリ・アクセスが要求されると、メモリ・アクセス回路は、対象アドレスに関連付けられているアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けられているメモリ・システム内に記憶されている保護タグと比較することができる。メモリ・アクセス回路は、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示を生成することができる。この表示は、メモリ・アクセスの成功を許可するか、若しくは後続の動作を成功させるかを制御するために使用され得るか、又はメモリ・アクセスを通常通り続行しながら単に報告される場合がある。
これは、例えば、C又はC++などのメモリ安全でない言語に基づいてコードをコンパイルするコンパイラが、メモリの領域を初期化するときに、コードが特定の値にアクセスすることが予想されるメモリのブロックの保護タグを設定することができるので有用である場合があり、対応するアドレス・タグ値をそれらのブロックを指す対象アドレスに関連付けてもよい。メモリ使用エラーが発生し、例えばアドレス・ポインタがスコープ外で使用されるか、又は初期化された有効範囲の境界を越えて拡張する場合、アドレス指定された位置に関連付けられた保護タグが対象アドレスに関連付けられたアドレス・タグと一致しない可能性があり、この場合、一致が検出されたかどうかの表示を使用して、何らかのエラー処理応答又はエラー報告メカニズムをトリガすることができる。実行される特定の応答は、実行されているソフトウェアの特定のニーズ、又はアーキテクチャの特定のマイクロアーキテクチャ実装に依存する可能性がある。したがって、高水準言語がメモリ・アクセス・エラーから保護するために実行時エラー・チェックを実行するための手段を有していない場合でも、コンパイルされるコードに使用されるISAは、そのようなチェックを実行するためのアーキテクチャ機能を含む可能性がある。
しかしながら、そのような保護タグ・チェックは、いくつかの状況においてあまり望ましくない可能性のある保護タグ・チェックを実行する際に、いくらかのオーバーヘッドを招く恐れがある。ここで説明する装置は、アドレス指定された位置へのメモリ・アクセスの対象アドレスを処理するときに、一部のメモリ・アクセスに対してのみ保護タグ・チェックを実行させ、他のメモリ・アクセスに対しては実行させない。したがって、対象アドレス(又は代わりに、対象アドレスを指定するメモリ・アクセス要求)に対応して、メモリ・アクセス回路は、保護タグ・チェックが実行されず、メモリ・アクセス自体のみが実行される一部の対象アドレス(メモリ・アクセス要求)を選択し、メモリ・アクセス自体だけでなく保護タグ・チェックも実行される他の対象アドレス(メモリ・アクセス要求)を選択する。したがって、保護タグ・チェックを実行するための上記のオーバーヘッドの負荷を管理することができ、すなわちサブセットの定義方法に応じて負荷を拡大又は縮小することができる。さらに、本技法では、すべてのアクセスがチェックされない場合でも、保護タグ・チェックのメリットが依然として得られることが認められる。例えば、十分な期間にわたって実行すれば、何らかの方法で定義された保護タグ・ルールに違反するアクセスに関して対処する必要がある問題を特定するのに十分である場合がある。さらなる実例として、本明細書に記載の実例について示したように多数の装置が配置される場合があり、それにより、その多数の装置からのフィードバックは、所与の個々のデバイスが、それが実行するメモリ・アクセスの(恐らくかなり少数の)サブセットに対して保護タグ・チェックのみを実行しているという事実を補うのに十分な多数のデータのサンプルを提供することができる。したがって、一種の「クラウド・ソースによる」フィードバック・メカニズムが使用される。
保護タグ・チェックが実行されないメモリ・アクセスとしてのサブセットの定義は、自明に逆転されてもよく、すなわち、サブセットは保護タグ・チェックが実行されるそれらのメモリ・アクセスとして解釈され得ることが理解されよう。この見解は、本明細書に記載の実例全体に適用される。
保護タグ・チェックが実行されないサブセットは様々な方法で定義及び制御され得るが、いくつかの実例では、装置はサブセット構成のデータ記憶装置を備え、サブセットはサブセット構成のデータ記憶装置に記憶されているサブセット構成データによって定義される。したがって、このサブセット構成データを設定すると、サブセットの定義に対する制御が可能になる。
サブセット構成のデータ記憶装置は、構成レジスタである場合がある。
サブセット構成データが定義される方法は様々な形式をとることができるが、いくつかの実例では、サブセット構成データは割合を定義し、メモリ・アクセス回路は、サブセット構成データに応答して、アドレス指定された位置のシーケンスのサブセットが割合に相当するように、タグで保護されないメモリ・アクセスを選択的に実行する。この割合は様々に定義され得るが、例えば百分率として解釈されてもよく、それにより定義された百分率のメモリ・アクセスが、保護タグ・チェックなしで実行される。
いくつかの実例では、サブセット構成データは整数値を定義し、メモリ・アクセス回路は、サブセット構成データに応答して、アドレス指定された位置のシーケンス内の整数値の序数の倍数に相当するアドレス指定された位置に対して、タグで保護されないメモリ・アクセスを実行する。言い換えると、サブセット構成データは整数nを定義するように記述されてもよく、メモリ・アクセス回路は、すべてのl/nのメモリ・アクセスに対してタグで保護されないメモリ・アクセスを実行する。
いくつかの実例では、サブセット構成データは目標値を定義し、メモリ・アクセス回路は、サブセット構成データに応答して、アドレス指定された位置のシーケンスのサブセットが所定の期間にわたって目標値に統計的に相当するように、タグで保護されないメモリ・アクセスを実行する。したがって、メモリ・アクセス回路は、実行されたタグで保護されたメモリ・アクセスの数、及び実行されたタグで保護されないメモリ・アクセスの数の統計的見地を収集するように構成されてもよく、その場合、これらの数の比率は、比率を所望の値に導くために、次のメモリ・アクセスに対して保護タグ・チェックするかどうかの判定に影響を与えることができる。
少なくともいくつかの実施例は、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するステップであって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、ステップと、
アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行するステップと
を含む方法を提供する。
少なくともいくつかの実施例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックを含み、
メモリ・アクセス・プログラム・ロジックが、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する
コンピュータ・プログラムを提供する。
記憶媒体は、上記のコンピュータ・プログラムを記憶してもよい。記憶媒体は、非一時的記憶媒体であってもよい。
次に、図を参照していくつかの特定の実施例を説明する。
図1は、データ処理装置2の一実例を概略的に示す。これは単に装置の構成要素のサブセットの高水準表現であり、装置が図示されていない他の多くの構成要素を含み得ることが理解されよう。装置2は、命令デコーダ6にデコードされた命令に応答してデータ処理を実行するための処理回路4を備える。命令デコーダ6は、命令キャッシュ8からフェッチされた命令をデコードして、命令によって表される対応する処理動作を実行するように処理回路4を制御するための制御信号10を生成する。処理回路4は、レジスタ14に記憶された値に対して演算を実行して、レジスタに書き戻される結果値を生成するための1つ又は複数の実行ユニットを含み得る。例えば、実行ユニットには、算術演算若しくは論理演算を実行するための算術/論理ユニット(ALU:arithmetic/logic unit)、浮動小数点オペランドを使用して演算を実行するための浮動小数点ユニット、及び/又は複数の独立したデータ要素を含むオペランドに対してベクトル演算を実行するためのベクトル処理ユニットが含まれ得る。処理回路は、レジスタ14とメモリ・システムとの間のデータの転送を制御するためのメモリ・アクセス回路(例えば、ロード/記憶ユニットを含む)15も含む。この実例では、メモリ・システムは、命令キャッシュ8、レベル1(L1)データ・キャッシュ16、データと命令との間で共有されるレベル2(L2)キャッシュ17、及びメイン・メモリ18を含む。これは一例にすぎず、他のキャッシュ階層も可能であることが理解されよう。メモリ管理ユニット(MMU:memory management unit)20は、ロード/記憶ユニット15によってトリガされるメモリ・アクセスをサポートするためのアドレス変換機能を提供するために設けられる。MMUは、メモリ・システム16、17、18に記憶されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)22を有する。各ページ・テーブル・エントリは、アドレスの対応するページにアドレス変換マッピングを提供し、ページが読取り専用領域であるか、若しくは読取りと書込みの両方が可能であるかを指定するアクセス許可、又はどの特権レベルがページにアクセスできるかを指定するアクセス許可などのアクセス制御パラメータを指定してもよい。さらに、以下でより詳細に述べるように、ページ・テーブル・エントリは、アドレスのそのページ内のアドレスへのアクセスが行われたときに保護タグ・チェックを行うかどうかを制御するために本技法によって使用されるタグ保護制御情報を指定することができる。
図2は、タグで保護されたメモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ位置を参照するために使用される物理アドレス空間は、それぞれが一定数のアドレス指定可能な位置を含むいくつかのブロック30に論理的に分割され得る。簡潔にするために、図2の実例では、各ブロック30は4つのメモリ位置を含むが、他のブロック・サイズも同様に使用され得る。各ブロック30は、対応する保護タグ32に関連付けられている。一定数のブロック30に関連付けられた保護タグは、一緒に集められて、物理アドレス空間内のアーキテクチャ的にアクセス可能な別のメモリ位置34内、又はメイン・メモリ18に提供されている、アーキテクチャ的にアクセス不可能な(同じ物理アドレス空間にマッピングされていない)追加の記憶位置内のいずれかに記憶され得る。非アーキテクチャ的にアクセス可能な別個の記憶装置を使用すると、場合によっては、データ・キャッシュ16、17で保護タグの値をキャッシュするために空間を使い果たし、通常のコードの性能に影響を及ぼし、コヒーレンシ管理がより複雑になるのを避けることが望ましい場合がある。メイン・メモリ18からタグにアクセスする必要がある場合よりも高速にアクセスできるように、非アーキテクチャ的にアクセス可能な記憶装置からのタグ値をキャッシュするための追加のタグ・キャッシュ19がマイクロアーキテクチャに設けられてもよい。どのタグ記憶位置34が各ブロック30に対応するかの特定のマッピングは、ロード/記憶ユニット15によって制御されてもよく、ハードワイヤードされ得るか、又はプログラム可能であり得る。図2では、各タグ32が物理アドレスのブロックに関連付けられている一方で、仮想メモリ・アドレス空間内の仮想メモリ位置に関連付けられた保護タグ32を提供することも可能であるが、これには各メモリ・アクセスでいくつかの追加のアドレス変換が必要になる場合がある。したがって、保護タグ32を物理メモリ位置に関連付けることによって性能を向上させることができる。一般に、保護タグ32を物理アドレス空間の対応するブロック30にどのように関連付けるかは、厳密には特定のマイクロアーキテクチャの実装による選択である。一般に、必要とされるのは、メモリの所与のブロックに関連付けられた保護タグ32にアクセスし、比較できることだけである。
したがって、タグで保護されたメモリ・アクセスが発生する必要がある場合、(アクセスされるアドレス指定された位置44を識別する対象アドレス42に関連付けられている)アドレス・タグ40は、アドレス指定された位置44を含むメモリ位置30のブロックに関連付けられている保護タグ32と比較され得る。例えば、図2では、対象アドレス42はメモリ内のある位置B1を指し、図2のアドレス空間で44と記されている。したがって、位置B1を含む位置Bのブロックに関連付けられている保護タグBは、対象アドレス42に関連付けられたアドレス・タグ40と比較される。図2の上部に示すように、アドレス・タグ40は、対象アドレス自体の選択されたビットの関数として決定され得る。具体的には、アドレス・タグは、アドレス指定された位置44として選択されるべき特定のメモリ位置を示すために使用されない対象アドレスの一部内のビットから決定され得る。例えば、いくつかのアーキテクチャでは、対象アドレスのビットの上位部は符号拡張(すべて0又はすべて1)などの一定の固定値を常に有する可能性があるので、アドレスは、これらの未使用のビットを任意のタグ値で上書きすることによってアドレス・タグ40でタグ付けされ得る。特定のアドレス・タグ値は、例えばプログラマ又はコンパイラによって選択され得る。アドレス・タグ及び保護タグ32は、比較的少数のビット、例えば4ビットであり得るので、メモリ内及び対象アドレス内の多くの空間を占有する必要はない。4ビットのタグ空間、すなわち16の可能なタグ値を提供することは、しばしば、多くの一般的なタイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
したがって、タグで保護されたメモリ・アクセスが実行されると、アドレス・タグ40とアドレス指定された位置44を含むブロック30に関連付けられた保護タグ32との間で比較が行われ、それらが一致するかどうかが判定される。図1の例示的な構成例では、比較は、ロード/記憶ユニット15と物理メモリ18との間のどこでも実行され得る(実際には、その経路に沿って分散され得る)ことに留意されたい。しかしながら、この実例では、比較は、ロード/記憶ユニット15によって実行されるという点で、簡単にするために説明されている。ロード/記憶ユニット15は、アドレス・タグ40及び保護タグ32が一致したかどうかを示す一致表示を生成する。例えば、この一致表示は、アドレス・タグ40と保護タグ32との間に不一致がある場合に生成されるフォールト信号60、又は一致があったかどうかを示すステータス・レジスタに設定される表示、又はエラーが検出されたアドレス及び/若しくはエラーをトリガした命令の命令アドレスを示すためにエラー・レポートに追加されたエントリである場合がある。
図3は、タグで保護されたメモリ・アクセスを処理するためのフロー図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及び対象アドレスを指定してもよい。図2に示すように、場合によっては、アドレス・タグは、実際には対象アドレス自体のビットのサブセットから導出されてもよいが、他の実例では別のレジスタで指定され得る。ステップ50において、タグで保護されたメモリ・アクセスをトリガする命令が発生する。これに応答して、ステップ52において、メモリ・アクセス回路15は、対象アドレスによって識別されるアドレス指定された位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、対象アドレスによって識別されるアドレス指定された位置44を含むメモリ位置30のブロックに関連付けてメモリ・システムに記憶されている保護タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、アドレス・タグ40をステップ54で取得された保護タグ32と比較する。ステップ58において、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示が、メモリ・アクセス回路15によって生成される(例えば、上述の一致/不一致を報告する表示タイプのいずれか)。不一致の場合にそれを報告するために使用される正確な表示は、実装ごとに異なる場合がある。
図4は、一実例における装置60の表現を概略的に示す。メモリ・アクセス回路62は、(アドレス・タグ部分65を含む)対象アドレスを受信する。メモリ・アクセス回路62は、対象アドレス64を使用して、通常の方法でメモリ66に関して必要なメモリ・アクセスを実行する。しかしながら、メモリ・アクセス回路62は、保護タグ・チェック回路67及びサブセット制御回路68を備えてもよく、サブセット制御回路68は、受信した対象アドレスのサブセットに対して保護タグ・チェックが実行されないように、(イネーブル信号を使用して)保護タグ・チェック回路67の起動を制御する。保護タグ・チェックが実行されると、保護タグ・チェック回路67は、アドレス・タグ65と検索された保護タグ69とが一致するかどうかを上記の方法で判定する。それらが一致するかどうかを表示するための一致表示が生成される。
図5は、一実例における装置60のメモリ・アクセス回路62のいくつかの構成要素をより詳細に概略的に示す。メモリ・アクセス回路62は、サブセット定義レジスタ70、アドレス・カウント回路72、及び制御回路74を備える。保護タグ・チェックが実行されない受信した対象アドレスのサブセットを定義するために、サブセット定義レジスタ70のコンテンツが設定されてもよい。例えば、これは、割合を指定することができ、それにより、(アドレス・カウント回路72を使用してカウントされた)定義された割合のメモリ・アクセスが、保護タグ・チェックなしで実行される。或いは、コンテンツは、整数nを定義することができ、それにより、メモリ・アクセス回路は、(アドレス・カウント回路72でアクセスをカウントして)すべてのl/nのメモリ・アクセスに対して、タグ保護されていないメモリ・アクセスを実行する。メモリ・アクセス回路は、実行されたタグで保護されたメモリ・アクセスの数、及び実行されたタグで保護されないメモリ・アクセスの数(アドレス・カウント回路72を参照)の統計的見地を収集するように構成されてもよく、その場合、これらの数の比率は、比率を所望の値に導くために、次のメモリ・アクセスに対して保護タグ・チェックするかどうかの判定に影響を与えることができる。したがって、制御回路74は、サブセット定義レジスタ70及びアドレス・カウント回路72にアクセスして、所与の対象アドレスに対して保護タグ・チェックが実行されるべきかどうかの判定をサポートし、イネーブル信号を使用して保護タグ・チェック回路67に信号を送る。
次に、所与の対象アドレスに対して保護タグ・チェックが実行されるべきかどうかを判定するために制御回路74が従い得る例示的なプロセスについて、図6及び図7のフロー図を参照して説明する。
図6では、フローはステップ100から開始し、プロセスは、対象アドレスが受信されるまで待機する。対象アドレスが受信されると、ステップ102において、アドレス・カウントがインクリメントされる。次いで、ステップ104において、現在のアドレス・カウント及びサブセット定義が、保護タグ・チェックが実行されるべきであることを意味するかどうかが判定される。実行されるべきである場合、フローはステップ106に進み、アドレス・カウントがリセットされ、ステップ108において保護タグ・チェックが実行される。次いで、ステップ110に続き、メモリ・アクセスが実行される。しかしながら、ステップ104において、現在のアドレス・カウント及びサブセット定義が、保護タグ・チェックが実行されるべきでないことを意味すると判定された場合、フローは直接ステップ110に進む。この説明したフローは、メモリ・アクセスの前に保護タグ・チェックが実行されなければならないとは解釈されないことに留意されたい。これらは、任意の個別の順序で実行されてもよい。実際には、いくつかの実例では、メモリ・アクセスの続行を許可するかどうかを判定するために、保護タグ・チェックの結果が使用される場合がある。最後に、フローはステップ100に戻り、次の対象アドレスを待つ。
図7では、フローはステップ120から開始し、プロセスは対象アドレスが受信されるまで待機する。対象アドレスが受信されると、ステップ122において、保護タグ・チェック済みアクセス及び非保護タグ・チェック済みアクセスのカウント(並びにサブセット定義)が、保護タグ・チェックが実行されるべきであることを意味するかどうかが判定される。実行されるべきである場合、フローはステップ124に進み、保護タグ・チェック済みアクセスのカウントがインクリメントされ、ステップ126において保護タグ・チェックが実行される。次いで、ステップ130に続き、メモリ・アクセスが実行される。しかしながら、ステップ122において、保護タグ・チェック済みアクセス及び非保護タグ・チェック済みアクセスのカウント(並びにサブセット定義)が、保護タグ・チェックが実行されるべきでないことを意味すると判定された場合、フローはステップ128に進み、非保護タグ・チェック済みアクセスのカウントがインクリメントされる。次いで、ステップ130に続き、メモリ・アクセスが実行される。最後に、フローはステップ120に戻り、次の対象アドレスを待つ。
図8は、使用され得るシミュレータの実装を示す。前述の実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実装するが、本明細書に記載の実施例による命令実行環境を提供することも可能であり、これはコンピュータ・プログラムの使用を通じて実装される。このようなコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェアベースの実装を提供する限りにおいては、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。通常、シミュレータの実装は、ホスト・プロセッサ230で実行され、任意選択でホスト・オペレーティング・システム220を実行し、シミュレータ・プログラム210をサポートする。いくつかの構成では、ハードウェアと提供される命令実行環境との間にシミュレーションの複数の層、及び/又は同じホスト・プロセッサ上に提供される複数の異なる命令実行環境が存在する場合がある。歴史的に、強力なプロセッサは適正な速度で実行するシミュレータの実装を提供する必要があったが、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行したい場合など特定の状況下においては、このような手法が妥当である場合がある。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアでサポートされていない追加機能を備えた命令実行環境を提供してもよく、又は通常は異なるハードウェア・アーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53〜63頁に記載されている。
実施例が特定のハードウェア構成又は特徴を参照して前述された範囲において、シミュレートされた実施例では、同等の機能が適切なソフトウェア構成又は特徴によって提供されてもよい。例えば、シミュレートされた実施例において、特定の回路はコンピュータ・プログラム・ロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装されてもよい。前述の実施例で参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(例えば、ホスト・プロセッサ230)上に存在する構成では、いくつかのシミュレートされた実施例は、適宜ホスト・ハードウェアを利用してもよい。
シミュレータ・プログラム210は、コンピュータ可読記憶媒体212(非一時的媒体であり得る)に記憶されてもよく、シミュレータ・プログラム210によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである、(アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る)対象コード200へのプログラム・インターフェース(命令実行環境)を提供する。したがって、対象コード200のプログラム命令は、シミュレータ・プログラム210を使用して命令実行環境内から実行されてもよく、その結果、実際に上述の装置60のハードウェア機能を有していないホストコンピュータ230、具体的にはメモリ・アクセス回路62は、これらの機能をエミュレートすることができる。例えば、シミュレータ・プログラム210は、アドレス指定された位置にアクセスするため、及び保護タグ・チェックを実行するためのメモリ・アクセス・ロジック216を含んでもよい。したがって、シミュレータ・プログラム210は、上述のサブセットを決定し、保護タグとアドレス・タグの比較を実行するかどうかを制御し、保護タグとアドレス・タグとの間の何らかの不一致が検出されたかどうかを報告するためのメモリ・アクセス・プログラム・ロジック216を含んでもよい。
要約すると、対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路を備え、タグで保護されたメモリ・アクセスは、対象アドレスに関連付けられたアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む装置が提供される。メモリ・アクセス回路は、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに応答して、アドレス指定された位置のシーケンスのサブセットに対して保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する。
本出願において、「〜ように構成される」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有する場合があり、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされている場合がある。「ように構成される」は、定義された動作を提供するために装置の要素が何らかの変更を必要とすることを暗示するものではない。
例示的な実施例が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明がそれらの厳密な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が、当業者によって行われ得ることを理解されたい。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなく、独立請求項の特徴と様々に組み合わせることができる。

Claims (9)

  1. 対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、前記タグで保護されたメモリ・アクセスが、前記対象アドレスに関連付けられたアドレス・タグを、前記対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路を備え、
    前記メモリ・アクセス回路が、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに応答して、アドレス指定された位置の前記シーケンスのサブセットに対して前記保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する
    装置。
  2. サブセット構成のデータ記憶装置を備え、前記サブセットが、前記サブセット構成のデータ記憶装置に記憶されているサブセット構成データによって定義される、請求項1に記載の装置。
  3. 前記サブセット構成のデータ記憶装置が、構成レジスタである、請求項2に記載の装置。
  4. 前記サブセット構成データが割合を定義し、前記メモリ・アクセス回路が、前記サブセット構成データに応答して、アドレス指定された位置の前記シーケンスの前記サブセットが前記割合に相当するように、前記タグで保護されないメモリ・アクセスを選択的に実行する、請求項2又は請求項3に記載の装置。
  5. 前記サブセット構成データが整数値を定義し、前記メモリ・アクセス回路が、前記サブセット構成データに応答して、アドレス指定された位置の前記シーケンス内の前記整数値の序数の倍数に相当するアドレス指定された位置に対して、前記タグで保護されないメモリ・アクセスを実行する、請求項2又は請求項3に記載の装置。
  6. 前記サブセット構成データが目標値を定義し、前記メモリ・アクセス回路が、前記サブセット構成データに応答して、アドレス指定された位置の前記シーケンスの前記サブセットが所定の期間にわたって前記目標値に統計的に相当するように、前記タグで保護されないメモリ・アクセスを実行する、請求項2又は請求項3に記載の装置。
  7. 対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するステップであって、前記タグで保護されたメモリ・アクセスが、前記対象アドレスに関連付けられたアドレス・タグを、前記対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、ステップと、
    アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置の前記シーケンスのサブセットに対して前記保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行するステップと
    を含む方法。
  8. 対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
    対象アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、前記タグで保護されたメモリ・アクセスが、前記対象アドレスに関連付けられたアドレス・タグを、前記対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックを含み、
    前記メモリ・アクセス・プログラム・ロジックが、アドレス指定された位置のシーケンスを指定する受信した対象アドレスのシーケンスに対応して、アドレス指定された位置の前記シーケンスのサブセットに対して前記保護タグ・チェックを実行しないタグで保護されないメモリ・アクセスを実行する
    コンピュータ・プログラム。
  9. 請求項8に記載のコンピュータ・プログラムを記憶する記憶媒体。
JP2020540601A 2018-02-02 2019-01-23 メモリ・アクセスにおける保護タグ・チェックの制御 Active JP7349437B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801750.9A GB2570692B (en) 2018-02-02 2018-02-02 Controlling guard tag checking in memory accesses
GB1801750.9 2018-02-02
PCT/GB2019/050191 WO2019150078A1 (en) 2018-02-02 2019-01-23 Controlling guard tag checking in memory accesses

Publications (2)

Publication Number Publication Date
JP2021512405A true JP2021512405A (ja) 2021-05-13
JP7349437B2 JP7349437B2 (ja) 2023-09-22

Family

ID=61730975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020540601A Active JP7349437B2 (ja) 2018-02-02 2019-01-23 メモリ・アクセスにおける保護タグ・チェックの制御

Country Status (9)

Country Link
US (1) US11397541B2 (ja)
EP (1) EP3746900B1 (ja)
JP (1) JP7349437B2 (ja)
KR (1) KR20200116473A (ja)
CN (1) CN111566628A (ja)
GB (1) GB2570692B (ja)
IL (1) IL275873B2 (ja)
TW (1) TWI787451B (ja)
WO (1) WO2019150078A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2578924B (en) 2018-11-14 2021-09-29 Advanced Risc Mach Ltd An apparatus and method for controlling memory accesses
US10855529B2 (en) * 2018-11-26 2020-12-01 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140446A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置および不正アクセス防止方法
US20170177429A1 (en) * 2015-12-21 2017-06-22 Tomer Stark Hardware apparatuses and methods for memory corruption detection

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
TWI332626B (en) 2007-02-01 2010-11-01 Te An Wang A reducing btb target address field bits method
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8656121B2 (en) * 2011-05-17 2014-02-18 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
WO2013101246A1 (en) * 2011-12-31 2013-07-04 Intel Corporation Processor that detects when system management mode attempts to reach program code outside of protected space
US20130275699A1 (en) * 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
EP3195178B1 (en) * 2014-07-23 2019-02-20 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US9619313B2 (en) * 2015-06-19 2017-04-11 Intel Corporation Memory write protection for memory corruption detection architectures
GB2544315B (en) 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2549511B (en) * 2016-04-20 2019-02-13 Advanced Risc Mach Ltd An apparatus and method for performing operations on capability metadata

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140446A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置および不正アクセス防止方法
US20170177429A1 (en) * 2015-12-21 2017-06-22 Tomer Stark Hardware apparatuses and methods for memory corruption detection

Also Published As

Publication number Publication date
JP7349437B2 (ja) 2023-09-22
EP3746900B1 (en) 2023-08-09
US11397541B2 (en) 2022-07-26
TW201941064A (zh) 2019-10-16
GB2570692B (en) 2020-09-09
IL275873B2 (en) 2024-03-01
IL275873A (en) 2020-08-31
GB201801750D0 (en) 2018-03-21
US20200225872A1 (en) 2020-07-16
CN111566628A (zh) 2020-08-21
WO2019150078A1 (en) 2019-08-08
GB2570692A (en) 2019-08-07
TWI787451B (zh) 2022-12-21
EP3746900A1 (en) 2020-12-09
KR20200116473A (ko) 2020-10-12
IL275873B1 (en) 2023-11-01

Similar Documents

Publication Publication Date Title
JP2022503562A (ja) 範囲チェック命令
US11138128B2 (en) Controlling guard tag checking in memory accesses
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
KR20230017832A (ko) Tag 체킹 장치 및 방법
US11327903B2 (en) Multiple guard tag setting instruction
US11636048B2 (en) Handling guard tag loss
JP7369720B2 (ja) アクションをトリガするための装置及び方法
WO2023175289A1 (en) Read-as-x property for page of memory address space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230628

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230911

R150 Certificate of patent or registration of utility model

Ref document number: 7349437

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150