最大エンクレーブサイズを決定する 2 つの方法。
クラウド環境では、インテル® Enclave Page Cache (EPC) を含むプロセッサーの予約メモリー (PRM) を BIOS で確認することはできません。
インテル® Software Guard Extensions (インテル® SGX) SDK を使用して、エンクレーブで使用可能なメモリーを検索できません。
インテル® Software Guard Extensions (インテル® SGX) SDK は、最大エンクレーブサイズを確認する方法を提供していません。インテル® Software Guard Extensions (インテル® SGX) SDK では、 エンクレーブ 構成ファイルを使用してアプリケーションでエンクレーブサイズを設定できます。
プロセッサーで利用可能なインテル® Software Guard Extensions (インテル® SGX) 機能をレポートする方法は 2 つあります。どちらのオプションも MaxEnclaveSize を報告します。これは仮想最大エンクレーブサイズです。実際の最大エンクレーブ・サイズは、 オペレーティング・システムまたはメモリーの制限によって決まります。
オプション 1
Linux* システムで、端末で cpuid を 実行 します。
$ cpuid | grep MaxEnclaveSize
オプション 2
test_sgx.c: を使用します。
- SGX Hardware Github にアクセスして、ファイルtest_sgx.c をダウンロードするか、リポジトリのクローンを作成します。
- コンパイル そして 走る 以下に示すtest_sgx.c 指示:
$ gcc test-sgx.c -o test-sgx
$ ./test-sgx
MaxEnclaveSize の説明
MaxEnclaveSizeが0の場合、プラットフォームでは SGX は有効ではありません。
SGX が有効な場合、最も一般的な出力は次のとおりです。
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24
- MaxEnclaveSize_Not64: 64 ビット・モードでない場合、サポートされる最大エンクレーブ・サイズは 2^(EDX[7:0]) バイトです。
- MaxEnclaveSize_64: 64 ビット・モードで動作する場合、サポートされる最大エンクレーブ・サイズは 2^(EDX[15:8]) バイトです。
エンクレーブの最大仮想サイズは、32 ビットの場合は 2^(0x1f)、64 ビット・エンクレーブの場合は 2^(0x24) です。
IA ソフトウェア開発者マニュアル Vol 3d パート 4 のセクション 37.7.2、表 37-6 の CPUID コールによって返された値を参照してください。