Intel 平台新特性助力龙蜥 OS 云计算 | 龙蜥大讲堂101期
内容介绍:
一、英特尔处理器
二、英特尔特性的原理
本次分享的主题是Intel 平台新特性助力龙蜥 OS 云计算。
介绍英特尔在龙蜥操作系统中,对于英特尔新平台的众多新特性在云计算的场景下支持的情况。
一、英特尔处理器
今年1月英特尔发布第四代至强可扩展处理器(Sapphire Rapids)。是近几年英特尔推出的服务器CPU中性能最多的一款服务体系,不光是在通用计算方面的性能上有很大提升,同时内置了很多加速器,为用户的各种工作负载,包括人工智能、数据分析、高性能的计算、网络存储工作负载和提供加速的支持。英特尔发布了最新一代,第五代至强可扩展处理器,简称 EMR ,在性能上有一定提高。
总体来说,目前比较火的人工智能的性能,相对于第四代的至强处理器,最高可获得40%的提高。同时跟前一代的处理器相比,例如第三代的处理器,EMR可以提供14倍在人工智能运算方面的性能提升。同时在通用的计算领域可以提升到1.8倍的通用计算能力,高性能计算可以达到2.1倍的性能提升。众多的新特性都是在裸金属 CPU 的状态下,那计算的场景下的云上的用户,能不能利用好英特尔的新平台新特性?在龙蜥操作系统中都是支持的。
二、英特尔特性的原理
以几个重要特性为例子,讲解特性的原理,以及在虚拟化支持的情况。第一个是 Trusted Domain exensions ( TDX )。相当于是以原生的、虚拟化的方式为用户提供精密计算的机制架构。第二个是 SGX,它是一个远程的精密计算方式,会比TDX轻量。第三个是人工智能运算,AMX可以在云端为用户提供对于 AI 或者是深度学习工作负载的加速。AMX新的指令,目前人工智能的潮流,经过分析,人工智能里的操作可以简化成某些特定的操作,针对这些特定的操作引入新的指令,能够在更短的时间完成相同的功能。最后一个是云计算场景的虚拟机性能的问题,利用这个技术可以提高云计算场景中虚拟机处理器和处理器之间的性能。
1、TDX
目前人工智能的工作负载,自己培训出来的大模型,当然不希望被别人偷走。所以不单要防备其他用户来窃取机密,还要防备提供云服务的厂家来偷取数据。TDX为了引领机密计算的要求,提出新的架构,它能够帮助用户在云端部署,从硬件级别隔离虚拟机。它是怎么实现技术的呢?英特尔虚拟机技术(VMX)有一些状态,VMX的root状态, 工作在root模式,而虚拟机工作在非root模式,root模式是优先级最高的,所以它可以看到虚拟机的所有东西,为了解决私密计算的问题,引入了新的指令架构SAM模式,在这种模式下运行着特定的软件,叫Intel TDX Module ,软件是经过验证的,英特尔发布与服务提供商没有关系的,是可信的软件组件,这个组件是运行在SAM模式下,增加的SAM模式是更高优先级的模式。
运行在SAM模式下时,是没有权利去窥看SAM模式下所有的东西,在SAM模式下启动的虚拟机TD , TD运行相当于是可见的,但对于hardware 来说是不可见的,这样就能保证外面CSP控制的操作系统,窥探虚拟机里面的内容。所有的东西都是放在内存里的,要经过加密来防止窥探内存里的内容。英特尔的技术引擎安放在内存控制器中,每隔一段时间,都会进行加密,在内存里看到的都是加密的。
如果需要解密,需要给相应的密钥。虚拟机的工作原理就是需要进行地址的翻译,不管是进程还是虚拟机,都需要进行翻译,工作在虚拟的统一地址内部,地址需要映射到真正物理机器上具体的内存,翻译的过程就叫做页表,为了防止窥探机密虚拟机的内容,地址翻译的页表是保存管理的。外界的人是看不到的,有时TD需要跟设备进行 IO 与网络进行通信,有一部分内存需要与外界进行共享,因此除了安全的列表之外,还有共享的列表,通过共享的列表跟外界进行交流。
通过这些机制,能够保护机密计算的虚拟机,从任何物理层面的攻击,都能够做到内存的机密性、完整性,地址翻译的机密性和完整性,以及状态运行时外面是看不到状态的。
跟外界的交流,是一个安全的过程,同时也提供一种机制,因为云的部署一般都是远程的部署,部署上去后如何知道部署的即想要的,因此有远程验证的过程,通过这些办法能够达到就机密计算的虚拟机的目的。实现到云计算的场景下,需要做虚拟化方面的工作,因为本身 RDX就是英特尔虚拟机架构的扩展,所以在原先的虚拟机架构的基础上扩展了一些内容。原先的管理TD的生存周期依然存在,创建由这边发起,但创建的过程,例如密钥的生成,创新的过程做了哪些计算,是不知道的。
创建,一般是用户从远程发起的命令,必须要通过媒介来告诉服务提供方,整个的生命周期还是由原先的来管理,涉及到一些权限,例如 TD的内容,要通过外部和吸引模式之间的桥梁接口来实现和可信的模块来进行操作,同时有一系列的标准来规定如何做迁移。从而实现在语音场景下使用TDX。
2、SGX
从架构上,SGX 是轻量级的远程安全机密计算的机制。基于硬件模式和硬件的内存隔离,会在机器里预先保留一段内存,这个内存用做机密计算,从度的规范来说,并不要求一定是虚拟机,可以是逻辑上的进程,保留的内存可以被运行进程或者是虚拟机进行分配。它引入了一个概念,可以创建在保留的内存里,而保留的内存操作系统是看不见的。
只有进程或虚拟机能够运行里面的代码和质量,相当于有一个密室在这里面跑,内容是什么外面是不知道的。密室有进入和退出的过程,因此英特尔的处理器在架构上、指令集上就增加了一些指令,用来进出密室。
一开始有一个指令可以创建一个密室,另一个可以把预留的内存加进去,然后才能开始跑,加进去以后可以初始化,在里面跑或退出,通过这些密室的机制,使得可信的硬件可以保证数据的私密性和完整性。与TDX是一样的,它也提供一种远程验证的方式。SGX是远程提供的服务,怎么能保证装进去的代码跑的结果是想要的结果,跑的程序是自己的程序没有被修改。对此提供了一个机制,能够远程的做验证,形成哈希并返送回来,逻辑上大概是这样的概念。
对虚拟机来说,为了进出密室,有一系列新的指令,这些指令需要通过一定的机制。如果在云计算的场景下,需要把这些新的指令透传给虚拟机,同时有哪些内存是保留的内存,也需要透传给虚拟机,包括这些内存进行加密的运算,或者是刚开始部署时用到的功能也都需要传给虚拟机,有了这些机制后,就能够在云计算的场景下的虚拟机里来跑,这就是SGX。
3、AMX
AMX是用于人工智能、深度学习的加速引擎。目前大多数的操作系统的运算,包括深度学习的运算,其实归根结底到最后都会简化成矩阵的运算,两个矩阵相乘,然后加上第三个矩阵,放到第四个矩阵或者放到第三个矩阵里,这就是基本的操作。专门针对这种操作引入的 AMX加速器,引入了两种东西,一个是二维的寄存器,因为矩阵是二维的,在AMX提出之前,英特尔也有相关的加速技术,叫向量加速。但那是一维的寄存器,这是二维的寄存器。
二维的寄存器对应矩阵,一个是引入了寄存器,另一个是引入了一系列的指令,专门操作二维寄存器。在人工智能没有相应的数据类型时,是用32位的浮点数来做人工智能的深度学习的计算,但后来发现32位太浪费,就缩减到16位甚至8位,尤其对于推理,精度是足够的,所以使用32度就过于浪费了。因此在矩阵运算的过程中引入了新的数据类型,加速过AMX的性能跟以前的相比基本上是相同的,并提高8倍。这是AMX大概的情况。
关于虚拟化,要解决几个问题,一个是需要让虚拟机知道,因为透传指令都是通过CPU ID指令来透传的,需要再把CPU ID的相应的功能也透传给虚拟机。一般虚拟机都是在裸机上跑的进程,本身也是用户的进程。在做人工智能或浮点数的运算时,自身做的运算和虚拟机之间的运算是两个不同的概念,这样则需要进行切换,从虚拟机里退出来时,这两个状态需要区分开,需要有两套状态的保存来支撑虚拟化场景。另一个是热迁移,能不能在运算过程中迁移到远端,是通过把AMX的状态全迁移到远端来实现的,这就是AMX。
4、AVX
AVX有相对小的特性,以前在做深度学习时。AVX 512引入向量神经网络指令,可以把没有指令之前的三条指定合并成一条,以前是 AVX 512才有这个功能,三条指令做的,一条指令就可以完成。现在在新的英特尔的平台里,AVX也有这个功能,上文说的精度的问题,从32位减到16位也是一个优化,像这些指令或浮点运算的优化,在裸金属机器上能跑,但为了在虚拟化和云计算的场景下也能跑,就需要把它暴露给虚拟机。
IPI Virtualization以前是处理器,因为现在处理器的个数很多,一台机器上几百个处理器,当处理器和处理器之间发送中断时,会退出虚拟机,然后再进到另外一个虚拟机,这样会浪费好多进出的开销,有了IPI Virtualization,就不需要再进出,借用中断虚拟化的概念,可以直接注入到对方的虚拟机里,从而提高性能。
云场景的安全也很重要,因为对于CSP来说,虚拟机卖给客户,无法判断对方是好人还是坏人。坏人可能长期占用CPU,把中段关掉,会进入死循环,消耗CPU,通过一个机制长期占用CPU的资源,如果CPU长时间中断,则可以产生VM-Exit,做到预防性的处理。
另一个是bas-lack VM-Exit,在获取bas-lack时,对系统性能等各方面有很大的影响,为了防止虚拟机滥用,提供了一个机制,能够及早的发现,采取有效的措施。