广谈大湾网

广谈大湾网 首页 资讯 数码科技 查看内容

为什么说 Armv9 架构将会全面挑战 x86?

2021-6-4 08:59| 发布者: 流水指年

摘要: 近十年来,Arm 整个生态体系有了飞速的发展。这得益于智能手机的普及,几乎所有人都知道了 Arm 的存在。事实上更大的变革来自其他方面,比如桌面平台、服务器和超算领域。更接近于人们认知的是苹果推出了首款自研芯 ...

       近十年来,Arm 整个生态体系有了飞速的发展。这得益于智能手机的普及,几乎所有人都知道了 Arm 的存在。事实上更大的变革来自其他方面,比如桌面平台、服务器和超算领域。更接近于人们认知的是苹果推出了首款自研芯片 M1,从自己产品线吹响了取代英特尔芯片的号角,无论对于苹果还是 Arm 生态系统,这都是一个划时代的产品。x86 已经主宰了计算机行业多年,随着 Arm 的崛起,接下来的将面临有史以来最大的挑战。

       Armv8 架构是 Arm 在 2011 年推出的第一款 64 位架构,相比 Armv7 架构是一个巨大的跨越。苹果在其中扮演了重要的角色,也借此迅速地推出了一连串基于此架构的芯片,从 iPhone 和 iPad 系列产品,最终拓展到了桌面平台的 iMac 上,在市场竞争中占据了先机,因此大获成功。不少企业也基于此架构,开发了可用于服务器和超算领域的产品,个别产品也获得了不错的效果,Arm 架构芯片得到了更广泛的应用。可以说 Armv8 架构让 Arm 芯片从小型或移动设备,进入了新的领域。

       前一段时间,Arm 发布了全新的 Armv9 架构,开启了新的征程。根据 Arm 官方的介绍,新的 Armv9 架构将会至少使用 10 年,未来两代基于 Armv9 架构的处理器在性能上有望提升 30%。与 Armv8 架构不同的是,Armv9 架构的适用范围更广阔,其一系列改进不少都是为了 Arm 架构芯片可以实现高性能计算做铺垫,也就是说更接近于大家口中 "x86 处理器的对手 " 这个定位。

       在 Armv8 架构基础上,Armv9 架构继续使用 AArch64 作为基准指令集,保持了向下兼容性,在此基础上分别在安全性、AI(机器学习)以及可伸缩矢量扩展和 DSP 上做出改进,扩展了应用范围。Armv9 架构包括了三个系列,分别是通用计算的 A 系列、实时处理器的 R 系列和微控制器的 M 系列。

       Armv9 架构在安全性方面做了多方面的工作,比如引入了 Arm 机密计算体系(Confidential Compute Architecture, CCA)和动态创建机密领域(Realms)概念,通过打造基于硬件的安全运行环境来执行计算,保护代码和数据免被窃取或修改。Arm 还与谷歌合作开发了 " 内存标签扩展 " 技术,可以在软件中查找空间和时间的内存安全问题。另外,Arm 与剑桥大学在其 CHERI 架构上进行合作,从架构底层提高安全性。

       Arm 认为,未来计算性能的提升非常重要的驱动力就是 AI。不同的设备的 AI 性能需求不同,对 AI 处理器的要求也会不一样。为了满足未来的行业需求,Arm 在原有的 SVE(可伸缩矢量扩展)指令集基础上,开发了 SVE2 指令集,增强了新一代 Arm 架构在高性能计算、5G 网络、虚拟现实、AI 和 DSP 等方面的性能。另外 Arm 对矩阵乘法的进一步优化,以及 Mali GPU 和 Ethos NPU 的持续改进,也将扩展 Armv9 架构的技术能力。

       随着各行各业对处理器的要求已从通用计算向专用计算发展,为了满足各方对性能的需求,Arm 提出了全面计算(Total Compute)的设计方法。通过对系统级硬件(包含 Arm 的 CPU、GPU、NPU)和软件优化,将全面计算的设计方法应用在汽车、用户端、基础设施和物联网等解决方案的整个 IP 组合中,让 Armv9 架构加速总体计算性能。

       富士通(Fujitsu)作为一家在超级计算机领域有着丰富经验的企业,与 Arm 合作开发了 SVE 指令集来扩展 Arm 处理器。SVE 指令集并不是 Armv8 基本规范的一部分,只是一个扩展,不过在 Armv9 里,已经成为了标准规范的一部分。虽然 SVE 作为初代产物,应用范围有限,并且更多地只是针对 HPC 工作负载,但作用不可忽视。

       Arm 和富士通的合作成果是 A64FX,是首款使用 SVE 指令集的 Arm 架构处理器,也就是目前世界排名第一超算系统 "Fugaku" 使用的芯片,表现相当亮眼。

       根据富士通的介绍,A64FX 采用台积电 7nm FinFET 工艺制造,拥有 87.86 亿个晶体管,596 个信号针脚,集成了 52 个核心,包括 48 个计算核心和 4 个一样结构的管理核心。所有的 52 个核心分为四组,每组 13 个,共享 8MB 二级缓存。每组之间的互联使用的是富士通第二代 TOFU,也就是 6D mesh/torus 片上互联网络。同时配置了配的 32GB HBM2 内存,16 条 PCIe Gen3 通道,拥有 1024 GB/s 的存储带宽。可以提供 2.7 TFLOPS@64bit,21.6 TFLOPS@8bit 的性能。

       基本上 A64FX 是一款除了贵,没有什么缺点的产品。Arm 与富士通在 A64FX 合作开发过程中,得到了超算系统方面的大量研发经验,为接下来 Armv9 架构的标准规范制定工作奠定了坚实的基础。

       随着人工智能、机器学习和数据分析等项目在经济生产和日常生活中变得更普遍,数据中心和超算系统将越来越受到重视。这个由英特尔和 AMD 的 x86 处理器主导的市场,自然也是未来 Arm 想要涉足的地方。在这个领域,富士通 A64FX 处理器为 Arm 打响了第一枪,可以说是 Arm 架构芯片一次成功的试水。

       对于目前使用基于 Armv8 架构处理器的 iPhone 或 iPad 系列这样的产品,想运行某些为 A64FX 制作的代码是不可行的,因为不支持 SVE 指令集。在不久的将来,基于 Armv9 架构处理器的新一代移动设备却可以做到,因为 SVE 指令集已经成为 Armv9 架构标准的一部分。从这个角度来看,等于将 " 超算 " 塞进了口袋。

       在现代微处理器中,处理矢量的指令被称为 SIMD 指令。从技术上讲,Arm 的 Neon 和 SVE 指令集都可以视为 SIMD 指令的一种形式,这是单指令多数据流的简称。简单来说,就是当你向 CPU 发出一条指令,然后会在同一时间对多个值进行相同的操作。这类型的指令集其实很常见,在 x86 微处理器里,为更快进行多媒体处理和视频编解码工作,使用了包括 MMX、SSE 系列和现在的 AVX 系列等指令集,都有相似的思路和作用。

       不过目前 x86 的 SIMD 指令存在一定的问题。比如一些看起来相同的指令,因为参数不同,都会被编码为独立的指令。另外矢量寄存器由 MMX 的 64 位,扩展到 AVX-512 的 512 位,但由于在 x86 的 SIMD 指令里,矢量寄存器的长度会被编码在 SIMD 指令中,需要增加一条指令来处理,长度不同的矢量寄存器都要添加新的扩展和指令,所以每当英特尔提供更大的矢量寄存器,就不得不大量增加新指令以适应矢量寄存器长度的变化。自 1978 年以来,IA-32 指令集已从 80 条增加到大约 1400 条,主要就是由 SIMD 指令推动的,最终变得越来越臃肿,编译也变得愈加繁琐。

       在 x86 的早期,处理器制造工艺的提升相对容易,晶体管数量可以很轻松地以几何级数量增加,指令集的条数也不算多,想加入更大的矢量寄存器并不难,每隔几年增加新指令也是常态。不过随着工艺开发越来越难,以及晶体管密度过高造成的各种问题,通过这种方式提高性能可能开始有点行不通了。目前在消费级平台,使用 AVX-512 指令集的时候会有什么样的效果,英特尔第 11 代酷睿系列处理器的表现相信已经有目共睹了。

       一般来说,使用 x86 处理器的领域允许其做得更大,功耗高一些可能也没关系,对于超算系统使用的处理器而言,更不会那么严格。不过 Arm 架构的处理器大多是用在小型设备上,对功耗和散热都很敏感,所以就变得很谨慎了。更重要的一点是,Arm 试图让自己的架构可以覆盖更广泛的领域,从微小的嵌入式设备到 "Fugaku" 这样的超算系统。虽然 Arm 也能提供不同的指令集,或者为不同的细分市场提供不同的配置标准,但软件可以在所有 Arm 架构芯片上编译和运行会更符合 Arm 的利益,发挥出其架构的最大效益。

       如果 Arm 按照 x86 的这种思路,显然是达不到自己想要的效果。而 SVE/SVE2 指令集可以让 Arm 做到不同类型芯片上提供可变长度的矢量寄存器,一个矢量寄存器的最小长度为 128 位,最大长度为 2048 位。无论在什么样的 Armv9 架构芯片上运行,矢量的可变长度都为 128 位。

       未来智能手机使用的 Arm 处理器,可能使用 128 位的矢量寄存器就可以了,而在超算系统里,则可以使用 2048 位的设计,代码能够充分利用矢量寄存器的长度以达到更高的性能。这意味着同样的代码其实可以适用于超算系统和普通人的智能手机,这是目前 x86 的 SIMD 指令所做不到的,而且需要解码和管理的指令也更少,装入缓存的指令也少得多。

       或许有人会产生一个疑问,为什么 SVE2 与 SVE 有什么不同?带来了什么变化?

       SVE 指令集是 Armv8 架构里的一个可选扩展,为适应高性能计算需要而设计的,适用性有限。对于大多数用户而言,更多地是使用 Arm 的 Neon 指令集,所做的多媒体工作负载可能更贴合他们的需求,对于这类型工作基本不需要长的矢量寄存器。SVE2 指令集一方面完善了 SVE 指令集的不足,另一方面基本做到了原来 Neon 指令集所要做的事情,而且有着更高的效率和更好的灵活性,可变长度让其不但适应使用长矢量寄存器的工作,还能胜任使用短矢量寄存器的任务。

       未来用户根据自己的实际用途,使用 Armv9 架构可以设计出更适合自己的芯片,既可以是最小最省电的芯片,也可能是要求最高性能的芯片,而且用户只需要编译一次。这也避免了 Arm 相隔几年就要考虑大量加入新的 SIMD 指令,使其加入到英特尔和 AMD 的 SIMD 指令军备竞赛中。SVE2 指令集为使用 Arm 架构芯片的用户提供了一个具有稳定性和可发展空间的平台,开发人员编写和优化 Arm 代码变得更加容易,这有利于编写机器学习、人脸识别和语音识别的程序变得更加容易,而且不用担心目标平台是否支持这些指令,搭载的设备变得更多样化。

       事实上 RISC-V 和 Arm 一样,在指令集类型上有一样的追求。在未来几年,英特尔和 AMD 将面临严峻的挑战,在机器学习、人工智能、数据中心和超算等高性能、高利润的领域,面对的竞争对手并不是彼此,而是 Arm 甚至 RISC-V 这样的新生势力强有力的冲击。Armv9 架构的发布,指明了 Arm 前进的方向,未来的道路已渐露曙光。当了解了这些以后,再看看英伟达想以 400 亿美元买下 Arm,是不是觉得有点超值?


以上图文均来源于超能网,转载目的在于传递更多信息,并不代表大湾网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在后台联系微信,我们将在第一时间删除内容!


鲜花

握手

雷人

路过

鸡蛋
  • 发布新帖

  • QQ客服

  • 微信公众号

  • 移动端

  • 返回顶部