文章 ID: 000089548 內容類型: 產品資訊與文件 最近查看日期: 2022 年 08 月 05 日

Intel® Software Guard Extensions (Intel® SGX) SDK 是否提供判斷最大指定位址區大小的方法?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
摘要

判斷最大指定位址大小的兩種方法。

描述

在雲端環境中,無法檢查 BIOS 中的處理器保留記憶體 (PRM),其中包括指定頁面快取記憶體 (EPC)。

無法使用Intel® Software Guard Extensions (Intel® SGX) SDK 來尋找指定位址的可用記憶體。

解決方法

Intel® Software Guard Extensions (Intel® SGX) SDK 無法提供尋找最大指定位址區大小的方法。Intel® Software Guard Extensions (Intel® SGX) SDK 可讓您使用 Enclave Configuration File 在應用程式中 設定指定 位址區大小。

有兩種方法可以回報處理器上可用的Intel® Software Guard Extensions (Intel® SGX) 功能。兩種選項都會報告 MaxEnclaveSize,即虛擬最大指定位址區大小。實際的最大指定位址大小由 作業系統或記憶體限制決定。

選項 1

在 Linux* 系統 上,在 終端執行 cpuid:

$ cpuid | grep MaxEnclaveSize

選項 2

使用test_sgx.c

  1. 前往 SGX Hardware Github下載檔案test_sgx.c複製存放庫
  2. 編譯 test_sgx.c 根據這些 指示:

    $ gcc test-sgx.c -o test-sgx
    $ ./test-sgx

MaxEnclaveSize 的說明

如果MaxEnclaveSize0,則平臺上不會啟用 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 軟體發展者手冊第 3d第 4 部分 37.7.2 表 37-6 中 CPUID 呼叫退回的值。

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。