JP7039716B2 - ポリシ実行処理のためのシステムおよび方法 - Google Patents

ポリシ実行処理のためのシステムおよび方法 Download PDF

Info

Publication number
JP7039716B2
JP7039716B2 JP2020542139A JP2020542139A JP7039716B2 JP 7039716 B2 JP7039716 B2 JP 7039716B2 JP 2020542139 A JP2020542139 A JP 2020542139A JP 2020542139 A JP2020542139 A JP 2020542139A JP 7039716 B2 JP7039716 B2 JP 7039716B2
Authority
JP
Japan
Prior art keywords
instruction
tag
information
metadata
host
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
JP2020542139A
Other languages
English (en)
Other versions
JP2021512426A (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.)
Charles Stark Draper Laboratory Inc
Original Assignee
Charles Stark Draper Laboratory 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 Charles Stark Draper Laboratory Inc filed Critical Charles Stark Draper Laboratory Inc
Publication of JP2021512426A publication Critical patent/JP2021512426A/ja
Application granted granted Critical
Publication of JP7039716B2 publication Critical patent/JP7039716B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/24Querying
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

関連出願
本出願は、2018年2月2日に出願された米国仮出願第62/625,634号の利益を主張する。上記の出願のすべての教示は、参照により本明細書に組み込まれる。
本開示は、一般に、たとえば、セキュリティポリシを実施するための、ポリシ実行処理のためのシステムおよび方法に関する。1つまたは複数のコンピュータプログラム命令を実行するように構成された電子回路を含むコンピュータプロセッサが知られている。さらに、コンピュータプロセッサが秘密情報を危険にさらすのを防ぐために、セキュリティポリシを実装することが知られている。
一態様では、本開示は、ホストプロセッサを備えるホスト処理ドメインを備える処理システムを対象とする。ホストプロセッサは、(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、少なくとも1つの命令を受信するように構成され得る。ホストプロセッサは、演算出力情報を生成するために1つまたは複数のオペランドに対して演算情報において示される演算を実行することと、命令情報および演算出力情報をメタデータ処理ドメインに提供することとを行うようにさらに構成され得る。メタデータ処理ドメインは、ホスト処理ドメインから演算出力情報を受信することと、演算出力情報をキューに入れることとを行うように構成され得る書込みインターロックを備え得る。メタデータ処理ドメインは、ホスト処理ドメインから命令情報を受信することと、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために命令情報を使用することとを行うように構成されたタグ処理ユニットをさらに備え得る。タグ処理ユニットは、実施されている1つまたは複数のポリシに従って、および少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに従って、少なくとも1つの命令が許可されるかどうかをさらに決定し得る。タグ処理ユニットは、命令が許可されるという決定に応答して、書込みインターロックのキューに、演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で演算出力情報をメモリに書き込ませることができる。
タグ処理ユニットは、メタデータ処理ドメインによって実施される1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備え得る。
命令が許可されるという決定は、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶すると決定することを含み得る。タグ処理ユニットは、演算出力情報に関連付けられる少なくとも1つの出力メタデータタグを提供するために、ルールエントリに記憶された情報を使用するように構成され得る。
メタデータ処理ドメインは、ポリシ実行プロセッサを備え得る。命令が許可されるという決定は、(i)少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないと決定することと、(ii)少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないという決定に応答して、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグをポリシ実行プロセッサに提供することと、(iii)ポリシ実行プロセッサから、演算出力情報に関連付けられる少なくとも1つの出力メタデータタグを受信することとを備え得る。
ポリシ実行プロセッサは、タグ処理ユニットから、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを受信することと、少なくとも1つの命令が許可されるかどうかを決定するために、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに対してポリシコードを実行することとを行うように構成され得る。少なくとも1つの命令が許可されるという決定に応答して、ポリシ実行プロセッサは、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグおよび少なくとも1つの出力メタデータタグに基づいて、ルールエントリをルールキャッシュにインストールするようにさらに構成され得る。
ポリシ実行プロセッサは、セキュアブート演算を実行するように構成され得る。ポリシ実行プロセッサは、(i)外部メモリデバイスから画像を読み取ることと、1つまたは複数の公開鍵を使用して画像を認証および復号化することと、ホストプロセッサが、認証および復号化が成功したときにそのブートプロセスを続行することを可能にすることとを行うことができるコードとともに、1つまたは複数の公開鍵を記憶するブートROMを備え得る。
ブート演算は、リセット時に、ホストプロセッサがリセット状態に保持されたままであることを含み得る。ポリシ実行プロセッサは、(i)そのリセットベクタにおいて実行を開始することと、(ii)ポリシソフトウェアを独自のメモリスペースにブートすることと、(iii)各イニシエータがアクセスできるメモリ領域を定義し、ポリシデータセグメントを保持するメモリ領域を保護するために、1つまたは複数のメモリファブリック保護構成レジスタを構成することと、(iv)ポリシデータセグメントを初期化することと、(v)ホストプロセッサのブートローダを外部メモリデバイスからメインメモリにコピーすることと、(vii)ホストプロセッサをリセット状態から解放することとを行うことができる。
ホストプロセッサは、メタデータ処理ドメインに、少なくとも1つの命令を実行した結果としてのホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するようにさらに構成され得る。メタデータ処理ドメインは、少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点でのホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、更新情報を使用するようにさらに構成され得る。少なくとも1つの命令は、第1の命令を含み得、命令情報は、第1の命令情報を含み得、1つまたは複数の入力メタデータタグは、1つまたは複数の第1の入力メタデータタグを含む。タグ処理ユニットは、(i)ホストプロセッサによって実行される第2の命令に関する第2の命令情報をホスト処理ドメインから受信することと、(ii)第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために第2の命令情報を使用することと、(iii)実施されている1つまたは複数のポリシに従って、および第2の命令に関連付けられる1つまたは複数の第2のメタデータタグに従って、第2の命令が許可されるかどうかを決定することと、(iv)第2の命令が許可されないという決定に応答して、ホスト処理ドメインの状態をホスト処理ドメインのシャドウコピーに復元するために、1つまたは複数のロールバック信号をホスト処理ドメインに通信することとを行うようにさらに構成され得る。
1つまたは複数の入力メタデータタグは、ホストプロセッサにアクセスできない場合がある。
命令情報は、(i)少なくとも1つの命令の命令タイプを示す情報、(ii)少なくとも1つの命令がフェッチされるメモリアドレスを示す情報、(iii)少なくとも1つの命令によって使用される1つまたは複数のレジスタを示す情報、および(iv)少なくとも1つの命令によって参照されるメモリアドレスを示す情報からなるグループから選択される少なくとも1つの情報を含み得る。
別の態様では、本開示は、第1の命令セットアーキテクチャを実装することと、1つまたは複数のオペランドを示すオペランド情報、および1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む命令を受信することとを行うように構成されたアプリケーションプロセッサを備えるアプリケーション処理ドメインを備える処理システムを対象とする。命令は、第1の命令セットアーキテクチャに従ってフォーマットされ得る。アプリケーション処理ドメインは、メタデータ処理ドメインに、命令を命令ストリームにおいてさらに提供し得る。メタデータ処理ドメインは、少なくとも1つのデコードテーブルを備え得るタグ処理ユニットを備え得る。タグ処理ユニットは、命令からオペランド情報および演算情報を抽出するように構成され得る。
タグ処理ユニットは、命令に基づいて、1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報を決定するように構成された少なくとも1つのルックアップテーブルを備え得る。
タグ処理ユニットは、少なくとも1つのデコードテーブルに基づいて、命令が第1の命令セットアーキテクチャに従ってフォーマットされていることを決定するようにさらに構成され得る。命令が第1の命令セットアーキテクチャに従ってフォーマットされているという決定は、1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報にさらに基づき得る。少なくとも1つのデコードテーブルは、少なくとも一次テーブル、二次テーブル、および複数のアドレスルックアップテーブルのテーブルのカスケードを備え得る。
タグ処理ユニットは、タグ処理ユニットが停止したときにアプリケーションプロセッサからの命令を記憶することと、命令ストリームが停止したときにタグ処理ユニットによって使用するための記憶された命令を提供することとを行うように構成されたバッファ付きインターフェースをさらに備え得る。バッファ付きインターフェースは、先入れ先出し(FIFO)コンポーネントを備え得る。
タグ処理ユニットは、物理命令アドレスおよびデータメモリページアドレスの一方または両方を、(i)対応する関連タグアドレス、および(ii)タグに直接、の一方または両方に変換するように構成されたタグマップテーブル(TMT)をさらに備え得る。TMTは、特定のサイズのメモリ領域に対して指定された即値タグに対応するように構成され得る。特定のサイズは、メモリ領域サイズの範囲から選択され得る。
メタデータ処理ドメインは、(i)タグアドレスを書込みトランザクションが進行中であることを示す所定の定数値に変更するために、第1の書込みを実行することと、(ii)新しいデータを書き込むために第2の書込みを実行することと、(iii)新しいデータに関連付けられる新しいタグを書き込むために第3の書込みを実行することとを行うように構成されたメタデータタグインターロックキューをさらに備え得る。
別の態様では、本開示は、ホスト処理ドメインにおいて、アプリケーションプロセッサによって、(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む命令の各々を受信することを備える、命令を処理する方法を対象とする。本方法は、演算出力情報を生成するために1つまたは複数のオペランドに対して演算情報において示される演算を実行するステップと、命令情報および演算出力情報をメタデータ処理ドメインに提供するステップとをさらに含み得る。本方法は、メタデータ処理ドメインにおいて、書込みインターロックによって、ホスト処理ドメインから演算出力情報を受信するステップと、演算出力情報をキューに入れるステップとをさらに含み得る。本方法は、タグ処理ユニットによって、(i)ホスト処理ドメインから命令情報を受信するステップと、(ii)少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために命令情報を使用するステップと、(iii)実施されている1つまたは複数のポリシに従って、および少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに従って、少なくとも1つの命令が許可されるかどうかを決定するステップと、(iv)命令が許可されると決定するステップに応答して、書込みインターロックのキューに、演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で演算出力情報をメモリに書き込ませるステップとをさらに含み得る。
タグ処理ユニットは、メタデータ処理ドメインによって実施される1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備え得る。命令が許可されると決定するステップは、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶すると決定するステップを含み得る。
本方法は、タグ処理ユニットによって、演算出力情報に関連付けられる少なくとも1つの出力メタデータタグを提供するために、ルールエントリに記憶された情報を使用するステップをさらに含み得る。
メタデータ処理ドメインは、ポリシ実行プロセッサを備え得る。命令が許可されると決定するステップは、(i)少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないことを決定するステップと、(ii)少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないという決定に応答して、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグをポリシ実行プロセッサに提供するステップと、(iii)ポリシ実行プロセッサから、演算出力情報に関連付けられる少なくとも1つの出力メタデータタグを受信するステップとを含み得る。
本方法は、ポリシ実行プロセッサによって、(i)タグ処理ユニットから、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを受信するステップと、(ii)少なくとも1つの命令が許可されているかどうかを決定するために、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグに対してポリシコードを実行するステップと、(iii)少なくとも1つの命令が許可されるという決定に応答して、少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグおよび少なくとも1つの出力メタデータタグに基づいて、ルールエントリをルールキャッシュにインストールするステップとをさらに含み得る。
本方法は、ホストプロセッサによって、メタデータ処理ドメインに、少なくとも1つの命令を実行した結果としてのホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するステップと、メタデータ処理ドメインによって、少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点でのホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、更新情報を使用するステップとをさらに含み得る。
少なくとも1つの命令は、第1の命令を含み得、命令情報は、第1の命令情報を含み、1つまたは複数の入力メタデータタグは、1つまたは複数の第1の入力メタデータタグを含む。本方法は、タグ処理ユニットによって、(i)ホストプロセッサによって実行される第2の命令に関する第2の命令情報をホスト処理ドメインから受信するステップと、(ii)第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために第2の命令情報を使用するステップと、(iii)実施されている1つまたは複数のポリシに従って、および第2の命令に関連付けられる1つまたは複数の第2のメタデータタグに従って、第2の命令が許可されるかどうかを決定するステップと、(iv)第2の命令が許可されないという決定に応答して、ホスト処理ドメインの状態をホスト処理ドメインのシャドウコピーに復元するために、1つまたは複数のロールバック信号をホスト処理ドメインに通信するステップとをさらに含み得る。
前述は、同様の参照文字が異なる図面全体を通して同じ部分を指す添付の図面に示されるように、例示的な実施形態の以下のより具体的な説明から明らかになるであろう。図面は必ずしも縮尺通りではなく、代わりに実施形態を説明することに重点が置かれている。
一実施形態による安全な処理システムのブロック図である。 一実施形態による安全な処理システムのブロック図である。 一実施形態による、命令を処理するプロセスを示す図である。 一実施形態による、命令を処理するプロセスを示す図である。 一実施形態による、ポリシ実施のためのプロセッサインターロックのブロック図である。 一実施形態によるタグ処理のデータフロー図である。 一実施形態による命令セットアーキテクチャ復号システムのブロック図である。 本明細書で説明されるPIPEレジスタの例示的なセットを示す図である。 本明細書で説明されるPIPEレジスタの例示的なセットを示す図である。 本明細書で説明されるPIPEレジスタの例示的なセットを示す図である。 本明細書で説明されるPIPEレジスタの例示的なセットを示す図である。 本明細書で説明されるPIPEレジスタの例示的なセットを示す図である。 本明細書で説明されるケアビットの例示的なセットを示す図である。 本明細書で説明される例示的なTPU通信インターフェースを示す図である。 本明細書で説明される例示的なTPU通信インターフェースを示す図である。 本明細書で説明される例示的なTPU通信インターフェースを示す図である。 本明細書で説明される例示的なTPU通信インターフェースを示す図である。 本明細書で説明される例示的なISA固有のヘッダファイルのパラメータを示す図である。 本明細書で説明される、シャドウメモリ、RF/CSR名、およびRF/CSRアドレスの間の例示的なマッピングを示す図である。 本明細書で説明される、MTIQによって使用される例示的な通信情報を示す図である。 本明細書で説明される、MTIQによって使用される例示的な通信情報を示す図である。 本明細書で説明される、MTIQによって使用される例示的な通信情報を示す図である。
例示的な実施形態の説明が続く。
本明細書に引用されたすべての特許、公開された出願、および参考文献の教示は、それらの全体が参照により組み込まれる。
態様と例は、一般に、ポリシ(たとえば、セキュリティポリシ)の実施が改善されたコンピューティングシステムを対象としている。一例では、ホストプロセッサおよびポリシ実行プロセッサは、ポリシ実施のためにプロセッサインターロックによって接続される。ポリシ実施のためのプロセッサインターロックは、ホストプロセッサによってコミットされた命令がポリシルールのリストに準拠しているかどうかを決定する。ルールのリストに所望のルールが含まれていない場合、ポリシ実行プロセッサは所望のルールを安全に決定して提供し得る。いくつかの例では、ホストプロセッサは、任意の命令セットアーキテクチャに従って構成され得る。
本明細書で論じられる方法およびシステムの例は、適用において、以下の説明に記載されるかまたは添付の図面に示される構成の詳細およびコンポーネントの配置に限定されない。これらの方法およびシステムは、他の実施形態において実装することができ、様々な方法で実施または実行することができる。特定の実装形態の例は、例示の目的でのみ本明細書に提供されており、限定することを意図していない。具体的には、1つまたは複数の任意の例に関連して説明された行為、コンポーネント、要素、および機能は、他の例における同様の役割から除外されることを意図していない。
また、本明細書で使用される表現および用語は、説明を目的とするものであり、限定と見なされるべきではない。本明細書で、単数で言及されるシステムおよび方法の例、実施形態、コンポーネント、要素または行為への任意の言及はまた、複数を含む実施形態を包含してもよく、本明細書での任意の実施形態、コンポーネント、要素、または行為への複数での任意の言及も単一のみを含む実施形態を包含し得る。単数形または複数形での参照は、現在開示されているシステムまたは方法、それらのコンポーネント、行為、または要素を限定することを意図していない。本明細書における「含む(including)」、「備える(comprising)」、「有する(having)」、「含む(containing)」、「含む(involving)」、およびそれらの変形の使用は、その後に列挙される項目、およびその均等物ならびに追加の項目を包含することを意味する。「または(or)」への言及は、「または(or)」を使用して説明される任意の用語が単一、複数、およびすべての説明された用語のいずれかを示し得るように、包括的であると解釈され得る。さらに、本明細書と参照により本明細書に組み込まれる文書との間で用語の使用に一貫性がない場合、組み込まれた文書における用語の使用法は、本明細書の使用を補足するものであり、一致しない矛盾については、本明細書における用語の使用が制御する。
コンピュータプロセッサは、命令を受信して実行するように設計されている。命令は、1つまたは複数の指定されたオペランドに対して実行される1つまたは複数の演算を指定し得る。たとえば、コンピュータプロセッサは、第1のオペランドおよび第2のオペランドに対して加算演算を実行することと、加算演算の結果を(たとえば、メモリ内の)特定の出力場所に出力することとを行う命令を受信し得る。第1のオペランドおよび第2のオペランドは、第1のオペランドおよび第2のオペランドが記憶されるそれぞれの場所(たとえば、メモリの場所)によって識別され得る。コンピュータプロセッサは、それぞれの場所において第1のオペランドおよび第2のオペランドを取得すると、加算演算を実行し、指定された出力場所に結果を書き込む。
いくつかの実施形態では、命令はより細分化され得る。一例として、記憶命令は、データレジスタからの値を、アドレスレジスタからのアドレスによって参照されるメモリの場所に記憶し得る。別の例として、ロード命令は、アドレスレジスタからアドレスによって参照されるメモリ位置からデータレジスタに値をロードされ得る。別の例として、算術命令は、1つまたは複数の入力レジスタに記憶された1つまたは複数の入力値を演算し、出力値を出力レジスタに配置し得る。
いくつかの実施形態では、メタデータタグは、命令(たとえば、命令タイプ、プログラムカウンタレジスタ、命令がフェッチされるメモリアドレス、命令によって使用される1つまたは複数のレジスタ、命令によって参照されるメモリの場所など)に関連するエンティティに関連付けられ得る。たとえば、セキュリティの侵害を防ぐためにはどのアクションが受け入れ可能/受け入れ不能かを決定するために、たとえばメタデータタグが使用され得る。命令を実行するコンピュータプロセッサは、特定のメタデータタグを有する命令をどのように処理するかを指示する1つまたは複数のセキュリティポリシの対象となり得る。たとえば、命令の実行がシステムのセキュリティを危険にさらす可能性があるため、セキュリティポリシは、特定のメタデータタグを有する命令を許可しない場合がある。
したがって、メタデータタグおよびセキュリティポリシは、コンピュータプロセッサが悪意のある攻撃者からの悪意のある可能性のある命令を実行するのを防ぐことができる。しかしながら、命令を実行するコンピュータプロセッサがメタデータタグおよび/またはセキュリティポリシにアクセスして修正できる場合、悪意のある攻撃者がコンピュータプロセッサを介してメタデータタグ、セキュリティポリシ、またはその両方を修正することによって、セキュリティポリシを回避する可能性がある。したがって、悪意のある攻撃者は、メタデータタグおよび/またはコンピュータプロセッサを管理するセキュリティポリシを操作することによって、他の許可されていない命令をコンピュータプロセッサに実行させる可能性がある。
前述の問題を回避するために、本明細書で開示される実施形態は、2つのプロセッサを含む処理システムを提供する。第1のプロセッサは、メタデータタグおよびセキュリティポリシに従って命令を実行するが、ほとんどの状況では、メタデータタグまたはセキュリティポリシへのアクセスは許可されていない。第2のプロセッサは、メタデータタグおよびセキュリティポリシにアクセスし、セキュリティポリシへの準拠を決定するが、処理システムによって受信された命令は実行しない。第1のプロセッサおよび第2のプロセッサによって実行されるタスクの分離は、コンピュータプロセッサのセキュリティおよび効率に大きな利点を提供し得る。さらに、本明細書で開示されるシステムおよび方法は、非常に柔軟なシステムを提供する、いくつかのサポートされる命令セットアーキテクチャ(ISA)のうちの1つに従って第1のプロセッサを実装することを可能にし得る。
図1は、一実施形態によるコンピュータ処理システム100のブロック図である。コンピュータ処理システム100は、アプリケーションプロセッサ(AP)102と呼ばれることもあるホストプロセッサ、ポリシ実施のためのプロセッサインターロック(PIPE)104、およびシステムオンチップ(SOC)バス106を含む。AP102、PIPE104、およびSOCバス106は、互いに通信可能に結合されている。いくつかの実施形態では、SOCバス106は、1つまたは複数の周辺機器、1つまたは複数のメモリバンク、およびSOCバス構成システムに通信可能に結合されるように構成される。
PIPE104は、タグ処理ユニット(TPU)108、ポリシ実行プロセッサ(PEX)110、およびメタデータタグインターロックキュー(MTIQ)112を含む。TPU108は、PEX110およびMTIQ112に通信可能に結合される。PEX110は、TPU108に通信可能に結合される。MTIQ112は、TPU108に通信可能に結合される。
いくつかの実施形態では、AP102は、一般に、命令を受信することと、命令によって指定された演算を実行することと、MTIQ112に出力を書き込むこととを行うように構成される。AP102はまた、TPU108に命令を提供し得る。以下でより詳細に論じられるように、AP102は、命令を管理するメタデータタグまたはセキュリティポリシにアクセスできず、したがって、実行された命令を検証することができない可能性がある。いくつかの実施形態では、AP102は命令を検証することができないため、AP102は、検証前に、AP102が検証されていない命令をAP102の外部のコンポーネントに独立してコミットできるようにする制御およびステータスレジスタ(CSR)を含まなくてもよい。たとえば、AP102は、1つまたは複数のCSRを除外するように構成され得、および/あるいは1つまたは複数のCSRは、それぞれのポートを切断することによって無効にされ得る。代わりに、AP102からの出力書込みはMTIQ112に記憶され、書込みはPIPE104によって命令が検証されるまで保持される。
いくつかの実施形態では、PIPE104は一般に、AP102からリタイアされた命令を受信することと、その命令が1つまたは複数のポリシ(たとえば、セキュリティポリシ)に準拠しているかどうかを決定するために、その命令を分析することとを行うように構成される。PIPE104は、命令がポリシに準拠しているかどうかを決定するために、リタイアされた命令に関連付けられるポリシおよびメタデータタグにアクセスするように構成されている。SOCバス106は、一般に、AP102およびPIPE104を含む、SOCバス106に接続されたコンポーネント間で1つまたは複数の信号をルーティングするように構成される。
タグ処理ユニット(TPU)
いくつかの実施形態では、TPU108は、一般に、以下の機能のうちの1つまたは複数を実行するように構成される。第1の機能は、AP102によって提供される命令に関連付けられる1つまたは複数の入力メタデータタグを処理するためのルールキャッシュとして機能することである。TPU108は、命令の検証が成功すると、出力メタデータタグをMTIQ112に書き込む。第2の機能は、ほとんど最新の許可された命令としてのコンピューティングシステム100のシャドウ状態を表すレジスタファイルおよびCSRのシャドウコピーを維持することである。問題(たとえば、セキュリティポリシに準拠しない命令)が検出された場合、コンピューティングシステム100は、信頼されたシャドウ状態に「アンワインドされ(unwound)」得る。
いくつかの実施形態では、PEX110は、一般に、以下の機能のうちの1つまたは複数を実行するように構成される。第1の機能は、所望のブートローダをAP102にブートすることによってセキュアブート演算を実行することである。第2の機能は、TPU108の高速キャッシュが所望のルールを含まない場合、ルールを決定してTPU108にインストールするために、タグを評価することである。第3の機能は、メタデータタグメモリアドレスへのAP102メモリアドレスのマップを維持することである。
いくつかの実施形態では、MTIQ112は、一般に、AP102からのデータ書込みおよびTPU108からの対応する出力メタデータタグを受信することと、データ書込みおよび対応する出力メタデータタグの組合せを出力することとを行うように構成される。いくつかの実施形態では、MTIQ112は、命令がセキュリティポリシに準拠することを示す出力メタデータタグがTPU108から受信されるまで、AP102から受信された出力データを記憶するように構成される。出力メタデータタグが受信されると、MTIQ112は、出力タグとデータのペアを指定された出力アドレスに書き込む。加えて、または代替として、出力データは、アプリケーションメモリアドレスに書き込まれてもよく、出力タグは、アプリケーションメモリアドレスに対応するメタデータメモリアドレスに書き込まれてもよい。
以下でより詳細に説明するように、MTIQ112は、バッファされたインターフェースがAP102とPIPE104との間に存在することを可能にする。いくつかの従来のシステムでは、現在の命令が検証されるまで、ホストプロセッサが後続の命令を実行が許可されない場合がある。対照的に、検証がTPU108から受信されるまで、MTIQ112はAP102からのすべての出力を保持するため、AP102は、TPU108によって命令が検証される前に、命令の実行とMTIQ112への出力の書込みを続行し得る。同様に、PIPE104は、AP102が命令を実行する速度とは無関係に命令を検証し得る。
したがって、AP102およびPIPE104は互いに対象となり得ず、したがって、命令を独立して処理し、処理速度を大幅に向上させることができる。AP102とPIPE104の両方が命令を首尾よく処理した場合、MTIQ102は、命令の検証された結果を指定された宛先に出力し得る。そうではない場合、AP102からの出力がPIPE104によって許可されない場合、コンピューティングシステム100は、最新の許可された命令の時点でのコンピューティングシステムのシャドウ状態にアンワインドされ得る。したがって、AP102およびPIPE104は、プロセッサのセキュリティまたは効率を損なうことなしに互いに独立して命令を処理し得る。
図2は、一実施形態によるコンピューティングシステム200の詳細なブロック図である。コンピューティングシステム200は、一実装形態によるコンピューティングシステム100のより詳細なブロック図を表し得る。しかしながら、コンピューティングシステム100の代替の実装形態は、本開示の範囲内であることが意図されており、コンピューティングシステム200は、説明目的のみのために提供されている。コンピューティングシステム200の特定の要素および接続は、説明の目的でのみ以下で識別され、説明される。たとえば、コンピューティングシステム200の特定の要素および接続は、以下で図3Aおよび図3Bに関連して説明するために識別されている。
コンピューティングシステム200は、AP202、PIPE204、およびSOCバス206を含む。PIPE204は、TPU208、PEXコア210、およびMTIQ212を含む。TPU208は、入力先入れ先出しコンポーネント(本明細書では「FIFO」と呼ばれる)214、ルールキャッシュ216、およびシャドウレジスタ217を含む。MTIQ212は、演算出力FIFO218およびタグFIFO220を含む。いくつかの例では、AP202はホスト処理ドメインの一部であり得、PIPE204はメタデータ処理ドメインの一部であり得る。処理ドメインは、いくつかの実施形態では、それぞれのメモリを含み得る。本明細書で説明されるFIFOは、当技術分野で知られているように、ハードウェア、ソフトウェア、または両方の組合せにおいて実装され得る。
AP202は、SOCバス206から命令222を受信することと、演算出力224を演算出力FIFO218に提供することと、命令226を入力FIFO214に提供することとを行うように構成される。TPU208は、タグ出力228をタグFIFO220に提供することと、割込み230をPEX210に提供することと、シャドウレジスタ217からリセットベクトル232をSOCバス206に提供することとを行うように構成される。いくつかの実施形態では、TPU208は、ハードウェアロールバック信号234をAP202に提供するように構成され得る。PEX210は、TPU208から受信した1つまたは複数の信号に従ってポリシコードを実行するように構成される。MTIQ212は、対応するタグ出力228が受信されるまで、演算出力224を受信してキューに保持するように構成される。
図3Aおよび図3Bは、一実施形態による、命令を処理する例示的なプロセス300を示している。図3Aはアクション302からアクション314までの例示的なプロセスを示しており、図3Bは、アクション314(「アクション」は、本明細書では「行為」とも呼ばれる)からアクション326までの例示的なプロセスを続ける。例示的なプロセス300は、コンピューティングシステム100またはコンピューティングシステム200に関連して実行され得る。説明のみを目的として、例はコンピューティングシステム200に関連して提示されている。
図3Aに示されるように、行為302においてプロセス300が開始する。行為304において、AP202は命令222を受信する。たとえば、AP202は、SOCバス206を介してコンピューティングシステム200の外部のコンポーネントから命令222を受信し得る。行為306において、AP202は命令を実行する。命令を実行することは、命令によって指定されたオペランドに対して命令によって指定された演算を実行することを含み得る。
行為308において、AP202は、実行された演算の出力224をMTIQ212に書き込む。たとえば、AP202は、実行された命令の出力をMTIQ212の演算出力FIFO218に書き込むことができ、対応する出力メタデータタグがタグFIFO220を介してTPU208から受信されるまで、出力はキューに保持され、実行された命令が1つまたは複数のポリシ(たとえば、セキュリティポリシ)と一致していることを示す。
行為310において、AP202は、命令226をTPU208に提供する。たとえば、AP202は、命令226を入力FIFO214に提供し得る。行為312において、TPU208は、受信した命令を分析し、ルールキャッシュ216が、受信した命令に関連付けられるメタデータタグに一致するエントリを含むかどうかを決定する。たとえば、ルールキャッシュ216は、頻繁にアクセスされるルールエントリを記憶するように構成されたルールキャッシュを含み得る。一致するルールエントリがルールキャッシュ216から利用可能である場合(312において、はい)、プロセス300は、行為314において図3Bに続く。
さもなければ、一致するルールエントリがルールキャッシュ216から利用できない場合(312において、いいえ)、プロセス300は行為316へと続く。行為316において、受信した命令を検証するために、要求がPEX210に送信され得る。これは、受信した命令に関連付けられるメタデータタグとともに、割込み230をPEX210に提供することを含み得る。PEX210は、命令が許可されるべきかどうかを決定するために、メタデータタグを評価し得る。命令が許可されるべきであるという決定に応答して、PEX210は、受信した命令に関連付けられるメタデータタグおよび/またはPEX210によって提供された出力メタデータタグとともに新しいエントリをルールキャッシュ216にインストールする。プロセス300は、行為314において図3Bに続く。
図3Bは、行為314において開始し、行為318へと続く。行為318において、一致するルールキャッチエントリにおいて示されるルールが満たされたかどうかに関して、TPU208によって決定が行われる。たとえば、行為318は、1つまたは複数のメタデータタグがルールに準拠しているかどうかを決定するために、受信した命令に関連付けられる1つまたは複数のメタデータタグにルールを適用することを含み得る。ルールが満たされている場合(318において、はい)、プロセス300は行為320へと続く。しかしながら、本開示の態様は、コンプライアンスの別個の決定を実行することに限定されないことを理解されたい。いくつかの実施形態では、ルールキャッシュにおける一致するルールエントリの存在は、受信した命令が許可されていることを示し得る。同様に、PEX210の出力は、受信した命令が許可されているかどうかを直接示し得る。したがって、ルールを適用するための行為318がない場合がある。
行為320において、TPU208は、AP202の状態のシャドウコピーを生成し、シャドウコピーをシャドウレジスタ217に記憶する。たとえば、TPU208は、命令に関連して受信したライトバック情報をシャドウレジスタ217に書き込むことができる。
AP202のシャドウコピーは、最新の許可された命令の実行時点でのAP202の状態を表す。いくつかの実施形態では、行為320において生成されたシャドウコピーにより、AP202が命令を実行することと、TPU208によって命令が1つまたは複数のポリシに準拠することが決定される前に、演算出力FIFO218に演算出力224を書き込むこととを継続できるようにする。その後、命令がポリシに準拠していないと決定された場合、AP202の状態は、シャドウレジスタ217に記憶されている最新の許可された状態にアンワインドされ得、検証されていないデータがコンピューティングシステム200の外部のコンポーネントに書き込まれないようになる。
行為322において、許可された命令に関連付けられる出力メタデータタグ228は、TPU208によってMTIQ212に書き込まれる。たとえば、TPU208は、出力メタデータタグをMTIQ212におけるタグFIFO220に書き込むことができる。タグFIFO220は、演算出力FIFO218に書き込まれた演算出力224およびタグFIFO220に書き込まれたメタデータタグ228が、それぞれ演算出力FIFO218およびタグFIFO220において同じ位置を占めるように、演算出力FIFO218と協調され得る。
行為324において、演算出力FIFO218に記憶された演算出力224およびタグFIFO220に記憶されたメタデータタグ228が解放される。たとえば、演算出力FIFO218およびタグFIFO220はそれぞれ、演算出力224および対応する出力メタデータタグ228を表す最新の受信された入力を解放し得る。ペアは、命令において指定されたアドレスにルーティングされるために、SOCバス206に解放され得る。加えて、または代替として、演算出力224は、アプリケーションメモリアドレスに書き込むことができ、対応するメタデータ出力タグ228は、アプリケーションメモリアドレスに対応するメタデータメモリアドレスに書き込むことができる。
行為326において、プロセス300は終了する。行為318に戻り、ルールが満たされない場合(318において、いいえ)、プロセス300は行為328へと続く。行為328において、AP202の状態は、最新の許可された命令の時点でのAP202の状態を反映するシャドウレジスタ217に記憶された状態にアンワインドされる。プロセス300は、行為326において終了する。
次に、PIPE204の演算を、図4に関してより詳細に説明する。図4は、いくつかの実施形態による、PIPE204のブロック図である。PIPE204は、TPU208、PEX210、およびMTIQ212を含む。TPU208は、入力FIFO214、ルールキャッシュ216、およびシャドウレジスタ217を含む。MTIQ212は、演算出力FIFO218およびタグFIFO220を含む。TPU208は、タグマップテーブル(TMT)236、演算グループ/ケアルックアップテーブル(LUT)238、ISAデコーダ240、および特殊機能レジスタ(SFR)242をさらに含む。しかしながら、本開示の態様は、図4の例における要素の特定の組合せおよび配置に限定されないことを理解されたい。たとえば、本開示の態様は、シャドウレジスタ、タグマップテーブル、演算グループ/ケアLUTなどを使用することに限定されない。
上述のように、いくつかの実施形態では、PIPE204は、AP202が実行を終了する命令ごとに、AP202から入力命令を受信するように構成され得る。PIPE204は、入力命令に関連付けられるタグをフェッチし、フェッチしたタグを、ルールキャッシュ216に記憶されたルールのセットと照合する。PIPE204は、AP202から切り離されているため、PIPE204は、AP202が命令をリタイアした後にタグセットを検証することができる。PIPE204の後処理の性質により、各命令がTPU208によって検証されるまで、AP202命令のあらゆる外部効果の実行を保留することがPIPE204にとって有利であり得る。
さらに、上述のように、いくつかの実施形態では、バッファ付きインターフェースは、AP202とPIPE204との間に提供され得る。バッファ付きインターフェースは、コミットされた命令の出力がAP202から演算出力FIFO218にキューイングすることを可能にし、その後、命令が許可されるべきであるかどうか、および結果タグが何であるかを決定するために、TPU208はコミットされた命令を評価する。
AP202は、PIPE204が命令を検証する前に命令を処理およびコミットすることを許可されているため、AP202は、その後PIPE204によって許可されない命令をコミットし得る。ポリシ違反が検出された状況では、TPU208がポリシ違反を検出すると、AP202の状態を最新の許可された命令の状態にアンワインド(unwind)するためのメカニズムを提供することが有利な場合がある。これを可能にするために、TPU208は、受信した命令ごとにライトバック情報を受信し得る。TPU208は、レジスタファイル、浮動小数点レジスタファイル、および/または制御/ステータスレジスタ(CSR)のシャドウコピーを、シャドウレジスタ217などのメモリに維持するために、ライトバック情報を使用することができる。シャドウコピーは、ポリシ違反が検出された場合にロードされ得るAP202の信頼された「バックアップ」状態を表す。
アンワインドイベントが必要な場合、AP202のリセットまたは割込みを開始するために、PEX210はPIPEレジスタを使用し得る。リセットが開始された場合、PEX210はまた、シャドウレジスタ217などのPIPEシャドウ状態RAMからAP202の状態を復元するコードを指すリセットベクトル232も提供し得る。いくつかの実施形態では、PIPE204は、AP202のハードウェアを以前の信頼された状態にロールバックするために、ハードウェアロールバック信号234をAP202にさらに提供し得る。しかしながら、例示的な実施形態は例示的なハードウェアベースのロールバック実装形態を説明しているが、ハードウェアベースの実装形態の代わりに、またはそれに加えて、ソフトウェアベースのロールバックも使用され得ることを理解されたい。
アンワインドメカニズムおよびMTIQ212が適切に配置されている場合、AP202は、外的影響は発生せず、必要に応じて状態がアンワインドされ得ることができるため、命令がチェックされる前に命令をレジスタファイルおよびCSRにコミットし得る。したがって、いくつかの実施形態では、CSRを介して汎用入力/出力(GPIO)などの、AP202に外的影響を及ぼし得るCSRをAP202に提供しないことが有利であり得る。たとえば、AP202は、非標準のバークレ拡張「mtohost」および「mfromhost」CSRを除外するように構成され得、および/またはそのようなCSRへの1つまたは複数のポートが切断され得る。
上述のように、PIPE204は、SFR242を含む。SFR242は、いくつかの実施形態によれば、図7A~図7Eに要約されている。「アドレス」列は、下位アドレスビットを指す。「ビット」列は、フィールドが占めるビットを示す。レジスタに複数のフィールドがある場合、アドレスを有する行には空の「ビット」セルがあり、後続の行には空のアドレスセルを有する対応するビット位置ごとのフィールドが示す。一実施形態では、すべてのレジスタは32ビット幅であり、バイト、ハーフワード、またはワードとしてアクセスすることができる。示されている32ビット未満のレジスタの場合、残りのビットは予約されており、ソフトウェアによって無視され得る。しかしながら、本開示の態様は、特定のサイズのレジスタ、または特定の細分度でレジスタにアクセスすることに限定されない。
この例では、PIPE204にはいくつかのタイプのレジスタがある。ステータスレジスタは、ステータスと統計情報を有する読取り専用レジスタを含む。制御レジスタは、AP202またはPIPE204からのアクションを開始する書込み専用および読取り専用レジスタを含む。ミスステータスレジスタは、ルールキャッシュミスを引き起こす値が読み込まれた読取り専用レジスタを含む。たとえば、ミスステータスレジスタは、ルールキャッシュウェイハッシュ関数の評価を示すためのレジスタと、指定された場所に有効なルールが存在するかどうかをソフトウェアに通知するためのビットとを含む。したがって、ソフトウェアは、ルールキャッシュ216からのルールの排出が必要かどうかを迅速に決定し得る。
いくつかの実施形態では、書込みコマンドレジスタは、新しいルールをルールキャッシュ216にインストールするために使用される読取り/書込みレジスタのセットを含む。たとえば、新しいルールは、ルールキャッシュ216にまだ存在しない所望のルールであり得る。ソフトウェアは、ルールのインストール先のルールキャッシュウェイを指定し、ミスしたソフトウェアがキャッシュ管理を担当するようにする。キーベースのクエリレジスタは、特定の入力セットまたはキーがルールキャッシュウェイのいずれかに存在するかどうかをチェックするためのレジスタのセットを含む。たとえば、これは、ルールキャッシュの一部がポリシごとのルールキャッシュとして使用されている場合に有利であり得る。
いくつかの実施形態では、アドレスベースの検査レジスタは、特定のルールキャッシュウェイのアドレスを調べ、その中のコンテンツをフェッチするためのレジスタのセットを含む。たとえば、これは、ソフトウェアが異なるキャッシュウェイにルールを再インストールするか、ソフトウェアL2キャッシュにルールを提供できるように、新しい挿入の前にルールを保存するために特に有利であり得る。タグマップテーブル制御レジスタは、以下により詳細に論じられるように、TMT236を書き込むためのレジスタを含む。TMT236は、いくつかの実施形態では、完全に連想的であり得る。以下でより詳細に説明するように、演算グループテーブル制御レジスタは、演算グループとケアテーブルを書き込むためのレジスタを含む。タグRAMアクセスレジスタは、PIPE204によって維持されるタグレジスタをメモリマップする読取り/書込みレジスタを含む。シャドウRAMアクセスレジスタは、レジスタファイルおよびCSR RAMのPIPE204のシャドウセットへのメモリマップアクセスを提供する読取り/書込みレジスタを含む。
図7A~図7Eに示される表は本明細書で説明されるPIPEレジスタの例示的なセットを示している。
本明細書で説明されるように、TPU208は、いくつかの実施形態では、AP202が終了する命令ごとに、AP202から入力を受信するように構成され得る。入力は、TPU208によって処理される命令を保持する入力FIFO214にキューイングされる。たとえば、TPU208による処理は、TPU208およびPIPE204によって実施されているポリシが関連タグセットを許可するかどうかを決定するために、命令の関連タグセットを分析することを含み得る。FIFO214は、TPU208の入力においてバッファ付きインターフェースを容易にする。このバッファ付きインターフェースにより、TPU208は、TPU 208が停止される必要があるイベントを補償する(たとえば、データハザードイベントを考慮する)ことと、命令ストリーム226が停止されている(たとえば、AP内の分岐イベントによる)イベントを補償することとを行うことができる。
図5は、一実施形態によるTPU208のデータフロー図500である。データフロー図500は、説明の目的でのみ名目上7つの段階に分けられている。第1の段階502において、命令タイプ、実行結果、命令および/またはデータアドレス、ならびに/あるいはライトバック値が入力FIFO214に流れ込む。たとえば、命令タイプ、実行結果、命令および/またはアドレス、ならびに/あるいはライトバック値がAP202から受信され得る。
第2の段階504において、入力FIFO214がポップされ、4つのイベントが発生し得る。図6に関して以下でより詳細に説明される第1のイベントにおいて、命令タイプ(たとえば、オペコード)を識別する1つまたは複数のビットは、演算グループ/ケアLUT238に送信され、これは、命令演算コードをグループ(「OPGRP」)および入力マスキングビットのセット(「CARES」)に変換する。たとえば、演算グループ/ケアLUT238は、加算および乗算演算コードを算術演算グループにグループ化し得る。類似または同一のルールが共通の算術グループに適用され得るため、類似の演算コードをグループ化すると、後続の段階における処理が簡略化され得る。マスキングビットのセット、またはCARESは、特定の命令、データ、またはオペランドタグが、1つまたは複数のポリシに対して評価する前に部分的または完全にマスクされる必要があることを後続の論理に示す。たとえば、ジャンプオペコードは、ジャンプの宛先アドレスを保持するオペランドレジスタに対応する1つのオペランドタグのみが所与の命令のポリシ評価に使用されるようにCARESビットを設定し得る。残りの可能性のあるオペランドのタグはマスクされるか、そうでなければポリシ評価から除外される。
第1のイベントと並行して実行され得る第2のイベントにおいて、物理的命令アドレスおよび物理的データアドレスは、図6に関して以下でより詳細に論じられるように、TMT236によって変換される。たとえば、TMT236は、タグアドレスおよび/または値への物理的命令およびデータメモリアドレスのマップを維持し得る。TMT236は、固定タグ値(たとえば、1つまたは複数の命令またはワード、あるいは命令またはデータワードのページ全体)、またはそのようなタグ値が配置されている物理アドレスのいずれかを出力し得る。
第3のイベントにおいて、命令がパイプラインレジスタ244に提供される。パイプラインレジスタ244は、命令が第2の段階504の他のイベントに対して適切な時間に後続の段階に出力されることを保証するように構成される。
第4のイベントにおいて、ライトバック値、タイプ、およびアドレスがライトバックパイプラインレジスタ246に渡される。上述のように、ライトバック情報は、AP202の状態を示し得る。ライトバック情報は、AP202のシャドウコピーを生成するためにデータフロー図500の最終段階においてシャドウレジスタ217に記憶され、アンワインド演算が必要な場合は、AP202の状態をアンワインドするために、シャドウコピーがシャドウレジスタ217から読み取られる。
ライトバックパイプラインレジスタ246は、他の演算が第1の段階502において受信した情報に対して実行されているときに、ライトバック情報がデータフロー図500の各段階を通過することを確実にし得る。後続の段階はまた、ライトバック情報がシャドウレジスタ217に記憶されることを保証するそれぞれのライトバックパイプラインレジスタを含み得、シャドウレジスタ217は、適切な時間に(たとえば、入力FIFO214において受信した命令が、インストールされたポリシに準拠することが決定されたときに)データフロー図500の最終段階にあり得る。簡潔にするために、後続のライトバックパイプラインレジスタ246は、第2の段階504のパイプラインレジスタ246と同様に機能するため、詳細には特に説明しない。あるいは、または加えて、ライトバック情報は、先入れ先出し(FIFO)バッファなどの他のメカニズムによって、TPU処理パイプラインと同期され得る。
第3の段階506において、さらに4つのイベントが発生し得る。第1のイベントは、TMT236が命令のタグ値および/またはタグアドレスを返し、現在の命令の対応するケアビットが演算グループ/ケアLUT238から返されるときに発生する。TMT236がタグアドレスを返す場合、その後、命令メタデータタグ値の読取りが開始され得、返された値が命令タグFIFO250(ITAG FIFO)に書き込まれる。TMT236がタグ値を返す場合、タグ値は、命令メタデータタグ値としてITAG FIFOに直接書き込まれ得る。
第2のイベントは、TMT236がメモリデータのタグ値および/またはタグアドレスを返し、現在のメモリデータの対応するケアビットが演算グループ/ケアLUT238から返されるときに発生する。TMT236がタグアドレスを返す場合、その後、データメタデータタグの読取りが開始され、返された値がデータタグFIFO250(DTAG FIFO)に書き込まれる。TMT236がタグ値を返す場合、TMT236によって提供されるタグ値は、データメタデータタグ値としてDTAG FIFOに直接書き込まれ得る。
第3のイベントにおいて、ISAデコーダ240は、演算グループ/ケアLUT238からケアビット情報および演算グループ情報を受信し、パイプラインレジスタ244から命令を受信する。簡略化されたISAデコード演算は、命令で実行される。図6に関して以下でより詳細に説明される簡略化されたISAデコード演算は、命令が使用するオペランドおよび宛先、オペランドおよび宛先のタイプおよびアドレス、ならびにメモリが命令によって使用されるか、または書き込まれるかどうかの決定を含む。
いくつかの実施形態では、ISAデコーダ240においては、第2の段階504における簡略化されたISAデコード演算によって提供されるオペランドおよび宛先アドレスが圧縮され得る。オペランドと宛先のアドレスは、アドレスを圧縮された単一のアドレス空間にマッピングするために、ISA固有のアドレスマップブロックを通じて渡され得る。アドレス空間を圧縮することは、AP202レジスタファイルおよびCSRのアドレスがまばらに入力および/またはエイリアス化される場合に有利であり得、その結果、アドレス空間は、連続したアドレス空間に削減され得る。マッピングは、オペランドタグRAMとシャドウステートRAMの両方をアドレス指定するために使用され得る。図11は、RISC-V APの例示的なアドレスマッピングを示している。
第4のイベントにおいて、ライトバック情報がパイプラインレジスタのセットによってパイプライン化される。
第4の段階508において、2つのイベントが発生し得る。第1のイベントにおいて、透過的なFIFO250の第1のセットは、命令および/またはデータのためのメタデータタグを受信する。透過的なFIFO250の第1のセットは、TMT236およびタグルックアップブロック248のうちの1つからタグマッピング情報を受信することと、タグマッピング情報を透過的なFIFO250の第1のセットに提供することとを行うように構成された1つまたは複数の論理ゲート252に結合され得る。たとえば、1つまたは複数の論理ゲート252は、TMT236およびタグルックアップテーブル250に結合され、TMT236およびタグルックアップテーブル250のうちのアクティブな1つによって提供される情報を出力するように構成された論理ORゲートを含み得る。透過的なFIFO250の第1のセットは、透過的なFIFO250の第1のセットが書き込まれると、タグマッピング情報を後続の段階に出力する。
第2のイベントにおいて、演算グループ/ケアLUT238からのオペランドグループおよびケアビット情報を含むISAデコーダ240の出力は、いったん書き込まれるとデコード情報が後続の段階に出力する第2の透過的なFIFO254に記憶される。
第5の段階510において、対応するケアビットを分析することによって、現在の命令に命令タグおよび/またはメタデータタグが必要かどうかを決定するために、第2の透過的なFIFO254(S4 FIFO)のヘッドが分析される。第2の透過的なFIFO254は、現在の命令タグおよびメタデータタグにケアマスキング情報を提供するように構成され、ケアビットに対応するレジスタファイル(RF)タグメモリからレジスタソース(RS)タグ(たとえば、RS1/2/3)をフェッチするためのアドレスを提供するように構成される。必要なすべての入力が利用可能になると、透過的なFIFO250の第1のセットと第2の透過的なFIFOの254がポップされる。以前の宛先アドレスが追跡され、データハザード(すなわち、データ依存イベント)を説明するために停止が実装され得る。
S4 FIFO254出力によって要求されると示される命令タグおよび/またはデータタグのすべての利用可能性に応じて、ケアビットマスキングが命令タグおよび/またはデータタグに適用され得、結果のタグが命令タグレジスタ(ITAG REG)およびデータタグレジスタ(DTAG REG)にそれぞれ記憶される。加えて、または代替として、S4 FIFOからのケアビットに基づいて、オペランドタグは、S4 FIFO254によってオペランドTAGレジスタファイルまたはRAMに提供されるアドレスによって調べられ得る。プログラムカウンタタグ(PCTAG REG)レジスタは、プログラムカウンタタグ値の出力を後続の状態に提供し得る。さらに、S4 FIFO254の内容は、命令タグレジスタの出力と同期するためにパイプラインレジスタによって登録され得る。
第6の段階の512において、3つのイベントが発生し得る。第1のイベントにおいて、RS1/2/3、メモリ、PC、CIタグ、およびISAデコード論理によってマスクされていない任意の他の命令ビットにケアマスキングが適用され得る。ルールキー(MVEC)を形成するために、タグ、演算グループ、LSB、および命令ビットが連結され得る。ルールキーは、ルールキャッシュウェイRAM用のアドレスを生成するために、(たとえば、直交ランダム化ハッシュ関数によって)ハッシュされ得る。第2のイベントにおいて、ルールキャッシュ216を読み取るために、ルールが使用され得る。
第7の段階514において、4つのイベントが発生し得る。第1のイベントにおいて、各ルールキャッシュウェイの出力がルールキーMVECと比較される。一致が見つからない場合、所望のルールを提供するために、割込み信号IRQがPEX210にアサートされる。たとえば、PEX210はL2ルールキャッシュとして機能してもよく、完全なミスハンドラシーケンスを実行してもよい。TPU208は、演算を再開するためにSFR.WR_RESUME信号を待つ。
第2のイベントにおいて、指定された結果のPCタグが現在のPCタグと比較される。変更が行われている場合、現在の命令を無効にするために信号が前の段階に送信され、第4の段階508は、指定されたポイントの後の命令へのFIFOポインタをアンワインドする。第3のイベントにおいて、任意の指定された宛先タグは、レジスタファイルタグメモリおよび/またはMTIQ212に書き込まれる。たとえば、宛先タグは、タグFIFO220に書き込まれ得る。第4のイベントにおいて、命令のライトバック値は、以前に変換されたアドレスに基づいて、パイプラインレジスタ(たとえば、パイプラインレジスタ246と同様のパイプラインレジスタ)からシャドウレジスタ217に書き込まれる。データフロー図500は、第7の段階514の完了後に終了する。
次に、TMT236、演算出力/ケアLUT238に関連して実行され得る、簡略化されたISAデコード演算をより詳細に説明する。図6は、一実施形態による構成可能な命令デコードテーブルのブロック図600を示している。ブロック図600は、一次テーブル602、二次テーブル604、一次論理606、二次論理608、マルチプレクサ610、デマルチプレクサ612、および複数のアドレスルックアップテーブル614を含む。
一次論理606は、命令を受信するように構成された第1の入力、命令マスクを受信するための第2の入力、および一次テーブル602に演算コードを提供するように構成された出力を含む。二次論理608は、複数の二次テーブル604の二次テーブルごとに、命令を受信するように構成された第1の入力と、サブ命令マスクを受信するための第2の入力と、複数の二次テーブル604のそれぞれの二次テーブルにサブ命令を提供するように構成された出力とを含む。
一次テーブル602は、一次論理606から演算コードを受信するための入力と、マルチプレクサ610に入力選択信号を提供するための第1の出力と、抽出された命令情報をマルチプレクサ610に提供するための第2の出力とを含む。二次テーブル604はそれぞれ、二次論理608のそれぞれの二次論理からサブ命令を受信するための入力と、抽出されたサブ命令情報をマルチプレクサ610に提供するための出力とを含む。
マルチプレクサ610は、一次テーブル602および二次テーブル604に結合された複数の入力と、一次テーブル602に結合された入力選択接続と、デマルチプレクサ612に結合された出力とを含む。デマルチプレクサ612は、マルチプレクサ610に結合された入力と、複数のアドレスルックアップテーブル614および出力616に結合された複数の出力とを有する。複数のアドレスルックアップテーブル614はそれぞれ、デマルチプレクサ612に結合された入力と、出力616に結合された出力とを含む。
一次テーブル602および二次テーブル604は、特定のISAに従って構成され得、AP202によって実行された受信した命令から所望の情報を抽出することを容易にし得る。上述のように、AP202は、サポートされているいくつかのISAのうちの1つに従って命令を実行し得る。本明細書で使用される「サポートされているISA」は、受信した命令から所望のISA固有の情報を抽出することを容易にするために、対応するテーブルが存在するISA(たとえば、一次テーブル602または二次テーブル604)を含み得る。
一次テーブル602および二次テーブル604(まとめて「構成可能テーブル」)は、PIPE204によって受信された特定の命令の解釈を容易にするために、特定のISAに従って構成され得る。このようにして、PIPE204は、そのような実施形態において使用され得るAP202の任意の適切で望ましいISAのためのメタデータ処理を実行することに関連して使用され得る。別の言い方をすれば、そのような構成可能テーブルの使用は、AP202に対応するISAの任意の命令セットのメタデータ処理およびポリシ実施のためのサポートを提供する。構成可能なテーブルは、AP202のISAのための特定の命令フォーマットを有するPIPE204によって受信された特定の命令の解釈を容易にするために、特定のISAに従って構成され得る。
たとえば、受信した命令から演算コード(「オペコード」)を形成する特定のビットを抽出するために、構成可能なテーブルが使用され得る。演算コードを形成する特定のビットは通常ISAによって異なるため、構成可能なテーブルは特定のISAに従って構成され、演算コードを形成する命令から特定のビットを抽出することに関連して使用され得る。
同様に、異なるオペランドの命令の適切なビット、ならびに命令から抽出される任意の他の情報を調べて抽出するために、構成可能なテーブルが使用され得る。たとえば、そのような構成可能なテーブルは、ISAおよびその特定の命令フォーマットまたはレイアウトに従って、特定のPIPE入力パラメータの値とともにテーブルをカスタマイズすることによって、AP202の任意のISAで使用するためにPIPE204をカスタマイズ可能にすることとして特徴付けられ得る。
PIPE204は、入力として、命令サイズ情報(「INSTR WIDTH」)、いくつかのサブオペランドマスク(「NLTM SUB MASKS」)、いくつかの場所マスク(「NUM LOC MASKS」)、命令あたりのオペランドの最大数(「NUM_OPS」)、命令あたりのライトバック先の最大数(「NUM DESTS」)、一次演算コードを作成するビットのマスク(「INSTR MASK」)、サブオペランドマスクの配列(「SUB_MASK」)、およびオペランドの配列と宛先場所マスク(「LOC MASK」)を受信し得る。
演算コードを構築するために、一次論理606は、論理ANDゲートとして実装され得る。一次論理606は、入力として、命令、および一次演算コードを作成するビットの命令マスクを受信する。一次論理606は、命令マスクによってマスクされたビットをすべて除去し、演算コードを形成するために残りのビットを連結し、演算コードを出力する。一次テーブル602は、演算コードを受信すると、演算コードをマッピングし、オペランド有効性チェック(「op_valid」)、オペランドタイプ(「op_type」)、オペランドアドレスの場所(「op_addr_loc」)、宛先有効性チェック(「dest_valid」)、宛先タイプ(「dest_type」)、宛先アドレスの場所(「dest_addr loc」)、命令マスク(「instr_mask」)、メモリ有効性チェック(「mem_valid」)、メモリ書込み(「mem_wr」)、およびマルチプレクサ610の入力選択端子に提供する遅延信号(「defer」)を出力する。
並行して、二次論理608は、二次テーブル604をアドレス指定するためのサブ命令を作成するためにオプションで使用され得る。一次テーブル602と同様に、二次テーブル604は、入力情報を受信し、入力情報を出力情報にマッピングし、出力情報をマルチプレクサ610に提供する。
マルチプレクサ610は、一次テーブル602および二次テーブル604のうちの少なくとも1つに対応する情報をマルチプレクサ610に出力するように構成される。一実施形態では、選択されるテーブルは、マルチプレクサ610によって受信される入力選択信号によって決定される。たとえば、テーブル602、604のうちの1つに対応する入力を選択して、マルチプレクサ610の出力に提供するために、一次テーブル602によって出力された遅延信号を利用し得る。マルチプレクサ610は、選択された情報をデマルチプレクサ612に出力し、デマルチプレクサ612は、上述の出力の各々を複数のアドレスルックアップテーブル614または出力616のいずれかに出力する。
いくつかの実施形態では、マルチプレクサ610は、オペランドアドレスの場所および宛先アドレスの場所を複数のアドレスルックアップテーブル614に提供するように構成される。オペランドアドレスの場所と宛先アドレスの場所は、いくつかの可能な命令の場所のどれに必要なオペランドまたは宛先アドレスが含まれるかを示す。オペランドアドレスの場所と宛先アドレスの場所は、特定の場所マスク結果を対応するオペランドまたは宛先アドレスとして選択するために使用される。
たとえば、複数のアドレスルックアップテーブル614の各アドレスルックアップテーブルは、複数の入力および入力選択端子を有するマルチプレクサを含み得る。マルチプレクサの各入力は、異なるオペランドアドレスに結合され得る。入力選択端子は、たとえば、所望のオペランドアドレスを選択するために使用されるオペランドアドレスの場所信号を受信するように構成され得る。マルチプレクサは、所望のオペランドアドレスを出力616に出力する。同様の原理が、たとえば、複数のアドレスルックアップテーブル614に提供される宛先アドレスの場所情報に適用され得る。
上述のように、二次テーブル604は、いくつかの実施形態では省略され得る。たとえば、二次テーブル604は、AP202がサブ命令を含まないISAに従って構成される場合に省略され得る。したがって、サブ命令がない場合、二次テーブル604は不要である可能性がある。構成可能なテーブルの数および内容は、AP202の特定のISAに従ってカスタマイズされ得ることを理解されたい。
次に、TMT236をより詳細に説明する(たとえば、図7Cおよび図7Dを参照)。上述のように、TMT236は、物理的命令およびデータメモリアドレスを対応するタグアドレスに、または直接タグに変換する。いくつかの実施形態では、TMT236は、パラメータ化された数のエントリを備えた完全連想アレイであってもよい。各エントリには、入力アドレスに適用されるマスク(MapMask)、マスクされた入力が比較され得るアドレス(MapAddr)、エントリが有効かどうかを示すためのビット(MapValid)、値フィールドがタグまたはアドレスであるかどうかを示すためのビット(MapImm)、および出力値(MapValue)を含み得る。
TMT236は、いくつかの入力を受信するように構成され得る。たとえば、TMT 236は、命令物理アドレス(「InstrPA」)、データ物理アドレス(「DataPA」)、およびいくつかのSFR値(「SFR_TMT_Entry」、「SFR_TMT_Type」、「SFR_TMT_Addr」、「SFR_TMT_Mask」、「SFR_TMT_Value」、および「SFR_TMT_Write」)を受信し得る。SFR値SFR_TMT_Typeは、命令タグルックアップの有効なビット、データタグルックアップ、オフセットではなくTagMapValueが即時タグ値であることを示すフラグ、マスクされたアドレス入力に適用するためのシフト設定、および領域内のタグのサイズを示すためのフィールドを含み得る。TMT236はまた、SFR値「SFR_TMT_Value」を書き込むことから、入力「SFR_TMT_Write」として受信し得る。
TMT236は、いくつかの出力を提供するように構成され得る。たとえば、TMT236は、命令タグアドレスまたはタグ値(「CI_TMT_Value」)を提供し得る。メモリから命令タグを検索するために命令タグアドレスが提供されていることを示すために、ビット(「CI_TMT_Valid」)がアサートされ得る。FIFO248の第1のセットのITag FIFOに命令タグ値が直接書き込まれることを示すために、ビット(「CI_TMT_Imm」)がアサートされ得る。
TMT236はまた、データタグアドレスまたはタグ値(「Mem_TMT_Value」)を提供し得る。メモリからデータタグを検索するためにデータタグアドレスが提供されていることを示すために、ビット(「Mem_TMT_Valid」)がアサートされ得る。データタグ値がFIFO248の第1のセットのDTag FIFOに直接書き込まれることを示すために、ビット(「Mem_TMT_Imm」)がアサートされ得る。
データタグアドレスが見つからない場合、TMT236は、代わりにデータタグアドレスミス信号(「TMT_d_miss」)を提供し得る。同様に、TMT236は、命令タグアドレスが見つからない場合、命令タグアドレスミス信号(「TMT_i_miss」)を提供し得る。
CI_TMT_ValidまたはMem_TMT_Validがアサートされている場合(すなわち、CI_TMT_ValueまたはMem_TMT_Valueがアドレスとして使用されている場合)、マスクフィールドの逆数は、タグアドレスを作成するために出力値とOR入力されるビット数を示す場合がある。あるいは、CI_TMT_ImmまたはMem_TMT_Immなどの即値タグがアサートされている場合(すなわち、命令タグまたはデータタグが直接書き込まれている場合)、CI_TMT_ValueおよびMem_TMT_Valueフィールドがタグとしてそのまま使用され得る。結果の論理は次の形式になり得る。
Value[n]=TMT_Valid[n]&(InputPA &
TMT_Mask[n])==TMT_Addr[n];
Value[n]=TMT_Imm? TMT_Value[n]:
TMT_Value[n]|
((InputPA&~TMT_Mask[n])>>
TMT_Type.shift[n]),
上式で、nは1から指定されたTMT236エントリの数までの範囲である。Valid[n]ビットが設定された最大番号のエントリのValue[n]が選択され得る。Valid[n]ビットが設定されていない場合、PIPE204は、PEX210にタグ変換テーブルミスの割込みを発行し得、命令タグかデータタグのどちらでミスが発生するかに応じて、PipeStatusレジスタにおいて「TMT_IMiss」および/または「TMT_DMiss」のいずれかをアサートし得る。
最大番号のエントリが選択され、前述のすべての比較が並行して実行される実施形態において、いくつかの利点が達成され得る。たとえば、即値タグは、即値に取って代わるアドレスマップスキームを使用して1つまたは複数のサブ領域を含む、任意のサイズのメモリ領域に対して指定され得る。これは、メモリ内のスパースタグページのメカニズムを提供する。
別の利点として、任意のサイズの領域に即値タグが指定され得、サブ領域のうちの1つまたは複数に追加の即値タグが指定され得る。これは、たとえば、周辺デバイスのサブ領域に追加の制約がある場合の周辺デバイスタグに役立ち得る。さらに別の利点としては、アドレスマッピングがグローバルに指定され得、PIPE204のパフォーマンスを加速し、メモリアクセスパワーを削減する手段として即時タグを使用するメモリの一部の領域がある。
いくつかの実施形態では、TMT236は、単一セットのマップエントリを含むが、2セットの入力および出力でそれらを使用する。第1のセットは、現在の命令物理アドレスが現在の命令タグ物理アドレスを生成するためのものであり得る。第2のセットは、データ物理アドレスがデータタグ物理アドレスを生成するためのものであり得る。
次に、演算グループ/ケアLUT238をより詳細に説明する。いくつかの実施形態では、演算グループ/ケアLUT238は、演算グループ(「OPGRP」)用の10ビットの出力および33個のケアビットを備えた単純な1KエントリRAMであり得、ルールキャッシュ216入力フィールドの各々に1つ、およびルールキャッシュ命令入力に22個である。例示的なケアビットは、図8に示される表に列挙される。
ルールキャッシュ216への対応する入力をマスクするために、図8の表に示されるケアビットの各々が使用され得る。CItagおよびMtagの場合、ケアビットが設定されていない限りメモリフェッチは発生せず、TMT236からの出力は、FIFO248の第1のセットの対応するITag FIFOまたはDTag FIFOに書き込まれない。PIPE204がITagおよび/またはDTag FIFOを待つ必要があるかどうかを決定するために、第2のFIFO254の読取り側にサービスを提供する論理は、CItagおよびMtagケアビットを検査する。
電力を節約することに加えて、これは不必要なメモリシステムアクセスを回避することによってパフォーマンス特性を改善する。残りのケアビットは、ルールキャッシュ216への他の入力をマスクし得る。OpTag RAMルックアップはまた、対応するケアビットがアサートされたときにのみ実行される。ケアビットがアサートされていない場合、ビットの対応する入力フィールドは「1'b1」に設定することによってマスクされ得る(すなわち、ゼロにマスクされない)。1つのマスキングは、マスキングされたフィールドと初期化されていない/デフォルトのフィールドとを区別する手段を提供するという点で有利であり得る。
AP202がRISC-Vコアである実装形態では、たとえば、OPtag RAMのRISC-V固有の構成(整数の場合はデュアルポート、FPの場合はデュアルとシングル、CSRの場合はシングルを含む)は、PIPE204によってサポートされる一般的な構成の可能性のサブセットである。PIPE204は、適切な数のOPtag RAM、幅、ポート、およびアドレスビットを実装して、様々な異なるISAをサポートするために、インターフェースパラメータ「*RF*」を利用する。
上述のように、PEXコア210は、ルールキャッシュ216からの挿入および排出を管理するポリシソフトウェアを実装し得る。TPU208は、ロックされたものとしてフラグが付けられ、無効のマークを付けられ、インストールカウント値がスタンプされたルールキャッシュ216のラインを示すデータを提供し得る。TPU208は、「WrWayDest」フィールドに、第1の無効なウェイエントリ、またはロックされていない最近インストールされた(Least Recently Installed、LRI)エントリを入力するために、この情報を使用し得る。次いで、PEXコア210は、値をそのまま使用するか、または提供されたロック、無効、およびインストールカウント情報を利用する異なるアルゴリズムで値を異なるウェイ番号に変更することを決定し得る。
AP202、SOCバス206、およびPEXコア210と通信するために、TPU208は、図9A、図9B、図9C、および図9Dに示される表に記載されている通信インターフェースを利用し得る。
いくつかの実施形態では、TPU208が認識することから利益を得ることができるAP202に関するISA固有のパラメータを指定するために、TPU208は、ISA固有のヘッダファイルを利用する。図10に示される表は、AP202の例示的なRISC-V RV32G実装形態を使用して、このISA固有のヘッダファイルにおいて指定されたパラメータとそれらに対応する値を列挙する。図11に示される表は、シャドウメモリ、AP RF/CSR名、およびAP RF/CSRアドレス間の例示的なマッピングを示している。
メタデータタグインターロックキュー(MTIQ)
次に、MTIQ212について詳細に説明する。上述のように、MTIQ212は一般に、AP202から演算出力を受信するように構成され、また、TPU208からの対応するメタデータタグを待ち、次いで演算出力および対応するメタデータタグのペアを出力するように構成される。いくつかの実施形態では、MTIQ212は、以下の説明に記載されているいくつかの仮定に従って構成され得る。
第1に、L1データキャッシュがある場合、キャッシュは、FIFO214内のPIPE204入力キューにおいて見られるように、AP202の命令順序で各値を書き込むライトスルーキャッシュである。
第2に、AP202またはL1データキャッシュからの演算出力は各命令に対応する。別の言い方をすると、一連のバイト記憶命令は、MTIQ212層への一連のバイト書込みを生成する。それらは、AP202またはL1データキャッシュによってワード書込みにキューイングされるのではなく、MTIQ212によって書き込まれる。
第3に、L1データキャッシュが存在する実施形態では、キャッシュがライトスルーであるため、キャッシュラインが被害を受けた場合、書込みは発生しない。
第4に、PIPE204は、それがメモリ書込みに対応するので、AP202と同じ順序で命令を処理する。
第5に、キャッシュ可能な書込みとキャッシュできない書込みの両方が、書込みを作成する命令と同じシーケンスでMTIQ212に流れる。
いくつかの実施形態では、演算出力FIFO218は、入力FIFO214の深さに等しい深さを有する。しかしながら、他の実施形態では、演算出力FIFO218は、バックツーバックメモリ書込みが低い可能性を利用するために、より小さい深さを有し得る。
TPU208がタグFIFO220にタグを書き込むと、MTIQ212は、キューの最上部で待機しているデータをポップし、演算出力とメタデータタグの両方をアトミックな方法でメインメモリに書き込む。いくつかの実施形態では、演算出力およびメタデータタグは、ペアにされたままであるべきである。しかしながら、いくつかの実施形態では、演算出力の前または後のいずれかにタグを書き込むことは不十分な場合がある。たとえば、タグによって管理されているデータは、タグで示されているように非秘密から秘密に変更する場合がある。タグが第1に書き込まれる場合、秘密データが書き込まれる前にアドレスに秘密のマークが付けられるため、保護タグなしに秘密データが書き込まれないことが保証される。したがって、そのようなシナリオでは第1にタグを書き込むことが有利である。
しかしながら、秘密データのあるアドレスが非秘密にされる例を考慮する。タグをより制限の少ないタグに変更する前にデータを変更することが有利な場合があり、それによって、データの後にタグを書き込むことが有利な場合があることを示唆している。したがって、そのようなシナリオでは第2にタグを書き込むことが有利である。
MTIQ212は、どのケースが発生し得るかを事前に知ることができないので、静的な「データ、次いでタグ(data-then-tag)」または「タグ、次いでデータ(tag-then-data)」スキームを適用することは効果的でない場合がある。したがって、一実施形態では、3つの書込みが実行される。第1の書込みは、タグアドレスを、書込みトランザクションが進行中であることを常に示す所定の定数値に変更する。第2の書込みは、新しいデータを書き込む。第3の書込みは、新しいデータに関連付けられる新しいタグを書き込む。第1の書込み後にこのシーケンスが中断された場合、ポリシソフトウェアは、問題のデータワードの中断を示す所定の定数値のタグを確認し、適切なアクションを取り得る。
上述のように、TPU208は、ストアコマンドのためにTMT236からの即時タグを利用し得る。即時タグが使用されている場合、タグ更新を送信するタグアドレスはない。したがって、メモリタグ書込みは、代わりに特別なアドレスに送信され得る。たとえば、特別なアドレスはすべて1を含み得る。MTIQ212は、保留中のデータ書込みが許可されていることを示すために、この特別なアドレスを解釈し得、MTIQ212は、タグ書込みなしでデータを書き込むことができる。
いくつかの実施形態では、MTIQ212は、メモリコヒーレンシ違反が発生する可能性がある時間枠を導入する。時間枠は、タグを待つために、ストアワード命令がデータを演算出力FIFO218に書き込むシナリオにおいて開くことができる。しかしながら、MTIQ212がワードをメインメモリに書き出す前に、ロード命令は、保留中のワードストアと同じアドレスを読み取る。
言い換えれば、ロード命令は「古い」情報を読み取ろうとする。したがって、ロード命令は、MTIQ212において依然として保留中の「新鮮な」値の代わりに、メモリから以前の古いデータを読み取る。これを防止するために、いくつかの実施形態では、読取り要求は、MTIQ212を通って流れ、MTIQ212は、演算出力FIFO218において保留中のアドレスに一致する読取りを停止する。
MTIQ212は、図12A、図12B、および図12Cに示される表に列挙された、AP202、PIPE204、およびAXIファブリックを備えた通信情報を利用し得る。
上述のように、PEX210は、セキュアブート演算を実行するように構成され得る。PEX210は、フラッシュメモリからイメージを読み取ることと、やはりブートROMに記憶されている多数の公開キーの1つと組み合わせてイメージを認証および復号化することと、アプリケーションをメインメモリに書き込むことと、次いでAP202がブートプロセスを続行することを可能にすることを行うことができるコードを含むブートROMを含み得る。
たとえば、セキュアブートプロセスはPEX210において開始し得る。リセット時、PEX210がPIPE SFRを介してAP202リセットを解放するまで、AP202はリセット状態を維持し得る。PEX210は、通常はオンチップROM内のそのリセットベクトルにおいて実行を開始し得る。PEX210は、ポリシソフトウェアを独自のメモリスペースにブートすることと、各イニシエータがアクセスできるメモリ領域を定義するためにメモリファブリック保護構成レジスタを構成することと、ポリシデータを保持するためにそれ自体のメモリ領域を保護することと、そのポリシデータセグメントを初期化することと、AP202のブートローダをフラッシュからメインメモリのPEXコア210が選択したアドレスにおいてコピーすることと、ルールのセットをPIPE204にオプションでインストールすることと、最後にAP202をリセットから解放することとを行い得る。そのような時点で、AP202は、フラッシュメモリからOSおよびアプリケーションにロードするために、メインメモリからブートローダの実行を開始し得る。したがって、AP202によって実行されるまさに第1の命令から、PIPE204は、実行された各命令をポリシルールに対してチェックしている可能性がある。
PEX210は、いくつかのタイプのCPUコアのうちの1つに従って実装され得る。たとえば、PEX210はRISC-V RV32Iコアとして実装され得る。同様に、AP202はまた、RISC-V RV32Iコアとして実装され得る。PEXコア210およびAP202の実装形態の選択は、コンピューティングシステム200の演算に悪影響を与えることなしに、設計の好みに応じて変化し得る。
このように、少なくとも1つの実施形態のいくつかの態様を説明してきたが、様々な変更、修正、および改善が当業者には容易に思い浮かぶであろうことを理解されたい。そのような変更、修正、および改善は、本開示の範囲内であることが意図されている。したがって、前述の説明および図面は例としてのみであり、本開示の範囲は、添付の特許請求の範囲の適切な構成およびそれらの均等物から決定されるべきである。
本明細書で説明される1つまたは複数の実施形態は、ソフトウェアおよび/またはハードウェアの多くの異なる形態において実装され得ることが明らかであろう。本明細書で説明される実施形態を実装するために使用されるソフトウェアコードおよび/または専用ハードウェア(たとえば、特定用途向け集積回路、ASIC、および/またはフィールドプログラマブルゲートアレイ、FPGA)は、本開示の実施形態を限定しない。したがって、特定のソフトウェアコードおよび/または専用ハードウェアを参照せずに実施形態の動作および挙動が説明される範囲で、本明細書の説明に基づいて実施形態を実装するソフトウェアおよび/またはハードウェアを設計できることが理解されるべきである。
さらに、本明細書で説明される例示的な実施形態の特定の実施形態は、1つまたは複数の機能を実行する論理として実装され得る。この論理は、ハードウェアベース、ソフトウェアベース、またはハードウェアとソフトウェアの組合せに基づき得る。論理の一部またはすべては、1つまたは複数の有形の非一時的なコンピュータ可読記憶媒体に記憶され得、コントローラまたはプロセッサによって実行され得るコンピュータ実行可能命令を含み得る。コンピュータ実行可能命令は、本開示の1つまたは複数の実施形態を実装する命令を含み得る。有形の非一時的なコンピュータ可読記憶媒体は、揮発性または不揮発性であってもよく、たとえば、フラッシュメモリ、ダイナミックメモリ、リムーバブルディスク、および非リムーバブルディスクを含んでもよい。
例示的な実施形態を特に示し、説明したが、添付の特許請求の範囲に含まれる実施形態の範囲から逸脱することなしに、形態および詳細に様々な変更を加えることができることが当業者には理解されよう。
100 コンピュータ処理システム
100 コンピューティングシステム
102 アプリケーションプロセッサ(AP)
104 プロセッサインターロック(PIPE)
106 システムオンチップ(SOC)バス
108 タグ処理ユニット(TPU)
110 ポリシ実行プロセッサ(PEX)
112 メタデータタグインターロックキュー(MTIQ)
200 コンピューティングシステム
202 AP
204 PIPE
206 SOCバス
208 TPU
210 PEX
210 PEXコア
212 MTIQ
214 入力先入れ先出しコンポーネント
216 ルールキャッシュ
217 シャドウレジスタ
218 演算出力FIFO
220 タグFIFO
222 命令
224 演算出力
226 命令
228 タグ出力
228 メタデータタグ
230 割込み
232 リセットベクトル
234 ハードウェアロールバック信号
236 タグマップテーブル(TMT)
238 演算グループ/ケアルックアップテーブル(LUT)
240 ISAデコーダ
242 特殊機能レジスタ(SFR)
244 パイプラインレジスタ
246 ライトバックパイプラインレジスタ
248 タグルックアップブロック
250 命令タグFIFO
250 データタグFIFO
252 論理ゲート
254 第2の透過的なFIFO
300 プロセス
500 データフロー図
502 第1の段階
504 第2の段階
506 第3の段階
508 第4の段階
510 第5の段階
512 第6の段階
514 第7の段階
600 ブロック図
602 一次テーブル
604 二次テーブル
606 一次論理
608 二次論理
610 マルチプレクサ
612 デマルチプレクサ
614 アドレスルックアップテーブル
616 出力

Claims (20)

  1. 処理システムであって、
    (a)ホスト処理ドメインであって、
    (i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、少なくとも1つの命令を受信することと、
    (i)ホストプロセッサによって実装される命令セットアーキテクチャに従って復号化されていない少なくとも1つの命令と、(ii)前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行する前記ホストプロセッサによって生成される演算出力情報を含む命令情報のうちの1つをメタデータ処理ドメインに提供することと
    を行うように構成されたホストプロセッサを備える、ホスト処理ドメインと、
    (b)前記メタデータ処理ドメインであって、
    (i)前記ホスト処理ドメインに応答して、演算出力情報を取得することと、
    前記演算出力情報をキューに入れることと
    を行うように構成された書込みインターロックと、
    (ii)前記ホスト処理ドメインから前記少なくとも1つの命令または前記命令情報を受信することと、
    前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために、復号化された前記少なくとも1つの命令または前記命令情報を使用することと、
    実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定することと、
    前記命令が許可されるという決定に応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませることと
    を行うように構成されたタグ処理ユニットと
    を備える、前記メタデータ処理ドメインと
    を備える、処理システム。
  2. 前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備える、請求項1に記載の処理システム。
  3. 前記命令が許可されるという前記決定が、
    前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶すると決定すること
    を含む、請求項2に記載の処理システム。
  4. 前記タグ処理ユニットが、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するように構成される、請求項3に記載の処理システム。
  5. 前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されるという前記決定が、
    前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないと決定することと、
    前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供することと、
    前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信することと
    を含み、
    前記ポリシ実行プロセッサが、
    前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信することと、
    前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行することと、
    前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールすることと
    を行うように構成される、請求項2に記載の処理システム。
  6. 前記ポリシ実行プロセッサが、セキュアブート演算を実行するように構成され、前記ポリシ実行プロセッサが、1つまたは複数の公開鍵を記憶することと、(i)外部メモリデバイスから画像を読み取ることと、前記1つまたは複数の公開鍵を使用して前記画像を認証および復号化することと、前記ホストプロセッサが、認証および復号化が成功したときにブートプロセスを続行することを可能にすることとを行うことができるコードを記憶することとを行うブートROMを備える、請求項5に記載の処理システム。
  7. 前記セキュアブート演算が、
    リセット時に、前記ホストプロセッサがリセット状態に保持されたままであること
    を含み、
    前記ポリシ実行プロセッサが、
    (i)そのリセットベクタにおいて実行を開始することと、
    (ii)ポリシソフトウェアを独自のメモリスペースにブートすることと、
    (iii)各イニシエータがアクセスできるメモリ領域を定義し、ポリシデータセグメントを保持するメモリ領域を保護するために、1つまたは複数のメモリファブリック保護構成レジスタを構成することと、
    (iv)前記ポリシデータセグメントを初期化することと、
    (v)前記ホストプロセッサのブートローダを前記外部メモリデバイスからメインメモリにコピーすることと、
    (vii)前記ホストプロセッサを前記リセット状態から解放することと
    を行う、請求項6に記載の処理システム。
  8. 前記ホストプロセッサは、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するようにさらに構成され、
    前記メタデータ処理ドメインが、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するようにさらに構成され、
    前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットが、
    前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信することと、
    前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用することと、
    実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2の入力メタデータタグに従って、前記第2の命令が許可されるかどうかを決定することと、
    前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信することと
    を行うようにさらに構成される、請求項1に記載の処理システム。
  9. 前記ホストプロセッサが、前記1つまたは複数の入力メタデータタグにアクセスできない、請求項1に記載の処理システム。
  10. 前記ホストプロセッサは、アプリケーションプロセッサであり、
    (a)アプリケーション処理ドメインにおいて、前記アプリケーションプロセッサは、
    第1の命令セットアーキテクチャを実装することとであって、前記受信された少なくとも1つの命令が、前記第1の命令セットアーキテクチャに従ってフォーマットされる、ことと
    前記メタデータ処理ドメインに、前記受信された少なくとも1つの命令を命令ストリームにおいて提供することと
    を行うように構成され、
    (b)前記メタデータ処理ドメインにおいて、前記タグ処理ユニットはさらに少なくとも1つのデコードテーブルを備え、前記タグ処理ユニットが、前記受信された少なくとも1つの命令から前記オペランド情報および前記演算情報を抽出するように構成される、請求項1に記載の処理システム。
  11. 前記タグ処理ユニットが、前記受信された少なくとも1つの命令に基づいて、1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報を決定するように構成された少なくとも1つのルックアップテーブルを備える、請求項10に記載の処理システム。
  12. 前記タグ処理ユニットが、前記タグ処理ユニットが停止したときに前記アプリケーションプロセッサからの前記命令を記憶することと、前記命令ストリームが停止したときに前記タグ処理ユニットによって使用するための記憶された命令を提供することとを行うように構成されたバッファ付きインターフェースをさらに備える、請求項10に記載の処理システム。
  13. 前記タグ処理ユニットが、物理命令アドレスおよびデータメモリページアドレスの一方または両方を、(i)対応する関連タグアドレス、および(ii)入力メタデータタグ一方または両方に変換するように構成されたタグマップテーブル(TMT)をさらに備える、請求項10に記載の処理システム。
  14. 前記TMTが、特定のサイズのメモリ領域に対して指定された即値タグに対応するように構成され、前記特定のサイズが、メモリ領域サイズの範囲から選択される、請求項13に記載の処理システム。
  15. 前記メタデータ処理ドメインが、
    (i)タグアドレスを書込みトランザクションが進行中であることを示す所定の定数値に変更するために、第1の書込みを実行することと、
    (ii)新しいデータを書き込むために第2の書込みを実行することと、
    (iii)前記新しいデータに関連付けられる新しいタグを書き込むために第3の書込みを実行することと
    を行うように構成されたメタデータタグインターロックキューをさらに備える、請求項10に記載の処理システム。
  16. プログラム命令を処理するコンピュータベースの方法であって、
    (a) ホスト処理ドメインにおいて、アプリケーションプロセッサによって、
    (i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、前記命令の各々を受信するステップと、
    (i)復号化されていない受信された命令と、(ii)前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行する前記アプリケーションプロセッサによって生成される演算出力情報を含む命令情報のうちの1つをメタデータ処理ドメインに提供するステップと
    (b)前記メタデータ処理ドメインにおいて、
    書込みインターロックによって、
    前記ホスト処理ドメインに応答して、演算出力情報を取得するステップと、
    前記演算出力情報をキューに入れるステップと、
    タグ処理ユニットによって、
    前記ホスト処理ドメインから前記復号化されていない命令または前記命令情報を受信するステップと、
    前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために前記復号化されている命令または前記命令情報を使用するステップと、
    実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定するステップと、
    前記命令が許可されると決定するステップに応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませるステップと
    を含む、方法。
  17. 前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備え、前記命令が許可されると決定するステップが、
    前記ルールキャッシュが、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを記憶すると決定するステップ
    を含む、請求項16に記載の方法。
  18. 前記タグ処理ユニットによって、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するステップをさらに含む、請求項17に記載の方法。
  19. 前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されると決定するステップが、
    前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないと決定するステップと、
    前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供するステップと、
    前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信するステップと
    を含み、
    前記ポリシ実行プロセッサによって、
    (i)前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信するステップと、
    前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行するステップと、
    前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールするステップと
    をさらに含む、請求項16に記載の方法。
  20. ホストプロセッサによって、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するステップと、
    前記メタデータ処理ドメインによって、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するステップと
    をさらに含み、
    前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットによって、
    前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信するステップと、
    前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用するステップと、
    実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2の入力メタデータタグに従って、前記第2の命令が許可されるかどうかを決定するステップと、
    前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信するステップと
    をさらに含む、請求項16に記載の方法。
JP2020542139A 2018-02-02 2019-02-01 ポリシ実行処理のためのシステムおよび方法 Active JP7039716B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862625634P 2018-02-02 2018-02-02
US62/625,634 2018-02-02
PCT/US2019/016242 WO2019152772A1 (en) 2018-02-02 2019-02-01 Systems and methods for policy execution processing

Publications (2)

Publication Number Publication Date
JP2021512426A JP2021512426A (ja) 2021-05-13
JP7039716B2 true JP7039716B2 (ja) 2022-03-22

Family

ID=65444356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020542139A Active JP7039716B2 (ja) 2018-02-02 2019-02-01 ポリシ実行処理のためのシステムおよび方法

Country Status (8)

Country Link
US (3) US11150910B2 (ja)
EP (1) EP3746925A1 (ja)
JP (1) JP7039716B2 (ja)
KR (1) KR102453740B1 (ja)
CN (1) CN112041837A (ja)
SG (1) SG11202007272QA (ja)
TW (1) TWI794405B (ja)
WO (1) WO2019152772A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
CN107864139B (zh) * 2017-11-09 2020-05-12 北京科技大学 一种基于动态规则的密码学属性基访问控制方法与***
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11232208B2 (en) 2019-02-26 2022-01-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for adaptive metadata architecture
US10972567B2 (en) * 2019-04-04 2021-04-06 International Business Machines Corporation Multi-dimensional tagging namespace for cloud resource management
US20220269645A1 (en) 2019-08-13 2022-08-25 Neuroblade Ltd. Memory mat as a register file
KR20210026233A (ko) * 2019-08-29 2021-03-10 삼성전자주식회사 디바이스 리소스에 대한 접근을 제어하기 위한 전자 장치 및 그의 동작 방법
WO2021076871A1 (en) * 2019-10-18 2021-04-22 Dover Microsystems, Inc. Systems and methods for updating metadata
US11360782B2 (en) * 2020-01-31 2022-06-14 Hewlett Packard Enterprise Development Lp Processors to configure subsystems while other processors are held in reset
US12019736B2 (en) 2020-02-27 2024-06-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for main memory tag compression
EP4002170A1 (en) * 2020-11-18 2022-05-25 Thales DIS France SA Execution protection using data colouring
DE102021126122A1 (de) 2021-10-08 2023-04-13 Infineon Technologies Ag Fehlerdiagnoseschaltung und Verfahren zum Betreiben eines Gerätes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160140363A1 (en) 2014-11-19 2016-05-19 Bae Systems Information And Electronic Systems Integration Inc. Programmable unit for metadata processing
WO2017106101A2 (en) 2015-12-17 2017-06-22 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US20170329961A1 (en) 2014-10-20 2017-11-16 Intel Corporation Attack Protection For Valid Gadget Control Transfers

Family Cites Families (264)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201056A (en) 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5778423A (en) 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
DE69130138T2 (de) 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5287467A (en) 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US7095783B1 (en) 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
JPH06332664A (ja) 1993-03-23 1994-12-02 Toshiba Corp 表示制御システム
US5485455A (en) 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5664223A (en) 1994-04-05 1997-09-02 International Business Machines Corporation System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5848433A (en) 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5664197A (en) 1995-04-21 1997-09-02 Intel Corporation Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
JPH0969047A (ja) 1995-09-01 1997-03-11 Sony Corp Risc型マイクロプロセッサおよび情報処理装置
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US6058466A (en) * 1997-06-24 2000-05-02 Sun Microsystems, Inc. System for allocation of execution resources amongst multiple executing processes
US6240502B1 (en) * 1997-06-25 2001-05-29 Sun Microsystems, Inc. Apparatus for dynamically reconfiguring a processor
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US5941981A (en) 1997-11-03 1999-08-24 Advanced Micro Devices, Inc. System for using a data history table to select among multiple data prefetch algorithms
US6321297B1 (en) 1998-01-05 2001-11-20 Intel Corporation Avoiding tag compares during writes in multi-level cache hierarchy
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6351784B1 (en) 1998-12-28 2002-02-26 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6324599B1 (en) 1999-01-11 2001-11-27 Oak Technology Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6636523B1 (en) 1999-01-27 2003-10-21 Advanced Micro Devices, Inc. Flow control using rules queue monitoring in a network switching system
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6549903B1 (en) 1999-02-17 2003-04-15 Elbrus International Limited Integrity of tagged data
US6625146B1 (en) 1999-05-28 2003-09-23 Advanced Micro Devices, Inc. Method and apparatus for operating a network switch in a CPU-less environment
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6438673B1 (en) 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US7213247B1 (en) 2000-01-10 2007-05-01 Wind River Systems, Inc. Protection domains for a computer operating system
JP3892205B2 (ja) 2000-04-14 2007-03-14 松下電器産業株式会社 レイアウトコンパクション方法
US6925549B2 (en) 2000-12-21 2005-08-02 International Business Machines Corporation Asynchronous pipeline control interface using tag values to control passing data through successive pipeline stages
US7062638B2 (en) 2000-12-29 2006-06-13 Intel Corporation Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores
US6560690B2 (en) 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache
GB0102515D0 (en) 2001-01-31 2001-03-21 Hewlett Packard Co Network adapter management
GB0102516D0 (en) 2001-01-31 2001-03-21 Hewlett Packard Co Trusted gateway system
GB0102518D0 (en) 2001-01-31 2001-03-21 Hewlett Packard Co Trusted operating system
GB0109722D0 (en) 2001-04-20 2001-06-13 Koninkl Philips Electronics Nv Extendible instruction system
US20030014466A1 (en) 2001-06-29 2003-01-16 Joubert Berger System and method for management of compartments in a trusted operating system
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7599369B2 (en) 2001-09-27 2009-10-06 Broadcom Corporation Apparatus and methods for hardware payload header suppression, expansion, and verification in a DOCSIS network
US20030196108A1 (en) 2002-04-12 2003-10-16 Kung Kenneth C. System and techniques to bind information objects to security labels
US7487264B2 (en) 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
US7631107B2 (en) 2002-06-11 2009-12-08 Pandya Ashish A Runtime adaptable protocol processor
US7254696B2 (en) 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US6976147B1 (en) 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US7403925B2 (en) 2003-03-17 2008-07-22 Intel Corporation Entitlement security and control
US7467414B2 (en) 2003-03-17 2008-12-16 Intel Corporation Entitlement security and control for information system entitlement
US6922740B2 (en) 2003-05-21 2005-07-26 Intel Corporation Apparatus and method of memory access control for bus masters
US20050108518A1 (en) 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US7168063B2 (en) 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
US7437718B2 (en) 2003-09-05 2008-10-14 Microsoft Corporation Reviewing the security of trusted software components
US7580914B2 (en) * 2003-12-24 2009-08-25 Intel Corporation Method and apparatus to improve execution of a stored program
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7526757B2 (en) 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
CA2459004A1 (en) 2004-02-20 2005-08-20 Ibm Canada Limited - Ibm Canada Limitee Method and system to control data acces using security label components
US7340469B1 (en) 2004-04-16 2008-03-04 George Mason Intellectual Properties, Inc. Implementing security policies in software development tools
US7243193B2 (en) 2004-05-27 2007-07-10 Silverbrook Research Pty Ltd Storage of program code in arbitrary locations in memory
US7430650B1 (en) 2004-06-17 2008-09-30 Richard Ross Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters
US7657756B2 (en) 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
JP2006113689A (ja) 2004-10-12 2006-04-27 Fujitsu Ltd バスブリッジ装置およびデータ転送方法
US7688838B1 (en) 2004-10-19 2010-03-30 Broadcom Corporation Efficient handling of work requests in a network interface device
US8332653B2 (en) 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US20060143689A1 (en) 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code
US8732856B2 (en) 2004-12-30 2014-05-20 Oracle International Corporation Cross-domain security for data vault
US7831570B2 (en) 2004-12-30 2010-11-09 Oracle International Corporation Mandatory access control label security
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7962917B2 (en) * 2005-03-10 2011-06-14 Microsoft Corporation System data interfaces, related architectures, print system data interfaces and related print system architectures
CN101546255A (zh) * 2005-04-12 2009-09-30 松下电器产业株式会社 处理器
US7574536B2 (en) 2005-04-22 2009-08-11 Sun Microsystems, Inc. Routing direct memory access requests using doorbell addresses
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US20070006294A1 (en) 2005-06-30 2007-01-04 Hunter G K Secure flow control for a data flow in a computer and data flow in a computer network
JP4519738B2 (ja) 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US8166404B2 (en) 2005-10-04 2012-04-24 Disney Enterprises, Inc. System and/or method for authentication and/or authorization
US8516193B1 (en) 2006-03-30 2013-08-20 Pegasystems Inc. Techniques for content-based caching in a computer system
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7581064B1 (en) 2006-04-24 2009-08-25 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4899616B2 (ja) 2006-04-28 2012-03-21 ソニー株式会社 変調装置および方法、プログラム、並びに記録媒体
US8245199B2 (en) 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US20080052488A1 (en) 2006-05-10 2008-02-28 International Business Machines Corporation Method for a Hash Table Lookup and Processor Cache
US20080016547A1 (en) 2006-07-11 2008-01-17 International Business Machines Corporation System and method for security planning with hard security constraints
US8301870B2 (en) 2006-07-27 2012-10-30 International Business Machines Corporation Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8266702B2 (en) 2006-10-31 2012-09-11 Microsoft Corporation Analyzing access control configurations
US7793166B2 (en) 2006-11-27 2010-09-07 Emc Corporation Methods and systems for recovering meta-data in a cache memory after a corruption event
US8132259B2 (en) 2007-01-04 2012-03-06 International Business Machines Corporation System and method for security planning with soft security constraints
US8677457B2 (en) 2007-02-09 2014-03-18 Marvell World Trade Ltd. Security for codes running in non-trusted domains in a processor core
US7945921B2 (en) 2007-03-01 2011-05-17 Microsoft Corporation Cross application domain late binding to non-local types
US8364910B2 (en) 2007-03-08 2013-01-29 Daniel Shawcross Wilkerson Hard object: hardware protection for software objects
JP5100176B2 (ja) 2007-03-29 2012-12-19 株式会社東芝 マルチプロセッサシステム
US7813342B2 (en) 2007-03-26 2010-10-12 Gadelrab Serag Method and apparatus for writing network packets into computer memory
US7640420B2 (en) 2007-04-02 2009-12-29 Intel Corporation Pre-fetch apparatus
GB2448149B (en) 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US7644044B2 (en) 2007-04-04 2010-01-05 Sony Corporation Systems and methods to distribute content over a network
NO326590B1 (no) 2007-04-16 2009-01-19 Kubekit As Fremgangsmate og anordning for verifikasjon av informasjonstilgang i IKT-system med flere sikkerhetsdimensjoner og sikkerhetsniva.
US8001390B2 (en) 2007-05-09 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode
US8423720B2 (en) 2007-05-10 2013-04-16 International Business Machines Corporation Computer system, method, cache controller and computer program for caching I/O requests
US8561061B2 (en) 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
US7933889B2 (en) 2007-05-15 2011-04-26 Palo Alto Research Center Incorporated Method and system for metadata-driven document management and access control
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US20080301471A1 (en) 2007-05-31 2008-12-04 Marc Demarest Systems and methods in electronic evidence management for creating and maintaining a chain of custody
WO2008157628A1 (en) 2007-06-18 2008-12-24 Synergy Sports Technology, Llc System and method for distributed and parallel video editing, tagging, and indexing
US7975107B2 (en) 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US20090006519A1 (en) 2007-06-29 2009-01-01 Microsoft Corporation Managing a computing environment
US7913172B2 (en) 2007-09-01 2011-03-22 International Business Machines Corporation Fine-grained, label-based, XML access control model
US8131663B1 (en) 2007-10-12 2012-03-06 Bonamy Taylor Apparatus for generating software logic rules by flowchart design
US7921260B2 (en) 2007-10-24 2011-04-05 International Business Machines Corporation Preferred write-mostly data cache replacement policies
US7793049B2 (en) 2007-10-30 2010-09-07 International Business Machines Corporation Mechanism for data cache replacement based on region policies
US20090144388A1 (en) 2007-11-08 2009-06-04 Rna Networks, Inc. Network with distributed shared memory
US8782384B2 (en) 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8880483B2 (en) 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US20090178102A1 (en) 2008-01-04 2009-07-09 Khaled Alghathbar Implementing Security Policies in Software Development Tools
US8306987B2 (en) 2008-04-03 2012-11-06 Ofer Ber System and method for matching search requests and relevant data
GB0811422D0 (en) 2008-06-20 2008-07-30 Symbian Software Ltd Efficient caching
US8196213B2 (en) 2008-07-11 2012-06-05 Microsoft Corporation Verification of un-trusted code for consumption on an insecure device
EP2309285B1 (en) 2008-07-24 2019-08-21 Toshiba Medical Systems Corporation Magnetic resonance imaging apparatus for contrast enhancement of flow images
WO2010019916A1 (en) 2008-08-14 2010-02-18 The Trustees Of Princeton University Hardware trust anchors in sp-enabled processors
US8181005B2 (en) 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
CN101359290A (zh) * 2008-09-11 2009-02-04 中兴通讯股份有限公司 一种基于元数据的定制业务单据的方法及装置
US8332909B2 (en) 2008-12-16 2012-12-11 Microsoft Corporation Automated software restriction policy rule generation
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8190832B2 (en) 2009-01-29 2012-05-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
US8335754B2 (en) 2009-03-06 2012-12-18 Tagged, Inc. Representing a document using a semantic structure
KR20110127636A (ko) * 2009-03-10 2011-11-25 샌디스크 아이엘 엘티디 폐기 가능 파일의 다운로드 관리 방법
US8176282B2 (en) 2009-03-11 2012-05-08 Applied Micro Circuits Corporation Multi-domain management of a cache in a processor system
US20100250729A1 (en) 2009-03-30 2010-09-30 Morris Robert P Method and System For Providing Access To Metadata Of A Network Accessible Resource
US8332350B2 (en) 2009-04-08 2012-12-11 Titus Inc. Method and system for automated security access policy for a document management system
KR101370314B1 (ko) * 2009-06-26 2014-03-05 인텔 코포레이션 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8635415B2 (en) 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
JP2011095852A (ja) 2009-10-27 2011-05-12 Toshiba Corp キャッシュメモリ制御回路
US8923159B2 (en) 2009-11-30 2014-12-30 Bae Systems Plc Processing network traffic
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8627042B2 (en) 2009-12-30 2014-01-07 International Business Machines Corporation Data parallel function call for determining if called routine is data parallel
US20110219424A1 (en) 2010-03-05 2011-09-08 Microsoft Corporation Information protection using zones
WO2011108695A1 (ja) 2010-03-05 2011-09-09 日本電気株式会社 並列データ処理システム、並列データ処理方法及びプログラム
US8954418B2 (en) 2010-05-14 2015-02-10 Sap Se Performing complex operations in a database using a semantic layer
US8271447B1 (en) 2010-06-18 2012-09-18 Emc International Company Mirroring metadata in a continuous data protection environment
US8732697B2 (en) 2010-08-04 2014-05-20 Premkumar Jonnala System, method and apparatus for managing applications on a device
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8819225B2 (en) 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
US9934166B2 (en) 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US20120151184A1 (en) 2010-12-10 2012-06-14 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9792472B1 (en) 2013-03-14 2017-10-17 Impinj, Inc. Tag-handle-based authentication of RFID readers
US8966182B2 (en) 2011-02-08 2015-02-24 International Business Machines Corporation Software and hardware managed dual rule bank cache for use in a pattern matching accelerator
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8875170B1 (en) 2011-02-18 2014-10-28 Isaac S. Daniel Content roaming system and method
US8949270B2 (en) 2011-03-10 2015-02-03 Salesforce.Com, Inc. Methods and systems for processing social media data
US20180107591A1 (en) 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US10114477B2 (en) 2011-07-14 2018-10-30 Samsung Electronics Co., Ltd. Display device and method thereof
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US8683261B2 (en) * 2011-07-20 2014-03-25 International Business Machines Corporation Out of order millicode control operation
CN103765430A (zh) 2011-08-26 2014-04-30 惠普发展公司,有限责任合伙企业 数据泄漏防止***和方法
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
CN102495719B (zh) * 2011-12-15 2014-09-24 中国科学院自动化研究所 一种向量浮点运算装置及方法
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
TWI453608B (zh) * 2012-02-03 2014-09-21 Chunghwa Telecom Co Ltd System and method for managing a large number of multiple data
US8966204B2 (en) 2012-02-29 2015-02-24 Hewlett-Packard Development Company, L.P. Data migration between memory locations
US9208082B1 (en) 2012-03-23 2015-12-08 David R. Cheriton Hardware-supported per-process metadata tags
WO2013147865A1 (en) 2012-03-30 2013-10-03 Intel Corporation A mechanism for saving and retrieving micro-architecture context
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US10474584B2 (en) 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
US8874850B1 (en) 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
JP5832954B2 (ja) 2012-05-18 2015-12-16 日本電信電話株式会社 タグ付与装置及びタグ付与方法
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US8909879B2 (en) 2012-06-11 2014-12-09 International Business Machines Corporation Counter-based entry invalidation for metadata previous write queue
US8826391B2 (en) 2012-07-02 2014-09-02 Freescale Semiconductor, Inc. Virtualized trusted descriptors
US8572410B1 (en) 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
US10305937B2 (en) 2012-08-02 2019-05-28 CellSec, Inc. Dividing a data processing device into separate security domains
US20140047183A1 (en) 2012-08-07 2014-02-13 Dell Products L.P. System and Method for Utilizing a Cache with a Virtual Machine
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US9098417B2 (en) 2012-12-13 2015-08-04 Advanced Micro Devices, Inc. Partitioning caches for sub-entities in computing devices
US9183055B2 (en) 2013-02-07 2015-11-10 Advanced Micro Devices, Inc. Selecting a resource from a set of resources for performing an operation
US9965502B2 (en) 2013-02-27 2018-05-08 Hitachi Vantara Corporation Content class for object storage indexing system
US9165078B2 (en) 2013-03-14 2015-10-20 International Business Machines Corporation Row-based data filtering at a database level
US8959657B2 (en) 2013-03-14 2015-02-17 Appsense Limited Secure data management
US9569612B2 (en) 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9037811B2 (en) 2013-03-15 2015-05-19 International Business Machines Corporation Tagging in memory control unit (MCU)
US9298911B2 (en) 2013-03-15 2016-03-29 Intel Corporation Method, apparatus, system, and computer readable medium for providing apparatus security
KR101501462B1 (ko) 2013-06-10 2015-03-11 이용재 통합 데이터 객체 관리 시스템 및 그 방법
US9734080B2 (en) 2013-08-08 2017-08-15 Nxp Usa, Inc. Cache organization and method
CN105830477A (zh) 2013-08-12 2016-08-03 哥莱菲特软件公司 集成操作***的域管理
US10185584B2 (en) 2013-08-20 2019-01-22 Teleputers, Llc System and method for self-protecting data
US9680738B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9244827B2 (en) 2013-09-25 2016-01-26 Intel Corporation Store address prediction for memory disambiguation in a processing device
EP3049917A1 (en) 2013-09-27 2016-08-03 Hewlett Packard Enterprise Development LP Application control flow models
GB201318723D0 (en) 2013-10-23 2013-12-04 Avecto Ltd Computer device and method for isolating untrusted content
CN103761291A (zh) * 2014-01-16 2014-04-30 中国人民解放军国防科学技术大学 一种基于聚合请求的地理栅格数据并行读写方法
GB2518022B (en) 2014-01-17 2015-09-23 Imagination Tech Ltd Stack saved variable value prediction
US9411747B2 (en) 2014-02-04 2016-08-09 Freescale Semiconductor, Inc. Dynamic subroutine stack protection
US10320676B2 (en) 2014-02-28 2019-06-11 Cisco Technology, Inc. Smarter policy decisions based on metadata in data flows
US9323684B2 (en) 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
US9245123B1 (en) 2014-05-07 2016-01-26 Symantec Corporation Systems and methods for identifying malicious files
JP6287571B2 (ja) 2014-05-20 2018-03-07 富士通株式会社 演算処理装置、情報処理装置、及び、演算処理装置の制御方法
US9489532B2 (en) 2014-05-28 2016-11-08 Siemens Product Lifecycle Management Software Inc. Fast access rights checking of configured structure data
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
TW201600997A (zh) 2014-06-30 2016-01-01 萬國商業機器公司 於一集中式管理環境中動態產生一策略實施點之封包檢視策略的方法、資訊設備及電腦程式產品
US9992298B2 (en) 2014-08-14 2018-06-05 International Business Machines Corporation Relationship-based WAN caching for object stores
US9525606B1 (en) 2014-09-04 2016-12-20 HCA Holdings, Inc. Differential processing of data streams based on protocols
EP2993606A1 (en) 2014-09-05 2016-03-09 Axiomatics AB Provisioning system-level permissions using attribute-based access control policies
US9483250B2 (en) 2014-09-15 2016-11-01 International Business Machines Corporation Systems management based on semantic models and low-level runtime state
US9436847B2 (en) 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
WO2016053282A1 (en) 2014-09-30 2016-04-07 Hewlett Packard Enterprise Development Lp String property labels for static analysis
US9830162B2 (en) 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
US9576147B1 (en) 2015-01-05 2017-02-21 Amazon Technologies, Inc. Security policy application through data tagging
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9736185B1 (en) 2015-04-21 2017-08-15 Infoblox Inc. DNS or network metadata policy for network control
US9846648B2 (en) 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9910611B2 (en) 2015-05-29 2018-03-06 Intel Corporation Access control for memory protection key architecture
US9703956B1 (en) 2015-06-08 2017-07-11 Symantec Corporation Systems and methods for categorizing virtual-machine-aware applications for further analysis
US10469464B2 (en) 2015-06-09 2019-11-05 Intel Corporation Self-configuring key management system for an internet of things network
US10114958B2 (en) 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10073977B2 (en) 2015-07-20 2018-09-11 Intel Corporation Technologies for integrity, anti-replay, and authenticity assurance for I/O data
US9892281B1 (en) 2015-07-28 2018-02-13 HCA Holdings, Inc. Testing using deidentified production data
US11381566B2 (en) 2015-08-12 2022-07-05 Red Hat, Inc. Isolating network resources in a virtualized environment
US10586076B2 (en) 2015-08-24 2020-03-10 Acronis International Gmbh System and method for controlling access to OS resources
US20170083338A1 (en) 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Prefetching associated with predicated load instructions
US9612967B1 (en) 2015-09-25 2017-04-04 Dell Products, L.P. Cache load balancing by reclaimable block migration
US9507598B1 (en) 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
US10685111B2 (en) 2016-10-31 2020-06-16 Crowdstrike, Inc. File-modifying malware detection
US10409603B2 (en) * 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US10896100B2 (en) 2017-03-24 2021-01-19 Commvault Systems, Inc. Buffered virtual machine replication
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
CN109840095A (zh) 2017-11-28 2019-06-04 比亚迪股份有限公司 储能***的启动方法、储能设备及存储介质
US10635810B2 (en) 2018-01-31 2020-04-28 Jungle Disk, L.L.C. Probabilistic anti-encrypting malware protections for cloud-based file systems
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US20210055954A1 (en) 2018-02-02 2021-02-25 Dover Microsystems, Inc. Systems and methods for post cache interlocking
WO2019152795A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for transforming instructions for metadata processing
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US11307854B2 (en) * 2018-02-07 2022-04-19 Intel Corporation Memory write log storage processors, methods, systems, and instructions
US11417109B1 (en) 2018-03-20 2022-08-16 Amazon Technologies, Inc. Network-based vehicle event detection system
US11288385B2 (en) 2018-04-13 2022-03-29 Sophos Limited Chain of custody for enterprise documents
US10776482B2 (en) 2018-05-18 2020-09-15 International Business Machines Corporation Automated virtual machine integrity checks
US10922411B2 (en) 2018-06-20 2021-02-16 Malwarebytes Inc. Intelligent event collection for cloud-based malware detection
US10970396B2 (en) 2018-06-20 2021-04-06 Malwarebytes Inc. Intelligent event collection for rolling back an endpoint state in response to malware
US10424043B1 (en) 2018-07-02 2019-09-24 Intel Corporation Efficiently enqueuing workloads from user mode to hardware across privilege domains
EP3877874A1 (en) * 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11360704B2 (en) 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
WO2020150351A1 (en) * 2019-01-18 2020-07-23 Dover Microsystems, Inc. Systems and methods for metadata classification
US11522905B2 (en) 2019-09-11 2022-12-06 International Business Machines Corporation Malicious virtual machine detection
WO2021076871A1 (en) * 2019-10-18 2021-04-22 Dover Microsystems, Inc. Systems and methods for updating metadata
TW202121217A (zh) * 2019-11-06 2021-06-01 美商多佛微系統公司 用於改進詮釋資料處理效率的系統和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170329961A1 (en) 2014-10-20 2017-11-16 Intel Corporation Attack Protection For Valid Gadget Control Transfers
US20160140363A1 (en) 2014-11-19 2016-05-19 Bae Systems Information And Electronic Systems Integration Inc. Programmable unit for metadata processing
WO2017106101A2 (en) 2015-12-17 2017-06-22 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DHAWAN, Udit et al,Architectural Support for Software-Defined Metadata Processing,ASPOLOS2015:Proceeding of the Twentieth International Conference on Architectural,米国,ACM,2015年05月14日,pp. 487-502
DHAWAN, Udit et al,PUMP: A Programmable Unit for Metadata Processing,HASP’14,米国,ACM,2014年06月15日,pp.1-8
KANNAN, Hari et al,Decoupling Dynamic Information Flow Tracking with a Dedicated Coprocessor,2009 IEEE/IFIP International Conference on Dependable Systems & Networks,米国,IEEE,2009年07月,pp. 105-114
SONG, Wei et al,The 4th lowRISC Release: Tagged Memory and Minion Cores,[online],英国,University of Cambridge,2017年05月10日,pp.1-20,[検索日 2021年8月27日], インターネット<https://riscv.org/wp-content/uploads/2017/05/Wed0930riscv201705_ppt.pdf>

Also Published As

Publication number Publication date
US11150910B2 (en) 2021-10-19
US20190243655A1 (en) 2019-08-08
EP3746925A1 (en) 2020-12-09
US11709680B2 (en) 2023-07-25
SG11202007272QA (en) 2020-08-28
KR20200118094A (ko) 2020-10-14
WO2019152772A1 (en) 2019-08-08
TWI794405B (zh) 2023-03-01
KR102453740B1 (ko) 2022-10-12
CN112041837A (zh) 2020-12-04
US20210406028A1 (en) 2021-12-30
US20230367603A1 (en) 2023-11-16
JP2021512426A (ja) 2021-05-13
TW201941048A (zh) 2019-10-16

Similar Documents

Publication Publication Date Title
JP7039716B2 (ja) ポリシ実行処理のためのシステムおよび方法
JP6206881B2 (ja) 多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法、コンピュータ・システム、およびコンピュータ・プログラム
US12001842B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
CN110659244A (zh) 内联编码能力
EP3528130B1 (en) Mechanism to prevent software side channels
US10255199B1 (en) Evicting clean secure pages without encryption
CN112149114A (zh) 利用用于指示数据类型的隐藏内联元数据的存储器保护
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
US10678711B2 (en) Key-based data security management
CN114692166A (zh) 推测漏洞的动态检测
JP2021157766A (ja) シャドウスタックを効率的に管理および処理するための装置および方法
CN114692165A (zh) 加固执行硬件防范推测漏洞
CN114692164A (zh) 加固寄存器防范推测漏洞

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210906

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220309

R150 Certificate of patent or registration of utility model

Ref document number: 7039716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150