gpt4 book ai didi

intel - 有关 SGX 加载的详细信息

转载 作者:行者123 更新时间:2023-12-05 00:56:31 24 4
gpt4 key购买 nike

是否可以将大于 EPC 内存的程序加载到飞地?我觉得理论上这是允许的,因为

  • 操作系统可以自由换页
  • EEXTEND以 256 字节增量测量飞地

  • 所以理论上,似乎可以只使用一页 EPC 内存来加载一个大程序:
  • 将 4K 字节加载到 EPC 页面
  • 测量加载的页面
  • 驱逐加载的页面
  • 将接下来的 4K 字节加载到与 (1) 中的相同的 EPC 页

  • 我在理论上理解正确吗?虽然在实践中,我在加载大程序时立即出错。

    最佳答案

    我在英特尔论坛上问了一个类似的问题。总结 [1] 很有帮助。

    简短的回答:不,此时您不能加载比 EPC 大的飞地。

    Due to the current lack of paging support (and lack of dynamic page allocation that v2 will provide) this means that the combined HeapMaxSize of all enclaves loaded at the same time cannot exceed said ~90MB. [1]



    长答案:在 SGX 中有两种动态内存管理机制:
  • enclave 可以通过 EAUG 请求附加页面 - 这仅在 SGXv2 中受支持,目前没有可用的硬件
  • 操作系统可以将 EPC 页面交换到常规 RAM(EWB/ELD 指令),但 Windows 当前不支持此

  • 那么为什么不能加载大于 EPC 的飞地呢?
  • 当前系统上的 EPC 大小限制为大约 90MB
  • Windows 当前不支持换出这些页面
  • 在 SGXv1 硬件上执行 (EINIT) 之前,飞地必须请求它希望使用的所有页面
  • 所有飞地的大小不得超过 EPC 大小
  • 英特尔为其管理飞地保留了一些 EPC 空间(引用、配置、加载飞地)

  • 因此,您的飞地必须在当前硬件上使用远低于 90MB 的堆大小。我对 SDK 模拟进行了试验,发现它允许的堆最大大小约为 1GiB [2]。 future 的操作系统版本有望支持 EPC 页面交换,允许更大的静态飞地大小。 future 的 SGX 硬件将允许动态页面分配,允许动态 enclave 大小。

    [1] https://software.intel.com/en-us/forums/intel-isa-extensions/topic/607004#comment-1857071

    [2] 1GiB - 64KiB - TCSnum * 128KiB,其中 TCSnum 是线程数。超过此 HeapMaxSize 会导致模拟错误

    关于intel - 有关 SGX 加载的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168439/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com