(57)【要約】  命令を処理するシステムおよび方法は、アプリケーション処理ドメイン(APD)およびメタデータ処理ドメイン(MTD)を備え得る。APDは、命令を実行し、関連情報をMTDに提供するアプリケーションプロセッサを備え得る。MTDは、MTDによって実施されるポリシベースのルールのキャッシュを有するタグ処理ユニット(TPU)を備え得る。TPUは、実施されているポリシ、ならびに命令に関連付けられるメタデータタグおよびオペランドに基づいて、命令の実行が許可されている(すなわち、有効である)と決定し得る。TPUは、命令が有効である場合、メタデータタグをキューに書き込み得る。キューは、(i)アプリケーション処理ドメインから演算出力情報を受信することと、(ii)TPUからメタデータタグを受信することと、(iii)メタデータタグを受信することに応答して、演算出力情報およびメタデータタグを示す結果として得られる情報を出力することと、(iv)結果として得られる情報をメモリに書き込むことを許可することとを行い得る。
2021512426.tif 000002
【特許請求の範囲】
【請求項１】
処理システムであって、
(a)ホスト処理ドメインであって、
(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、少なくとも1つの命令を受信することと、
演算出力情報を生成するために前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行することと、
命令情報および前記演算出力情報をメタデータ処理ドメインに提供することと
を行うように構成されたホストプロセッサを備える、ホスト処理ドメインと、
(b)前記メタデータ処理ドメインであって、
(i)前記ホスト処理ドメインから前記演算出力情報を受信することと、
前記演算出力情報をキューに入れることと
を行うように構成された書込みインターロックと、
(ii)前記ホスト処理ドメインから前記命令情報を受信することと、
前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために前記命令情報を使用することと、
実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定することと、
前記命令が許可されるという決定に応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませることと
を行うように構成されたタグ処理ユニットと
を備える、前記メタデータ処理ドメインと
を備える、処理システム。
【請求項２】
前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備える、請求項1に記載の処理システム。
【請求項３】
前記命令が許可されるという前記決定が、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶すると決定すること
を含む、請求項2に記載の処理システム。
【請求項４】
前記タグ処理ユニットが、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するように構成される、請求項3に記載の処理システム。
【請求項５】
前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されるという前記決定が、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないと決定することと、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供することと、
前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信することと
を含む、請求項2に記載の処理システム。
【請求項６】
前記ポリシ実行プロセッサが、
前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信することと、
前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行することと、
前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールするようことと
を行うように構成される、請求項5に記載の処理システム。
【請求項７】
前記ポリシ実行プロセッサが、セキュアブート演算を実行するように構成され、前記ポリシ実行プロセッサが、1つまたは複数の公開鍵を記憶することと、(i)外部メモリデバイスから画像を読み取ることと、前記1つまたは複数の公開鍵を使用して前記画像を認証および復号化することと、前記ホストプロセッサが、認証および復号化が成功したときにブートプロセスを続行することを可能にすることとを行うことができるコードを記憶することとを行うブートROMを備える、請求項5に記載の処理システム。
【請求項８】
前記ブート演算が、
リセット時に、前記ホストプロセッサがリセット状態に保持されたままであること
を含み、
前記ポリシ実行プロセッサが、
(i)そのリセットベクタにおいて実行を開始することと、
(ii)ポリシソフトウェアを独自のメモリスペースにブートすることと、
(iii)各イニシエータがアクセスできるメモリ領域を定義し、ポリシデータセグメントを保持するメモリ領域を保護するために、1つまたは複数のメモリファブリック保護構成レジスタを構成することと、
(iv)前記ポリシデータセグメントを初期化することと、
(v)前記ホストプロセッサのブートローダを前記外部メモリデバイスからメインメモリにコピーすることと、
(vii)前記ホストプロセッサを前記リセット状態から解放することと
を行う、請求項7に記載の処理システム。
【請求項９】
前記ホストプロセッサは、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するようにさらに構成され、
前記メタデータ処理ドメインが、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するようにさらに構成される、請求項1に記載の処理システム。
【請求項１０】
前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットが、
前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信することと、
前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用することと、
実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2のメタデータタグに従って、前記第2の命令が許可されるかどうかを決定することと、
前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信することと
を行うようにさらに構成される、請求項9に記載の処理システム。
【請求項１１】
前記1つまたは複数の入力メタデータタグが、前記ホストプロセッサにアクセスできない、請求項1に記載の処理システム。
【請求項１２】
前記命令情報が、
前記少なくとも1つの命令の命令タイプを示す情報、
前記少なくとも1つの命令がフェッチされるメモリアドレスを示す情報、
前記少なくとも1つの命令によって使用される1つまたは複数のレジスタを示す情報、および
前記少なくとも1つの命令によって参照されるメモリアドレスを示す情報
からなるグループから選択される少なくとも1つの情報を含む、請求項1に記載の処理システム。
【請求項１３】
処理システムであって、
(a)第1の命令セットアーキテクチャを実装することと、
1つまたは複数のオペランドを示すオペランド情報、および前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む命令を受信することであって、前記命令が、前記第1の命令セットアーキテクチャに従ってフォーマットされる、受信することと
メタデータ処理ドメインに、前記命令を命令ストリームにおいて提供することと
を行うように構成されたアプリケーションプロセッサを備えるアプリケーション処理ドメインと、
(b)少なくとも1つのデコードテーブルを備えるタグ処理ユニットを備える前記メタデータ処理ドメインであって、前記タグ処理ユニットが、前記命令から前記オペランド情報および前記演算情報を抽出するように構成される、前記メタデータ処理ドメインと
を備える、処理システム。
【請求項１４】
前記タグ処理ユニットが、前記命令に基づいて、1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報を決定するように構成された少なくとも1つのルックアップテーブルを備える、請求項13に記載の処理システム。
【請求項１５】
前記タグ処理ユニットが、前記少なくとも1つのデコードテーブルに基づいて、前記命令が前記第1の命令セットアーキテクチャに従ってフォーマットされていると決定するようにさらに構成される、請求項13に記載の処理システム。
【請求項１６】
前記命令が前記第1の命令セットアーキテクチャに従ってフォーマットされているという決定は、前記1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報にさらに基づく、請求項15に記載の処理システム。
【請求項１７】
前記少なくとも1つのデコードテーブルが、少なくとも一次テーブル、二次テーブル、および複数のアドレスルックアップテーブルのテーブルのカスケードを備える、請求項15に記載の処理システム。
【請求項１８】
前記タグ処理ユニットが、前記タグ処理ユニットが停止したときに前記アプリケーションプロセッサからの前記命令を記憶することと、前記命令ストリームが停止したときに前記タグ処理ユニットによって使用するための記憶された命令を提供することとを行うように構成されたバッファ付きインターフェースをさらに備える、請求項13に記載の処理システム。
【請求項１９】
前記バッファ付きインターフェースが、先入れ先出し(FIFO)コンポーネントを備える、請求項13に記載の処理システム。
【請求項２０】
前記タグ処理ユニットが、物理命令アドレスおよびデータメモリページアドレスの一方または両方を、(i)対応する関連タグアドレス、および(ii)タグに直接、の一方または両方に変換するように構成されたタグマップテーブル(TMT)をさらに備える、請求項13に記載の処理システム。
【請求項２１】
前記TMTが、特定のサイズのメモリ領域に対して指定された即値タグに対応するように構成され、前記特定のサイズが、メモリ領域サイズの範囲から選択される、請求項20に記載の処理システム。
【請求項２２】
前記メタデータ処理ドメインが、
(i)タグアドレスを書込みトランザクションが進行中であることを示す所定の定数値に変更するために、第1の書込みを実行することと、
(ii)新しいデータを書き込むために第2の書込みを実行することと、
(iii)前記新しいデータに関連付けられる新しいタグを書き込むために第3の書込みを実行することと
を行うように構成されたメタデータタグインターロックキューをさらに備える、請求項13に記載の処理システム。
【請求項２３】
命令を処理する方法であって、
(a) ホスト処理ドメインにおいて、アプリケーションプロセッサによって、
(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、前記命令の各々を受信するステップと、
演算出力情報を生成するために前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行するステップと、
命令情報および前記演算出力情報をメタデータ処理ドメインに提供するステップと
(b)前記メタデータ処理ドメインにおいて、
書込みインターロックによって、
前記ホスト処理ドメインから前記演算出力情報を受信するステップと、
前記演算出力情報をキューに入れるステップと、
タグ処理ユニットによって、
前記ホスト処理ドメインから前記命令情報を受信するステップと、
前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために前記命令情報を使用するステップと、
実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定するステップと、
前記命令が許可されると決定するステップに応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませるステップと
を含む、方法。
【請求項２４】
前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備え、前記命令が許可されると決定するステップが、
前記ルールキャッシュが、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを記憶すると決定するステップ
を含む、請求項23に記載の方法。
【請求項２５】
前記タグ処理ユニットによって、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するステップをさらに含む、請求項24に記載の方法。
【請求項２６】
前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されると決定するステップが、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないと決定するステップと、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供するステップと、
前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信するステップと
を含む、請求項23に記載の方法。
【請求項２７】
前記ポリシ実行プロセッサによって、
(i)前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信するステップと、
前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行するステップと、
前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールするステップと
をさらに含む、請求項26に記載の方法。
【請求項２８】
ホストプロセッサによって、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するステップと、
前記メタデータ処理ドメインによって、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するステップと
をさらに含む、請求項23に記載の方法。
【請求項２９】
前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットによって、
前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信するステップと、
前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用するステップと、
実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2のメタデータタグに従って、前記第2の命令が許可されるかどうかを決定するステップと、
前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信するステップと
をさらに含む、請求項28に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、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  出力
【図１】
2021512426.tif 000003
【図２】
2021512426.tif 000004
【図３Ａ】
2021512426.tif 000005
【図３Ｂ】
2021512426.tif 000006
【図４】
2021512426.tif 000007
【図５】
2021512426.tif 000008
【図６】
2021512426.tif 000009
【図７Ａ】
2021512426.tif 000010
【図７Ｂ】
2021512426.tif 000011
【図７Ｃ】
2021512426.tif 000012
【図７Ｄ】
2021512426.tif 000013
【図７Ｅ】
2021512426.tif 000014
【図８】
2021512426.tif 000015
【図９Ａ】
2021512426.tif 000016
【図９Ｂ】
2021512426.tif 000017
【図９Ｃ】
2021512426.tif 000018
【図９Ｄ】
2021512426.tif 000019
【図１０】
2021512426.tif 000020
【図１１】
2021512426.tif 000021
【図１２Ａ】
2021512426.tif 000022
【図１２Ｂ】
2021512426.tif 000023
【図１２Ｃ】
2021512426.tif 000024
【手続補正書】
【提出日】令和2年11月16日(2020.11.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理システムであって、
(a)ホスト処理ドメインであって、
(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、少なくとも1つの命令を受信することと、
(i)ホストプロセッサによって実装される命令セットアーキテクチャに従って復号化されていない少なくとも1つの命令と、(ii)前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行する前記ホストプロセッサによって生成される演算出力情報を含む命令情報のうちの1つをメタデータ処理ドメインに提供することと
を行うように構成されたホストプロセッサを備える、ホスト処理ドメインと、
(b)前記メタデータ処理ドメインであって、
(i)前記ホスト処理ドメインに応答して、演算出力情報を取得することと、
前記演算出力情報をキューに入れることと
を行うように構成された書込みインターロックと、
(ii)前記ホスト処理ドメインから前記少なくとも1つの命令または前記命令情報を受信することと、
前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために、復号化された前記少なくとも1つの命令または前記命令情報を使用することと、
実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定することと、
前記命令が許可されるという決定に応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませることと
を行うように構成されたタグ処理ユニットと
を備える、前記メタデータ処理ドメインと
を備える、処理システム。
【請求項２】
前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備える、請求項1に記載の処理システム。
【請求項３】
前記命令が許可されるという前記決定が、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶すると決定すること
を含む、請求項2に記載の処理システム。
【請求項４】
前記タグ処理ユニットが、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するように構成される、請求項3に記載の処理システム。
【請求項５】
前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されるという前記決定が、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないと決定することと、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供することと、
前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信することと
を含み、
前記ポリシ実行プロセッサが、
前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信することと、
前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行することと、
前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールするようことと
を行うように構成される、請求項2に記載の処理システム。
【請求項６】
前記ポリシ実行プロセッサが、セキュアブート演算を実行するように構成され、前記ポリシ実行プロセッサが、1つまたは複数の公開鍵を記憶することと、(i)外部メモリデバイスから画像を読み取ることと、前記1つまたは複数の公開鍵を使用して前記画像を認証および復号化することと、前記ホストプロセッサが、認証および復号化が成功したときにブートプロセスを続行することを可能にすることとを行うことができるコードを記憶することとを行うブートROMを備える、請求項5に記載の処理システム。
【請求項７】
前記セキュアブート演算が、
リセット時に、前記ホストプロセッサがリセット状態に保持されたままであること
を含み、
前記ポリシ実行プロセッサが、
(i)そのリセットベクタにおいて実行を開始することと、
(ii)ポリシソフトウェアを独自のメモリスペースにブートすることと、
(iii)各イニシエータがアクセスできるメモリ領域を定義し、ポリシデータセグメントを保持するメモリ領域を保護するために、1つまたは複数のメモリファブリック保護構成レジスタを構成することと、
(iv)前記ポリシデータセグメントを初期化することと、
(v)前記ホストプロセッサのブートローダを前記外部メモリデバイスからメインメモリにコピーすることと、
(vii)前記ホストプロセッサを前記リセット状態から解放することと
を行う、請求項6に記載の処理システム。
【請求項８】
前記ホストプロセッサは、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するようにさらに構成され、
前記メタデータ処理ドメインが、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するようにさらに構成され、
前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットが、
前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信することと、
前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用することと、
実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2のメタデータタグに従って、前記第2の命令が許可されるかどうかを決定することと、
前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信することと
を行うようにさらに構成される、請求項1に記載の処理システム。
【請求項９】
前記1つまたは複数の入力メタデータタグが、前記ホストプロセッサにアクセスできない、請求項1に記載の処理システム。
【請求項１０】
前記ホストプロセッサは、アプリケーションプロセッサであり、
(a)アプリケーション処理ドメインにおいて、前記アプリケーションプロセッサは、
第1の命令セットアーキテクチャを実装することとであって、前記受信された少なくとも1つの命令が、前記第1の命令セットアーキテクチャに従ってフォーマットされる、ことと
前記メタデータ処理ドメインに、前記受信された少なくとも1つの命令を命令ストリームにおいて提供することと
を行うように構成され、
(b)前記メタデータ処理ドメインにおいて、前記タグ処理ユニットはさらに少なくとも1つのデコードテーブルを備え、前記タグ処理ユニットが、前記受信された少なくとも1つの命令から前記オペランド情報および前記演算情報を抽出するように構成される、請求項1に記載の処理システム。
【請求項１１】
前記タグ処理ユニットが、前記受信された少なくとも1つの命令に基づいて、1つまたは複数のケアビットを示す命令ケアビット情報、および演算グループを示す演算グループ情報を決定するように構成された少なくとも1つのルックアップテーブルを備える、請求項10に記載の処理システム。
【請求項１２】
前記タグ処理ユニットが、前記タグ処理ユニットが停止したときに前記アプリケーションプロセッサからの前記命令を記憶することと、前記命令ストリームが停止したときに前記タグ処理ユニットによって使用するための記憶された命令を提供することとを行うように構成されたバッファ付きインターフェースをさらに備える、請求項10に記載の処理システム。
【請求項１３】
前記タグ処理ユニットが、物理命令アドレスおよびデータメモリページアドレスの一方または両方を、(i)対応する関連タグアドレス、および(ii)タグに直接、の一方または両方に変換するように構成されたタグマップテーブル(TMT)をさらに備える、請求項10に記載の処理システム。
【請求項１４】
前記TMTが、特定のサイズのメモリ領域に対して指定された即値タグに対応するように構成され、前記特定のサイズが、メモリ領域サイズの範囲から選択される、請求項13に記載の処理システム。
【請求項１５】
前記メタデータ処理ドメインが、
(i)タグアドレスを書込みトランザクションが進行中であることを示す所定の定数値に変更するために、第1の書込みを実行することと、
(ii)新しいデータを書き込むために第2の書込みを実行することと、
(iii)前記新しいデータに関連付けられる新しいタグを書き込むために第3の書込みを実行することと
を行うように構成されたメタデータタグインターロックキューをさらに備える、請求項10に記載の処理システム。
【請求項１６】
プログラム命令を処理するコンピュータベースの方法であって、
(a) ホスト処理ドメインにおいて、アプリケーションプロセッサによって、
(i)1つまたは複数のオペランドに関するオペランド情報、および(ii)前記1つまたは複数のオペランドに対して実行される演算を示す演算情報を含む、前記命令の各々を受信するステップと、
(i)復号化されていない受信された命令と、(ii)前記1つまたは複数のオペランドに対して前記演算情報において示される前記演算を実行する前記アプリケーションプロセッサによって生成される演算出力情報を含む命令情報のうちの1つをメタデータ処理ドメインに提供するステップと
(b)前記メタデータ処理ドメインにおいて、
書込みインターロックによって、
前記ホスト処理ドメインに応答して、演算出力情報を取得するステップと、
前記演算出力情報をキューに入れるステップと、
タグ処理ユニットによって、
前記ホスト処理ドメインから前記復号化されていない命令または前記命令情報を受信するステップと、
前記少なくとも1つの命令に関連付けられる1つまたは複数の入力メタデータタグを取得するために前記復号化されている命令または前記命令情報を使用するステップと、
実施されている1つまたは複数のポリシに従って、および前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに従って、前記少なくとも1つの命令が許可されるかどうかを決定するステップと、
前記命令が許可されると決定するステップに応答して、前記書込みインターロックの前記キューに、前記演算出力情報を少なくとも1つの出力メタデータタグに関連付ける方法で前記演算出力情報をメモリに書き込ませるステップと
を含む、方法。
【請求項１７】
前記タグ処理ユニットが、前記メタデータ処理ドメインによって実施される前記1つまたは複数のポリシのうちの少なくとも1つのポリシの1つまたは複数のルールエントリを記憶するように構成されたルールキャッシュを備え、前記命令が許可されると決定するステップが、
前記ルールキャッシュが、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを記憶すると決定するステップ
を含む、請求項16に記載の方法。
【請求項１８】
前記タグ処理ユニットによって、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを提供するために、前記ルールエントリに記憶された情報を使用するステップをさらに含む、請求項17に記載の方法。
【請求項１９】
前記メタデータ処理ドメインが、ポリシ実行プロセッサを備え、前記命令が許可されると決定するステップが、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリをルールキャッシュが記憶しないと決定するステップと、
前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに一致するルールエントリを前記ルールキャッシュが記憶しないという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを前記ポリシ実行プロセッサに提供するステップと、
前記ポリシ実行プロセッサから、前記演算出力情報に関連付けられる前記少なくとも1つの出力メタデータタグを受信するステップと
を含み、
前記ポリシ実行プロセッサによって、
(i)前記タグ処理ユニットから、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグを受信するステップと、
前記少なくとも1つの命令が許可されるかどうかを決定するために、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグに対してポリシコードを実行するステップと、
前記少なくとも1つの命令が許可されるという決定に応答して、前記少なくとも1つの命令に関連付けられる前記1つまたは複数の入力メタデータタグおよび前記少なくとも1つの出力メタデータタグに基づいて、ルールエントリを前記ルールキャッシュにインストールするステップと
をさらに含む、請求項16に記載の方法。
【請求項２０】
ホストプロセッサによって、前記メタデータ処理ドメインに、前記少なくとも1つの命令を実行した結果としての前記ホストプロセッサの状態に対する1つまたは複数の更新を示す更新情報を提供するステップと、
前記メタデータ処理ドメインによって、前記少なくとも1つの命令が許可されるという決定に応答して、最新の許可された命令の時点での前記ホスト処理ドメインのシャドウコピーを記憶するように構成されたシャドウレジスタを更新するために、前記更新情報を使用するステップと
をさらに含み、
前記少なくとも1つの命令が、第1の命令を含み、前記命令情報が、第1の命令情報を含み、前記1つまたは複数の入力メタデータタグが、1つまたは複数の第1の入力メタデータタグを含み、前記タグ処理ユニットによって、
前記ホストプロセッサによって実行される第2の命令に関する第2の命令情報を前記ホスト処理ドメインから受信するステップと、
前記第2の命令に関連付けられる1つまたは複数の第2の入力メタデータタグを取得するために前記第2の命令情報を使用するステップと、
実施されている前記1つまたは複数のポリシに従って、および前記第2の命令に関連付けられる前記1つまたは複数の第2のメタデータタグに従って、前記第2の命令が許可されるかどうかを決定するステップと、
前記第2の命令が許可されないという決定に応答して、前記ホスト処理ドメインの状態を前記ホスト処理ドメインの前記シャドウコピーに復元するために、1つまたは複数のロールバック信号を前記ホスト処理ドメインに通信するステップと
をさらに含む、請求項16に記載の方法。
【国際調査報告】
2021512426.tif 000025
2021512426.tif 000026
2021512426.tif 000027