(57)【要約】  コンピュータシステムは、メモリと、プロセッサと、プログラマブルセキュリティユニットとを含む。プログラマブルセキュリティユニットは、メモリおよびプロセッサの外部に存在し、プロセッサによって実行されるメモリ内のコードおよびそのコードによってアクセスされるメモリ内のデータを監視する。
2019530066.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
プロセッサと、
前記メモリおよび前記プロセッサの外部に存在するプログラマブルセキュリティユニットと
を備え、
前記プログラマブルセキュリティユニットは、前記プロセッサによって実行される前記メモリ内のコードおよび前記コードによってアクセスされる前記メモリ内のデータを監視する、
コンピュータシステム。
【請求項２】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データを監視するための手順を指定するためにユーザによって設定可能である、請求項１に記載のコンピュータシステム。
【請求項３】
前記手順は機械／深層学習の手順を含む、請求項２に記載のコンピュータシステム。
【請求項４】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データを監視するための前記メモリ内のメモリ範囲を指定するために、ユーザによって設定可能である、請求項１に記載のコンピュータシステム。
【請求項５】
前記プログラマブルセキュリティユニットは、前記コードおよびデータを監視する場合に用られる前記メモリの帯域幅を制限するために、前記ユーザによって設定可能である、請求項１に記載のコンピュータシステム。
【請求項６】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データに含まれる脅威を検出することに応答して実行する動作を指定するために、前記ユーザによって設定可能である、請求項１に記載のコンピュータシステム。
【請求項７】
前記動作は前記プロセッサのオペレーティングシステムにシステム割り込みを送信することを含む、請求項６に記載のコンピュータシステム。
【請求項８】
前記動作は前記コードおよび前記データに関連したアプリケーションに割り込みを送信することを含む、請求項６に記載のコンピュータシステム。
【請求項９】
前記プログラマブルセキュリティユニットは、トンネルメモリアクセス手順を用いて、前記プロセッサを介して前記メモリにアクセスする、請求項１に記載のコンピュータシステム。
【請求項１０】
前記プログラマブルセキュリティユニットは、非コヒーレント読み取りを用いて、無効化を必要とすることなくまたはスヌーピングすることなく、前記メモリにアクセスする、請求項９に記載のコンピュータシステム。
【請求項１１】
前記プログラマブルセキュリティユニットは、複数のアプリケーションに対応したコードおよびデータを並行して監視する、請求項１に記載のコンピュータシステム。
【請求項１２】
前記プログラマブルセキュリティユニットは、前記複数のアプリケーションの各々に対して、１）アプリケーションに対応したコードおよびデータを監視するために用いられる手順と、２）前記アプリケーションに対応する前記メモリ内のメモリ範囲と、３）前記アプリケーションを監視するために用いられる前記メモリの帯域幅の制限と、４）前記コードおよびデータに含まれる脅威を検出することに応答して実行する動作とを指定するために、設定可能である、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記プログラマブルセキュリティユニットはフィールドプログラマブルゲートアレイによって実装される、請求項１に記載のコンピュータシステム。
【請求項１４】
複数の命令シーケンスを有する非一時的コンピュータ可読媒体であって、
前記複数の命令シーケンスは、実行された場合にプロセッサにシステムセキュリティユニットを管理する方法を実行させる命令を含み、
前記方法は、
監視するアプリケーションを識別する段階と、
前記アプリケーションに関連する登録情報を識別する段階と、
前記アプリケーションおよび前記登録情報を、前記アプリケーションを実行するプロセッサの外部に存在するプログラマブルセキュリティユニットに登録する段階と
を備える、非一時的コンピュータ可読媒体。
【請求項１５】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションに対応したコードおよびデータを格納するメモリの範囲を識別する段階を含む、請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションを監視するためのメモリアクセス帯域幅の制限を識別する段階を含む、請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションを監視するための手順を識別する段階を含む、請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記監視するアプリケーションおよび前記登録情報は、ユーザ、オペレーティングシステムおよび前記アプリケーションのうちの１つによって指定される、請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１９】
メモリコヒーレンシを必要とすることなく、前記プログラマブルセキュリティユニットによるメモリへのアクセスを調整する段階をさらに備える、請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項２０】
外部プロセッサ上で実行され、外部メモリ上に格納されるアプリケーションに対応するコードを監視するカーネルであって、前記アプリケーションに関連し、前記外部メモリに格納されるデータを監視するカーネルを実行するプロセッサと、
前記カーネルによって用いられる前記外部メモリからの帯域幅量を制御するサービス品質帯域幅制御ユニットと
を備える、プログラマブルセキュリティユニット。
【請求項２１】
前記カーネルを生成するセキュリティ制御ユニットをさらに備える、請求項２０に記載のプログラマブルセキュリティユニット。
【請求項２２】
前記セキュリティ制御ユニットは、前記コードおよび前記データのためのメモリ範囲情報、前記コードおよび前記データを監視するための手順のアイデンティティ並びに前記カーネルが前記コードおよび前記データに含まれる脅威を検出することに応答して実行する動作を指定する動作情報を用いて、セキュリティカーネルテーブルを更新する、請求項２１に記載のプログラマブルセキュリティユニット。
【請求項２３】
前記プログラマブルセキュリティユニットはフィールドプログラマブル論理デバイスによって実装される、請求項２０に記載のプログラマブルセキュリティユニット。
【請求項２４】
外部プロセッサ上で実行され、外部メモリに格納されるアプリケーションに対応するコードを監視するカーネルであって、前記アプリケーションに関連し、前記外部メモリに格納されるデータを監視するカーネルを実行するプロセッサ手段と、
前記カーネルによって用られる前記外部メモリからの帯域幅量を制御するサービス品質帯域幅制御手段と
を備える、プログラマブルセキュリティユニット。
【請求項２５】
前記カーネルを生成するセキュリティ制御手段をさらに備える、請求項２０に記載のプログラマブルセキュリティユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態はコンピュータシステムにおけるセキュリティの提供に関する。より特に、本開示の実施形態はコンピュータシステムのプログラマブルセキュリティユニットを実装するための方法および装置に関する。
【背景技術】
【０００２】
セキュリティは、近年のコンピューティングシステムの主要な関心事である。ウイルスと脅威の監視は、コンピュータアンチウイルスソフトによって現在実行されている、重大なアクティビティである。アンチウイルスソフトは、元来コンピュータウイルスを除去および検出するために開発されたものである。コンピュータウイルスが発展してますます精巧になり続けているため、そして新種のマルウェアが激増し続けているため、アンチウイルスソフトは、他のコンピュータの脅威からの保護を提供するために発展してきた。特に、近年のアンチウイルスソフトは、悪意のあるブラウザヘルパーオブジェクト（ＢＨＯ）、ブラウザハイジャッカ―、キーロガー、バックドア、ルートキット、トロイの木馬、ワーム、アドウェア、およびスパイウェアから保護し得る。いくつかのアンチウイルスソフトはまた、感染した悪意のあるＵＲＬ、スパム、詐欺、およびフィッシング攻撃等の他のコンピュータの脅威からの保護を提供する。
【０００３】
アンチウイルスソフトは、いくつかの異なるタイプのチェックを実行してもよい。アンチウイルスソフトによって実行される、あるタイプのチェックは、既知のウイルス、ワーム、および他のタイプのマルウェアを検出するために比較を実行することを含んでもよい。アンチウイルスソフトによって実行される、別のタイプのチェックは、新しいタイプの脅威にとってマーカーまたはフラグになり得る悪い動作を識別するために比較を実行することを含んでもよい。 
【０００４】
アンチウイルスソフトによって実行される、異なるタイプのチェックを処理するために、多くのアプローチが研究されてきた。例えば、機械学習等の学習技術は、悪意ある動作を監視し、識別し、および予測するために用られ得る。アンチウイルスソフトによって実行される、タスクの複雑さに応じて、アンチウイルスソフトに必要な計算は、多大な計算リソースを要し得る。 
【図面の簡単な説明】
【０００５】
本開示の実施形態の特徴および利点が例として図示されたものであって、本開示の実施形態を、示される特定の実施形態に限定することを意図したものではない。
【０００６】
【図１】本開示の例示的な実施形態によるプログラマブルセキュリティユニットを実装するコンピュータシステムのブロック図である。
【０００７】
【図２】本開示の例示的な実施形態によるプログラマブルセキュリティユニットを実装するコンピュータシステムのサブコンポーネントを説明したブロック図である。
【０００８】
【図３】本開示の例示的な実施形態によるセキュリティカーネルテーブルを示す。
【０００９】
【図４】本開示の例示的な実施形態によるシステムセキュリティユニットを管理するための方法を示すフロー図である。
【００１０】
【図５】本開示の例示的な実施形態によるセキュリティカーネル管理ユニットを管理するための方法を示すフロー図である。
【００１１】
【図６】本開示の例示的な実施形態によるシステムセキュリティユニットのブロック図である。
【００１２】
【図７】本開示の例示的な実施形態によるセキュリティカーネル管理ユニットのブロック図である。
【００１３】
【図８】本開示の例示的な実施形態によるプログラマブルセキュリティユニットを実装するために用られる、例示的なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を示す。
【発明を実施するための形態】
【００１４】
以下の記載において、説明の目的で、本開示の実施形態が十分に理解されるために、特定の用語を明記する。説明における特定の詳細が本開示の実施形態を実行するために必要でなくてもよいことは、当技術分野における当業者にとって明らかであろう。他の例において、不必要に本開示の実施形態が不明瞭になることを回避するために、周知の回路、デバイス、手順、およびプログラムをブロック図方式で示す。
【００１５】
アンチウイルスソフトは、計算の観点から見ると、じゃまであるかもしれない。アンチウイルスソフトは、多大な計算サイクルを要し得る。ランタイム中にユーザアプリケーションを監視するためにユーザアプリケーションと共有されるプロセッサ上で実行される場合、アンチウイルスソフトはユーザエクスペリエンスを干渉し得る。本開示の一実施形態によると、コンピュータシステムのメモリおよびプロセッサの外部に存在するプログラマブルセキュリティユニットが開示される。プログラマブルセキュリティユニットは、プロセッサによって実行されるメモリ内のコードを監視する。プログラマブルセキュリティユニットは、追加のコンピューティングリソースを供給して、アプリケーションの実行を干渉することなく、プロセッサによって実行されるアプリケーションに関連するコードに含まれる脅威を監視することを可能とするという潜在的利点を提供する。プログラマブルセキュリティユニットはまた、複数のアプリケーションを並行して監視するという潜在的利点、そしてアプリケーションプログラマまたはユーザが、１）メモリ内のアプリケーションに対応したコードおよびデータを監視するために使用する手順、２）アプリケーションに対応するメモリ内のメモリ範囲、３）アプリケーションを監視するために用いられるメモリの帯域幅に対する制限、並びに４）コードおよびデータ中の脅威を検出することに応答して実行する動作を各アプリケーションに対して指定することができるように設定可能であるという潜在的利点を提供する。
【００１６】
図１は、本開示の例示的な実施形態によるコンピュータシステム１００のブロック図である。コンピュータシステム１００は、デスクトップ、ラップトップ、スマートフォン、タブレット、スマート設備、または他のコンピューティングデバイスによって実装され得る。コンピュータシステム１００には、データ信号を処理するプロセッサ１０１が含まれる。図１に、コンピュータシステム１００を単一のプロセッサとともに示す。しかしながら、コンピュータシステム１００が複数のプロセッサとともに動作し得ることは理解されよう。プロセッサ１０１は、単一またはマルチコアのプロセッサによって実装され得る。 
【００１７】
プロセッサ１０１は、入力／出力（Ｉ／Ｏ）サブシステム１１０に結合される。Ｉ／Ｏサブシステム１１０は、Ｉ／Ｏ動作を容易にするために、メモリコントローラハブ、Ｉ／Ｏ制御ハブ、通信リンク、並びに／または他のコンポーネントおよびサブシステムを含んでよい。コンピューティングデバイス１００の実施形態によれば、Ｉ／Ｏサブシステム１１０は、コンピューティングデバイス１００のコンポーネント間のデータ信号を送信する。本実施形態において、Ｉ／Ｏサブシステム１１０は、単一のバスまたは複数のバスの組み合わせを含んでよい。コンピューティングデバイス１００は、メモリ１０２を含む。メモリ１０２は、Ｉ／Ｏサブシステム１１０に結合される。メモリ１０２は、ダイナミックランダムアクセスメモリデバイス、スタティックランダムアクセスメモリデバイス、および／または他のメモリデバイスであってよい。メモリ１０２はプロセッサ１０１によって実行され得る、データ信号によって表される命令およびコードを格納してよい。データストレージデバイス１０３は、Ｉ／Ｏサブシステム１１０に結合される。データストレージデバイス１０３は、ソリッドステートドライブ、メモリカード、または他の大容量ストレージデバイス等の、データの短期または長期ストレージのために構成されるデバイスとともに実装されてよい。 
【００１８】
周辺機器１０４は、Ｉ／Ｏサブシステム１１０に結合される。周辺機器１０４は、通信およびディスプレイをサポートするデバイス等の、様々なＩ／Ｏデバイスを含んでよい。周辺機器１０４は、ディスプレイおよびタッチスクリーン、ボタン、スイッチ、キーボード、マウス、スピーカ、マイク、および／または他の周辺機器を含んでよい。ネットワークコントローラ１０５は、Ｉ／Ｏサブシステム１１０に結合される。ネットワークコントローラは、コンピュータシステム１００を複数のコンピュータのネットワーク（図示せず）に連結させて、機械間の通信をサポートしてよい。コンピュータシステム１００を実装するために、異なるアーキテクチャを有する、または異なるコンポーネントを有するコンピューティングデバイスが用られてもよいことを理解されるべきである。
【００１９】
本開示の一実施形態によれば、１または複数のアプリケーション１２０はメモリ１０２内に割り当てられてよく、プロセッサ１０１によって実行されてよい。メモリ内のアプリケーションに対応したコードおよびデータは、潜在的な脅威を識別するために、プログラマブルセキュリティユニット１３０によって監視されてよい。プログラマブルセキュリティユニット１３０は、プロセッサ１０１およびメモリ１０２の外部に存在し、１または複数のアプリケーションに対応したコードおよびデータを監視するための指定された手順に適用されてよい。本開示の一実施形態によれば、プログラマブルセキュリティユニット１３０は、ラインにアクセスしている他のプロセッサまたはプロセッサコアをスヌーピングすることを回避するために、非コヒーレントメモリ読み取りを用いて、インオーダーでメモリ１０２内のラインをスキャンする。
【００２０】
プログラマブルセキュリティユニット１３０は、プロセッサ１０１がアプリケーションを実行している間、コンピュータシステム１００に、プロセッサ１０１に過度の負荷を与えることなくアプリケーションのランタイム中にセキュリティ監視を実行するためのエンジンを提供する。本開示の一実施形態により、プログラマブルセキュリティユニット１３０は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のコンピューティングデバイスによって実装され得る。 
【００２１】
図２は、本開示の例示的な実施形態による、プログラマブルセキュリティユニット２２０を実装するコンピュータシステム２００内のサブコンポーネントを説明したブロック図である。図２に図示されるプロセッサ２１０、プログラマブルセキュリティユニット２２０、およびメモリ２３０は、図１に図示されるプロセッサ１０１、プログラマブルセキュリティユニット１３０、およびメモリ１０２を実装するために用られ得る。 
【００２２】
プロセッサ２１０は、システムセキュリティユニット２１１を含む。システムセキュリティユニット２１１は、プログラマブルセキュリティユニット２２０によって監視されるべきアプリケーションを登録する。監視対象となるアプリケーションごとに、システムセキュリティユニット２１１は、そのアプリケーションに対応したコードおよびデータが監視されるべきメモリ２３０内のメモリ範囲またはメモリ領域を識別する。システムセキュリティユニット２１１は、アプリケーションを監視するために利用する手順を識別する。上記手順は、コードおよびデータと、悪意のあるものとして既知である他のコードおよびデータとを比較するため、またはそのコードおよびデータからもたらされる悪意のある動作を監視し、識別し、および予測するための１または複数のアルゴリズムを含み得る。上記手順は「ビットストリーム」と称され得る。システムセキュリティユニット２１１はまた、コードおよびデータ中の脅威を検出することに応答して、実行するべき動作を識別する。その動作は、割り込み等の識別された通知を、識別されたコンポーネントおよび／またはプログラムに送信することを含み得る。システムセキュリティユニット２１１はまた、アプリケーションを監視するために割り当てべく、サービスクラスまたはサービス品質（Ｑｏｓ）を識別する。サービス品質は、コードおよびデータを監視する場合に用られるメモリの帯域幅制限を確立するために動作する。本開示の一実施形態によると、システムセキュリティユニット２１１は、ユーザ、オペレーティングシステムおよび／またはそれ自体が監視されているアプリケーションによって提供される情報から説明される情報を識別し得る。ここで、システムセキュリティユニット２１１は、メモリ２００内に格納され、プロセッサ２１０によって実行されるプログラムであってよいことが理解されるべきである。
【００２３】
プログラマブルセキュリティユニット２２０は、セキュリティカーネル管理ユニット２２１を含む。セキュリティカーネル管理ユニット２２１は、監視すべきアプリケーション、監視すべきアプリケーションに対応したコードおよびデータのメモリ範囲、監視の際に利用する手順、実行すべき動作、および監視のために割り当てるサービス品質に関する情報を、セキュリティ登録ユニット２１１から受信する。セキュリティカーネル管理ユニット２２１は、情報をプログラマブルセキュリティユニット２２０内のセキュリティカーネルテーブル２２２に書き込んで、監視されるように識別されたアプリケーションごとにカーネルを生成する。セキュリティカーネル管理ユニット２２１によって生成された各カーネルは、プログラマブルセキュリティユニット２２０によって実行され、セキュリティカーネルテーブル２２２内の情報によって指定されるパラメータの範囲内でアプリケーションを監視するよう動作する。本例に示されるように、プロセッサ２１０において動作している３つのアプリケーションを監視するために、セキュリティカーネル管理ユニット２２１によってカーネル１  ２２５、カーネル２  ２２６およびカーネル３  ２２７が生成される。
【００２４】
セキュリティカーネル管理ユニット２２１はまた、カーネルおよびメモリ２３０間のデータフローのサービス品質を規制する。本開示の一実施形態によれば、セキュリティカーネル管理ユニット２２１は、カーネルテーブル２２２内に記録された制限に準拠するよう、カーネルおよびメモリ２３０間で許可されるトラフィック量を制御する。セキュリティカーネル管理ユニット２２１はまた、カーネルが、カーネルテーブル２２２内に記録されるような、そのカーネルに関連したメモリ内にあるメモリ範囲またはメモリ領域にアクセスのみし得るように、カーネルおよびメモリ２３０間で許可されるトラフィックのタイプを制御してよい。プログラマブルセキュリティユニット２２０およびメモリ２３０間のメモリアクセスは、メモリインタフェース２２３を介して行われてよい。メモリインタフェース２２３は、プロセッサ２１０を通じて、コヒーレンシメモリチャネルを用いてメモリアクセスリクエストをルーティングする。本開示の一実施形態によれば、コヒーレンシメモリチャネルはトンネルメモリアクセス手順を利用してよい。ここで、セキュリティカーネル管理ユニット２２１は、プロセッサ上で実行されるソフトウェア、ハードウェアコンポーネントまたはハードウェアおよびソフトウェアの組み合わせによって実装され得ることが理解されるべきである。 
【００２５】
メモリ２３０は、プロセッサ２１０によって実行されるアプリケーションに関連するコードおよびデータを格納する。本例に示されるように、メモリ２３０は、プロセッサ２１０内で動作している３つのアプリケーションに関連するコードおよびデータを格納する３つのメモリ範囲２３１−２３３を含む。本開示の一実施形態によれば、メモリ２３０内のコヒーレントアドレス空間は、プロセッサ２１０とプログラマブルセキュリティユニット２２０との間に保持される。
【００２６】
図３は、本開示の例示的な実施形態による、セキュリティカーネルテーブル３００の表を示している。セキュリティカーネルテーブル３００は、図２に示されるセキュリティカーネルテーブル２２２を実装するために用られてよい。プログラマブルセキュリティユニットによって監視されるよう登録されたアプリケーションごとに、セキュリティカーネルテーブル３００が列３１５の識別子を列挙してそのアプリケーションのカーネルを識別する。セキュリティカーネルテーブル３００は、列３１３を含み、そのアプリケーションに関連するコードおよびデータが配置され、監視されるべきであるメモリ範囲を識別する。セキュリティカーネルテーブル３００は、列３１４を含み、脅威を検出した場合に実行するための動作または生成するための通知を識別する。セキュリティカーネルテーブル３００は、列３１１を含み、列３１４から識別される動作または通知を受信するべくエージェントを識別する。セキュリティカーネルテーブル３００は、列３１２を含み、アプリケーションの監視のために割り当てるメモリの帯域幅を制限するサービスクラスを識別する。
【００２７】
監視されるべきアプリケーションごとに、セキュリティカーネルテーブル３００はまた、監視のために実行するべく利用する手順または「ビットストリーム」を識別する。ここで、この手順が外部の異なるコンポーネントからプログラマブルセキュリティユニットにアップロードされ得るということを理解するべきである。あるいは、この手順は、プログラマブルセキュリティユニット上で利用可能であってよく、カーネルテーブル３００において列挙される複数の手順から選択可能であってよい。図３に示されるように、複数の機械学習最適化ビットストリームは、アプリケーションに対応したコードおよびデータを監視するための手順として用いられるために選択されるべく利用可能である。利用可能な手順のリストは、機械状態レジスター（ＭＳＲ）３２１またはその手順に関連するビットストリーム、ビットストリーム識別子３２２、サービスクラス３２３およびメタデータ３２４をセットアップするために用いられ得る他のメカニズム等の情報を含んでよい。本例に示されるように、カーネル０はビットストリーム０を利用するように示され、カーネル１はビットストリーム１を利用するように示され、そしてカーネル２はＭＬビットストリーム０を利用するように示される。ここで、セキュリティカーネルテーブル３００が他の情報を列挙し得、図３に示されるものとは異なる態様でフォーマットされ、配置され得ることを理解するべきである。
【００２８】
図４は本開示の例示的な実施形態によるシステムセキュリティユニットを管理するための方法を示すフロー図である。説明される方法は、プロセッサによって実装されるシステムセキュリティユニットによって実行されてよい。４０１において、監視されるべきアプリケーションのための登録情報が識別される。本開示の一実施形態によれば、登録情報は、アプリケーションに対応したコードおよびデータが監視されるべきメモリ内のメモリ範囲またはメモリ領域を含んでよい。登録情報は、アプリケーションを監視するために利用する手順（ビットストリーム）を含んでよい。登録情報は動作を含んでよく、当該動作はコードおよびデータ並びに当該動作の受け手に含まれる脅威を検出したことに応答して、実行されてよい。登録情報は、アプリケーションを監視するために割り当てるべくサービスクラスまたはサービス品質（ＱｏＳ）を含んでよい。サービス品質は、コードおよびデータを監視する場合に、用られるメモリの帯域幅制限を確立するよう動作する。本開示の一実施形態によれば、登録情報は、ユーザ、オペレーティングシステムおよび／または監視されているアプリケーション自体によって提供される情報から識別されてよい。 
【００２９】
４０２では、登録情報がプログラマブルセキュリティユニットに送信される。本開示の一実施形態によれば、プログラマブルセキュリティユニットは、プロセッサの外部であって、プロセッサとは別のコンポーネント上に存在する。登録情報は、専用チャネルを用いるプログラマブルセキュリティユニットに送信されてよい。登録情報は、アプリケーションを監視するカーネルを生成するためにプログラマブルセキュリティユニットによって用られてよい。
【００３０】
４０３では、プログラマブルセキュリティユニットがメモリアクセスを要求しているか否かが判断される。本開示の一実施形態によれば、プログラマブルセキュリティユニット内で動作しているカーネルは、識別手順を利用して、アプリケーションに対応したコードおよびデータを監視するために、メモリ内の領域にアクセスすることを要求してよい。プログラマブルセキュリティユニットは、非コヒーレント読み取りコマンドを用いることによってメモリアクセスを要求してよい。非コヒーレントメモリ読み取りによって、メモリへアクセスしているプロセッサコアのスヌーピングを回避しながらメモリアクセスが可能となる。プログラマブルセキュリティユニットがメモリアクセスを要求していると判断されれば、制御は４０４に進む。プログラマブルセキュリティユニットがメモリアクセスを要求していないと判断されれば、制御は４０３に戻る。
【００３１】
４０４では、メモリアクセスが許可される。本開示の一実施形態によれば、メモリアクセスはプロセッサを通じてコヒーレンシメモリチャネルを用いて調整される。しかしながら、メモリアクセスはメモリコヒーレンシを要求することなく行われる。これによって、プログラマブルセキュリティユニットが無効化を生成しないで、そしてスヌーピングを実行しないで、メモリからデータを読み取ることができる。その結果、メモリアクセスは他の複数のアプリケーションに対するメモリ性能に影響を与えない。
【００３２】
４０５では、脅威が検出されているか否かが判断される。本開示の一実施形態によれば、プログラマブルセキュリティユニット上で実行しているカーネルによって用られる手順は、メモリアクセスから得た情報を分析することで脅威を検出してよい。万が一脅威が検出されたら、プログラマブルセキュリティユニットから通知が受信されるであろう。脅威が検出されれば、制御は４０６に進む。脅威が検出されなければ、制御は４０７に進む。
【００３３】
４０６では、プログラマブルセキュリティユニットから受信される指定の動作が実行される。本開示の一実施形態によれば、指定の動作は、コンポーネントまたはプログラムへの通知を含んでよい。
【００３４】
４０７では、カーネルに対して変更が作成されているか否かが判断される。本開示の一実施形態によれば、カーネルにおける変更は、更新すること、カーネルの登録を解除すること、またはカーネルに関連する登録情報を変更することで生じてよい。カーネルに対して変更が作成されていると判断された場合、カーネルの登録情報を識別するため、制御は４０１に戻る。カーネルに対して変更が作成されていると判断されなかった場合、制御は４０３に戻る。
【００３５】
図５は、本開示の例示的な実施形態によるセキュリティカーネル管理ユニットを管理するための方法を示すフロー図である。説明される方法は、監視されているアプリケーションを実行するプロセッサの外部に存在するプログラマブルセキュリティユニットによって実行されてよい。セキュリティカーネル管理ユニットは、ハードウェアコンポーネント、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせによって実装されてよい。５０１では、セキュリティカーネルテーブルは更新される。本開示の一実施形態によれば、セキュリティカーネルテーブルは、新しい登録情報がシステムセキュリティユニットから受信されたときにはいつでも更新されてよい。登録情報は、アプリケーションに対応したコードおよびデータが監視されるメモリ内のメモリ範囲またはメモリ領域を含んでよい。登録情報は、アプリケーションを監視するために利用する手順（ビットストリーム）を含んでよい。登録情報は動作を含んでよく、当該動作はコード、データおよび当該動作の受け手に脅威を検出することに応答して実行されてよい。登録情報は、アプリケーションを監視するために割り当てるサービスクラスまたはサービス品質（ＱｏＳ）を含んでよい。サービス品質は、コードおよびデータを監視する場合に用られるメモリの帯域幅制限を確立するよう動作する。本開示の一実施形態によれば、登録情報は、ユーザ、オペレーティングシステムおよび／または監視されているアプリケーション自体によって提供される情報から識別されてよい。 
【００３６】
５０２では、監視されるアプリケーションごとにカーネルが生成される。本開示の一実施形態によれば、カーネルは、プログラマブルセキュリティユニット上で実行されるプログラムである。カーネルは、監視されるアプリケーションに関連した登録情報を用いて生成される。
【００３７】
５０３では、メモリアクセスが要求されるか否かが判断される。本開示の一実施形態によれば、メモリアクセスは、プログラマブルセキュリティユニット内で動作している１または複数のカーネルから要求されてよい。メモリアクセスが要求されれば、制御は５０４に進む。メモリアクセスが要求されなければ、制御は５０３に戻る。
【００３８】
５０４では、メモリアクセスが許可されるか否かが判断される。本開示の一実施形態によれば、メモリアクセスに関連したメモリ範囲は、メモリアクセスが許可されるか否かを判断するためにカーネルが監視しているアプリケーションに関連したメモリ範囲と比較される。セキュリティカーネルテーブルは、比較のための関連情報をルックアップするためにアクセスされてよい。メモリアクセスが許可されれば、制御は５０５に進む。メモリアクセスが許可さればければ、制御は５０３に戻り、他にメモリアクセスが要求されたか否かを判断する。
【００３９】
５０５では、十分な帯域幅がメモリアクセスのために割り当てられているか否かを判断する。本開示の一実施形態によれば、メモリアクセスに必要な帯域幅が、カーネルのために割り当てられるメモリの帯域幅の許容制限と比較される。セキュリティカーネルテーブルは、比較のための関連情報をルックアップするためにアクセスされてよい。十分な帯域幅が割り当てられていなければ、制御は５０６に進む。十分な帯域幅が割り当てられていれば、制御は５０７に進む。 
【００４０】
５０６では、メモリアクセスがスロットルで調整される。本開示の一実施形態によれば、メモリアクセスは、メモリアクセスリクエストのためのメモリ範囲をパーティション化して、ある期間にわたってパーティション化されたメモリ範囲についてアクセスを要求することによってスロットルで調整されてよい。これにより、メモリアクセスがメモリユースのために割り当てられた帯域幅内で実行されることが可能となるであろう。
【００４１】
５０７では、読み取り要求がメモリアクセスのために生成される。本開示の一実施形態によれば、読み取り要求は非コヒーレント読み取りコマンドを用いて作成される。非コヒーレント読み取りコマンドによって、いかなる無効化も生成せずに、そしてスヌーピングを実行せずに、データがメモリからフェッチされることが可能となる。
【００４２】
５０８では、脅威が検出されているか否かが判断される。本開示の一実施形態によれば、プログラマブルセキュリティユニット内で動作している１または複数のカーネルによって、脅威が検出されてよい。カーネルは、メモリアクセスから受信されるコードおよびデータを分析することに応答して、脅威を検出してよい。脅威が検出されていると判断されれば、制御は５０９に進む。脅威が検出されていると判断されなければ、制御は５０３に戻る。
【００４３】
５０９では、脅威を検出すると動作が実行される。本開示の一実施形態によれば、セキュリティカーネルテーブルは、検出に応答して実行すべき適切な動作を識別するために参照されてよい。その動作は、指定のプログラムまたはコンポーネントへの通知を提供することを含んでよい。
【００４４】
図４および５は、本開示の実施形態を示すフロー図である。これらの図において説明される手順は、プロセッサ上で実行されるソフトウェアによって、ハードウェアコンポーネントによって、またはハードウェアおよびソフトウェアの組み合わせによって実行されて実行されてよい。図示されるいくつかの技術は、連続して実行されてよく、並行して実行されてよく、または説明される順序および説明される手順が繰り返される順序とは別の順序で実行されてよい。説明される全ての技術が実行されるために必要であるというわけではなく、追加の技術が加わってもよく、そしていくつかの図示される技術は他の技術に代用されてよいということが理解される。
【００４５】
図６は、本開示の例示的な実施形態によるシステムセキュリティユニット６００のブロック図である。システムセキュリティユニット６００は、図２に図示されるシステムセキュリティユニット２１１を実装するために用られてよい。図６は、ある実施形態のシステムセキュリティユニット６００を実装するモジュールを図示している。一実施形態によれば、モジュールはソフトウェアモジュールを表し、システムセキュリティの提供は、図６に示されるモジュールによって表される複数の命令シーケンスを動作する図１に図示されるプロセッサ等のプロセッサによって実行されてよい。複数の命令シーケンスの実行は、プロセッサにシステムセキュリティを提供させる。代替的な実施形態では、本開示の実施形態を実装するためのソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、配線回路が用られてよい。つまり、本開示の実施形態はハードウェア回路およびソフトウェアのいかなる特定の組み合わせにも限定されるものではない。システムセキュリティユニット６００は、システムセキュリティユニットマネージャー６１０を含む。システムセキュリティユニットマネージャー６１０はシステムセキュリティユニット６００のコンポーネントに接続され、コンポーネント間でデータを送信する。
【００４６】
システムセキュリティユニット６００は、登録情報識別ユニット６２０を含む。登録情報識別ユニット６２０は、監視されるアプリケーションの登録情報を識別する。本開示の一実施形態によれば、登録情報はユーザ、オペレーティングシステムおよび／または監視されているアプリケーション自体によって提供される情報から識別されてよい。登録情報は、アプリケーションに対応したコードおよびデータが監視されるメモリ内のメモリ範囲またはメモリ領域を含んでよい。登録情報は、アプリケーションを監視するために利用する手順（ビットストリーム）を含んでよい。登録情報は動作を含んでよく、当該動作はコード、データおよび当該動作の受け手に脅威を検出したこと応答して実行されてよい。登録情報は、アプリケーションを監視するために割り当てるサービスクラスまたはサービス品質（ＱｏＳ）を含んでよい。サービス品質は、コードおよびデータを監視する場合に用られるメモリの帯域幅制限を確立するよう動作する。 
【００４７】
システムセキュリティユニット６００は、登録情報伝送ユニット６３０を含む。登録情報伝送ユニット６３０は、登録情報をプロセッサの外部であってプロセッサとは別のコンポーネント上に存在するプログラマブルセキュリティユニットに送信する。本開示の一実施形態によれば、登録情報は専用チャネルを用いてプログラマブルセキュリティユニットに送信されてよい。 
【００４８】
システムセキュリティユニット６００は、メモリアクセスユニット６４０を含む。プログラマブルセキュリティユニットがメモリアクセスを要求していると判断することに応答して、メモリの読み取りが調整される。本開示の一実施形態によれば、プログラマブルセキュリティユニットからのメモリアクセス要求は非コヒーレント読み取りコマンドを受信することによって認識されてよい。メモリの読み取りは、コヒーレンシメモリチャネルを用いて実行されてよい。メモリアクセスはメモリコヒーレンシを要求することなく行われてよい。これによって、プログラマブルセキュリティユニットが、無効化を生成することなく、そしてスヌーピングを実行することなく、メモリからデータを読み取ることが可能となる。その結果、メモリアクセスは他の複数のアプリケーションに対するメモリの利用可能性に影響を与えるものではないであろう。
【００４９】
システムセキュリティユニット６００は、通知ユニット６５０を含む。メモリアクセスからプログラマブルセキュリティユニットによって脅威が検出されていると判断することに応答して、プログラマブルセキュリティユニットからの通知が指定のコンポーネントまたはプログラムに転送されるであろう。
【００５０】
図７は、本開示の例示的な実施形態によるセキュリティカーネル管理ユニット７００のブロック図である。セキュリティカーネル管理ユニット７００は、図２に図示されるセキュリティカーネル管理ユニット２２１を実装するために用られてよい。図７は、ある実施形態のセキュリティカーネル管理ユニット７００を実装するモジュールを図示している。一実施形態によれば、モジュールはソフトウェアモジュールを表し、セキュリティカーネルの管理は、図７に示されるモジュールによって表される複数の命令シーケンスを実行するプロセッサによって実行されてよい。複数の命令シーケンスの実行によって、プロセッサにセキュリティカーネルを管理させる。代替的な実施形態では、本開示の実施形態を実装するために、配線回路が、ソフトウェア命令の代わりにまたはソフトウェア命令と組み合わせて、用られてよい。つまり、本開示の実施形態はハードウェア回路およびソフトウェアのいかなる特定の組み合わせにも限定されるものではない。セキュリティカーネル管理ユニット７００は、セキュリティカーネルマネージャー７１０を含む。セキュリティカーネルマネージャー７１０はセキュリティカーネル管理ユニット７００のコンポーネントに接続され、セキュリティカーネル管理ユニット７００のコンポーネント間でデータを送信する。
【００５１】
セキュリティカーネル管理ユニット７００は、セキュリティ制御ユニット７２０を含む。本開示の一実施形態によれば、セキュリティ制御ユニット７２０は、新しい登録情報がシステムセキュリティユニットから受信されるときにはいつでも、セキュリティカーネルテーブルを更新する。登録情報は、アプリケーションに対応したコードおよびデータが監視されるメモリ内のメモリ範囲またはメモリ領域を含んでよい。登録情報は、アプリケーションを監視するために利用する手順（ビットストリーム）を含んでよい。登録情報は動作を含んでよく、当該動作はコード、データおよび当該動作の受け手に脅威を検出することに応答して実行されてよい。登録情報は、アプリケーションを監視するために割り当てるサービスクラスまたはサービス品質（ＱｏＳ）を含んでよい。セキュリティ制御ユニット７２０は、アプリケーションに関連した登録情報に従って、監視されるアプリケーションごとにカーネルを生成する。本開示の一実施形態によれば、カーネルは、プログラマブルセキュリティユニット上で実行されるプログラムである。
【００５２】
セキュリティカーネル管理ユニット７００は、サービス品質（ＱＯＳ）帯域幅制御ユニット７３０を含む。本開示の一実施形態によれば、メモリアクセスが要求されたと判断すると、ＱＯＳ帯域幅制御ユニット７３０は、メモリアクセスリクエストに関連したメモリ範囲と要求元のカーネルが監視しているアプリケーションに関連したメモリ範囲とを比較することによって、要求元のカーネルに対してメモリアクセスが許可されるか否かを判断する。ＱＯＳ帯域幅制御ユニット７３０はまた、メモリアクセスに必要な帯域幅とカーネルにセットされるメモリの許容帯域幅とを比較することによって、十分な帯域幅がメモリアクセスのために割り当てられているか否かを判断してよい。ＱＯＳ帯域幅制御ユニット７３０は、メモリアクセスリクエストのためのメモリ範囲をパーティション化してある期間にわたってパーティション化されたメモリ範囲ごとにアクセスを要求することによって、メモリアクセスをスロットルで調整してよい。これによって、メモリユースのために割り当てられた帯域幅内でメモリアクセスが行われることが可能となるであろう。本開示の一実施形態によれば、ＱＯＳ帯域幅制御ユニット７３０は、非コヒーレント読み取りコマンドを用いて、メモリアクセスのための読み取り要求を生成する。非コヒーレント読み取りコマンドによって、いかなる無効化も生成しないで、そしてスヌーピングを実行しないで、データがメモリからフェッチされることが可能となる。
【００５３】
セキュリティカーネル管理ユニット７００は、アクション生成ユニット７４０を含む。カーネルがメモリアクセスから得た内容を分析することによって脅威を検出したことに応答して、アクション生成ユニット７４０はカーネルによって指定された動作を転送し、またはセキュリティカーネルテーブル内で指定された動作を実行してよい。動作は、指定のプログラムまたはコンポーネントに対する通知の提供を含んでよい。
【００５４】
図８は、本開示の例示的な実施形態によるプログラマブルセキュリティユニットを実装するために用られる例示的なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を図示したものである。ＦＰＧＡ９００は、図２に図示されるプログラマブルセキュリティユニット２２０を実装するために用られてよい。ＦＰＧＡ８００は複数のロジックアレイブロック（ＬＡＢ）を含む。本開示の一実施形態によれば、ＦＰＧＡ８００は単一集積回路上に実装されてよい。各ＬＡＢは、複数のロジックブロック、搬送チェーン、ＬＡＢ制御信号、ルックアップ表（ＬＵＴ）チェーン、および登録チェーン接続ラインから形成されてよい。ロジックブロックは、ユーザロジック機能のうち効率的な実装形態を提供するロジックのスモールユニットである。ロジックブロックは、１または複数の組合せセルおよびレジスターを含み、各組合せセルは単一の出力を有する。本開示の一実施形態によれば、ロジックブロックは、現在インテルコーポレーションによって所有されるＡｌｔｅｒａコーポレーションによって製造されるＳｔｒａｔｉｘデバイスまたはＣｙｃｌｏｎｅデバイスに見られるもののようなロジック要素（ＬＥ）と同様の動作をしてよい。ＬＡＢはデバイス９００を横切るように行及び列へグループ化される。ＬＡＢの列は８１１−８１６として示される。ここで、ロジックブロックは追加のコンポーネントまたは代替的なコンポーネントを含んでよいことが理解されるべきである。
【００５５】
ＦＰＧＡ８００はメモリブロックを含む。メモリブロックは、例えば様々な周波数で様々なビット幅の専用トゥルーデュアルポートメモリ、シンプルデュアルポートメモリまたは単一ポートメモリを提供するデュアルポートランダムアクセスメモリ（ＲＡＭ）ブロックであってよい。メモリブロックは、選択されたＬＡＢ間にあるデバイスを横切る列へグループ化されてよく、またはＦＰＧＡ８００内で個別にあるいは対になって配置されてよい。メモリブロックの列は８２１−８２４として示される。
【００５６】
ＦＰＧＡ８００はデジタル信号処理（ＤＳＰ）ブロックを含む。DSPブロックは、加算または減算機能を有する様々な構成の乗算器を実装するために用られてよい。DSPブロックは、シフトレジスター、乗算器、加算器および累積器を含む。DSPブロックはＦＰＧＡ８００を横切る列へグループ化されてよく、８３１として示される。
【００５７】
ＦＰＧＡ８００は複数の入力／出力要素（ＩＯＥ）８４０を含む。各ＩＯＥはＦＦＰＧＡ８００上にＩＯピン（図示せず）を供給する。ＩＯＥ８４０は、ＦＰＧＡ８００の外周を取り囲む最後のＬＡＢの行及び列に配置される。各ＩＯＥは、入力、出力、および出力可能信号を登録するために双方向ＩＯバッファおよび複数のレジスターを含んでよい。
【００５８】
ＦＰＧＡ８００は、ＦＰＧＡ８００上のコンポーネント間の信号をルーティングするために、ＬＡＢローカル相互接続ライン、行相互接続ライン（"Ｈタイプワイヤ"）および列相互接続ライン（"Ｖタイプワイヤ"）（図示せず）等のルーティングリソースを含んでよい。
【００５９】
本開示の一実施形態によれば、ＦＰＧＡ８００は、セキュリティカーネル管理ユニット、セキュリティカーネルテーブルおよびメモリインタフェースを実装するためにプログラムされてよい。特に、ＦＰＧＡ８００は、オンチッププロセッサを含んでよく、またはセキュリティカーネル管理ユニット若しくはセキュリティカーネル管理ユニットによって生成されたカーネルに含まれる１または複数コンポーネントを実行するソフトプロセッサを実装するためのプログラマブルリソースを利用してよい。
【００６０】
以下の例は、さらなる実施形態に関するものである。ある実施形態において、コンピュータシステムはメモリを含む。コンピュータシステムはプロセッサを含む。コンピュータシステムは、メモリおよびプロセッサの外部に存在するプログラマブルセキュリティユニットを含み、プログラマブルセキュリティユニットは、プロセッサによって実行されるメモリ内のコードおよびそのコードによってアクセスされるメモリ内のデータを監視する。
【００６１】
さらなる実施形態において、プログラマブルセキュリティユニットは、コードおよびデータを監視するための手順を指定するためにユーザによって設定可能である。
【００６２】
さらなる実施形態において、手順は機械／深層学習の手順を含む。
【００６３】
さらなる実施形態において、プログラマブルセキュリティユニットは、コードおよびデータを監視するためのメモリ内のメモリ範囲を指定するために、ユーザによって設定可能である。
【００６４】
さらなる実施形態において、プログラマブルセキュリティユニットは、コードおよびデータを監視する場合に用られるメモリの帯域幅を制限するために、ユーザによって設定可能である。
【００６５】
さらなる実施形態において、プログラマブルセキュリティユニットは、コードおよびデータに含まれる脅威を検出することに応答して実行する動作を指定するために、ユーザによって設定可能である。
【００６６】
さらなる実施形態において、動作はプロセッサのオペレーティングシステムにシステム割り込みを送信することを含む。
【００６７】
さらなる実施形態において、動作はコードおよびデータに関連したアプリケーションに割り込みを送信することを含む。
【００６８】
さらなる実施形態において、プログラマブルセキュリティユニットはトンネルメモリアクセス手順を用いて、プロセッサを介してメモリにアクセスする。
【００６９】
さらなる実施形態において、プログラマブルセキュリティユニットは非コヒーレント読み取りを用いて、無効化の要求することなくまたはスヌーピングすることなく、メモリにアクセスする。
【００７０】
さらなる実施形態において、プログラマブルセキュリティユニットは複数のアプリケーションに対応したコードおよびデータを並行して監視する。
【００７１】
さらなる実施形態において、プログラマブルセキュリティユニットは、複数のアプリケーションの各々に対して、１）アプリケーションに対応したコードおよびデータを監視するために用られる手順、２）アプリケーションに対応するメモリ内のメモリ範囲、３）アプリケーションを監視するために用られるメモリの帯域幅の制限、並びに４）コードおよびデータに含まれる脅威を検出することに応答して実行する動作を指定するために、設定可能である。
【００７２】
さらなる実施形態において、プログラマブルセキュリティユニットはフィールドプログラマブルゲートアレイによって実装される。
【００７３】
他の実施形態では、非一時的コンピュータ可読媒体は複数の命令シーケンスを有し、複数の命令シーケンスは実行された場合にプロセッサに、システムセキュリティユニットを管理する方法を実行させる命令を含み、上記方法は、監視するためのアプリケーションを識別する段階を含む。アプリケーションに関連した登録情報は識別される。アプリケーションおよび登録情報は、アプリケーションを実行するプロセッサの外部に存在するプログラマブルセキュリティユニットに登録される。
【００７４】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションに対応したコードおよびデータを格納するメモリの範囲を識別する段階を含む。
【００７５】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションを監視するためのメモリアクセス帯域幅の制限を識別する段階を含む。
【００７６】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションを監視する手順を識別する段階を含む。
【００７７】
さらなる実施形態において、監視するためのアプリケーションおよび登録情報は、ユーザ、オペレーティングシステムおよびアプリケーションのうちの１つによって指定される。
【００７８】
さらなる実施形態において、上記方法は、プログラマブルセキュリティユニットによって、メモリコヒーレンシを要求することなくメモリへのアクセスを調整する段階をさらに備える。
【００７９】
他の実施形態では、プログラマブルセキュリティユニットは、外部プロセッサ上で実行され、外部メモリ上に格納されるアプリケーションに対応するコードを監視する、およびアプリケーションに関連し、外部メモリ上に格納されるデータを監視するカーネルを実行するプロセッサを含む。プログラマブルセキュリティユニットはまた、カーネルによって用られる外部メモリからの帯域幅の総量を制御するサービス品質帯域幅制御ユニットを含む。
【００８０】
さらなる実施形態において、プログラマブルセキュリティユニットはさらに、カーネルを生成するセキュリティ制御ユニットを含む。
【００８１】
さらなる実施形態において、セキュリティ制御ユニットは、コードおよびデータのためのメモリ範囲情報、コードおよびデータを監視するための手順のアイデンティティ並びにカーネルがコードおよびデータに含まれる脅威を検出することに応答して実行される動作を指定する動作情報を用いて、セキュリティカーネルテーブルを更新する。
【００８２】
さらなる実施形態において、プログラマブルセキュリティユニットはフィールドプログラマブル論理デバイスによって実装される。
【００８３】
他の実施形態では、プログラマブルセキュリティユニットは、外部プロセッサ上で実行され、外部メモリ上に格納されるアプリケーションに対応するコードを監視する、およびアプリケーションに関連し、外部メモリ上に格納されるデータを監視するカーネルを実行するプロセッサ手段を含む。プログラマブルセキュリティユニットはまた、カーネルによって用られる外部メモリからの帯域幅の総量を制御するサービス品質帯域幅制御手段を含む。
【００８４】
さらなる実施形態において、プログラマブルセキュリティユニットはさらに、カーネルを生成するセキュリティ制御手段を含む。
【００８５】
他の実施形態では、システムセキュリティユニットを管理する方法は、監視するアプリケーションを識別する段階を含む。アプリケーションに関連する登録情報は識別される。アプリケーションおよび登録情報は、アプリケーションを実行するプロセッサの外部に存在するプログラマブルセキュリティユニットに登録される。
【００８６】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションに対応したコードおよびデータを格納するメモリの範囲を識別する段階を含む。
【００８７】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションを監視するためのメモリアクセス帯域幅の制限を識別する段階を含む。
【００８８】
さらなる実施形態において、アプリケーションに関連する登録情報を識別する段階は、アプリケーションを監視するための手順を識別する段階を含む。
【００８９】
さらなる実施形態において、監視するアプリケーションおよび登録情報は、ユーザ、オペレーティングシステムおよびアプリケーションのうちの１つによって指定される。
【００９０】
さらなる実施形態において、方法はさらに、プログラマブルセキュリティユニットによって、メモリコヒーレンシを要求することなくメモリにアクセスすることを調整する段階を含む。
【００９１】
さらなる実施形態において、非一時的コンピュータ可読媒体は複数の命令シーケンスを有し、複数の命令シーケンスは、実行された場合にプロセッサに前の実施形態のいずれか１つの方法を実行させる命令を含む。
【００９２】
本開示の実施形態は、コンピュータプログラム製品または命令を有する機械アクセス可能媒体若しくは機械可読媒体上の製品を含み得るソフトウェアとして提供されてよい。機械アクセス可能媒体または機械可読媒体上の命令は、コンピュータシステムまたは他のエレクトロニクスデバイスをプログラムするために用られてよい。機械可読媒体は、限定されるものではないが、フロッピディスク、光ディスク、ＣＤ−ＲＯＭおよび磁気光ディスク、またはエレクトロニクス命令を格納または送信するために好適な他のタイプの媒体／機械可読媒体含んでよい。本明細書において説明される技術は任意の特定のソフトウェア構成に限定されるものではない。それらは任意のコンピューティング環境または処理環境において適用可能性を見い出し得る。本明細書において用られる「機械アクセス可能媒体」または「機械可読媒体」という用語は、機械によって実行するための一連の命令を格納またはエンコードすることが可能であり、本明細書において説明される方法のいずれか１つを機械に実行させる任意の媒体を含むものとする。さらに、ソフトウェアとは、当技術分野において一般的に、様々な形態（例えば、コード、プログラム、手順、プロセス、アプリケーション、モジュール、ユニット、ロジック、ブロック等）をとって実行するまたは結果を引き起こすものとして述べられる。このような表現は、処理システムによってソフトウェアを実行することによって、プロセッサに動作を実行させて結果を生成することができるということ述べるときの単なる省略表現の方法である。
【００９３】
上述の明細書において、本開示の実施形態が明細書中の特定の例示的な実施形態を参照して説明された。しかしながら、本開示の実施形態から逸脱することなく様々な修正および変更がここになされてよいことは明らかであろう。さらに、１または複数の開示された実施形態のいずれの箇所においても、示された例に含まれる詳細が用られてよいことが理解されるべきである。
【図１】
2019530066.tif 000003
【図２】
2019530066.tif 000004
【図３】
2019530066.tif 000005
【図４】
2019530066.tif 000006
【図５】
2019530066.tif 000007
【図６】
2019530066.tif 000008
【図７】
2019530066.tif 000009
【図８】
2019530066.tif 000010
【手続補正書】
【提出日】令和1年5月13日(2019.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリと、
プロセッサと、
前記メモリおよび前記プロセッサの外部に存在するプログラマブルセキュリティユニットと
を備え、
前記プログラマブルセキュリティユニットは、前記プロセッサによって実行される前記メモリ内のコードおよび前記コードによってアクセスされる前記メモリ内のデータを監視する、
コンピュータシステム。
【請求項２】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データを監視するための手順を指定するためにユーザによって設定可能である、請求項１に記載のコンピュータシステム。
【請求項３】
前記手順は機械／深層学習の手順を含む、請求項２に記載のコンピュータシステム。
【請求項４】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データを監視するための前記メモリ内のメモリ範囲を指定するために、ユーザによって設定可能である、請求項１から３のいずれか一項に記載のコンピュータシステム。
【請求項５】
前記プログラマブルセキュリティユニットは、前記コードおよびデータを監視する場合に用られる前記メモリの帯域幅を制限するために、ユーザによって設定可能である、請求項１から４のいずれか一項に記載のコンピュータシステム。
【請求項６】
前記プログラマブルセキュリティユニットは、前記コードおよび前記データに含まれる脅威を検出することに応答して実行する動作を指定するために、ユーザによって設定可能である、請求項１から５のいずれか一項に記載のコンピュータシステム。
【請求項７】
前記動作は前記プロセッサのオペレーティングシステムにシステム割り込みを送信することを含む、請求項６に記載のコンピュータシステム。
【請求項８】
前記動作は前記コードおよび前記データに関連したアプリケーションに割り込みを送信することを含む、請求項６または７に記載のコンピュータシステム。
【請求項９】
前記プログラマブルセキュリティユニットは、トンネルメモリアクセス手順を用いて、前記プロセッサを介して前記メモリにアクセスする、請求項１から８のいずれか一項に記載のコンピュータシステム。
【請求項１０】
前記プログラマブルセキュリティユニットは、非コヒーレント読み取りを用いて、無効化を必要とすることなくまたはスヌーピングすることなく、前記メモリにアクセスする、請求項９に記載のコンピュータシステム。
【請求項１１】
前記プログラマブルセキュリティユニットは、複数のアプリケーションに対応したコードおよびデータを並行して監視する、請求項１から１０のいずれか一項に記載のコンピュータシステム。
【請求項１２】
前記プログラマブルセキュリティユニットは、前記複数のアプリケーションの各々に対して、１）アプリケーションに対応したコードおよびデータを監視するために用いられる手順と、２）前記アプリケーションに対応する前記メモリ内のメモリ範囲と、３）前記アプリケーションを監視するために用いられる前記メモリの帯域幅の制限と、４）前記コードおよびデータに含まれる脅威を検出することに応答して実行する動作とを指定するために、設定可能である、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記プログラマブルセキュリティユニットはフィールドプログラマブルゲートアレイによって実装される、請求項１から１２のいずれか一項に記載のコンピュータシステム。
【請求項１４】
コンピュータに複数の命令シーケンスを実行させるコンピュータプログラムであって、
前記複数の命令シーケンスは、実行された場合にプロセッサにシステムセキュリティユニットを管理する方法を実行させる命令を含み、
前記方法は、
監視するアプリケーションを識別する段階と、
前記アプリケーションに関連する登録情報を識別する段階と、
前記アプリケーションおよび前記登録情報を、前記アプリケーションを実行するプロセッサの外部に存在するプログラマブルセキュリティユニットに登録する段階と
を備える、コンピュータプログラム。
【請求項１５】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションに対応したコードおよびデータを格納するメモリの範囲を識別する段階を含む、請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションを監視するためのメモリアクセス帯域幅の制限を識別する段階を含む、請求項１４または１５に記載のコンピュータプログラム。
【請求項１７】
前記アプリケーションに関連する前記登録情報を識別する段階は、前記アプリケーションを監視するための手順を識別する段階を含む、請求項１４から１６のいずれか一項に記載のコンピュータプログラム。
【請求項１８】
前記監視するアプリケーションおよび前記登録情報は、ユーザ、オペレーティングシステムおよび前記アプリケーションのうちの１つによって指定される、請求項１４から１７のいずれか一項に記載のコンピュータプログラム。
【請求項１９】
前記方法は、メモリコヒーレンシを必要とすることなく、前記プログラマブルセキュリティユニットによるメモリへのアクセスを調整する段階をさらに備える、請求項１４から１８のいずれか一項に記載のコンピュータプログラム。
【請求項２０】
請求項１４から１９のいずれか一項に記載のコンピュータプログラムを格納する非一時的コンピュータ可読媒体。
【請求項２１】
外部プロセッサ上で実行され、外部メモリ上に格納されるアプリケーションに対応するコードを監視するカーネルであって、前記アプリケーションに関連し、前記外部メモリに格納されるデータを監視するカーネルを実行するプロセッサと、
前記カーネルによって用いられる前記外部メモリからの帯域幅量を制御するサービス品質帯域幅制御ユニットと
を備える、プログラマブルセキュリティユニット。
【請求項２２】
前記カーネルを生成するセキュリティ制御ユニットをさらに備える、請求項２１に記載のプログラマブルセキュリティユニット。
【請求項２３】
前記セキュリティ制御ユニットは、前記コードおよび前記データのためのメモリ範囲情報、前記コードおよび前記データを監視するための手順のアイデンティティ並びに前記カーネルが前記コードおよび前記データに含まれる脅威を検出することに応答して実行する動作を指定する動作情報を用いて、セキュリティカーネルテーブルを更新する、請求項２２に記載のプログラマブルセキュリティユニット。
【請求項２４】
前記プログラマブルセキュリティユニットはフィールドプログラマブル論理デバイスによって実装される、請求項２１から２３のいずれか一項に記載のプログラマブルセキュリティユニット。
【請求項２５】
外部プロセッサ上で実行され、外部メモリに格納されるアプリケーションに対応するコードを監視するカーネルであって、前記アプリケーションに関連し、前記外部メモリに格納されるデータを監視するカーネルを実行するプロセッサ手段と、
前記カーネルによって用られる前記外部メモリからの帯域幅量を制御するサービス品質帯域幅制御手段と
を備える、プログラマブルセキュリティユニット。
【請求項２６】
前記カーネルを生成するセキュリティ制御手段をさらに備える、請求項２５に記載のプログラマブルセキュリティユニット。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
周辺機器１０４は、Ｉ／Ｏサブシステム１１０に結合される。周辺機器１０４は、通信およびディスプレイをサポートするデバイス等の、様々なＩ／Ｏデバイスを含んでよい。周辺機器１０４は、ディスプレイおよびタッチスクリーン、ボタン、スイッチ、キーボード、マウス、スピーカ、マイク、および／または他の周辺機器を含んでよい。ネットワークコントローラ１０５は、Ｉ／Ｏサブシステム１１０に結合される。ネットワークコントローラ１０５は、コンピュータシステム１００を複数のコンピュータのネットワーク（図示せず）に連結させて、機械間の通信をサポートしてよい。コンピュータシステム１００を実装するために、異なるアーキテクチャを有する、または異なるコンポーネントを有するコンピューティングデバイスが用られてもよいことを理解されるべきである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
図４および５は、本開示の実施形態を示すフロー図である。これらの図において説明される手順は、プロセッサ上で実行されるソフトウェアによって、ハードウェアコンポーネントによって、またはハードウェアおよびソフトウェアの組み合わせによって実行されてよい。図示されるいくつかの技術は、連続して実行されてよく、並行して実行されてよく、または説明される順序および説明される手順が繰り返される順序とは別の順序で実行されてよい。説明される全ての技術が実行されるために必要であるというわけではなく、追加の技術が加わってもよく、そしていくつかの図示される技術は他の技術に代用されてよいということが理解される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
図８は、本開示の例示的な実施形態によるプログラマブルセキュリティユニットを実装するために用られる例示的なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を図示したものである。ＦＰＧＡ８００は、図２に図示されるプログラマブルセキュリティユニット２２０を実装するために用られてよい。ＦＰＧＡ８００は複数のロジックアレイブロック（ＬＡＢ）を含む。本開示の一実施形態によれば、ＦＰＧＡ８００は単一集積回路上に実装されてよい。各ＬＡＢは、複数のロジックブロック、搬送チェーン、ＬＡＢ制御信号、ルックアップ表（ＬＵＴ）チェーン、および登録チェーン接続ラインから形成されてよい。ロジックブロックは、ユーザロジック機能のうち効率的な実装形態を提供するロジックのスモールユニットである。ロジックブロックは、１または複数の組合せセルおよびレジスターを含み、各組合せセルは単一の出力を有する。本開示の一実施形態によれば、ロジックブロックは、現在インテルコーポレーションによって所有されるＡｌｔｅｒａコーポレーションによって製造されるＳｔｒａｔｉｘデバイスまたはＣｙｃｌｏｎｅデバイスに見られるもののようなロジック要素（ＬＥ）と同様の動作をしてよい。ＬＡＢはデバイス９００を横切るように行及び列へグループ化される。ＬＡＢの列は８１１−８１６として示される。ここで、ロジックブロックは追加のコンポーネント または代替的なコンポーネントを含んでよいことが理解されるべきである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
ＦＰＧＡ８００は複数の入力／出力要素（ＩＯＥ）８４０を含む。各ＩＯＥはＦＰＧＡ８００上にＩＯピン（図示せず）を供給する。ＩＯＥ８４０は、ＦＰＧＡ８００の外周を取り囲む最後のＬＡＢの行及び列に配置される。各ＩＯＥは、入力、出力、および出力可能信号を登録するために双方向ＩＯバッファおよび複数のレジスターを含んでよい。
【国際調査報告】
2019530066.tif 000011
2019530066.tif 000012
2019530066.tif 000013