IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クゥアルコム・インコーポレイテッドの特許一覧

特表2024-504934改善されたデバイスセキュリティのための命令摂動のための技法
<>
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図1
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図2
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図3
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図4
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図5
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図6
  • 特表-改善されたデバイスセキュリティのための命令摂動のための技法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-02
(54)【発明の名称】改善されたデバイスセキュリティのための命令摂動のための技法
(51)【国際特許分類】
   G06F 9/38 20180101AFI20240126BHJP
   G06F 9/30 20180101ALI20240126BHJP
【FI】
G06F9/38 310Y
G06F9/30 310B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023542768
(86)(22)【出願日】2021-11-30
(85)【翻訳文提出日】2023-07-13
(86)【国際出願番号】 US2021061207
(87)【国際公開番号】W WO2022164505
(87)【国際公開日】2022-08-04
(31)【優先権主張番号】17/160,769
(32)【優先日】2021-01-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】クリシュナスワミー、アルビンド
(72)【発明者】
【氏名】ベンクマハンティ、スレシュ・クマー
(72)【発明者】
【氏名】タボニー、チャールズ
【テーマコード(参考)】
5B013
5B033
【Fターム(参考)】
5B013AA12
5B013AA20
5B033BA01
(57)【要約】
改善されたデバイスセキュリティのための命令摂動のための技法のための方法、システム、およびデバイスが説明される。デバイスが、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当て得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しないことがある。本デバイスは、本デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択し得、実行可能命令のセットの各実行可能命令は、本デバイスのメモリに関連するそれぞれのスロットに対応し得る。本デバイスは、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更し、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理し得る。
【選択図】図2
【特許請求の範囲】
【請求項1】
デバイスにおける方法であって、
命令パケットに関連するパラメータに少なくとも部分的に基づいて、実行可能命令のセットを前記命令パケットに割り当てることと、実行可能命令の前記セットの各実行可能命令は、実行可能命令の前記セットのうちの他の実行可能命令に依存しない、
前記デバイスに関連するスロット命令ルールに少なくとも部分的に基づいて、実行可能命令の前記セットの順序を選択することと、実行可能命令の前記セットの各実行可能命令は、前記デバイスのメモリに関連するそれぞれのスロットに対応する、
前記スロット命令ルールに少なくとも部分的に基づいて、メモリ階層ポストプリデコードにおける実行可能命令の前記セットの前記順序を変更することと、
前記変更された順序に少なくとも部分的に基づいて、前記命令パケットの実行可能命令の前記セットを処理することと、
を備える、方法。
【請求項2】
初期順序に少なくとも部分的に基づいて、前記デバイスに関連する第1のメモリから、実行可能命令の前記セットを受信することと、
前記変更された順序に少なくとも部分的に基づいて、前記デバイスに関連する第2のメモリに、実行可能命令の前記セットを送信することと、
をさらに備える、請求項1に記載の方法。
【請求項3】
実行可能命令の前記セットに少なくとも部分的に基づいて、前記命令パケットのパケットサイズを選択することと、
前記命令パケットの前記選択されたパケットサイズに少なくとも部分的に基づいて、実行可能命令の前記セットを前記命令パケットに割り当てることと、
をさらに備える、請求項1に記載の方法。
【請求項4】
実行可能命令の前記セットの前記順序を変更することは、
実行可能命令の前記セットの第1の順序を選択することと、
実行可能命令の前記セットの前記第1の順序に少なくとも部分的に基づいて、実行可能命令の前記セットのうちの少なくとも1つの実行可能命令が前記スロット命令ルールに違反すると決定することと、
実行可能命令の前記セットのうちの前記少なくとも1つの実行可能命令が前記スロット命令ルールに違反したことに応答して、前記第1の順序に少なくとも部分的に基づいて前記命令パケットの実行可能命令の前記セットを処理することを控えることと、
を備える、請求項1に記載の方法。
【請求項5】
実行可能命令の前記セットのうちの前記少なくとも1つの実行可能命令が前記スロット命令ルールに違反すると決定することに少なくとも部分的に基づいて、実行可能命令の前記セットの第2の順序を選択することと、
実行可能命令の前記セットの前記第2の順序に少なくとも部分的に基づいて、実行可能命令の前記セットの各実行可能命令が前記スロット命令ルールを満たすと決定することと、
実行可能命令の前記セットの各実行可能命令が前記スロット命令ルールを満たしたことに応答して、前記第2の順序に少なくとも部分的に基づいて前記命令パケットの実行可能命令の前記セットを処理することと、
をさらに備える、請求項4に記載の方法。
【請求項6】
実行可能命令の前記セットの各実行可能命令が、前記デバイスの前記メモリに関連する有効なそれぞれのスロットに対応すると決定すること、
をさらに備え、
実行可能命令の前記セットのための前記順序を選択することは、実行可能命令の前記セットの各実行可能命令が、前記デバイスの前記メモリに関連する前記有効なそれぞれのスロットに対応すると決定することに少なくとも部分的に基づく、
請求項1に記載の方法。
【請求項7】
ランダム化パラメータに少なくとも部分的に基づいて、実行可能命令の前記セットのうちの実行可能命令のサブセットを処理すること、
をさらに備える、請求項1に記載の方法。
【請求項8】
実行可能命令の前記セットを処理することは、
前記デバイスに関連する1つまたは複数のプロセッサ上で実行可能命令の前記セットを実行すること、
を備える、請求項1に記載の方法。
【請求項9】
前記1つまたは複数のプロセッサは、可変長プロセッサ、または超長命令語プロセッサ、またはそれらの組合せを備える、請求項8に記載の方法。
【請求項10】
前記スロット命令ルールは、スロットによってサポートされる1つまたは複数の命令タイプの指示を備える、請求項1に記載の方法。
【請求項11】
前記パラメータは、前記命令パケットのパケットサイズを識別するパケットサイズパラメータを備える、請求項1に記載の方法。
【請求項12】
実行可能命令の前記セットは、インターロックパイプライン化ステージ命令の不在を備える、請求項1に記載の方法。
【請求項13】
実行可能命令の前記セットは、命令パケットごとの実行可能命令のしきい値数よりも少数の実行可能命令を備える、請求項1に記載の方法。
【請求項14】
プロセッサと、
前記プロセッサと結合されたメモリと、
前記メモリに記憶された命令と、
を備える、装置であって、前記命令は、前記装置に、
命令パケットに関連するパラメータに少なくとも部分的に基づいて、実行可能命令のセットを前記命令パケットに割り当てることと、実行可能命令の前記セットの各実行可能命令は、実行可能命令の前記セットのうちの他の実行可能命令に依存しない、
デバイスに関連するスロット命令ルールに少なくとも部分的に基づいて、実行可能命令の前記セットの順序を選択することと、実行可能命令の前記セットの各実行可能命令は、前記デバイスのメモリに関連するそれぞれのスロットに対応する、
前記スロット命令ルールに少なくとも部分的に基づいて、メモリ階層ポストプリデコードにおける実行可能命令の前記セットの前記順序を変更することと、
前記変更された順序に少なくとも部分的に基づいて、前記命令パケットの実行可能命令の前記セットを処理することと、
を行わせるために前記プロセッサによって実行可能である、装置。
【請求項15】
前記命令は、前記装置に、
初期順序に少なくとも部分的に基づいて、前記デバイスに関連する第1のメモリから、実行可能命令の前記セットを受信することと、
前記変更された順序に少なくとも部分的に基づいて、前記デバイスに関連する第2のメモリに、実行可能命令の前記セットを送信することと、
を行わせるために前記プロセッサによってさらに実行可能である、請求項14に記載の装置。
【請求項16】
前記命令が、前記装置に、
実行可能命令の前記セットに少なくとも部分的に基づいて、前記命令パケットのパケットサイズを選択することと、
前記命令パケットの前記選択されたパケットサイズに少なくとも部分的に基づいて、実行可能命令の前記セットを前記命令パケットに割り当てることと、
を行わせるために前記プロセッサによってさらに実行可能である、請求項14に記載の装置。
【請求項17】
実行可能命令の前記セットの前記順序を変更するための前記命令は、前記装置に、
実行可能命令の前記セットの第1の順序を選択することと、
実行可能命令の前記セットの前記第1の順序に少なくとも部分的に基づいて、実行可能命令の前記セットのうちの少なくとも1つの実行可能命令が前記スロット命令ルールに違反すると決定することと、
実行可能命令の前記セットのうちの前記少なくとも1つの実行可能命令が前記スロット命令ルールに違反したことに応答して、前記第1の順序に少なくとも部分的に基づいて前記命令パケットの実行可能命令の前記セットを処理することを控えることと、
を行わせるために前記プロセッサによって実行可能である、請求項14に記載の装置。
【請求項18】
前記命令は、前記装置に、
実行可能命令の前記セットのうちの前記少なくとも1つの実行可能命令が前記スロット命令ルールに違反すると決定することに少なくとも部分的に基づいて、実行可能命令の前記セットの第2の順序を選択することと、
実行可能命令の前記セットの前記第2の順序に少なくとも部分的に基づいて、実行可能命令の前記セットの各実行可能命令が前記スロット命令ルールを満たすと決定することと、
実行可能命令の前記セットの各実行可能命令が前記スロット命令ルールを満たしたことに応答して、前記第2の順序に少なくとも部分的に基づいて前記命令パケットの実行可能命令の前記セットを処理することと、
を行わせるために前記プロセッサによってさらに実行可能である、請求項17に記載の装置。
【請求項19】
前記命令は、前記装置に、
実行可能命令の前記セットの各実行可能命令が、前記デバイスの前記メモリに関連する有効なそれぞれのスロットに対応すると決定すること、
を行わせるために前記プロセッサによってさらに実行可能であり、
実行可能命令の前記セットのための前記順序を選択するための前記命令は、前記装置に、実行可能命令の前記セットの各実行可能命令が、前記デバイスの前記メモリに関連する前記有効なそれぞれのスロットに対応すると決定することに少なくとも部分的に基づかせるために前記プロセッサによってさらに実行可能である、請求項14に記載の装置。
【請求項20】
命令パケットに関連するパラメータに少なくとも部分的に基づいて、実行可能命令のセットを前記命令パケットに割り当てるための手段と、実行可能命令の前記セットの各実行可能命令は、実行可能命令の前記セットのうちの他の実行可能命令に依存しない、
デバイスに関連するスロット命令ルールに少なくとも部分的に基づいて、実行可能命令の前記セットの順序を選択するための手段と、実行可能命令の前記セットの各実行可能命令は、前記デバイスのメモリに関連するそれぞれのスロットに対応する、

前記スロット命令ルールに少なくとも部分的に基づいて、メモリ階層ポストプリデコードにおける実行可能命令の前記セットの前記順序を変更するための手段と、
前記変更された順序に少なくとも部分的に基づいて、前記命令パケットの実行可能命令の前記セットを処理するための手段と、
を備える、装置。
【発明の詳細な説明】
【優先権の主張】
【0001】
相互参照
[0001]本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2021年1月28日に出願された「TECHNIQUES FOR INSTRUCTION PERTURBATION FOR IMPROVED DEVICE SECURITY」と題するKRISHNASWAMYらによる米国特許出願第17/160,769号の利益を主張する。
【技術分野】
【0002】
[0002]以下は、改善されたデバイスセキュリティのための命令摂動(instruction perturbation)のための技法を含む、命令処理に関する。
【背景技術】
【0003】
[0003]いくつかのシステムは、音声、ビデオ、パケットデータ、メッセージング、ブロードキャストなど、様々なタイプのコンテンツを提供するために広く展開され得る。これらのシステムは、情報の処理、記憶、生成、操作および解釈が可能であり得る。そのようなシステムの例は、エンターテインメントシステム、情報システム、仮想現実システム、モデルおよびシミュレーションシステムなどを含み得る。これらのシステムは、たとえば、キャプチャデバイス、ストレージデバイス、通信ネットワーク、コンピュータシステム、およびディスプレイデバイスなど、情報の処理、記憶、生成、操作および解釈をサポートするためのハードウェア技術とソフトウェア技術との組合せを採用し得る。システムは、実行可能命令を処理する1つまたは複数のデバイスを含み得る。たとえば、いくつかのシステムは、言語コンパイラが、命令を、並列に実施され得る基本動作に分割し得る、コンピュータ処理アーキテクチャをサポートする超長命令語(VLIW)プロセッサを含み得る。
【発明の概要】
【0004】
[0004]説明される技法は、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする、改善された方法、システム、デバイス、および装置に関する。概して、説明される技法は、実行可能命令に摂動を与える(perturbing)こと(たとえば、変更すること、シャッフルすること、ランダム化することなど)を提供する。たとえば、デバイスが、第1の順序(たとえば、仮想メモリアドレスマッピングへの第1の実行可能命令)に対応する実行可能命令のセットを識別することと、摂動を与えられた実行可能命令が第2の順序(たとえば、仮想メモリアドレスマッピングへの第2の実行可能命令)に対応するように、ランダムまたは擬似ランダム様式で、実行可能命令に摂動を与えることと、第2の順序に基づいて実行可能命令を処理することとを行い得る。
【0005】
[0005]デバイスプロセッサが、実行可能命令を処理(たとえば、実行)し得、プロセッサは、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、超長命令語(VLIW)プロセッサなどの態様と見なされるか、またはそれらを含み得る。上記で説明されたプロセッサは例であり、本明細書で説明されるデバイスプロセッサの態様はそれに限定されない。本デバイスに関連するコンパイラは、実行可能命令のセットを含んでいる命令パケットを生成し得、本デバイスに関連するプロセッサは、変更された順序に従って実行可能命令のセットを処理し得る。
【0006】
[0006]たとえば、本デバイスは、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当て得る。セットの各実行可能命令は、セットのうちの他の実行可能命令に依存しないことがある。パラメータは、本デバイスによってサポートされるパケットサイズに対応し得る。本デバイスは、本デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択し得、セットの各実行可能命令は、本デバイスのメモリに関連するそれぞれのスロットに対応し得る。いくつかの場合には、スロット命令ルールは、異なるスロットによってサポートされる命令のタイプを示し得る。本デバイスは、スロット命令ルールに基づいてメモリ階層ポストプリデコード(memory hierarchy post pre-decode)における実行可能命令のセットの順序を変更し、変更された順序に基づいて、実行可能命令のセットを処理し得る。
【0007】
[0006]方法が説明される。本方法は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てること、実行可能命令のセットの各実行可能命令が、実行可能命令のセットのうちの他の実行可能命令に依存しない、と、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択すること、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連するそれぞれのスロットに対応する、と、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することと、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することと、を含み得る。
【0008】
[0007]装置が説明される。本装置は、プロセッサと、プロセッサと電子通信しているメモリと、メモリに記憶された命令とを含み得る。命令は、本装置に、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てること、実行可能命令のセットの各実行可能命令が、実行可能命令のセットのうちの他の実行可能命令に依存しない、と、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択すること、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連するそれぞれのスロットに対応する、と、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することと、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することとを行わせるためにプロセッサによって実行可能であり得る。
【0009】
[0008]別の装置が説明される。本装置は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てるための手段、実行可能命令のセットの各実行可能命令が、実行可能命令のセットのうちの他の実行可能命令に依存しない、と、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択するための手段、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連するそれぞれのスロットに対応する、と、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更するための手段と、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理するための手段とを含み得る。
【0010】
[0009]コードを記憶する非一時的コンピュータ可読媒体が説明される。コードは、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てること、実行可能命令のセットの各実行可能命令が、実行可能命令のセットのうちの他の実行可能命令に依存しない、と、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択すること、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連するそれぞれのスロットに対応する、と、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することと、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することと、を行うためにプロセッサによって実行可能な命令を含み得る。
【0011】
[0010]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、実行可能命令のセットに基づいて、命令パケットのパケットサイズを選択することと、命令パケットの選択されたパケットサイズに基づいて、実行可能命令のセットを命令パケットに割り当てることとを行うための動作、特徴、手段、または命令をさらに含み得る。
【0012】
[0011]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、実行可能命令のセットの順序を変更することは、実行可能命令のセットの第1の順序を選択することと、実行可能命令のセットの第1の順序に基づいて、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定することと、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反したことに応答して、第1の順序に基づいて命令パケットの実行可能命令のセットを処理することを控える(やめる、refrain)ことと、を行うための動作、特徴、手段、または命令を含み得る。
【0013】
[0012]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定することに基づいて、実行可能命令のセットの第2の順序を選択することと、実行可能命令のセットの第2の順序に基づいて、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たすと決定することと、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たしたことに応答して、第2の順序に基づいて命令パケットの実行可能命令のセットを処理することと、を行うための動作、特徴、手段、または命令をさらに含み得る。
【0014】
[0013]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効な(valid)それぞれのスロットに対応すると決定するための動作、特徴、手段、または命令をさらに含み得、ここで、実行可能命令のセットのための順序を選択することは、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効なそれぞれのスロットに対応すると決定することに基づき得る。
【0015】
[0014]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、初期順序に基づいて、デバイスに関連する第1のメモリキャッシュから、実行可能命令のセットを受信することと、変更された順序に基づいて、デバイスに関連する第2のメモリキャッシュに、実行可能命令のセットを送信することとを行うための動作、特徴、手段、または命令をさらに含み得る。
【0016】
[0015]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、ランダム化パラメータに基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理するための動作、特徴、手段、または命令をさらに含み得る。
【0017】
[0016]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例は、スタックフレームに関連する割り当てられた乱数が変更され得ると決定することと、決定することに基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理することを終了することとを行うための動作、特徴、手段、または命令をさらに含み得る。
【0018】
[0017]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、実行可能命令のセットを処理することは、デバイスに関連する1つまたは複数のプロセッサ上で実行可能命令のセットを実行するための動作、特徴、手段、または命令を含み得る。
【0019】
[0018]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、1つまたは複数のプロセッサは、可変長プロセッサ、超長命令語プロセッサ、またはHexagonプロセッサ、あるいはそれらの組合せを含む。
【0020】
[0019]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、スロット命令ルールは、スロットによってサポートされ得る1つまたは複数の命令タイプの指示を含む。
【0021】
[0020]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、パラメータは、命令パケットのパケットサイズを識別するパケットサイズパラメータを含む。
【0022】
[0021]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、実行可能命令のセットは、インターロックパイプライン化ステージ命令(interlocked pipelined stages instruction)の不在を含む。
【0023】
[0022]本明細書で説明される方法、装置、および非一時的コンピュータ可読媒体のいくつかの例では、実行可能命令のセットは、命令パケットごとの実行可能命令のしきい値数よりも少数の実行可能命令を含む。
【図面の簡単な説明】
【0024】
図1】[0023]本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートするシステムの一例を示す図。
図2】[0024]本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする命令処理技法の一例を示す図。
図3】[0025]本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートするデバイスのブロック図。
図4】[0026]本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートするデバイスを含むシステムの図。
図5】[0027]本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法を示すフローチャート。
図6】本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法を示すフローチャート。
図7】本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法を示すフローチャート。
【発明を実施するための形態】
【0025】
[0028]本開示の様々な態様は、デバイス悪用(exploitation)のリスクをなくすかまたは低減するために、実行可能命令に摂動を与える(たとえば、シャッフルする)ための技法に関する。たとえば、ユーザ(たとえば、ハッカー、攻撃者、非道なユーザなど)は、改変された順序(order)に従って実行可能命令を処理することの結果として、所望のデバイス状態が達成されるように、実行可能命令処理の順序を改変すること(たとえば、コード再使用攻撃)によって、デバイスを悪用し(exploit)得る。ユーザは、デバイスが、所望のデバイス状態を生じる特定の実行可能命令を処理するように、異なる実行可能命令(たとえば、コードフラグメント)について実際のまたは可能性があるアドレス(たとえば、物理的メモリアドレスまたは仮想メモリアドレス)を決定し、デバイスを操作(たとえば、バッファオーバーフローを実施)し得る。
【0026】
[0029]プロセッサ(たとえば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、超長命令語(VLIW)プロセッサなど)が、コード再使用攻撃を妨害し、デバイスセキュリティを改善するために、変更された順序に基づいて命令を実行するかまたはさもなければ実施し得る。デバイスに関連するコンパイラが、実行可能命令のセットを含んでいる命令パケットを生成し得、命令パケット中に含まれる実行可能命令は、命令パケットの一部である他の実行可能命令に、部分的にまたは完全に依存しないことがある。デバイスは、実行可能命令のセットのための新しい順序または変更された順序を作成するために、実行可能命令のセットに摂動を与え(たとえば、シャッフルし)得、プロセッサは、摂動を与えられた実行可能命令に従って実行可能命令のセットを実行し得る。いくつかの場合には、実行可能命令の順序は、実行可能命令の更新された順序がスロット命令ルールを満たすように変更され得る。たとえば、いくつかのプロセッサは、たとえば、どのタイプの命令が1つまたは複数のスロットに割り当てられ得るかを記述する、スロット命令ルール(たとえば、制約のセット)を指定するかまたはそれに関連し得る。
【0027】
[0030]本明細書で説明される技法は、(たとえば、大きい定数のバッファがローカルメモリの容量を超える場合)動的にインデックス付けされた定数のより効率的な実装を提供し得る。そのような技法は、非ローカルメモリ(たとえば、外部メモリ)から、動的にインデックス付けされた定数を取り出すことに関連するオーバーヘッドレイテンシなどを低減するかまたはなくし得、これは、シェーダ実行を改善し(たとえば、ランタイム効率を改善する、リソース制約を低減する)、および/または性能を改善し得る(たとえば、リソース利用を改善する、システムレイテンシを減少させる、非ローカルメモリから取り出される定数の数を低減する、並列スレッド処理中断を低減する)。
【0028】
[0031]本開示の態様は、最初に、システムのコンテキストにおいて説明される。本開示の態様は、さらに、改善されたデバイスセキュリティのための命令摂動(instruction perturbation)のための技法に関する装置図、システム図、およびフローチャートによって示され、それらを参照しながら説明される。
【0029】
[0032]図1は、本開示の態様による、命令摂動のための技法をサポートするデバイスのためのシステム100を示す。システム100は、デバイス105と、サーバ110と、データベース115とを含み得る。システム100は、2つのデバイス105と、単一のサーバ110と、単一のデータベース115と、単一のネットワーク120とを示すが、本開示は、1つまたは複数の、デバイス105と、サーバ110と、データベース115と、ネットワーク120とを有する任意のシステムアーキテクチャに適用される。デバイス105と、サーバ110と、データベース115とは、互いと通信し、通信リンク125を使用してネットワーク120を介して、パケット、データ、または制御情報など、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする情報を交換し得る。いくつかの場合には、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする、本明細書で説明される技法の一部または全部は、デバイス105またはサーバ110、あるいはその両方によって実施され得る。
【0030】
[0033]プロセッサマネージャ135を実装するデバイス105は、命令を、一度に1つの命令パケットずつ、実行し得る。各命令パケットは、複数の依存しない(独立した)命令を含み得、各命令間に依存性がないので、それらの命令は、本明細書で説明されるデバイス105のプロセッサのための高い性能を達成するために並列に実行され得る。いくつかの場合には、デバイス105のプロセッサに関連するコンパイラが、依存しない命令を識別し、それらの命令をこれらの命令パケット中にスケジュールし得る。たとえば、4ワイド(4 wide)命令パケットアーキテクチャの場合、コンパイラは、各パケットにおいて最高4つの依存しない命令をスケジュールし得る。コンパイラが各サイクルについて4つの依存しない命令を見つけることが可能でないことがあるので、デバイス105は、可変長パケット、たとえば、1~4命令ワイド(1 to 4 instructions wide)をサポートし得る。これは、並列実行からの性能をも得ながら、コードのコンパクトな表現を可能にする。
【0031】
[0034]例として、デバイス105は、[A、B、C、D]として4つの命令によって示される命令パケットを有し得る。2つのポップと1つのリターンとの例示的なコードガジェット(code gadget)が、シーケンス[B、C、D]に対応し得る。コードガジェットを再使用するために探索する攻撃者(たとえば、別のデバイス105)が、プログラム状態を改変し得る他の命令を実行しないように慎重でなければならない。これは、攻撃者(たとえば、別のデバイス105)が、Bが存在するパケット中のアドレス(またはスロット2)にジャンプし、実行し始めなければならないことがあることを意味する。言い換えれば、攻撃者(たとえば、別のデバイス105)は、命令パケットの中間にジャンプしなければならない。すべての4つの命令(たとえば、[A、B、C、D])が互いに依存しないので、デバイス105(たとえば、デバイス105のプロセッサ)は、メモリにおいて、各命令を任意の順序で配置し得、実行した。
【0032】
[0035]たとえば、以下の順序[A、B、C、D]に従って命令を実行する代わりに、デバイス105は(たとえば、デバイス105のプロセッサを介して)、順序を[B、A、D、C]に変換し得る。攻撃者(たとえば、別のデバイス105)は、スロット2におけるパケットの中間にジャンプし、攻撃者(たとえば、別のデバイス105)が予想しているものでない[A、D、C]を実行し始めることになり、これは、悪意のある攻撃を中断させることになる。すなわち、パケット中の既存の命令の順序が、現在、攻撃者が予想しているものとは異なるので、攻撃は中断させられる。したがって、攻撃者が、パケット中のスロット3に対応する仮想アドレスにおいて命令を実行することを試みるとき、命令の異なるセットが実行することになる。デバイス105は、ランタイムにおいてそのようなランダム摂動を実施し、シーケンスが実行されるたびに異なる順序を選び、攻撃者が、個々のコードガジェットの厳密なロケーションを知ることを困難にし、それにより、攻撃を妨害するように構成され得る。
【0033】
[0036]デバイス105は、データ実行可能命令に関係する様々なタイプの通信および機能的特徴(たとえば、データ実行可能命令を送信、受信、ブロードキャスト、ストリーミング、シンク、キャプチャ、記憶、および記録すること)をサポートする、セルラーフォン、スマートフォン、携帯情報端末(PDA)、ワイヤレス通信デバイス、ハンドヘルドデバイス、タブレットコンピュータ、ラップトップコンピュータ、コードレスフォン、ディスプレイデバイス(たとえば、モニタ)などであり得る。デバイス105は、追加または代替として、当業者によって、ユーザ機器(UE)、ユーザデバイス、スマートフォン、Bluetooth(登録商標)デバイス、Wi-Fi(登録商標)デバイス、移動局、加入者局、モバイルユニット、加入者ユニット、ワイヤレスユニット、リモートユニット、モバイルデバイス、ワイヤレスデバイス、ワイヤレス通信デバイス、リモートデバイス、アクセス端末、モバイル端末、ワイヤレス端末、リモート端末、ハンドセット、ユーザエージェント、モバイルクライアント、クライアント、および/または何らかの他の好適な用語と呼ばれることもある。いくつかの場合には、デバイス105は、(たとえば、ピアツーピア(P2P)またはデバイスツーデバイス(D2D)プロトコルを使用して)別のデバイスと直接通信することも可能であり得る。たとえば、デバイス105は、命令またはコマンドなど、様々な情報を、別のデバイス105から受信すること、または別のデバイス105に送信することが可能であり得る。
【0034】
[0037]デバイス105は、アプリケーション130とプロセッサマネージャ135とを含み得る。システム100は、アプリケーション130とプロセッサマネージャ135の両方を含むデバイス105を示すが、アプリケーション130とプロセッサマネージャ135とは、デバイス105のための随意の特徴であり得る。いくつかの場合には、アプリケーション130は、サーバ110、データベース115または別のデバイス105から受信(たとえば、ダウンロード、ストリーム、ブロードキャスト)すること、あるいはサーバ110、データベース115に、または、通信リンク125を使用することを介して別のデバイス105に、データを送信(たとえば、アップロード)することができるアプリケーションであり得る。
【0035】
[0038]プロセッサマネージャ135は、汎用プロセッサ、DSP、画像信号プロセッサ(ISP)、CPU、GPU、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別ゲートもしくはトランジスタ論理構成要素、個別ハードウェア構成要素、VLIW、またはそれらの任意の組合せ、あるいは、他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本開示で説明される機能を実施するように設計されたそれらの任意の組合せなどの一部であり得る。たとえば、プロセッサマネージャ135は、デバイス105のローカルメモリまたはデータベース115からの、データ(たとえば、画像データ、ビデオデータ、オーディオデータ)またはデータ実行可能命令を処理する、および/あるいは、デバイス105のローカルメモリまたはデータベース115に、データまたはデータ実行可能命令を書き込み得る。
【0036】
[0039]プロセッサマネージャ135を実装するデバイス105が、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当て得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。プロセッサマネージャ135を実装するデバイス105は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択し得、実行可能命令のセットの各実行可能命令は、デバイス105のメモリに関連するそれぞれのスロットに対応し得る。
【0037】
[0040]プロセッサマネージャ135を実装するデバイス105は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更し、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理し得る。本明細書で説明される技法は、コード再使用攻撃を低減するかまたはなくし、デバイスセキュリティを改善し得る。さらに、本明細書で説明される技法は、デバイス105の動作に利益と拡張とを提供し得る。たとえば、部分的命令プリコーディングに基づいて命令に摂動を与えることによって、デバイス105の電力消費および動作ランタイムなどの動作特性は低減され得る。
【0038】
[0041]図1の例では、デバイス105は、命令を含むシステムメモリを含み得、命令は、デバイス105のプロセッサのローカルメモリ(たとえば、キャッシュ)にロードされ得る。いくつかの場合には、コンパイラが、パケット中の他の実行可能命令に部分的にまたは完全に依存しない、実行可能命令のセットを含んでいる命令パケットを生成し得る。いくつかの例では、プロセッサアーキテクチャは、4つの命令の命令長さに関連し得、プロセッサは、クロックサイクルごとに4つの命令を実行し得る。いくつかの例では、命令長さは固定であり得(たとえば、4つの命令)、いくつかの他の例では、命令長さは、可変(たとえば、最高4つの命令)であり得る。クロックサイクルごとに複数の命令を処理することは、並列化された実施をも提供しながら、コードのコンパクトな表現をサポートし得る。
【0039】
[0042]実行可能命令のセットは、プリコーディングステップに基づいて摂動を与えられ得る。たとえば、L1キャッシュフィル(cache fill)が行われるとき、命令摂動が行われ得、摂動は、各命令パケットについてランダムまたは擬似ランダムであり得る。L1キャッシュがフィルされ(fill)たとき、あらゆる命令パケットについてプリコーダによって決定された有効な並べ替え(permutations)間でランダムに選定するために、ハードウェア乱数生成器が使用され得る。アドレス空間レイアウトランダム化技法は、プログラムがロードされる仮想メモリにおけるコードセグメントのロケーションをランダム化するためにプログラムローダを活用する手法である。この技法は、ローディング中にコードセグメントをシフトすることによって、コードフラグメント(たとえば、コードガジェット)のロケーションをも変え得る。
【0040】
[0043]攻撃者は、ランタイムに1つの機能のアドレスを予測または推論することと、プログラム中の他のコードガジェットのためのアドレスを再構成することとによって、アドレス空間レイアウトランダム化技法を悪用することを試行し得る。本明細書で説明される技法は、機能の予測されたアドレスが命令摂動を考慮しないことになるので、そのような悪用を妨害する。さらに、摂動は、(ロード時間とは対照的に)ランタイムにおいて行われ、各L1フィル時に行われ続けるので、攻撃者は、コードがいつまたはどのように摂動を与えられるかを正確に予測することが可能でない。さらに、命令パケットに対応する実行可能命令が、コードガジェットを依存せずに摂動を与えられ得るので、攻撃者は、所望の状態を達成するために、コードガジェットの所望のシーケンスにおけるあらゆるガジェットについてのコード並べ替えを正しく推測する必要があることになる。いくつかの場合には、攻撃者が、ブルートフォース(brute force)またはアドレス空間探査攻撃を試行し得る。説明される技法は、ランタイムにおいて所望のシーケンスについてのコードガジェットの様々な潜在的並べ替えの数を増加させ、それにより、ブルートフォースとアドレス空間探査攻撃の両方のリスクを低減する。
【0041】
[0044]サーバ110は、データサーバ、クラウドサーバ、サブスクリプションプロバイダに関連するサーバ、プロキシサーバ、ウェブサーバ、アプリケーションサーバ、通信サーバ、ホームサーバ、モバイルサーバ、またはそれらの任意の組合せであり得る。サーバ110は、いくつかの場合には、分配プラットフォーム140を含み得る。分配プラットフォーム140は、デバイス105が、通信リンク125を使用してネットワーク120を介してデータを発見し、ブラウズし、共有し、ダウンロードし、したがって、分配プラットフォーム140からデータのデジタル分配を提供することを可能にし得る。したがって、デジタル分配は、物理媒体を使用せずに、インターネットなど、オンライン配信媒体上で、オーディオ、ビデオ、画像などのメディアコンテンツを配信する形式であり得る。たとえば、デバイス105は、データ(たとえば、画像、オーディオ、ビデオ)をストリーミング、ダウンロード、アップロード、処理、拡張することなどのために、アプリケーションをアップロードまたはダウンロードし得る。サーバ110はまた、デバイス105に、デバイス105上にアプリケーションをダウンロードするための命令またはコマンドなど、様々な情報を送信し得る。
【0042】
[0045]データベース115は、命令またはコマンドなど、様々な情報を記憶し得る。たとえば、データベース115は、データまたはデータ実行可能命令を記憶し得る。デバイスは、データに関連する改善されたデバイスセキュリティのための命令摂動のための技法をサポートし得る。デバイス105は、通信リンク125を使用してネットワーク120を介して、データベース115から、記憶されたデータを取り出し得る。いくつかの例では、データベース115は、命令またはコマンドなど、様々な情報を記憶する、リレーショナルデータベース(たとえば、リレーショナルデータベース管理システム(RDBMS)または構造化照会言語(SQL)データベース)、非リレーショナルデータベース、ネットワークデータベース、オブジェクト指向データベース、または他のタイプのデータベースであり得る。
【0043】
[0046]ネットワーク120は、暗号化と、アクセス認可と、トラッキングと、インターネットプロトコル(IP)接続性と、他のアクセス、算出、変更、および/または関数とを提供し得る。ネットワーク120の例は、クラウドネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、(たとえば、802.11を使用する)ワイヤレスネットワーク、(第3世代(3G)、第4世代(4G)、ロングタームエボリューション(LTE(登録商標))、または新無線(NR)システム(たとえば、第5世代(5G))を使用する)セルラーネットワークなどの任意の組合せを含み得る。ネットワーク120は、インターネットを含み得る。システム100に示されている通信リンク125は、デバイス105からサーバ110およびデータベース115へのアップリンク送信、および/または、サーバ110およびデータベース115からデバイス105へのダウンリンク送信を含み得る。ワイヤレスリンク125は、双方向通信および/または単方向通信を送信し得る。いくつかの例では、通信リンク125は、ワイヤード接続またはワイヤレス接続、あるいはその両方を含み得る。たとえば、通信リンク125は、限定はしないが、Wi-Fi、Bluetooth、Bluetooth低エネルギー(BLE)、セルラー、Z-WAVE、802.11、ピアツーピア、LAN、ワイヤレスローカルエリアネットワーク(WLAN)、イーサネット(登録商標)、FireWire(登録商標)、光ファイバー、および/またはワイヤレス通信システムに関係する他の接続タイプを含む、1つまたは複数の接続を含み得る。
【0044】
[0047]図2は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする命令処理技法200の一例を示す。命令処理技法200は、システム100の態様を実装し得る。たとえば、プロセッサコア230(たとえば、VLIWコア)は、命令処理技法200をサポートし得、実行可能命令を処理し得、実行可能命令は、コード摂動225に基づいて処理され得る。プロセッサ(たとえば、VLIWプロセッサ、Hexagonプロセッサ、CPU、GPU、DSPなど)は、命令処理技法200の1つまたは複数の態様を含み得る。たとえば、プロセッサは、命令順序215-aに従ってメインメモリ205からの命令をL2キャッシュ210-aにロードし、220においてプリコーダを適用し、225において命令に摂動を与え、命令順序215-bに従ってL1キャッシュ210-bに命令をロードし、プロセッサコア230において命令を処理し得る。
【0045】
[0048]プロセッサコア230は、実行可能命令のセットの変更されたまたは摂動を与えられた順序に基づいて、命令パケットの実行可能命令のセットを処理し得る。例示的な例として、命令パケットはL2キャッシュ210-aにロードされ得、命令パケットは、(ロード、記憶、シフト、プッシュ、ポップ、リターンなどの命令を表し得る)命令A、B、C、およびDを含み得る。例示的な例を続けると、L2キャッシュ210-aは、命令パケットの実行可能命令を表すために、メモリアドレス(たとえば、仮想メモリアドレス、スロットなど)を使用し得る。メモリアドレスは、実行可能命令のセットの第1の順序と見なされ得、これは、命令順序215-aとして表され得る。
【0046】
[0049]220において、プリコーダが、実行可能命令のセットの命令の部分的または完全なデコードを適用し得、実行可能命令のセットの第1の順序(たとえば、命令順序215-a)は、220において命令に摂動を与えることに基づいて、実行可能命令のセットの第2の順序(たとえば、命令順序215-b)に変更され(たとえば、摂動を与えられ、シャッフルされ、など)得る。いくつかの場合には、第1の順序を第2の順序に変更することは、命令の間の依存性をもたらさないことがある。いくつかの場合には、命令は、1つまたは複数のスロット命令ルールに基づいて摂動を与えられ得る。
【0047】
[0050]たとえば、プロセッサ、デバイス、またはアーキテクチャが、異なるタイプの命令についての有効なスロットを示すルール(たとえば、制約)に関連し得る。いくつかの場合には、命令は(たとえば、擬似乱数生成器に基づいて)ランダムに変更され得、命令の変更された順序は、スロットルールが満たされるように検証され得る。命令のセットの順序を変更することは、攻撃者が、異なる命令のロケーションを予測することに失敗し、したがって、特定の命令(たとえば、コードガジェット)を再使用する能力を失い得るので、コード再使用攻撃を妨害し、デバイスセキュリティを改善し得る。したがって、ランダム化は、本明細書で説明されるメモリ階層中のパケット内で命令の順序をシャッフルするために使用され得る。それにより、攻撃は、攻撃者が実行することを予想する命令のセットが実行されないので、妨害される。
【0048】
[0051]いくつかのVLIWアーキテクチャは、命令のどのクラスがどのスロットに入れられ得るかに関して制約を強いる。たとえば、分岐命令は、スロット3または4のいずれか中になければならないことがある。ロード命令または記憶命令、あるいはその両方が、命令パケット中にあるときなどを除き、ALU命令がスロット1~4に入り得る。すなわち、いくつかの場合には、[A、B、C、D]の16個の並べ替え(permutations)のすべてが利用可能であるとは限らない。いくつかのプリデコーダは、メモリ階層を通して命令をフェッチする。このステージは、コアにおける実行の速度を上げるために、命令パケットの部分的デコードを実施し、これは、これらの命令の仮想アドレスをも並べ替るコード摂動を挿入することを含み得る。
【0049】
[0052]したがって、コード摂動はL1キャッシュフィルごとに行われ、コード摂動は、あらゆる命令パケットについてランダムに発生する。L1中のすべてのキャッシュラインにおけるすべてのパケットは、すべて摂動を与えられ、たいていのコードガジェットは、それらのロケーションを変え続ける。命令パケットがL1キャッシュをフィルしたとき、あらゆる命令パケットについてプリデコーダによって決定された正当な並べ替え間でランダムに選定するために、ハードウェア乱数生成器が使用され得る。命令は、一度に1つのキャッシュライン上で動作し、L1レベルとL2レベルとの間に位置するので、コード摂動は、実行に対する低減されたオーバーヘッドへの改善を提供する。
【0050】
[0053]図3は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートするデバイス305のブロック図300を示す。デバイス305は、本明細書で説明されるプロセッサの態様の一例であり得る。デバイス305は、プロセッサ310とプロセッサマネージャ320とを含み得る。これらの構成要素の各々は(たとえば、1つまたは複数のバスを介して)互いと通信していることがある。
【0051】
[0054]プロセッサ310は、ウェブブラウザ、グラフィカルユーザインターフェース、ビデオゲーム、または画像描写のためのグラフィックスレンダリングを伴う他のアプリケーションなど、1つまたは複数のソフトウェアアプリケーションを実行し得る。本明細書で説明されるように、プロセッサ310は、1つまたは複数のソフトウェアアプリケーションを実行するときに、プロセッサマネージャプログラム(たとえば、プロセッサマネージャ320によって扱うことに適したプログラム)に遭遇し得る。したがって、プロセッサ310は、レンダリングコマンドを、(たとえば、APIベースコマンドをパースするためのコンパイラを含んでいるプロセッサマネージャドライバを介して)プロセッサマネージャ320にサブミットし得る。
【0052】
[0055]プロセッサマネージャ320、プロセッサ310、あるいはそれらの様々な組合せまたはそれらの様々な構成要素は、本明細書で説明される改善されたデバイスセキュリティのための命令摂動のための技法の様々な態様を実施するための手段の例であり得る。たとえば、プロセッサマネージャ320、プロセッサ310、あるいはそれらの様々な組合せまたは構成要素は、本明細書で説明される機能のうちの1つまたは複数を実施するための方法をサポートし得る。
【0053】
[0056]いくつかの例では、プロセッサマネージャ320、プロセッサ310、あるいはそれらの様々な組合せまたは構成要素は、ハードウェアで(たとえば、通信管理回路で)実装され得る。ハードウェアは、本開示で説明される機能を実施するための手段として構成されるかまたはさもなければその手段をサポートする、プロセッサ、DSP、ASIC、FPGA、VLIWプロセッサ、または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいはそれらの任意の組合せを含み得る。いくつかの例では、プロセッサと、プロセッサと結合されたメモリとが、(たとえば、プロセッサによって、メモリに記憶された命令を実行することによって)本明細書で説明される機能のうちの1つまたは複数を実施するように構成され得る。
【0054】
[0057]追加または代替として、いくつかの例では、プロセッサマネージャ320、プロセッサ310、あるいはそれらの様々な組合せまたは構成要素は、プロセッサによって実行される(たとえば、通信管理ソフトウェアまたはファームウェアとしての)コードで実装され得る。プロセッサによって実行されるコードで実装される場合、プロセッサマネージャ320、プロセッサ310、あるいはそれらの様々な組合せまたは構成要素の機能は、(たとえば、本開示で説明される機能を実施するための手段として構成されるかまたはさもなければその手段をサポートする)汎用プロセッサ、DSP、プロセッサ、ASIC、FPGA、VLIWプロセッサ、あるいはこれらの任意の組合せまたは他のプログラマブル論理デバイスによって実施され得る。
【0055】
[0058]いくつかの例では、プロセッサマネージャ320は、プロセッサ310を使用してまたはさもなければそれと協働して様々な動作(たとえば、受信すること、監視すること、送信すること)を実施するように構成され得る。たとえば、プロセッサマネージャ320は、プロセッサ310から情報を受信するか、あるいは情報を受信するか、情報を送信するか、または本明細書で説明される様々な他の動作を実施するために、プロセッサ310と組み合わせて組み込まれ得る。
【0056】
[0059]たとえば、プロセッサマネージャ320は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てるための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。プロセッサマネージャ320は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。プロセッサマネージャ320は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更するための手段として構成されるかまたはさもなければその手段をサポートし得る。プロセッサマネージャ320は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理するための手段として構成されるかまたはさもなければその手段をサポートし得る。本明細書で説明される例によるプロセッサマネージャ320を含むことまたはプロセッサマネージャ320を構成することによって、デバイス305(たとえば、プロセッサ310、プロセッサマネージャ320、またはそれらの組合せを制御するかまたはさもなければそれらに結合されたプロセッサ)は、並列のおよび効率的なリソース利用において複数の命令をセキュアに処理するための技法をサポートし得る。
【0057】
[0060]デバイス305、またはそれの様々な構成要素は、本明細書で説明される改善されたデバイスセキュリティのための命令摂動のための技法の様々な態様を実施するための手段の一例であり得る。たとえば、プロセッサマネージャ320は、パケットマネージャ325、命令順序マネージャ330、命令マネージャ335、スロットルールマネージャ340、メモリキャッシュマネージャ345、またはそれらの任意の組合せを含み得る。これらの構成要素の各々は、直接または間接的に、(たとえば、1つまたは複数のバスを介して)互いと通信し得る。
【0058】
[0061]パケットマネージャ325は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てるための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。命令順序マネージャ330は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。いくつかの例では、命令順序マネージャ330は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更するための手段として構成されるかまたはさもなければその手段をサポートし得る。命令マネージャ335は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理するための手段として構成されるかまたはさもなければその手段をサポートし得る。
【0059】
[0062]いくつかの例では、パケットマネージャ325は、実行可能命令のセットに基づいて、命令パケットのパケットサイズを選択するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、パケットマネージャ325は、命令パケットの選択されたパケットサイズに基づいて、実行可能命令のセットを命令パケットに割り当てるための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、実行可能命令のセットの順序を変更することをサポートするために、命令順序マネージャ330は、実行可能命令のセットの第1の順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、実行可能命令のセットの順序を変更することをサポートするために、スロットルールマネージャ340は、実行可能命令のセットの第1の順序に基づいて、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、実行可能命令のセットの順序を変更することをサポートするために、命令マネージャ335は、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反したことに応答して、第1の順序に基づいて命令パケットの実行可能命令のセットを処理することを控えるための手段として構成されるかまたはさもなければその手段をサポートし得る。
【0060】
[0063]いくつかの例では、命令順序マネージャ330は、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定することに基づいて、実行可能命令のセットの第2の順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、スロットルールマネージャ340は、実行可能命令のセットの第2の順序に基づいて、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たすと決定するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、命令マネージャ335は、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たしたことに応答して、第2の順序に基づいて命令パケットの実行可能命令のセットを処理するための手段として構成されるかまたはさもなければその手段をサポートし得る。
【0061】
[0064]スロットルールマネージャ340は、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効なそれぞれのスロットに対応すると決定するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、命令順序マネージャ330は、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効なそれぞれのスロットに対応すると決定することに基づき、実行可能命令のセットのための順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、メモリキャッシュマネージャ345は、初期順序に基づいて、デバイスに関連する第1のメモリキャッシュから、実行可能命令のセットを受信するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、メモリキャッシュマネージャ345は、変更された順序に基づいて、デバイスに関連する第2のメモリキャッシュに、実行可能命令のセットを送信するための手段として構成されるかまたはさもなければその手段をサポートし得る。
【0062】
[0065]命令マネージャ335は、ランダム化パラメータに基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、命令マネージャ335は、ランダム化パラメータに基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理することを終了するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、実行可能命令のセットを処理することをサポートするために、命令マネージャ335は、デバイスに関連する1つまたは複数のプロセッサ上で実行可能命令のセットを実行するための手段として構成されるかまたはさもなければその手段をサポートし得る。いくつかの例では、1つまたは複数のプロセッサ(たとえば、プロセッサ310)は、可変長プロセッサ、超長命令語プロセッサ、またはHexagonプロセッサ、あるいはそれらの組合せを含む。いくつかの例では、スロット命令ルールは、スロットによってサポートされる1つまたは複数の命令タイプの指示を含む。いくつかの例では、パラメータは、命令パケットのパケットサイズを識別するパケットサイズパラメータを含む。いくつかの例では、実行可能命令のセットは、インターロックパイプライン化ステージ命令の不在を含む。いくつかの例では、実行可能命令のセットは、命令パケットごとの実行可能命令のしきい値数よりも少数の実行可能命令を含む。
【0063】
[0066]図4は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートするデバイス405を含むシステム400の図を示す。デバイス405は、本明細書で説明されるデバイス305の構成要素の一例であるか、またはこれらを含み得る。デバイス405は、プロセッサマネージャ420、I/Oコントローラ410、メモリ415、トランシーバ425、およびプロセッサ440など、通信を送信および受信するための構成要素を含む、双方向音声およびデータ通信のための構成要素を含み得る。これらの構成要素は、電子通信しているか、またはさもなければ1つまたは複数のバス(たとえば、バス435)を介して(たとえば、動作可能に、通信可能に、機能的に、電子的に、電気的に)結合され得る。
【0064】
[0067]I/Oコントローラ410は、デバイス405のための入力信号と出力信号とを管理し得る。I/Oコントローラ410は、デバイス405に組み込まれていない周辺装置をも管理し得る。いくつかの場合には、I/Oコントローラ410は、外部周辺機器への物理接続またはポートを表し得る。いくつかの場合には、I/Oコントローラ410は、iOS(登録商標)、ANDROID(登録商標)、MS-DOS(登録商標)、MS-WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、LINUX(登録商標)、または別の知られているオペレーティングシステムなど、オペレーティングシステムを利用し得る。いくつかの他の場合には、I/Oコントローラ410は、モデム、キーボード、マウス、タッチスクリーン、または同様のデバイスを表すか、またはそれらと対話し得る。いくつかの場合には、I/Oコントローラ410は、プロセッサ440など、プロセッサの一部として実装され得る。いくつかの場合には、ユーザは、I/Oコントローラ410を介して、またはI/Oコントローラ410によって制御されるハードウェア構成要素を介してデバイス405と対話し得る。
【0065】
[0068]メモリ415は、RAMとROMとを含み得る。メモリ415は、プロセッサマネージャ420またはプロセッサ440によって実行されたとき、デバイス405に本明細書で説明される様々な機能を実施させる命令を含むソフトウェア435(たとえば、コンピュータ可読コード、コンピュータ実行可能コード)を記憶し得る。ソフトウェア435は、システムメモリまたは他のタイプのメモリなど、非一時的コンピュータ可読媒体に記憶され得る。いくつかの場合には、ソフトウェア435は、プロセッサマネージャ420またはプロセッサ440によって直接実行可能でないことがあるが、(たとえば、コンパイルされ実行されたとき)コンピュータに本明細書で説明される機能を実施させ得る。いくつかの場合には、メモリ415は、特に、周辺構成要素またはデバイスとの対話など、基本ハードウェアまたはソフトウェア動作を制御し得るBIOSを含んでいることがある。
【0066】
[0069]いくつかの場合には、デバイス405は、単一のアンテナを含み得る。しかしながら、いくつかの他の場合には、デバイス405は、複数のワイヤレス送信を同時に送信または受信することが可能であり得る2つ以上のアンテナを有し得る。トランシーバ425は、本明細書で説明されるように、1つまたは複数のアンテナ、ワイヤードリンク、またはワイヤレスリンクを介して双方向に通信し得る。たとえば、トランシーバ425は、ワイヤレストランシーバを表し得、別のワイヤレストランシーバと双方向に通信し得る。トランシーバ425は、パケットを変調し、変調されたパケットを送信のために1つまたは複数のアンテナに提供するための、および1つまたは複数のアンテナから受信されたパケットを復調するためのモデムをも含み得る。トランシーバ425、またはトランシーバ425および1つまたは複数のアンテナは、本明細書で説明される、送信機、受信機、あるいはそれらの任意の組合せまたはそれらの構成要素の一例であり得る。
【0067】
[0070]ソフトウェア435は、ワイヤレス通信をサポートするための命令を含む、本開示の態様を実装するための命令を含み得る。ソフトウェア435は、システムメモリまたは他のタイプのメモリなど、非一時的コンピュータ可読媒体に記憶され得る。いくつかの場合には、ソフトウェア435は、プロセッサ440によって直接実行可能でないことがあるが、(たとえば、コンパイルされ実行されたとき)コンピュータに本明細書で説明される機能を実施させ得る。
【0068】
[0071]たとえば、プロセッサマネージャ420は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てるための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。プロセッサマネージャ420は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択するための手段として構成されるかまたはさもなければその手段をサポートし得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。プロセッサマネージャ420は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更するための手段として構成されるかまたはさもなければその手段をサポートし得る。プロセッサマネージャ420は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理するための手段として構成されるかまたはさもなければその手段をサポートし得る。本明細書で説明される例に従ってプロセッサマネージャ420を含むことまたはプロセッサマネージャ420を構成することによって、デバイス405は、低減された命令処理時間と、通信リソースのより効率的な利用と、改善されたデバイスセキュリティとのための技法をサポートし得る。
【0069】
[0072]プロセッサマネージャ420、またはそれの副構成要素は、ハードウェア、プロセッサによって実行されるコード(たとえば、ソフトウェアまたはファームウェア)、またはそれらの任意の組合せで実装され得る。プロセッサによって実行されるコードで実装される場合、プロセッサマネージャ420、またはそれの副構成要素の機能は、汎用プロセッサ、DSP、ASIC、FPGAまたは他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本開示で説明される機能を実施するように設計されたそれらの任意の組合せによって実行され得る。プロセッサマネージャ420、またはそれの副構成要素は、1つまたは複数の物理構成要素によって機能の部分が、異なる物理的ロケーションにおいて実装されるように分散されることを含めて、様々な位置に物理的に位置し得る。いくつかの例では、プロセッサマネージャ420、またはそれの副構成要素は、本開示の様々な態様による別個で個別の構成要素であり得る。いくつかの例では、プロセッサマネージャ420、またはそれの副構成要素は、限定はしないが、本開示の様々な態様による、I/O構成要素、トランシーバ、ネットワークサーバ、別のコンピューティングデバイス、本開示で説明される1つまたは複数の他の構成要素、またはそれらの組合せを含む、1つまたは複数の他のハードウェア構成要素と組み合わせられ得る。
【0070】
[0073]図5は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法500を示すフローチャートを示す。方法500の動作は、本明細書で説明されるプロセッサマネージャデバイスまたはそれの構成要素によって実装され得る。たとえば、方法500の動作は、図1図4を参照しながら説明されたプロセッサマネージャデバイスによって実施され得る。いくつかの例では、プロセッサマネージャデバイスは、説明される機能を実施するようにプロセッサマネージャデバイスの機能要素を制御するための命令のセットを実行し得る。追加または代替として、プロセッサマネージャデバイスは、専用ハードウェアを使用して、説明される機能の態様を実施し得る。
【0071】
[0074]505において、方法は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てることを含み得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。505の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、505の動作の態様は、図3を参照しながら説明されたパケットマネージャ325によって実施され得る。
【0072】
[0075]510において、方法は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択することを含み得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。510の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、510の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0073】
[0076]515において、方法は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することを含み得る。515の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、515の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0074】
[0077]520において、方法は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することを含み得る。520の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、520の動作の態様は、図3を参照しながら説明された命令マネージャ335によって実施され得る。
【0075】
[0078]図6は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法600を示すフローチャートを示す。方法600の動作は、本明細書で説明されるプロセッサマネージャデバイスまたはそれの構成要素によって実装され得る。たとえば、方法600の動作は、図1図4を参照しながら説明されたプロセッサマネージャデバイスによって実施され得る。いくつかの例では、プロセッサマネージャデバイスは、説明される機能を実施するようにプロセッサマネージャデバイスの機能要素を制御するための命令のセットを実行し得る。追加または代替として、プロセッサマネージャデバイスは、専用ハードウェアを使用して、説明される機能の態様を実施し得る。
【0076】
[0079]605において、方法は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てることを含み得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。605の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、605の動作の態様は、図3を参照しながら説明されたパケットマネージャ325によって実施され得る。
【0077】
[0080]610において、方法は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択することを含み得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。610の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、610の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0078】
[0081]615において、方法は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することを含み得る。615の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、615の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0079】
[0082]620において、方法は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することを含み得る。620の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、620の動作の態様は、図3を参照しながら説明された命令マネージャ335によって実施され得る。
【0080】
[0083]625において、方法は、実行可能命令のセットに基づいて、命令パケットのパケットサイズを選択することを含み得る。625の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、625の動作の態様は、図3を参照しながら説明されたパケットマネージャ325によって実施され得る。
【0081】
[0084]630において、方法は、命令パケットの選択されたパケットサイズに基づいて、実行可能命令のセットを命令パケットに割り当てることを含み得る。630の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、630の動作の態様は、図3を参照しながら説明されたパケットマネージャ325によって実施され得る。
【0082】
[0085]図7は、本開示の態様による、改善されたデバイスセキュリティのための命令摂動のための技法をサポートする方法700を示すフローチャートを示す。方法700の動作は、本明細書で説明されるプロセッサマネージャデバイスまたはそれの構成要素によって実装され得る。たとえば、方法700の動作は、図1図4を参照しながら説明されたプロセッサマネージャデバイスによって実施され得る。いくつかの例では、プロセッサマネージャデバイスは、説明される機能を実施するようにプロセッサマネージャデバイスの機能要素を制御するための命令のセットを実行し得る。追加または代替として、プロセッサマネージャデバイスは、専用ハードウェアを使用して、説明される機能の態様を実施し得る。
【0083】
[0086]705において、方法は、命令パケットに関連するパラメータに基づいて、実行可能命令のセットを命令パケットに割り当てることを含み得、実行可能命令のセットの各実行可能命令は、実行可能命令のセットのうちの他の実行可能命令に依存しない。705の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、705の動作の態様は、図3を参照しながら説明されたパケットマネージャ325によって実施され得る。
【0084】
[0087]710において、方法は、デバイスに関連するスロット命令ルールに基づいて、実行可能命令のセットの順序を選択することを含み得、実行可能命令のセットの各実行可能命令は、デバイスのメモリに関連するそれぞれのスロットに対応する。710の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、710の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0085】
[0088]715において、方法は、スロット命令ルールに基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することを含み得る。715の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、715の動作の態様は、図3を参照しながら説明された命令順序マネージャ330によって実施され得る。
【0086】
[0089]720において、方法は、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することを含み得る。720の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、720の動作の態様は、図3を参照しながら説明された命令マネージャ335によって実施され得る。
【0087】
[0090]725では、方法は、初期順序に基づいて、デバイスに関連する第1のメモリキャッシュから、実行可能命令のセットを受信することを含み得る。725の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、725の動作の態様は、図3を参照しながら説明されたメモリキャッシュマネージャ345によって実施され得る。
【0088】
[0091]730では、方法は、変更された順序に基づいて、デバイスに関連する第2のメモリキャッシュに、実行可能命令のセットを送信することを含み得る。730の動作は、本明細書で開示される例に従って実施され得る。いくつかの例では、730の動作の態様は、図3を参照しながら説明されたメモリキャッシュマネージャ345によって実施され得る。
【0089】
[0092]本明細書で説明される方法は、可能な実装形態を説明すること、ならびに動作およびステップが並べ替えられるかまたはさもなければ変更され得ること、ならびに他の実装形態が可能であることに留意されたい。さらに、方法のうちの2つまたはそれ以上からの態様が組み合わせられ得る。
【0090】
[0093]態様1:デバイスにおける方法であって、命令パケットに関連するパラメータに少なくとも部分的に基づいて、実行可能命令のセットを命令パケットに割り当てることと、実行可能命令のセットの各実行可能命令が、実行可能命令のセットのうちの他の実行可能命令に依存しない、デバイスに関連するスロット命令ルールに少なくとも部分的に基づいて、実行可能命令のセットの順序を選択することと、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連するそれぞれのスロットに対応する、スロット命令ルールに少なくとも部分的に基づいてメモリ階層ポストプリデコードにおける実行可能命令のセットの順序を変更することと、変更された順序に基づいて、命令パケットの実行可能命令のセットを処理することとを備える、方法。
【0091】
[0094]態様2:実行可能命令のセットに少なくとも部分的に基づいて、命令パケットのパケットサイズを選択することと、命令パケットの選択されたパケットサイズに少なくとも部分的に基づいて、実行可能命令のセットを命令パケットに割り当てることとをさらに備える、態様1に記載の方法。
【0092】
[0095]態様3:実行可能命令のセットの順序を変更することは、実行可能命令のセットの第1の順序を選択することと、実行可能命令のセットの第1の順序に少なくとも部分的に基づいて、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定することと、実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反したことに応答して、第1の順序に少なくとも部分的に基づいて命令パケットの実行可能命令のセットを処理することを控えることとを備える、態様1から2のいずれかに記載の方法。
【0093】
[0096]態様4:実行可能命令のセットのうちの少なくとも1つの実行可能命令がスロット命令ルールに違反すると決定することに少なくとも部分的に基づいて、実行可能命令のセットの第2の順序を選択することと、実行可能命令のセットの第2の順序に少なくとも部分的に基づいて、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たすと決定することと、実行可能命令のセットの各実行可能命令がスロット命令ルールを満たしたことに応答して、第2の順序に少なくとも部分的に基づいて命令パケットの実行可能命令のセットを処理することと、をさらに備える、態様3に記載の方法。
【0094】
[0097]態様5:実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効なそれぞれのスロットに対応すると決定することをさらに備え、ここにおいて、実行可能命令のセットのための順序を選択することは、実行可能命令のセットの各実行可能命令が、デバイスのメモリに関連する有効なそれぞれのスロットに対応すると決定することに少なくとも部分的に基づく、態様1から4のいずれかに記載の方法。
【0095】
[0098]態様6:初期順序に少なくとも部分的に基づいて、デバイスに関連する第1のメモリキャッシュから、実行可能命令のセットを受信することと、変更された順序に少なくとも部分的に基づいて、デバイスに関連する第2のメモリキャッシュに、実行可能命令のセットを送信することとをさらに備える、態様1から5のいずれかに記載の方法。
【0096】
[0099]態様7:ランダム化パラメータに少なくとも部分的に基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理することをさらに備える、態様1から6のいずれかに記載の方法。
【0097】
[0100]態様8:ランダム化パラメータに少なくとも部分的に基づいて、実行可能命令のセットのうちの実行可能命令のサブセットを処理することを終了することをさらに備える、態様1から7のいずれかに記載の方法。
【0098】
[0101]態様9:実行可能命令のセットを処理することが、デバイスに関連する1つまたは複数のプロセッサ上で実行可能命令のセットを実行することを備える、態様1から8のいずれかに記載の方法。
【0099】
[0102]態様10:1つまたは複数のプロセッサが、可変長プロセッサ、超長命令語プロセッサ、またはHexagonプロセッサ、あるいはそれらの組合せを備える、態様9に記載の方法。
【0100】
[0103]態様11:スロット命令ルールが、スロットによってサポートされる1つまたは複数の命令タイプの指示を備える、態様1から10のいずれかに記載の方法。
【0101】
[0104]態様12:パラメータが、命令パケットのパケットサイズを識別するパケットサイズパラメータを備える、態様1から11のいずれかに記載の方法。
【0102】
[0105]態様13:実行可能命令のセットが、インターロックパイプライン化ステージ命令の不在を備える、態様1から12のいずれかに記載の方法。
【0103】
[0106]態様14:実行可能命令のセットが、命令パケットごとの実行可能命令のしきい値数よりも少数の実行可能命令を備える、態様1から13のいずれかに記載の方法。
【0104】
[0107]態様15:プロセッサと、プロセッサに結合されたメモリと、メモリに記憶された命令とを備える装置であって、命令が、装置に、態様1から14のいずれかに記載の方法を実施させるためにプロセッサによって実行可能である、装置。
【0105】
[0108]態様16:態様1から14のいずれかに記載の方法を実施するための少なくとも1つの手段を備える装置。
【0106】
[0109]態様17:コードを記憶する非一時的コンピュータ可読媒体であって、コードが、態様1から14のいずれかに記載の方法を実施するようにプロセッサによって実行可能な命令を備える、非一時的コンピュータ可読媒体。
【0107】
[0110]本明細書で説明される情報および信号は、様々な異なる技術および技法のいずれかを使用して表され得る。たとえば、説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【0108】
[0111]本明細書の開示に関して説明される様々な例示的なブロックおよびモジュールは、汎用プロセッサ、DSP、ASIC、FPGA、または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明される機能を実施するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成)としても実装され得る。
【0109】
[0112]本明細書で説明される機能は、ハードウェア、プロセッサによって実行されるソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。プロセッサによって実行されるソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。他の例および実装形態は、本開示の範囲および添付の特許請求の範囲内にある。たとえば、ソフトウェアの性質により、本明細書で説明される機能は、プロセッサ、ハードウェア、ファームウェア、ハードワイヤリング、またはこれらのいずれかの組合せによって実行されるソフトウェアを使用して実装され得る。機能を実装する特徴はまた、機能の部分が、異なる物理的ロケーションにおいて実装されるように分散されることを含めて、様々な位置に物理的に位置し得る。
【0110】
[0113]コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、非一時的コンピュータ記憶媒体と通信媒体の両方を含む。非一時的記憶媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、非一時的コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM(登録商標))、フラッシュメモリ、コンパクトディスク(CD)ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコード手段を搬送または記憶するために使用され得、汎用もしくは専用コンピュータまたは汎用もしくは専用プロセッサによってアクセスされ得る、任意の他の非一時的媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるディスク(disk)およびディスク(disc)は、CD、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれる。
【0111】
[0114]特許請求の範囲内を含めて、本明細書で使用される、項目の列挙(たとえば、「のうちの少なくとも1つ」または「のうちの1つまたは複数」などの句で終わる項目の列挙)中で使用される「または」は、たとえば、A、B、またはCのうちの少なくとも1つの列挙が、AまたはBまたはCまたはABまたはACまたはBCまたはABC(すなわち、AおよびBおよびC)を意味するような包括的列挙を示す。また、本明細書で使用される「に基づいて」という句は、条件の閉集合への参照と解釈されないものとする。たとえば、「条件Aに基づいて」と記述された例示的なステップは、本開示の範囲から逸脱することなく、条件Aと条件Bの両方に基づき得る。言い換えれば、本明細書で使用される「に基づいて」という句は、「に少なくとも部分的に基づいて」という句と同じ様式で解釈されるものとする。
【0112】
[0115]添付の図では、同様の構成要素または特徴は同じ参照ラベルを有し得る。さらに、同じタイプの様々な構成要素は、参照ラベルの後に、ダッシュと、同様の構成要素を区別する第2のラベルとを続けることによって区別され得る。第1の参照ラベルのみが本明細書において使用される場合、その説明は、第2の参照ラベル、または他の後続の参照ラベルにかかわらず、同じ第1の参照ラベルを有する同様の構成要素のいずれにも適用可能である。
【0113】
[0116]添付の図面に関して本明細書に記載される説明は、例示的な構成について説明しており、実装され得るまたは特許請求の範囲内に入るすべての例を表すとは限らない。本明細書で使用される「例示的」という用語は、「例、事例、または例示の働きをすること」を意味し、「好ましい」または「他の例よりも有利な」を意味しない。詳細な説明は、説明される技法の理解を提供するための具体的な詳細を含む。しかしながら、これらの技法は、これらの具体的な詳細なしに実践され得る。いくつかの事例では、説明される例の概念を不明瞭にすることを回避するために、よく知られている構造およびデバイスがブロック図の形式で示される。
【0114】
[0117]本明細書の説明は、当業者が本開示を作成または使用することができるように提供される。本開示の様々な修正は当業者には容易に明らかとなり、本明細書で定義された一般原理は、本開示の範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明された例および設計に限定されず、本明細書で開示された原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
図1
図2
図3
図4
図5
図6
図7
【国際調査報告】