有关国产芯片话题的新闻,时常会引来人们的关注和讨论。在国内目前有很多家不同类型的芯片公司,涉及架构覆盖 x86(海光、兆芯)、MIPS(龙芯、君正)、ARM 架构(华为海思等)、RISC-V 架构(阿里平头哥)等几乎所有方向,其中海光所走的道路可谓最为特殊。
贸易战期间,国产处理器与中科海光(Hygon)一度被推上了风口浪尖——美国曾向芯片业巨头 AMD 施压意图阻止中国公司获取先进 CPU 技术,此事引得 AMD CEO 苏姿丰在不同场合进行了多次表态。AMD 曾向海光进行过一代 Ryzen 和 EPYC 的 Zen 架构授权,基于这些技术,海光已经推出了「中国版 Zen 架构」芯片。
这个故事还得从 2016 年说起,当时 AMD 与中国天津海光先进技术投资有限公司(THATIC)签订了技术许可协议,前者将旗下的 x86 和 SoC IP 技术授权为中国公司用于芯片开发,AMD 则获得了价值 2.93 亿美元的现金(外加特许权使用费)。
对于动亟数亿美元投资的芯片行业来说,这笔交易在现在看来似乎有些难以理解,不过考虑到当时的情况:中国公司希望能够为高性能 X86 架构提供本土化解决方案,而 AMD 急需资金,于是我们就看到了目前时而出镜的 Dhyana 处理器。它也成为了我国在面临贸易战极端情况下的备选方案之一。
但摆在这所有之前的问题是,既然 AMD 的 X86 架构授权有相当程度来自于英特尔,那么 AMD 再将自己的其中一部分授权给海光是可行的吗?实际上,它并没有违反英特尔与 AMD 之间的任何许可协议,而且更重要的是,它没有违反美国有关高性能计算知识产权出口的任何法律。
据介绍,美国政府为英特尔、AMD 等公司生产的处理器进行了价值标定,一旦其算力(FLOPS)和功耗的比值过高就会被认为是「性能过强」而被限制出口。不过早在 2015 年,AMD 就已向美国国防部、商务部等机构进行了申请,并获得了向中国提供技术转让的许可。
所有一切的目标,就是为了向中国提供 AMD 的 Zen 1 CPU 版本,并让这一版本可被称为是「中国制造」。多年以来,中国一直希望摆脱对于西方技术的依赖。在这里,AMD 并未将完整的 CPU 架构交给了中国公司,它所做的是向海光许可了单核设计以及 SoC 布局,由后者进行实现化设计(同时 AMD 也少量参与了海光的设计工作)。最后这些设计会经由格罗方德(GlobalFoundries)以 14nm 工艺生产成为芯片发向市场。此外海光还会帮助设计基于此架构的主板。
然而 2019 年,美国商务部将海光加入了实体清单,这意味着 AMD 难以继续向合资企业授予任何其他 IP 许可。海光现在仍然可以使用已获得许可的原始 IP,并且可以继续对其进行改进。
最近,海外媒体 anandtech 对这些芯片进行了首次评测,不过需要注意的是:测试的 CPU 皆为工程样品。
它们是类似于 8 核 Ryzen 1000 的桌面级 CPU,以及一块 32 核 Hygon 2U 服务器 CPU。它们属于「7185」型号,是海光提供的顶配 32 核处理器。
海光系统
Anandtech 本次评测获得的 Dhyana Plus 系统,和 2017 年 3 月 AMD 提出的,代号为 Naples 的高性能商用服务器架构非常类似。 而基于 8 核心 Dhyana 芯片的台式工程机样品则没有明显的型号线索。
如图所示,主板使用 microATX 形式,设计上非常「服务器化」,DDR4 内存卡插槽平行于——而非垂直于风路排列,这有利于气流通过机箱快速散热。从插槽上看,评测拿到的是无插槽 BGA 设计,这意味着 CPU 与主板连接在一起,无法更换升级——这又类似于我们经常会在笔记本或嵌入式系统上看到的设计。
这块 CPU 由一个六相电力系统供电,而且是一个纯 CPU 产品,没有集成显卡。另有一个 IPMI 控制器提供 2D 图像输出能力,它是通常会出现在服务器系统中的 ASPEED AST2500 芯片。与常见的 microATX 主板相比,海光系统只有三个扩展槽,其中两个是全长的 PCIe 3.0,另一个则是开放式的 PCIe x4。
通常这样的 CPU 并不需要芯片组支持即可工作,因为它们已经集成了一些 SoC 级别的 IO 功能,不过一些 Ryzen CPU 的用户还是会使用 X370 芯片组与之配合。海光芯片在这里使用的是 Lattice Semiconductor FPGA 作为芯片组。这为主板提供了一套奇特的组合 IO:包括 SATA 端口、四个双 LED 屏幕输出,许多自定义连接口、按钮以及一些无法识别的东西。
在海光主板上放一块 Ryzen CPU 作为示意。
相比之下,海光的双插槽服务器主板就显得非常强大了。据了解,这些服务器是为计算以及存储任务设计的,每块 CPU 与四个分支连接器配对,通向 4 个 U.2 接口硬盘或者 16 路 SATA。这些 CPU 拥有接通八路内存的能力,但在本次测试中作者只使用了四通道。
海光服务器端 CPU 特写,这块芯片型号为 C86 7185。
基本属性
这台服务器实际上是由中科曙光(Sugon)设计的,有 12 个前面板 2.5 寸驱动器插槽。而对于 8 核桌面系统,测试过程中则将其置入一个标准的台式机平台,并配备 CPU 风扇。两种系统都通过远程桌面访问的方式进行了测试。
首先是简单的 Benchmark 跑分,CPU-Z 看起来不能完全识别海光的 CPU。跑分软件只能对 8 核桌面 CPU 的单核进行识别,显示为 3.2GHz,除了对 AVX、AVX2 和 FMA3 的支持信息外,也没有其他更多信息了。对于服务器 CPU,CPU-Z 则完全无法运行。由此观之,跑分软件把 CPU 的每个核心都错认为一个单独设备了,而且 AMD 消费级 CPU 上的一些数据访问方式也和海光芯片有所不同。
那么问题来了,与 AMD 的 Ryzen/EPYC 相比,海光处理器究竟有哪些不同?总体而言,核心布局是相同的,缓存大小、TLB 大小和端口分配都相同,在基础级别上两者没有差异。CPU 仍然是 64KB 四路 L1 指令缓存,32KB 八路 L1 数据缓存,512KB 八路 L2 缓存以及 8MB 十六路 L3 缓存,与 Zen 1 核心完全相同。
加密方式变化
在 Linux 内核升级中有关加密变化的信息已经明示。这些更新围绕 AMD 虚拟化功能(SEV)的安全加密进行。通常对于 EPYC 处理器来说,SEV 由 AMD 定义的加密协议控制,在这种情况下为 RSA、ECDSA、ECDH、SHA 和 AES。
但在海光 Dhyana 处理器中,SEV 被设计为使用 SM2、SM3 和 SM4 算法。在更新中有关 SM2 的部分声明道,这种算法基于椭圆曲线加密法,且需要其他私钥/公钥交换;SM3 是一种哈希算法,类似于 SHA-256;而 SM4 是类似于 AES-128 的分组密码算法。为支持这些算法所需的额外功能,其他指令也被加入到了 Linux 内核中。在说明文件中指出,这些算法已在 Hygon Dhyana Plus 处理器上成功进行测试,也已在 AMD 的 EPYC CPU 上成功测试。
基准测试
此外,海光与 AMD 原版芯片最大的设计区别在于吞吐量,尽管整数性能相同,但海光芯片对于某些浮点指令并未做流水线处理,这意味着吞吐量和延迟都减小了:
这些对于最基础的任务来说也会有所影响,降低吞吐量的设计会让 CPU 在并行计算时性能受限。另外一个最大的变化,以及 Dhyana 与服务器版的「Dhyana Plus」版本之间的不同在于随机数生成的能力。
可以看到,RDSEED(用于生成随机数算法的种子生成)在服务器版本的海光芯片上的处理速度慢了 10 倍以上,而用于实际生成基于硬件的随机数的 RDRAND 则比标准 Ryzen 快-在服务器芯片上亦是如此。
关于 AVX 和 AVX2 的性能,尽管 CPU 被标识为支持这两个功能,但对于它们的 Benchmark 却失败了。而有关 AES 的测试,因为不支持所以获得了低分:
还需注意的是,通常用于测量 AMD CPU 功耗的方法在这里也无法使用了,看起来已被删除。
Windows 性能
两个测试系统被安装了 Windows 10 Pro 与企业版。由于 AVX/AVX2 无法正常工作,测试的范围受到了限制。不过对于海光 CPU 来说,在实际使用中应该更多地是与 Linux 进行配合。
从测试数据中我们可以看到,因为时钟频率,8 核心的 Dhyana 处理器的性能大概在 6 核的 Ryzen 5 1600X 与 8 核心的 Ryzen 6 1800X 之间,但在某些测试上,它的效率甚至只能和 Athlon 200GE 相比。32 核的 Dhyana Plus 服务器芯片看起来有一些缺陷,经常会被 Ryzen 7 1800X 击败,更不及当前世代的 Ryzen 9 3950X。不过在某些基准如 Corona 上,海光服务器 CPU 的表现看起来不错。
结论
由于在 Zen 1 的基础上进行了大量的修改,海光 CPU 可以不用简单地称之为换壳 AMD 处理器了。但其性能相比同代原版 CPU 略差:整数性能基本相同,浮点性能显著降低——普通指令吞吐量只有基准水平的一半。海光 CPU 的随机数生成机制也被修改,加密引擎已被替换,不再对常见的 AES 指令进行加速,但覆盖了其他面向国内安全性的指令如 SM2、SM3 和 SM4。
为了能让 AMD 的设计顺利转换为国产 x86 CPU,AMD 与海光成立了复杂的合资公司,以便让核心技术继续由 AMD 保留,而国内公司可以在其之上进行修改。此后这些芯片由 GlobalFoundries 进行生产(它是由 AMD 制造部门拆分出的半导体晶圆代工厂),最终成品打包出售给中科曙光等公司。
总体而言,海光 CPU 为中国提供了英特尔之外,x86 架构芯片的替代产品,在自产芯片,乃至当前贸易战背景下可以起到一定作用。而 AMD 自 2016 年的合作中也获得了急需的资金,为日后成功的发展带来了一定帮助。但由于合作协议仅限于 Zen 1 而非目前成功的 Zen 2,海光芯片的竞争力受到限制,可能仅限于政府单位使用。想要制造更加强大的芯片,我们还需努力。
参考内容:https://www.anandtech.com/show/15493/hygon-dhyana-reviewed-chinese-x86-cpus-amd |