又不是桌面平台需求多变限制条件多,机房里用小核服务器搭配大核服务器的方法显然更灵活且稳定。
首先要说的是,服务器早就用上小核了。13Q3发布的至强C就是采用和ATOM相同的小核架构Silvermont。
Silvermont的制程优化版Airmont架构也曾经用于代号为Knights Landing的Xeon Phi,KNL有两种形态,插卡形式的协处理器和直接作为CPU使用。
最新的基于ATOM架构的服务器基于Tremont的P系列,Tremont是12代酷睿的能效核的上一代架构。
虽然Xeon Phi系列已经终止了,但在服务器上使用小核的需求一直存在:在一定功耗限制下提供最大的多线程吞吐性能,也就是我们一直说的能效比。
诚然,因为CPU核心的复杂性,能效比肯定无法与GPU相比,面向专用应用设计的ASIC就更加不用说了。但反过来,CPU的通用性、处理非特定任务的响应速度却不是GPU、ASIC可以比拟的。这也是ARM在服务器市场的切入点。
但纯小核的话,单个核心的性能毕竟有限,并不能完全满足某些需要高速响应的运算的要求,这也是KNL虽然已经可以单独作为CPU使用,但依然有协处理器的形态的原因。虽然说服务器应用相对单一,但这也仅仅是相对而已。举个很简单的例子,一台网站服务器,处理浏览器请求看吞吐量,只要响应时间在设计范围内,自然是单位时间响应的请求越高越好;但仍然会有一定数量的其它线程如硬件访问、监控服务、维护服务,响应时间越短越好的。所以服务器也是有采用混合架构需求的,少量的大核处理这些需要高速响应的任务,大量的小核提供更大的吞吐性能。
但和纯大核、纯小核相比,混合架构的大小核在服务器上的调度要比桌面复杂得多。桌面上可以用最简单粗暴的调度策略:前台应用用大核跑,后台服务用小核跑,不好判断的线程大核闲着用大核跑,大核忙着用小核跑。但服务器上,几乎所有线程都是后台服务,单纯靠硬件、操作系统去判断哪些线程需要高速响应最好用大核跑,哪些线程用小核跑可以获取最大的吞吐性能,大概率是经常搞错的。
此外,混合架构还有另一个问题,就是指令集分裂。目前12代是简单粗暴的把性能核的AVX512禁用了,这是因为桌面应用很少有足够大量的数据可以利用上AVX512提供的强大理论性能,即使需要处理海量数据的应用也往往需要重新设计数据结构才用的上AVX512的性能;但在服务器领域,AVX512还是有相当部分应用用得上的,强行禁用AVX512的话,这些客户要掀桌子的。但小核上实现AVX512会消耗大量的晶体管,现在的12代,4个小核占用的面积大概是1.3~1.4个大核,如果小核也要加上AVX512,我很怀疑1.8~2个大核的面积能否做出4个小核。
在业界能妥善处理线程调度、指令集分裂这两个问题之前,我觉得不会在服务器上看到混合架构CPU的普遍应用。
建议是先让子弹飞一会儿。
服务器是讲究稳定性的,新技术肯定是被市场验证之后才用吧。
现在下什么结论都为时过早,万一后边服务器真的上了大小核,你们今天说大小核无用,会不会显得有点不自在呢?
我个人倾向于认为:需要先在桌面平台大规模使用,看看具体效果之后再决定服务器要不要上。
「个人电脑」往往意味着一个人一台电脑,大多数人不会买多台配置不一的电脑,但同一台电脑要做大小不同的活。如何能让这台个人电脑变得更有效率?使用大小核,应付不同大小的活。
服务器往往不止一台,而且愿意付大价钱的都是使用超大规模群集的。别人不需要大小核,因为别人可以大小机,可以大小群集……根据活的大小,分配合适的机器来做,甚至分配合适的群集来做,颗粒度完全不需要细小到核上面。
如果你同时拥有 Apple Watch、iPhone、iPhone Pro、iPad Mini、iPad Pro、MacBook Air、MacBook Pro、Mac Pro,那你应该明白我在说什么。你需要做什么,就选择最合适的机器来做,没必要为它内部是否高效而操心。