威盛归来,意欲为何?新款CENTAURx86Al处理器解析

2020-04-15 03:53张平
微型计算机 2020年6期
关键词:威盛寄存器英特尔

张平

作为全球著名的半导体企业,威盛在各类处理器、音视频编解码芯片、嵌入式设备等行业中有着深厚的技术积累。之前,威盛曾经在x86处理器研发上有独到之处,先后推出过多代自主架构的x86处理器产品。不过由于性能较差、市场接受度不高等原因,威盛数年前在x86处理器市场上就几乎销声匿迹。但是近期威盛又推出了一款全新的x86处理器,其独特之处在于大幅度加强7AI计算性能,那么,这款处理器有什么特色设计与用途呢?今天本文就将为你揭开这个秘密。

威盛在x86处理器的故事其实很早就开始了,这还要从_家名为Cyrix的公司说起。Cyrix公司是一家成立于1988年的无晶圆半导体设计企业,以生产兼容英特尔286、386、486等指令集的高性能处理器为主,曾一度在性能或者规格上超越英特尔的产品。不过,在经历了专利、财务、并购、产品和设计方面的重重阻碍后,Cyrix最终落败,被威盛收购(实际上收购时Cyrix的设计团队已经几乎全部离职了)。经此一役,威盛也得到了Cyrix所有的知识产权,再加上其另外从IDT收购的处理器设计部门组建的Centaur Technology公司,威盛也能够独立进行x86处理器的设计了。

威盛的首款x86处理器是2001年发布的C3,—度采用VIA CyrixⅢ的命名,但实际上技术来自于CentaurTechnology公司的WinChip,和Cyrix关系不大。C3处理器前后经历了4代核心,工艺制程从0.18微米进步至0.13微米,早期由于FPU单元时钟频率仅为处理器核心频率的一半,因此其浮点效能比较差,后期有所改善。C3处理器整体性能比AMD和英特尔同期产品要弱,同时功耗也更低,因此在移动产品和嵌入式设备、工业设备中比较受欢迎。

在C3处理器之后,威盛在2005年发布了C7处理器。C7处理器采用CooIStream架构,使用90nm工艺制造,桌面版本在2.OGHz频率下的最大功耗仅为20W。由于功耗低,因此威盛继续瞄准嵌入式设备、HTPC市场以及移动设备等。随后威盛还推出了面向移动产品的C7-M,超低功耗版本C7-M的最大功耗仅为8W,进一步奠定了威盛在低功耗市场的地位。

接下來的2008年,威盛发布了旗下第三款处理器架构和对应的产品,VIA NANO,中文名称为凌珑。这款处理器的架构名为“以赛亚”,最大特点在于采用了乱序执行架构,制程方面则使用65nm工艺和40nm工艺制造,早期为单核心产品,后期推出了双核心版本,处理器主频最高可达2.OGHz。功耗方面,桌面产品功耗不高于25W,移动产品的功耗在5W-8W之间,后期双核心版本最低达到3.5W,最高9W-25W,依旧非常之低。

和之前的处理器一样,威盛凌珑也面向的是移动设备、低功耗设备、工业设备等场合,业内普遍认为威盛凌珑处理器是英特尔Atom处理器最大的竞争对手之一。后期威盛还基于这款处理器架构推出了四核心版本,被称为VIA QuadCore,这也是威盛首个四核心处理器产品。总体来看,VIA NANO的性能、功耗都具备与当时对手的同级产品Atom竞争的能力,显示出在专业市场威盛依然有希望分得一杯羹,为此威盛开始开发他们的第四款处理器。

威盛第四款处理器问世——Centaur

威盛在2019年年底的时候公开了一种名为”Centaur”的全新处理器系列。这也是威盛旗下的处理器部门在建立后推出的第四个全新的处理器架构,距离上一代处理器发布的时间已经过超过8年之久。Centaur的意思是半人马,这是一种在希腊神话中出现的怪物,人头马身,战斗力和移动能力都非常惊人。考虑到这款处理器特色的性能和定位,命名其为Centaur半人马也是相当符合其预期的形象。

Centaur处理器的研发代号为”CHA”,特点在于将八个高性能的CPU核心和深度定制的深度学习加速器DLA相结合,因此能够在AI计算上表现出非常出色的效能。这也是全球首个宣布在CPU中集成DLA相关模块的产品或者公司。新加入的名为Ncore的加速器甚至拥有比英特尔Xeon至强处理器还出色很多的神经网络计算能力,但同时它大大降低了用户使用外部GPU来加速类似计算所耗费的成本。威盛从2019年9月开始测试这款处理器的硅片,首款产品可能会在2020年生产或者上市——当然实际情况是迄今为止威盛都没有展示任何的产品计划,因此还有待进一步的观察。

在威盛的设计中,作为协处理器运行的Ncore并没有使用目前深度学习最常见的MAC(乘积累加运算,Multiply Accumulate,MAC)阵列,而是采用了更为传统的可编程SIMD引擎,不过令人惊讶的是,Ncore的SIMD的效率惊人,计算倍数极高。在这里,威盛设计了一个单元,可以一次性并行处理4096字节,在计算INT8也就是8位整数的时候峰值性能能够达到每秒20万亿次。此外,为了满足宽幅计算的需求,威盛还为这个加速器配备了专用的16MB SRAM单元。Ncore的架构师Glenn Henry将这种方法比喻为AVX-32768,这意味着威盛的SIMD架构宽度是英特尔的64倍。

除了专用的加速单元外,Centaur处理器还拥有一种全新的x86微体系架构,被称为CNS,其目标是每时钟周期的性能(IPC)比威盛之前的产品有大幅度提升。这种新的体系结构可以每个周期解码4条x86指令,并行执行10个包括3次加载,存储的微指令等。在频率方面,这款处理器使用了台积电成熟的16nm工艺,主频为2.5GHz。宏观架构方面,一个Centaur处理器内部包含了8个x86核心,所有的核心共享16MB L3缓存。外部数据连接方面,这款处理器拥有4个DDR4通道,提供44条PCle 3.0通道。处理器还可以支持双路系统,目标瞄准低成本服务器和边缘计算等任务。

另外还有一些消息值得分享。威盛的处理器设计单位并不在威盛位于我国台湾的总部,而是威盛位于美国德克萨斯州奥斯汀的全资子公司Centaur Technology(注意公司名称),这家公司为威盛设计处理器已经有20多年了,不过一直以来都不被外界人员过多关注和了解。公司近期以来比较大的变化是增加了名为AlLoper的新总裁,之前的总裁Henry则继续担任公司的AI架构设计师。这可能也是Centaur处理器诞生的原因之一吧。

新设计:N co re加速核心

作为片上加速器,Ncore在片上集成的很大优势就在于这种设计能够降低成本、功耗、芯片面积,并且在数据交换方面相比外置设计无论是速率还是能效比都更为出色,同时还带来了更为宽松的计算任务划分灵活性。

在架构设计方面,之所以没有选择目前流行的MAC架构,是因为设计单位CentaurLB心MAC架构可能会在快速进化的神经网络算法应用中过时,因此最后还是选择了经典的SIMD架构。SIMD架构的缺陷在于相比MAC架构其计算开销更多,因为它必须在每个周期将数据移入和移出寄存器,但是SIMD灵活性更高,能够处理更广泛的算法,包括那些经常执行非MAC操作的算法,因此在这里选择SIMD是更为合适的。

目前的DLA计算往往都实现了VLIW的架构和算法,也就是说,一条128位的指令可以控制整个管道的运作方式。在Centaur处理器中,x86核心可以将这些VILW指令加载到Ncore的指令RAM中,该RAM可以容纳768条指令(12KB)。另外还有一个4KB的特殊指令缓存,包含了一些自检代码和常见的子程序,这样可以减少指令RAM中的死区,能够有更多更宽裕的空间用于真正的计算指令存放。Ncore每个周期存取一条指令,然后对其解码,并使用定序器控制计算管道和内存。定序器包含16个地址寄存器和一个地址计算单元,后者可以通过可选的、自动递增的方式来计算各种地址的硬件(比如基准值+偏移量)。另外,Ncore内还拥有循环计数器和其他的特殊寄存器等。定序器还能控制环形接口的2个DMA引擎,从而允许指令直接向x86处理器的存储器传递数据。

在Ncore的内部存储器方面,目前的设计将这个存储器分为了两部分,分别是D-RAM和W-RAM。每个RAM部分可以在每周期提供4096字节的向量,在2.5GHz时产生20T B/s的总带宽。不过由于总线设计原因,Ncore内部的RAM每周期只能选择一个写入,这样可以与计算管道的输出速率匹配。另外,整个处理器内部的环形总线会中断Ncore内部存储器的序列,这可能是由于优先级更高的原因。不过这样的中断很少发生,因为4096字节的数据写入需要花费64个时钟周期才能加载完成。对一些高可靠性应用,2个RAM都在整个4096字节的输出值中采用了64位ECC校验,确保数据的稳定可靠。

在计算过程中,来自RAM的数据首先进入数据单元,在执行了各种移位和置换功能之后等待进一步处理。具体而言,这一步操作可以在2.5GHz时钟周期内执行多达3项功能,比如将整个4096字节向量旋转最多64个字节、广播单个INT8值(比如权重数据)以填充向量,压缩块、交换字节等。

对于单个寄存器来说,如此宽的向量需要占用可观的芯片面积,并且整个数据单元还包含了4个类似的寄存器,这个设计可能充分考虑了寄存器给每平方毫米性能带来的影响。最终我们看到处理器可以在每个时钟周期读取或者写入这些寄存器的任意一个,例如它可以使用其他寄存器之一作为字节掩码,将RAM数值和寄存器数值合并。此外,在能源方面,1到2个闲置的RAM可以在一定周期内关闭电源,但这种操作并不影响整个计算单元继续以峰值吞吐量进行计算。

Al计算:强大的SIMD引擎

Ncore的计算能力来自于其内部强大的SIMD引擎。这个SIMD引擎能够处理每个周期从数据单元寄存器中提取的2个向量操作数,并针对INT8数据进行优化,使其在每个周期都可以纳入计算。此外,这个计算单元还可以INT16和Bfloat 16数值进行操作,不过这些数据需要3个周期才能完成计算,这样一来吞吐量就有所降低,一些用户更喜欢1 6位数据以提高精度。另一个小技巧是,由于一些计算通常对INT8数值进行量化,因此在进一步计算之前,处理单元会将其转换为带符号的INT9数值(通过减去可变偏移量)进行操作。另外计算单元可以执行MAC操作,使用4096x32位的累加器,支持INT32或者FP32,并在溢出时达到饱和。除此之外,计算单元还可以执行ALU操作,包括min/max等。计算单元内还加入了8个预测寄存器,允许指令有条件地更新累加器。

计算完成后,输出单元将执行后续部分的处理。它通常将32位累加器的数值转换为INT8、INT16或者BF16格式,以便在内存中实现更高效的存储。如果需要,完整的32位值可以作为4个4096字节的向量输出。输出单元还拥有归一化的功能,比如对线性整流函数(Rectified Linear Unit,简称ReLU)、Sigmoid函数以及双曲正切函数tanh,都可以将结果直接转发到数据单元以进行下一轮处理,也可以将结果存储在2个RAM之中。

整个Ncore的设计在台积电的16nmFFC工艺中大约需要34.4平方毫米,这个面积大概是8核心CPU集群的一半。DLA部分的裸片面积大约有三分之二都被16MB的SRAM占据。Ncore的模型图中显示了将计算单元分为16个区块以简化设计过程,其中的绿色区域表示数据单元中密集的金属布线。这个部分是作为数据路由使用,主要用于重新排列数据,中央部分还包含了指令单元和环形总线接口等部件。

在软件方面,Centaur公司的设计人员构建了一个基本的软件堆栈,可将TensorFlow Lite模型转换为内部图形格式,然后将其编译为Ncore所需的格式进行计算。不仅如此,这个基本软件堆栈还为x86内核提供运行的编译或者转换,还可以管理DLA部分,并可以利用程序代码运行预编译的神经网络。这个软件可以很好地处理推理功能,但是不处理训练。在未来的计划中,Centaur公司希望为这款处理器增加对其他标准框架(如TensorFlow和Pytorch)以及标准ONNX格式和新兴MLIR格式的支持。

CPU架构设计:更多的微指令和更好的IPC

从架构设计来看,本次威盛在CNS CPU的架构设计上相比之前威盛的所有处理器都大大向前推进了一大步,比如之前的“以赛亚”架构等。但是,还是有不少技术显示了技术的继承关系。比如威盛之前的“以赛亚”架构每个周期可以解码3条x86指令,并且在起乱序执行流水线中每周期可以完成7个微指令。在CNS架构上,新的架构将解码能力扩展到了4解码和10个执行单元,再加上工艺进步带来的晶体管数量富余,因此新架构还实现了更大的重排序窗口设计、更准确的分支预测单元和更复杂的程序调度能力。特殊功能方面,Centaur公司还加入了一些新的专有指令,用于将数据传输到DLA并进行处理。當然,考虑到这款处理器对AI计算的支持,这样的操作也是理所应当的。

此外,CNS架构还支持256位的AVX和AVX2操作,甚至也能够支持比较初级的AVX-512扩展。尤其是AVX-512扩展,虽然目前的消息显示其比较早期,但是考虑到AMD暂时没有引入这项指令集扩展,同时在实际应用中AVX-512能够表现出非常出色的性能优势,CNS架构在这一点上还是值得期待的。还有一个值得关注的特性就是,CNS不支持SMT等技术,每个内核只有一个线程,因此目前的8个物理内核只能提供8个线程。

进一步来看CNS架构的内部设计。当一个计算流水线正常启动时,分支预测器会确定下一条指令的地址,然后CPU从指令缓存中获取32个字节的指令并交由预解码器确定指令边界,接下来会将四个x86指令加载到指令队列中。解码器通常每个周期处理4个指令,但是某些x86指令对可以一起解码,最多可以在一个周期内产生5个指令。接下来,解码器可以将这些指令转换为微指令( micro-ops)。

接下来,寄存器重命名单元会将请求的寄存器空间映射到更大的物理寄存器内,并形成新的文件。新的文件包含了192个整数条目和192个FP/AVX条目。寄存器重命名单元每个周期可以处理6个微指令,并将它们分配给统一调度程序。当这些输入数值准备完成,就会由64-entry的排序调度单元发出微指令。当微指令发生停顿时,也不会阻塞整个管道流水线,调度程序在等待这个阻塞解决的同时也会继续发出后续的微指令,确保整个流程顺利完成。

调度程序会同时向10个执行单元发出微指令。整个CNS内部有4个整数单元,其中2个具有乘法器,另外2个具有位处理单元(BMU),所有的整数单元每周期最多可以处理2个分支指令。CPU还有2个FP/AVX单元,其中包含浮点乘法累加(MAC)单元。另外,第3个FP/AVX单元能够处理FP分屏和AES加速操作,这3个单元都能够处理AVX整数指令。由于这些单元的宽度全部都是256位,因此AVX-512指令可以被指令解码单元分解为2个微指令。MAC单元每个周期能够产生一个结果,加法或者乘法操作具有3个周期的延迟,相比之下,完整的MAC计算需要耗费5个周期。

数据处理方面,CNS架构具有2个数据加载单元和1个数据地址存储单元。数据加载单元也可以执行存储地址的操作,因为这个功能和生成加载地址的功能是基本相同的。整数单元和FP/AVX单元可以立刻执行这些操作。另外,拥有116-entry的存储器顺序缓冲器即MOB则不断地进行负载和存储操作,直到这些单元可以访问32KB的数据高速缓存为止。此数据高速缓存每个周期可以处理2个256位的加载或者存储(以任何方式组合都可以),也可以将信息存储至整数或者FP/AVX寄存器内。和计算指令一样,AVX512的加载和存储需要分为2个微指令完成,高速缓存的每个周期总共只提供512位数据,AVX可能一次就将其占满。另外,2个L1缓存由一个专用的256KB L2缓存提供数据支持。缓冲区方面,192-entry的重排序缓冲区(ROB)会按照顺序对指令进行重排序并完成工作。

总的来看,CNS的管道需要20个步骤才能完成基本的整数计算,22个步骤才能完成数据缓存,缓存访问也高达5个阶段。采用如此多的计算阶段可以提高整个处理器的时钟频率,就像英特尔在Netbrust架构中做的那样(比如Pentium 4当时的高频率)。即使这样,这款处理器在16n m下的频率也仅为2.5GHz,远低于英特尔和AMD同期工艺的频率,比如目前英特尔14nm工艺可以将处理器频率推高至5GHz。不过,相比英特尔和AMD这样的竞争对手,Centaur公司在优化物理设计上花费的时间较少,从而在很大程度上限制了处理器频率的进一步提升。

缓存方面,每个CPU内核都有2MB的L3缓存,并可以直接对其访问。8个CPU和它们的L3缓存通过环状总线相连接。整个环状总线设计了2个512位宽的总线,数据传递总在节点和节点之间完成。环状总线的运行频率和CPU相同,理论带宽为320GB/s。由于数据通过一次环状总线可能需要多个周期,因此实际可用吞吐量应该不到此数据的一半。

同时CNS支持四通道DDR4 3200内存配置,并支持ECC内存,可以提供最高102GB/s的峰值带宽。另外处理器内部还整合了44条PCle 3.0通道,也可以根据需求配置为不同的端口,这些前文也提到过了。处理器内部本身集成了标准南桥功能,因此实现了完全的集成化解决方案。

特色鲜明:Centaur处理器的性能和市场

目前Centaur公司将这款处理器的性能等级称为“Haswell”级,这还是相当公允的。从其架构设计来看,这款处理器的设计在大多数微架构参数上都达到或者超过了英特尔Haswell的级别。这款架构提供了更多的重命名寄存器和更大的互聯带宽,不过缺少2个重要功能:SMT超线程技术和微指令缓存。前者在很多服务器的工作负载上能够带来20%-30%的性能提升,而后者可以通过大多数周期的禁用x86的解码器来降低功耗。

当然,Haswell是2013年发布的处理器架构了,英特尔当前的处理器架构核心基于Skylake(依旧非常古老),Skylake在某些方面比CNS架构更为强大,比如前面说到的超线程功能和微指令缓存。对于任何指令组合,Skylake可以每个周期解码5个指令而CNS只有在某些情况下才能达到4个,这就带来了巨大的性能差距。

不仅如此,两类处理器之间最大的区别在于,Skylake和之后的改进型架构在使用14nm+++的工艺下,能够运行在5GHz这样的高频率之下(超频后甚至能达到5.2~5.3GHz),这相比CNS的峰值速度直接翻倍。不过,考虑到大多数服务器都会运行在略低的频率以节省功耗,英特尔在速度方面的优势也得到了一定的限制。当然,接下来英特尔lOnm、基于SunnyCove新架构的服务器处理器也即将在2020年末发布,同时期CNS架构也会正式投入生产。据悉,相比Skylake,SunnyCove的IPC司提升18%,英特尔进一步拉开了差距。

不过,虽然无法企及英特尔高端处理器的性能,但是CNS也有其独特优势,有在低端市场上和英特尔产品进行竞争的机会。比如英特尔入门级的Xeon Sliver 4208,这款处理器有8个Skylake内核、支持6通道DDR4-2400内存和48个PCle 3.0通道。Centaur处理器拥有类似的DRAM和PCle规格,在TDP为85W的情况下,Xeon Sliver4208的运行频率只有2.1GHz,这要低于Centaur处理器,不过在轻负载下,Xeon Sliver 4208的频率将能通过睿频提升到3.2GHz。Centaur处理器的TDP数据现在尚未公布,不过据估计这款处理器即使在最高频率下运行,其TDP也比Xeon Sliver 4208更小一些,并且后者的标价高达417美元,Centaur处理器如何定价尚不得而知。

Centaur处理器最大的优势在于提供了对DLA的支持,根据Centaur的估计,这款处理器Ncore的MLPerf性能大约和5000美元的Xeon Platinum相当。这款处理器支持专门为深度学习量身打造的AVX512_VNNI指令集,在诸如MobileNet和ResNet-50等AI相关的测试中,支持这个指令集的处理器要比相似规格但不支持AVX512_VNNI指令集的Xeon Sliver处理器快了大约5倍。尽快英特尔可以将Xeon Sliver处理器和其新推出的NNP-I神经网络处理器结合起来以实现更高的性能,但同时将会带来高得多的价格。英特尔目前还没有正式给出NNP-I的价格,但是可能会在500-1000美元的水平。此外,GPU加速卡的价格也非常的昂贵,比如英伟达T4这种产品售价也高达2000美元,都远高于Centaur处理器。

DLA引领者:瞄准专业的市场

Centaur公司的目标是提供同类产品中性价比最高的神经网络性能。威盛将最终决定Centaur处理器的价格,如果这款处理器的定价和XeonSlive r相当的话,那么实际上客户将免费获得DLA性能。即使NNP-I或者T4的外部DLA加速器能够带来更出色的性能,但是昂贵的价格还是会吓走一部分预算吃紧的客户,实际上这类产品的价格远高于处理器本身。因此,和没有外部加速器的系统相比,Ncore将带来数字为0的额外支出和至少5倍的DLA性能。不仅如此,Centaur公司还在进一步优化这款处理器的DLA性能,比如它在测试芯片收到后一个月就发布了新的MLPerf测试结果,显示了进一步的性能提升。因此在最终上市时,Centaur处理器的DLA性能还可能进一步提高。

从架构上来说,SIMD的设计即使是采用了Ncore这样的超宽宽度,也不太可能和市场上的Spring Hill这类经过充分优化、采用MAC阵列的处理器具有相匹配的每瓦特性能。但是集成的DLA单元可以大大降低成本,這将有助于Centaur处理器实现它的目的。另外,SIMD的架构设计也比MAC架构更为灵活,即使使用早期的软件,Centaur公司依旧在SSD(此处指的是single-shot detection即单次检测,不是固态硬盘)以及GNMT(Google NeuralMachine Translation谷歌神经网络机器翻译系统)这样的测试模型中获得了可观的分数。在这种应用中,英特尔甚至都没有发布NNP-I处理器的性能分数。因此,Ncore在多样化的神经网络应用中将拥有和CPU、GPU-样灵活而宽泛的应用范围。

Centaur处理器的弱点依旧是其CPU部分。在那些对CPU性能有要求的负载的性能结果上,Centaur处理器可能会低于Xeon Sliver处理器,主要是缺少多线程功能。对于单线程,其性能可能会接近Skylake处理器的IPC,但是在某些测试中会有差异。Centaur处理器在内核数量、内存通道、PCle带宽方面和低端的Xeon处理器相似,集成南桥也是一个加分项目。Centaur处理器的这种新设计非常适合边缘服务器,这意味着用于网络边缘(比如5G基站)或者客户驻地(比如工厂和商店)。这些系统必须体积小且成本低,因此高集成度的处理器优势很明显。

从市场情况来看,尽管英特尔已经做出了巨大的努力,但是单凭x86处理器并不是解决所有问题的最佳方案。目前,许多处理器都包含了图形处理器GPU、视频加速器VPU、数字信号处理器DSP或者其他专用体系结构,它们可以提高性能或者减少常见工作负载。随着神经网络计算变得越来越普遍,添加DLA这类专用处理器也提供了类似的优势。这样的协处理器目前已经在ARM架构的移动处理器中变得非常常见,但是英特尔和AMD还尚未在其PC和服务器处理器中加入DLA。通过发布首款集成AI加速器的x86处理器,Centaur公司和威盛现在站在了市场引领者的位置上。

猜你喜欢
威盛寄存器英特尔
Lite寄存器模型的设计与实现
英特尔携手一汽集团,引领汽车行业全新变革
英特尔扩充FPGA可编程加速卡产品组合
分簇结构向量寄存器分配策略研究*
英特尔开源帮霍金“说话”软件
好平板有强芯 英特尔Bay Trail芯片解析
高速数模转换器AD9779/AD9788的应用
一种可重构线性反馈移位寄存器设计
威盛的上网本转机
徐滔:威盛中国引航十年