英特尔® Software Guard Extensions (英特尔® SGX) SDK 是否提供确定围圈最大大小的方法?
内容类型: 产品信息和文件 | 文章 ID: 000089548 | 上次审核日期: 2022 年 08 月 05 日
在云环境中,无法检查 BIOS 中的处理器保留内存 (PRM),包括围圈页面高速缓存 (EPC)。
无法使用 英特尔® Software Guard Extensions (英特尔® SGX) SDK 查找飞地的可用内存。
英特尔® Software Guard Extensions (英特尔® SGX) SDK 不提供查找最大围圈大小的方法。英特尔® Software Guard Extensions (英特尔® SGX) SDK 支持您使用围圈配置文件在应用程序中 设置围圈大小 。
有两种方法可以报告处理器上可用的英特尔® Software Guard Extensions (英特尔® SGX) 功能。两个选项都会报告 MaxEnclaveSize,这是虚拟最大的围圈大小。实际最大围圈大小取决于 操作系统或内存限制。
选项 1
在 Linux* 系统上, 在 终端中执行 cpuid:
$ cpuid | grep MaxEnclaveSize
选项 2
使用test_sgx.c:
$ gcc test-sgx.c -o test-sgx
$ ./test-sgx
MaxEnclaveSize 的说明
如果MaxEnclaveSize0,则平台上未启用 SGX。
如果启用了 SGX,最常见的输出是:
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24
对于 64 位围圈,该飞地的最大虚拟大小为 2^(0x1f),适用于 32 位和 2^(0x24)。
请参阅 IA 软件开发人员手册第 3d 第 4 部分第 37.7.2 表 37-6 中 CPUID 调用返回的值。