APP下载

第三代AMD EPYC处理器深度解析及独家测试

2021-05-08

微型计算机 2021年8期
关键词:浮点双路内存

AMD EPYC 7003系列处理器技术架构解析

在AMD Zen 3消费级处理器产品大获成功之后,AMD的眼光又转向了企业级、云计算以及HPC市场。这一次,AMD带来了全新的AMD EPYC(霄龙)7003系列处理器,最高64核心128线程、最多超过竞争对手117%的性能以及主打高频的“F”系列产品,都让霄龙7003系列处理器充满着强悍的竞争力,值得我们细细品味。

AMD的EPYC系列处理器是在2017年6月20日正式发布的。经过4年多的发展,EPYC系列处理器成为目前企业级、超算以及加速计算市场上最重要也是最值得选择的处理器产品之一。EPYC系列处理器经历了多代发展,从代号“那不勒斯”的第一代EPYC 7000系列处理器开始,到2019年8月问世,代号“罗马”的第二代EPYC 7002系列處理器,再到本次发布的Zen 3架构、代号“米兰”的第三代EPYC 7003系列处理器,AMD通过先进的工艺制程、创新的内核设计、独特的Chiplet方案以及更为市场化的型号设置,在服务器市场份额不断攀升。

在AMD EPYC 7003系列处理器上,AMD宣称自己在产品设计上将继续根据路线图实现性能提升、提供具有竞争力的性能、更强安全性的产品以及通过计算加速带来的价值提升三个方面持续努力。AMD给出的有关EPYC 7003系列处理器的总体性能评价包含了三个方面,也就是相比上代产品最高两倍的企业级性能提升(基于SPECjbb2015测试)、最高两倍的云计算性能提升(基于SPECrate?2017_int_base测试)、最高两倍的HPC性能提升(基于SPECrate?2017_int_base测试)。因此,本次EPYC 7003系列产品的确值得期待。

EPYC全面进化:AMD Zen 3架构入驻

对AMD这样横跨多个领域的厂商来说,一款处理器核心架构的设计,基本上决定了未来数年产品发展方向。从Zen开始,AMD的核心架构设计开始突飞猛进,不断改进和拓展,充分挖掘着架构的潜力。现在,AMD全新的Zen 3架构已经被用于桌面锐龙系列处理器和移动锐龙系列处理器产品,AMD的四大产品线中,只有面向HEDT平台的线程撕裂者和面向商用的EPYC系列尚未更新。在EPYC 7003系列处理器上,Zen 3终于来了。

Zen 3架构:19%的IPC性能提升

有关AMD在Zen 3架构设计上的变更和一些细节内容,本刊已经介绍了多次。简单来说,对于商业用户,AMD的Zen 3架构主要有四大改进,它们是增强的分支预测能力、更强的整数吞吐能力,双倍INT8单元和更强的浮点能力、大幅度降低的内存延迟等。通过架构设计的改进,AMD在Zen 3上实现了19%的IPC提升,大幅度提高了处理器单核心执行能力。更加具体来看的话:

1.Zen 3架构采用了SMT设计,每个核心拥有2个线程。

2.Zen 3架构应用了最先进的分支预测设计,能够有效避免分支预测错误和空泡等问题。

3.在缓存方面,Zen 3的一级指令缓存和一级数据缓存都采用了8路设计,容量为32KB,Op缓存部分支持4K个指令排序,二级缓存采用了数据和指令混合的方案,8路,容量为512KB。

4.前端指令解码方面,Zen 3每周期可以执行4个指令解码(依旧是4发射设计)或者从Op缓存中提取8个指令,对整数或者浮点数据而言,每周期可以分派6个宏指令或者微指令,这里Zen3依旧采用了协处理器执行模型,且可以分别同时执行整数和浮点计算。

5.Zen 3的执行部分也经过了加强,现在Zen 3的整数执行单元有4个整数ALU单元、1个带分支预测的ALU单元、3个AGU单元和1个专用分支预测单元。由于有3个AGU单元,在地址计算方面,Zen 3每周期可以进行3个地址计算。浮点计算部分是Zen3加强的重点之一,Zen 3现在拥有6个浮点计算单元,每周期可以执行2个256bit的FP乘积累加运算单元(FMAC)。

6.内存单元部分,Zen 3的内存单元现在每周期可以执行3个数据加载,或者执行1个数据加载和2个数据存储,这样的混合模式也提高了数据存储效率。

另外,AMD还给出了Zen 3架构和之前Zen 2架构的对比。相比AMD的Zen 2架构,AMD的Zen 3在前端、执行、读取和存储三大部分最重要的改进为:

前端部分的改进包括:

●两倍容量的L1 BTB,现在容量是1024单位

●提高了分支预测单元的带宽

●分支预测单元的“无空泡”模式

●可以从错误预测中更快速地恢复

●Op缓存更快的排序速度

●更细粒度的Op缓存管道切换执行部分:

●整数部分拥有专用的分支预测和地址选择器

●整数部分拥有更大的执行窗口(增加了32个单位)

●降低了整数和浮点指令通过Ops选择的延迟

●浮点计算部分现在变化为6个单元

●浮点部分MAC计算降低了1个周期读取和存储单元:

●更高的读取和存储带宽(分别增加了1个单位)

●更为灵活的加载和存储操作

●改进的内存依赖性检测

●TLB部分的walker表从2个增加至6个

安全特性:全面加强

除了上述内容外,AMD在Zen 3的指令集方面也做出了一些增强,带来了包括INVLPGB、AVX2-VAES/VPCLMULQDQ、SEV- ES Enhancements、Secure Nested Paging、CETShadow Stack、Memory Protection Keys for Users等新的指令集,面向的功能包括内核功能、浮点计算(AVX2,主要面向浮点计算、加密解密等功能)和安全功能等。

在安全功能方面,AMD特别提到,新的EPYC系列处理器和Zen 3架构大幅加强了这方面的功能,包括专门设计的增强的SEV- ES功能,主要是限制中断的注入,限制恶意管理程序注入SEV- ES访客中断/异常类型,另外还能够将调试寄存器添加到交换状态中,这类功能能够很好地避免之前类似“熔断”“幽灵”那样的攻击手段生效。此外,AMD还加入了SNP安全嵌套分页,主要基于虚拟机内存、虚拟机寄存器的加密保密功能,进一步增加系统完整性保护,防止恶意程序的攻击,而新的CET ShadowStack功能则可以防止ROP攻击等。

AMD总结了从之前第一代EPYC处理器到现在第三代EPYC处理器,AMD在安全特性方面的努力。比如面对“熔断”“幽灵”这样的攻击,第一代EPYC系列处理器只能使用固件或者SO/VMM等方式进行防御,也就是基本上都在软件层面上控制,虽然已经领先竞品很多,但相对而言安全性并不高且有性能损失。从第二代EPYC系列处理器开始到现在全新的第三代EPYC系列处理器,AMD在硬件层面做出了独特设计,现在可以实现硬件和OS/VMM层面的双重防御,其安全性能更好并且性能损失更低。总的来说,在Zen 3架构引入之后,AMD全新EPYC 7003处理器无论是性能还是安全特性,都得到了显著的进步。尤其是针对商用的安全特性方面,AMD还做出了针对性的增强,这一点在后文中还有更为详细的解释。

AMD EPYC 7003系列处理器的SoC设计一览

除了CPU架构之外,AMD在处理器SoC层级的设计上也颇有独到之处。EPYC 7003是一款面向企业级用户、HPC和云计算的处理器,它的设计又有哪些特点呢?

SoC宏观结构:Chiplet 9芯片设计

先來看看EPYC 7003系列的全新特性。EPYC 7003系列在SoC层级上除了之前详细介绍的Zen 3架构外,还带来了增强的存储性能,AMD特别指出EPYC 7003系列处理器拥有目前x86处理器中最大的L3容量,平均每个核心最多可以分配到最多32MB。内存方面支持4通道、6通道和8通道内存交织,其中6通道内存配置模式是新增的。

在可升级性方面,EPYC 7003系列处理器和之前的EPYC7002系列处理器采用了同样的插槽方案,用户只需要更新主板的BIOS,就可以无缝升级至全新的产品,这进一步降低了厂商的采购、使用成本。最后,EPYC 7003系列产品安全特性得到了进一步加强(不仅仅是Zen 3架构)。

AMD展示了EPYC 7003系列处理器SoC层面的宏观架构图。本次EPYC 7003系列处理器依旧采用了Chiplet设计,1个IO芯片+8个计算芯片,整个处理器内部的布局依旧是IO核心位于中央,四周分别布置了总计8个CCD计算芯片,总计9颗芯片来组成整个EPYC 7003系列产品的SoC。

全新的Zen 3 CCD架构:最多每核心32MBL3缓存

继续深入的话,EPYC 7003的CCD应该和桌面锐龙处理器的CCD基本相同,那就是1个CCD内部包含了8颗Zen 3架构的CPU核心,每个CPU核心拥有自己的L2缓存以及共享的32MBL3缓存。这部分核心采用了台积电的7nm工艺制造。在Zen 3架构的锐龙处理器上,AMD使用的7nm工艺经过了升级,因此在频率、功耗方面表现都更为出色。在EPYC 7003系列产品上,AMD表示仍然采用了改进的7nm工艺。

在CCD方面,AMD之前提及新的EPYC 7003系列处理器最高可以为单个核心配置32MB L3缓存。能实现如此大容量的L3缓存配置,一方面是由于Zen 3架构的原因。Zen 3架构在SoC层面将Zen 2架构的两个CCX合二为一成为一个CCD,所有8个核心共享32MB L3缓存,这一部分内容在本刊之前对锐龙5000系列处理器的介绍中有详细的解释。在这里需要额外强调的是Zen2和Zen 3在缓存使用机制上的一点差异。在Zen 2上,4个核心共享16MB缓存,其中8MB缓存被用作存放所有核心都使用的共享数据,其余的8MB缓存则分配给4个核心使用,平均每个核心使用2MB。

在Zen 3上,8个核心共享32MB缓存,其中依旧是8MB用于所有核心存放共享数据,剩余的24MB则可供每个核心使用,单核理论上最高可达24MB,所有核心平均分配的话每个核心可以得到3MB L3缓存。相比Zen 2的设计,Zen 3的方案由于核心可使用的缓存数量的提升,因此带来了命中率的提高。比如在一些指令密集型应用中,这类应用占用缓存不多,但是需要更多的核心操作,因此可能只需要8MB共享缓存就能满足需求,其余的24MB缓存就可以被其他操作占用。因此,AMD通过改良核心设计带来了缓存命中率的提高,反映在大量的应用程序中就是效率、性能的提升。接下来,EPYC 7003系列处理器最高可以为单个核心配置32MB L3缓存的另一方面原因则得益于自身的设计。AMD以EPYC 75F3处理器为例,这款处理器有32个核心,但是依旧采用了9个芯片的方案,也就是说,EPYC 75F3依旧保留了所有的CCD和32MB缓存。因此最终对每个CCD来说,其所拥有的4个核心将可以使用32MB缓存,在理论上能进一步提高缓存敏感型应用的性能。

在最极端的情况下,比如8核心的EPYC 72F3处理器,也可以采用这种方式实现,实际上就是每个CCD保留了1个核心,可使用完整的32MB缓存。虽然这种方式所耗费的成本大,但是1个Zen 3核心得到了32MB L3缓存,很大程度上可以将缓存敏感型应用的性能提升至本代架构设计下的极限值,单线程性能也会得到一定程度的提升,同时还保留了8通道内存、128通道PCIe 4.0等技术规格,让这款产品在顶级商用市场找到自己的用武之地。

IO核心的特性:内存支持情况

AMD还特别提到了IO核心对内存控制器的改进。目前IO核心的内存控制器支持最高8通道DDR4 3200 ECC内存,支持内存的类型包括RDIMM、LRDIMM、3DS、NVDIMM- N。内存容量方面,以每2个DIMM实现1个通道计算的话,一个处理器插座可以支持最大4TB内存,也就是说1个DIMM支持最多256GB内存。

为了进一步说明AMD在内存控制器上的设计,AMD还专门用一张PPT来说明有关内存交织的配置模式。AMD将处理器内存的通道以A、B、C、D、E、F、G、H八个英文字母进行命名,如果只是使用4个通道的话,那么需要启用的是C、D、H、G的DIMM1,一共组成4个通道。如果是8通道的话,可以启用所有八个通道的DIMM1即可,相关的DIMM0处于空闲状态也不会影响多通道的运营。另外,AMD本次特别加入了6通道设计,这是在前代4通道和8通道之间插入的一种新的模式,可以获得相对4通道和8通道更好的平衡性能和成本。6通道方案中,F和B通道不需要插入内存,其余的通道只需要在DIMM1插入内存即可实现。

对于EPYC 7003系列处理器的内存支持情况,AMD认为如果用户使用AMD推荐的内存通道方案的话,有助于避免内存通道中出现过热的点,也就是说之前的方案可能存在部分内存通道被系统反复调用,从而出现内存通道负载过重、影响性能的情况。新的方案则可以更好地平衡工作负载,并且可以降低配置内存的成本以及所需内存数量。

IO核心的特性:安全控制

除了8个CCD外,EPYC 7003系列处理器中最大的一颗芯片就是IO核心了。IO核心内部包含了AMD安全处理器(AMDSecure Processor)、最多8通道的DDR4内存控制器、安全控制中心以及PCIe控制器。在PCIe控制器方面,EPYC 7003的PCIe控制器可以兼容PCIe 3.0和PCIe 4.0,最多擁有128条PCIe通道,不过这些通道也可以被分配用作SATA或者其他内部互联,因此一个IO核心最多可以支持32个SATA或者NVMe设备,另外还有162个可配置通道。同时IO核心内部还拥有服务器的互联控制中心,提供了包括USB、UART、SPI、LPC、I2C等模块,并对外提供互联功能。

下面具体来介绍一下安全处理器。安全处理器是一个32bit的微控制器,可以独立运行相关的安全操作系统和核心功能。其具体功能包括专用的安全子系统、安全启动、硬件可信启动、SME(Secure Memory Encryption,安全存储加密)、SEV- ES、SNP等功能。其中SEV- ES和SNP在本文之前也已经介绍过。但是,AMD在这里特别提到有关硬件验证启动技术,首先AMD的安全处理器会加载片上ROM的只读内存,读取硬件信任根文件,这是一个在芯片上固定位置的验证文件。然后在操作系统内核开始读取BIOS代码之前会根据信任根文件的内容对BIOS进行验证,在BIOS通过安全认证之后,系统才会加载包括操作系统、虚拟机等应用。

在数据安全方面,AMD还提供了密钥管理来实现数据端到端的加密,比如从ROM到DIMM,密钥管理的相关功能都可以对其进行数据加密。这个功能有多个模式,一个是SME安全内存加密,这个模式下只要系统重置就会生成一个单一随机密钥对数据进行加密;另一个模式是内存加密虚拟化SEV模式,也包括之前提到的SNP功能,SEV模式可以针对虚拟机提供单独的密钥,也可以针对每一个访客的登录进程来给出单独的密钥,并交由安全处理器来使用和控制。AMD宣称,在这种模式下可用的密钥数量为509个,和前代产品相同。上述两个功能配合SNP、SEV以及SEV-SE,就能完成虚拟机有关安全登录的控制和管理。

从AMD在安全方面的功能情况来看,实际上相当于AMD在IO核心上内置了一个专用的安全处理器和专用的操作系统,通过只读、隔离控制的方式将安全核心的操作和外部操作系统、虚拟机进行分离,并在内核层面生成密钥进行安全处理,这样就形成了一个高于现有操作系统或者应用层面的独特的安全层。所有的操作和控制包括BIOS这样传统意义上,人们看起来比较基础的层级,都需要先通过安全处理器和相关安全功能的验证后才能正常运转,这不但使得数据更为安全,还带来了整个系统更为坚强的抗攻击能力,配合CPU的新指令集、各种安全功能等,大幅提高了处理器的安全特性。

这一部分的最后再来看看IO核心的工艺情况。之前AMD在锐龙5000系列处理器上,IO核心采用了格罗方德的12nm工艺,因此,在新的EPYC 7003系列处理器上,AMD也可能采用同样的做法,那就是IO核心依旧使用的是格罗方德的12nm工艺。实际上,对EPYC处理器来说,IO核心的面积由于集成了内存控制器、缓存、PCIe控制器以及和所有核心连接的Infinity Fabric、各种功能单元接口等,因此内部结构不但非常复杂并且晶体管数量也不小。实际上在格罗方德的12nm工艺下,IO核心的面积非常大。目前尚未有具体的IO核心面积数据,但是目测来看,基本相当于4~6个CCD核心。可能AMD会在未来进一步升级IO核心的工艺。

AMD EPYC 7003系列处理器:型号和性能

在了解了有关EPYC 7003系列处理器在核心架构和SoC设计方面的内容后,接下来我们来看看EPYC 7003系列处理器型号方面的内容。说实话,对EPYC这种面向企业级、商业用户的处理器而言,在型号方面很可能是非常复杂和难以区分的。不过AMD在型号梳理归纳方面显然还是下了一番功夫,从核心数量和用途两个方面进行了归纳,让大部分用户一眼就知道自己需要什么、应该选择什么。首先来看所有处理器都支持的技术特性。目前所有EPYC 7003系列处理都支持8通道DDR4 3200、最大4TB内存、128通道PCIe 4.0、SMT技术、支持Turbo 频率加速、支持18Gbps的AMD Infinity Fabric总线、支持SME和SEV安全特性、支持IF总线和内存时钟同步等技术。在支持所有技术特性的基础上,AMD将处理器核心数量分为7个档次,分别是64核心、56和48核心、32核心、28核心、24核心、16核心以及8核心进行排列,总计19款(部分产品分为后缀“P”的单路产品,因此表中只有15个)。

Stream-Traid

Stream是业界广为流行的综合性内存带宽实际性能测量工具之一。和硬件厂商提供的理论最大内存带宽不同,通过fortran和C两种高级且高效的语言编写完成的Stream,可以在测试中充分发挥出内存的能力。Stream一共包含Copy、Scale、Add和Triad这4种操作,其中Triad组合了前面3种操作,所以其测试成绩更具参考价值。

对比参测处理器的规格参数我们不难看出,第三代AMDEPYC处理器的每路理论内存带宽和EPYC 7742保持一致。从我们的测试成绩来看,参测的3款第三代AMD EPYC处理器各自组成的双路系统,在这項测试中的实际内存带宽基本保持一致,同时还小幅领先双路EPYC 7742。

NAMD

NAMD是一种并行的分子动力学代码,由伊利诺伊大学厄巴纳- 香槟分校贝克曼高级科学与技术研究所的理论和计算生物物理学小组开发,它主要用于大型生物分子系统的高性能模拟。本次测试中,我们主要通过NAMD来考察参测处理器的浮点性能。

从我们的测试结果可以看到,在核心数和线程数相同的情况下,得益于更高的基础频率,以及浮点性能上的提升,双路EPYC7763在NAMD中以3%左右的优势胜过双路EPYC 7742。此外,测试成绩显示双路EPYC 7713的表现要比双路EPYC 7742稍逊一筹,我们认为这是EPYC 7713的基础频率比EPYC 7742稍低一些所致。

OpenSSL

OpenSSL广泛用于保护服务器之间的通信,这是许多服务器堆栈中的重要协议。OpenSSL测试主要包含生成签名和验证签名两部分,我们在本次此时中主要进行了生成签名测试。

测试成绩显示,双路EPYC 7763在我们的测试中每秒钟可生成27163.2个签名,其签名效率比双路EPYC 7742快2%左右。此外,即使EPYC 75F3的核心数和线程数仅为EPYC 7742的一半,但EPYC 75F3处理器的“高频”特点让它在OpenSSL中表现不俗—双路EPYC 75F3在本次测试中生成签名的效率可以达到双路EPYC 7742的66%左右。

UnixBench Dhrystone 2和 Whetstone测试

本项目主要用于测试Unix系统性能,其中包括测试字符串处理的Dhrystone 2 using register variables和测试浮点操作速度和效率的Double- Precision Whetstone这两个测试项目。此外,在这两个测试项目均可选用单线程或多线程进行测试,本次测试我们使用的是多线程。

第三代AMD EPYC处理器强大的浮点运算性能在这部分测试中得到充分展现。例如在Double- Precision Whetstone这一测试项目中,双路EPYC 7763的测试成绩远超上一代定位旗舰的双路EPYC 7742,领先幅度高达40%,同时双路EPYC7713也在这项测试中领先双路EPYC 7742约3 4%。更令人欣喜的是,双路EPYC 75F3在这部分测试中的性能表现可达双路EPYC 7742的89%。而在Dhrystone 2 using registervariables这一测试项目中,第三代AMD EPYC处理器的表现同样比较亮眼。例如相比双路EPYC 7742,双路EPYC 7763和双路EPYC 7713的测试成绩分别领先约17%和3%,同时双路EPYC 75F3的性能也可以达到双路EPYC 7742的78%左右。

C- ray 1.1

C- ray是一种常用的光线追踪基准测试,可以显示多线程工作负载下处理器的差异,时间越短说明系统性能越强。在本次测试中,我们使用了4K和8K这两种分辨率进行测试,从而对比参测系统在不同负载下的性能差异。

得益于较高的核心频率,双路EPYC 75F3在C- ray中的表现比较亮眼。虽然其核心数和线程数仅为双路EPYC 7763的一半,但得益于较高的核心频率,双路EPYC 75F3在4K分辨率下完成测试任务仅比双路EPYC 7763多耗时约1秒,而且即使在8K分辨率下,双路EPYC 75F3完成测试任务的耗时也只是比双路EPYC 7763多耗时约6秒。

Sysbench CPU测试

Sysbench是一款被广泛使用的Linux基准测试,它可以对CPU进行性能测试,在测试中主要是通过CPU进行质数加法运算,本次测试使用的质数极限为10000个。

我们的测试成绩显示,双路EPYC7763 每秒可完成487771轮运算,而双路EPYC 7713的性能约为双路EPYC7763的92%。值得点赞的是,双路EPYC 75F3每秒也能完成304232轮运算,其性能约为双路EPYC 7763的62%左右。虽然EPYC 75F3的核心数和线程数仅为EPYC 7763的一半,但我们认为更高的基础频率是前者的“加分项”。

目标:继续强化服务器领域的市占率

总览本次测试结果我们不难看出,Zen 3架构让第三代AMD EPYC处理器的综合性能得到大幅增强。例如,在保持核心数和线程数相同的情况下,双路EPYC 7763在浮点运算性能相对双路EPYC 7742有了跨越式的提升。同时即使核心数和线程数仅为双路EPYC 7742的一半,但双路EPYC 75F3的浮点性能也可以与之媲美。

得益于更大的执行窗口,以及专用分支预测和地址选择器的加持,第三代AMD EPYC处理器在整数运算上的性能也得到增强,这一点也在本次测试中得到充分体现。此外,第三代AMDEPYC处理器提升了三级缓存应用和内存配置上的灵活性,以及大幅增强的安全性。不仅如此,第三代AMD EPYC处理器还针对不同客户、不同场景推出了包含“F”系列产品在内的多个细分产品线,共计19款产品,整个产品布局非常完善。

与此同时,AMD仍然在重点打造其EPYC处理器的生态系统。AMD也宣布,预计到2021年底,AMD EPYC处理器将与包括亚马逊、思科、联想、腾讯云在内的众多合作伙伴携手合作,为其生态系统带来超过400个云实例以及超过100个新OEM平台。因此我们认为,第三代AMD EPYC处理器将帮助企业用户从容应对各种复杂的IT挑战,并成为AMD斩获更多数据中心市场份额的新一代战略性产品。

猜你喜欢

浮点双路内存
LEO星座增强GNSS PPP模糊度浮点解与固定解性能评估
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
基于浮点DSP的铁路FSK信号检测
“春夏秋冬”的内存
一种双路隔离输出反激变换器的设计
调度集中系统局间数据的双路冗余传输方案
一种单电感双路输出LED驱动电路分析
基于FPGA的浮点FIR滤波器设计
改进的Goldschmidt双精度浮点除法器
基于内存的地理信息访问技术