Cavium和Tilera对比 深入浅出评多核

前段会晤了一个多核CPU的厂家,叫做Tilera,最近势头很猛,触角已经探伸到了应用交付云计算、视频、网络流量处理、网络安全设备、防火墙等各个领域。尽管该公司技术人员一再谦逊地强调该CPU在处理四层以下防火墙业务的时候不一定具备优势,但是我认为他可能是因为面对着几个我们公司的相关专业人士感觉有点心虚而已。

以我个人这些年来在CPU体系结构研究方面的积累,我的结论是在如果相同的硬件架构下,各个平台四层网络吞吐的性能是相去不会太远的(当然是基于同档次的CPU)。举个最简单的例子,我们的Cavium在网络四层吞吐方面表现优异,但这是得益于它的包处理硬件单元的助力。如果我们把它的硬件设计成和X86平台一样,所有的网络接口都通过PCI总线扩展,那瞧着吧,它的四层吞吐能力会和X86平台一样的惨不忍睹。

Tilera很有意思的一点是(尽管没有明说),它下一代CPU的规划颇有和Cavium较劲的味道。似乎颇愤愤不平让Cavium占了先机。毕竟先入为主么,起码在网络安全这个领域,如果说到嵌入式平台,首推还是Cavium和RMI(后者还被重创了一把)。Tilera如果想要扳回一城,必须要有超出不止一筹的表现才行。在目前已经量产出货的Tilera上(Pro系列),似乎表现尚嫌乏力,难以撼动Cavium 5系的蒂固根深。

但是Cavium 6系迟迟没能出炉让Tilera嗅到了一丝机会,磨拳擦掌准备在下一代芯片上和Cavium一争长短。Tilera此时发力可以说进可攻退可守,如果先于Cavium 6系发布,那么它会以全系铺设、全系超出的表现重挫Cavium 5系(慢,好像Tilera下一代仍旧没有最低端的产品,anyway,影响不大);如果和Cavium 6系同步发布,最起码也可以和后者在同一起跑线上打一打拉锯战。

后面我从学术角度全面比较一下Cavium下一代产品(OCTEONII)和Tilera下一代产品(GX)的方方面面。

制造工艺水平

乍一看这个题目比较虚。但其实这是所有IC产业中技术含量最高的一环。为什么Inte CPU的霸主地位无人能够撼动,就因为它在CPU的工艺水准上远超侪辈,它也是几乎唯一个敢于给自己的CPU标称工艺水平的厂家(多少多少纳米)。工艺水平决定了什么:集成度、稳定性、性能、产能、功耗、成本…

每一款IC产品的代系跃迁归根到底都是工艺水平提高推动的。说到这我插一个故事作为佐证。港湾的老同事都记得,我们在散伙前夕推出了一款拳头产品,基于BCM1250的高性能MIPS64架构的硬件平台,名噪一时啊,被《计算机世界报》评为性能最佳奖。可是该款产品稳定性一直很差,即便是厂家的技术支持全程陪护也还是遗留了很多问题。

有一次厂家的人跟我说起硅片加工工艺的时候作了个比喻,就像烤面包似的,两眼一抹黑就开始烤,烤出炉了再筛选,烤的好的就当800MHz的卖;烤得不好的当400MHz的卖。(我真是想问,那烤出799MHz的咋办?)这是一个工艺水平跟不上趟的典型案例。

话说回到我们的Cavium和Tilera上来。这两家的工艺水平我没有第一手的资料,本来不应该妄加评论。可是侧面通过一些蛛丝马迹我能够做出一些大胆的推断。首先Cavium的工艺应该是有问题的,理由是:

  • 1.Cavium目前量产的plus 58系列在所有的文档中都是明确注明最高主频可以达到900MHz的,但是实际情况量产最高只有750MHz。这说明:Cavium肯定是做出来过900MHz的片子不然它不会这么示众,但是很明显900MHz芯片达不到商用的标准所以市面上看不到(都素浮云哪)。原因可能只有一个,工艺水平不成熟。
  • 2.Cavium 4核以上芯片的供货期是恐怖的20周,20周是什么概念?小半年!几乎是我们一个软件版本的开发周期。我想这不仅仅是商务模式的问题了吧,Cavium不会短视到为了节省备货资金而把供货期压得这么长吧?所以我猜产能问题还是有的,而导致产能问题的直接原因还是工艺水平。
  • 3.Cavium 6系从路标出炉到现在已经几乎两年的时间了,可是迟迟不能量产甚至连样片都拿不到,让众多硬件平台厂家“等到花儿也谢了”,Why?难道Cavium也搞饥饿营销?这可能性不大,IC市场一贯是春宵一刻值千金的。那原因只有一个,就是设计得出做不出。也就是说工艺水平支撑不了商业量产。

回过头来再说说Tilera。我不敢说Tilera的工艺水平有多么高,但感觉上应该是优于Cavium,理由是:

  • 1.Tilera目前的量产产品已经能够做到了64核,而下一代产品更是声称能做到100核。这个集成度和Cavium的差距可以说不是一点半点的。当然,这个100核不能不说有炒作之嫌,我宁可相信Tilera下一代产品能够在64核这个工艺水平上稳扎稳打,做出有点底蕴的系统来。即便是这样也会比Cavium的下一代产品(32核)要有优势得多。
  • 2.这个理由有点牵强。Tilera的创始人老爷子是麻省理工的德艺双馨老前辈,据说也是美国军方机构的“供奉”,这给Tilera的商业元素中注入了一丝学究气息。不管怎样让我感觉Tilera在技术底蕴上胜出。综上上上上上所述,第一回合Tilera胜.

CPU体系结构

Cavium是标准的mips64核心。Tilera当代是32位mips,下一代是mips64。Tilera的技术人员说得明白:32位的CPU体系结构会给用户的嵌入式产品代码移植造成麻烦。呵呵,这个说法值得玩味了,看来Tilera颇有一统江湖的野心,想把64位CPU市场收入囊中啊,这个矛头指向的明显不是X86(是谁呢?是谁呢?)。因此,下一代产品纯Core性能上两种CPU应该是无差别。Tilera号称在指令pipeline上有些文章但是我个人感觉噱头的成分居多。

再说内部总线架构。Cavium是总线型,而且是比较经典的总线型。指令、数据、IO分开的;Tilera的总线架构叫做iMesh,应该算是一种改良的矩阵式结构。两种体系结构的优点和缺点一目了然:总线型上挂的组件无视物理位置,只要总线空闲即可以最高效率通信,但是存在冲突的问题;矩阵式结构呢,两两组件之间可以同时无冲突通信,但是组件之间有物理距离远近的差别,也就是说离着远了就需要有人在中间传话。

刚才说Tilera的总线有些改良我再多白活两句。Tilera的内部总线号称“立体交换式”的矩阵总线(好一个Matrix)。意思并不复杂,两个含义:

  • 一是交换;即每一个核旁边配备了一个类似交换机原理的组件,用于交换内存读写、cache同步、IO访问等信息。
  • 二是立体,即每个不同含义的信息都跑在独立的一个交换层面。当然,这个所谓的“立体交换”起到的作用和它的字面意思同样的内涵匮乏。既不能缩短远距离组件之间的信息传递路径,也无法抑制访问对象集中时的信息阻塞。反而增加了产生所谓交换风暴的危险。

第二回合,我认为平手。

CPU内部硬件组件

嵌入式CPU么,总得佩些额外的武器在手不然对不起“嵌入”二字。Cavium当代产品在这方面做得相当老到,该有的不该有的反正都有了。Tilera当代产品呢?几乎是空白,于是它恍然意识到这些东东“可以有”,所以在下一代产品上要痛下苦功喽!后面我一一细分对比(这可真是力气活啊):

  • 1. 硬件收包处理单元。Cavium上这东西叫做POW。做过Cavium项目的同事耳朵都要起老茧了不过毕竟还有新人,我争取用一句话说明白:把从网口收上来的物理层报文先缓存起来然后公平保序地调度给各个核去处理同时也可用于各个核之间传递报文(耶我做到了~~~)。Tilera的下一代产品增加了一个硬件单元叫做mPIPE,也是干这个用的。不过既然我要跟你唱对台戏,那就必须要魔高一丈才行。mPIPE据说是可编程的,而且TMD是高级语言可编程(顺手把NP给完爆了)。个人认为这是一个绝大的卖点,如果把分流等简单功能编程进去,对整个系统的设计绝对可以起到事半功倍的作用。
  • 2. 加密引擎。如果说Tilera加这个组件不是为了和Cavium死磕那打死我也不信(本身这个功能就是100%为防火墙业务服务的)。据说Tilera下一代的加密引擎不但支持加密算法,而且还支持IPSEC协议封装,个人认为这个改进绝对是为了灭Cavium一道(100个核呢,随随便便就把IPSEC封装了,何须硬件引擎?)。
  • 3. 压缩引擎。一样的都有,我们一样的不用。
  • 4. 内容匹配加速引擎。这个。。。Tilera是真没有。谁知道,也许人家不想趟这道混水(就让Cavium千辛万苦地去设计,我们千辛万苦地去评估,然后千辛万苦地下决心放弃去吧~~~)。

这个第三回合么,上周我觉得Cavium胜,毕竟人家有内容匹配么,为安全厂商量身定做的。但是这周我改变主意了,第三朵小红花还是给Tilera。因为我认为内容匹配硬件对我们来说仍旧素浮云一朵。。。。。。

IO规模

Cavium的当代产品在这个特性上的局限让我们百般痛苦(准确地说是让我个人百般痛苦)。国内的网络安全设备在端口规格上的流行风绝对是病态的,随随便便一个设备就要搞十几二十个接口(您以为是做交换机呢?)。于是口不够,片子凑。什么交换芯片、FPGA、MAC汇聚,还一家用一个样。于是我有限的生命就这样献给了各种端口扩展方案的评估事业中。

Cavium和Tilera的下一代产品在这方面都有好消息。总的IO宽度都是40G(又一次较劲吧?);支持万最大兆口的数量都是4;支持千兆口的数量前者是12后者是32。我一直觉得Cavium在工艺上有问题在这里又一次印证了。一个万兆口的资源它只能实现4个千兆口;而Tilara能实现8个。但就是这4和8的区别,意味着如果我们用Cavium,就还得外部扩展;而用Tilera,就反而有富裕。当然,不排除将来设备的端口规格水涨船高了。Tilera胜。

软件环境

Cavium上我就不多介绍了。业务层面的编程环境叫做SE,裸系统。Tilera很特殊,提供的业务编程环境居然在Linux用户空间!据说还能达到几乎1:1线性。这真让我大跌眼镜。用户空间编程的最大优点是操作系统可用资源丰富,举个最简单的例子,业务处理过程中可以随时访问文件系统。这对我们来说意义重大,将来我们的AV模块很可能是合作开发,如何教会我们的合作伙伴使用SE难度巨大,而且无操作系统编程本身限制多多啊。

对于Tilera的这个用户空间实现业务编程环境,我没有见识过,不知道在核多的情况下性能线形比率会不会有雪崩式的衰退。但是我觉得像Cavium和Tilera这种老外的公司,背后都有很强大的操作系统研究的团队,他们不太能够容忍在软件应用方面自己的产品存在太大的死角。所以我首先保留怀疑,再给Tilera颁发一朵小红花。

结束语。两种解决方案之间的比对其实还有更多的方方面面的PK。比如硬件成熟度、整机成本、硬件供应商和我们的商业契合度等等。但这都不是我有兴趣分析探讨的。仅以此文用直白平易的语言向大家展示一下嵌入式多核CPU的世界。

上一篇:防火墙X86、NP、ASIC、MIPS架构对比

下一篇:Cavium 与 RMI的简单比较