云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_数据库原子性_返现

小七 141 0

ARM大展宏图:高通与英特尔CPU之比较

我在Cloudflare有一个更好的福利,那就是在最新硬件上市之前就可以使用它。直到最近,我主要是玩英特尔的硬件。例如,英特尔早在2016年8月就向我们提供了他们基于Skylake的Purley平台的工程样本,以便我们有时间对其进行评估并优化我们的软件。作为一名英特尔前架构师,他在Skylake(以及Sandy Bridge、Ivy Bridge和Icelake)上做了大量工作,我真的很享受这一点。我们上一代服务器基于Intel Broadwell micro体系结构。我们的配置包括双插槽Xeon E5-2630 v4,每个10核,运行速度为2.2GHz,支持3.1GHz涡轮增压和超线程,每个服务器总共有40个线程。由于英特尔过去和现在都是服务器CPU市场无可争议的领导者,市场份额超过98%,我们的升级过程一直很简单:每年英特尔都会发布新一代CPU,而且我们每年都会购买它们。在这个过程中,我们通常会在每个插座上多获得两个内核,而这样的升级带来的所有额外的架构特性:Westmile的AES和CLMUL,Sandy Bridge的AVX,Haswell的AVX2等等。在当前的升级周期中,我们的下一个服务器处理器应该是Xeon Silver 4116,也是双插槽配置。事实上,我们已经购买了相当数量的产品。每个CPU有12个内核,但它的运行频率较低,为2.1GHz,具有3.0GHz的涡轮增压。它还有更小的末级缓存:1.375MiB/core,而Broadwell处理器只有2.5MiB。此外,基于Skylake的平台支持6个内存通道和AVX-512指令集。然而,在我们进入2018年之际,变化正在酝酿之中。有段时间以来,英特尔在服务器市场上首次出现了激烈的竞争:高通和Cavium都有基于ARMv8 64位体系结构(又称aarch64或arm64)的新服务器平台。高通公司有基于Falkor核心的Centriq平台(代号Amberwing),Cavium有ThunderX2平台,基于,ahm。。。ThunderX2内核?雄伟的慢跑动力由法尔科CPU CC by-SA 2.0图像由Drphomoto提供最近,高通公司和Cavium都向我们提供了他们基于ARM平台的工程样品,在这篇博文中,我想分享我对高通平台Centriq的研究结果。有问题的实际慢跑概述我测试了Qualcomm Centriq服务器,并将其与最新的基于Intel Skylake的服务器和以前基于Broadwell的服务器进行了比较。PlatformGrantley(英特尔)Purley(英特尔)Centriq(高通公司)CoreBroadwellSkylakeFalkor公司处理14nm14nm10nm发出8µops/周期8µops/周期8指令/周期调度4µops/周期5µops/周期4指令/周期#芯10 x 2S+HT(40螺纹)12 x 2S+HT(48螺纹)46频率2.2GHz(3.1GHz turbo)2.1GHz(3.0GHz turbo)2.5GHzLLC2.5 MB/核心1.35 MB/核心1.25 MB/核心内存通道466TDP170W(85瓦x 2秒)170瓦(85瓦x 2秒)120瓦其他特性EsclmulAVX2AESCLMUL公司AVX512AESCLMUL公司新中心32总的来说,法尔科看起来很有竞争力。在相同的频率下,也可以采用更高的频率。生态系统准备到目前为止,部署ARM服务器的一个主要障碍是缺乏,或者说缺乏大多数软件供应商的支持。在过去的两年里,ARM的支持工作取得了成效,因为大多数Linux发行版和大多数流行的库都支持64位ARM架构。不过,目前还不清楚司机的可用性。在Cloudflare,我们运行一个由许多集成服务组成的复杂的软件堆栈,高效地运行每一个服务是首要任务。在边缘,我们有NGINX服务器软件,它支持ARMv8。NGINX是用C语言编写的,它还使用了几种C语言编写的库,如zlib和BoringSSL,因此对C编译器的可靠支持非常重要。此外,我们的NGINX版本与lua NGINX模块高度集成,而且我们非常依赖LuaJIT。最后,我们的很多服务,比如我们的DNS服务器RRDNS,都是用Go编写的。好消息是gcc和clang不仅总体上支持ARMv8,而且有针对Falkor核心的优化配置文件。Go对ARMv8也有官方支持,他们不断改进arm64后端。至于LuaJIT,稳定版2.0.5不支持ARMv8,但beta版2.1.0支持。希望它能很快退出测试版。基准开放式SSL我想执行的第一个基准测试是OpenSSL版本1.1.1(开发版本),使用捆绑的OpenSSL速度工具。尽管我们最近改用了BoringSSL,但我还是更喜欢OpenSSL作为基准测试,因为它几乎同样优化了ARMv8和最新英特尔处理器的汇编代码路径。在我看来,手工编制的汇编程序是衡量CPU潜力的最好方法,因为它绕过了编译器的偏见。公钥密码术公钥密码术是关于原始ALU性能的。有趣的是,在单核基准测试中,Broadwell核心的速度比Skylake快,而这两个都比Falkor快。这是因为Broadwell的运行频率更高,而在建筑上它并不比Skylake差多少。法尔科在这里处于劣势。首先,在单核基准测试中,使用了turbo,这意味着英特尔处理器的运行频率更高。其次,在Broadwell中,Intel引入了两条加速大数乘法的特殊指令:ADCX和ADOX。它们在每个循环中执行两个独立的add with carry操作,而ARM只能执行一个。类似地,ARMv8指令集没有执行64位乘法的单个指令,而是使用一对MUL和UMULH指令。然而,在SoC层面,Falkor赢得了很大的成功。在RSA2048签名上,它只比Skylake慢一点,这是因为RSA2048没有针对ARM的优化实现。ECDSA的性能快得惊人。一个Centriq芯片可以满足世界上几乎所有公司的ECDSA需求。很有意思的是,尽管失去了单核基准,Skylake的表现仍比Broadwell高出30%,而且核心只增加了20%。这可以解释为更高效的全核心turbo和改进的超线程。对称密钥加密Intel核心的对称密钥性能非常出色。AES-GCM使用特殊硬件指令的组合来加速AES和CLMUL(无载波乘法)。英特尔早在2010年就推出了这些指令,使用的是Westmile CPU,此后每一代都在不断提高性能。ARM最近推出了一组类似的指令,其中有64位指令集,并作为可选扩展。幸运的是,我所知道的每个硬件供应商都实现了这些功能。高通公司很有可能在未来几代中改进加密指令的性能。ChaCha20-Poly1305是一种更通用的算法,其设计方式可以更好地利用广泛的SIMD单元。高通CPU只有128位宽的NEON SIMD,Broadwell有256位宽的AVX2,Skylake有512位宽的AVX-512。这就解释了Skylake在单核性能上的巨大领先优势。在全核心基准测试中,Skylake领先优势减少,因为在执行AVX-512工作负载时,它必须降低时钟速度。当在所有核心上执行AVX-512时,基频会降到1.4GHz——如果要混合AVX-512和其他代码,请记住这一点。对称加密的底线是,虽然Skylake领先,但Broadwell和Falkor在任何实际情况下都有足够好的性能,特别是考虑到在我们的边缘,RSA比所有其他加密算法的总和消耗更多的CPU时间。压缩我希望看到的下一个基准是压缩。这有两个原因。首先,它是边缘上非常重要的工作负载,因为更好的压缩可以节省带宽,并有助于更快地将内容交付给客户端。其次,这是一个要求非常高的工作负载,分支预测失误率很高。显然,第一个基准测试将是流行的zlib库。在Cloudflare,我们使用了一个改进版的库,它针对64位Intel处理器进行了优化,尽管它主要是用C编写的,但它确实使用了一些英特尔特有的内部函数。将这个优化版本与通用的zlib库进行比较是不公平的。不用担心,我不费吹灰之力就调整了这个库,使之能够很好地在ARMv8架构上工作,并使用了NEON和CRC32内部函数。在这个过程中,对于某些文件,它的速度是通用库的两倍。第二个基准是新兴的brotli库,它是用C编写的,允许所有平台都有一个公平的竞争环境。所有的基准测试都是在blog.cloudflare.com,在内存中,类似于NGINX执行流式压缩的方式。特定版本的HTML文件的大小是29329字节,这使得它很好地代表了我们通常压缩的文件类型。parallel基准测试并行压缩多个文件,而不是在多个线程上压缩单个文件,这也类似于NGINX的工作方式。广州工业园区使用gzip时,在单核级别,Skylake无疑是赢家。尽管它的频率比Broadwell低,但似乎对分支预测失误的惩罚更低有助于它向前迈进。Falkor核心并不落后,尤其是低质量设置。在系统级别,Falkor的性能明显更好,这要归功于更高的核心数量。注意gzip在多核上的伸缩性。布罗特利brotli在单核上的情况也类似。Skylake是最快的,但Falkor并不落后很多,质量设置为9时,Falkor实际上更快。质量级别为4的Brotli的性能与gzip在级别5的性能非常相似,但实际上压缩效果稍好(8010b与8187b)。当执行多核压缩时,情况变得有点混乱。对于4级、5级和6级,brotli的比例非常好。在7级和