从Ryzen 开始,CPU的核心数仿佛失去了控制。不到一年,主流的四核心处理器直接被“安排的明明白白”。不久之后,AMD就将发布首款民用级32核处理器,使用改进后的CCX,降低了L3缓存的延迟。而intel即将发布自己的首款消费级8核心处理器,使用Ring Bus架构。
把CPU圈在一起的Ring Bus
Ring Bus这个词很形象,就像一个环形一样,连通各自的CPU和缓存部分,下图就是intel在Xeon E5 V4中的双Ring架构。
Ring架构的提出和硬件设备核心数的增长无不相关,由于核心数的提高,传统的星形结构已经不能满足性能和延迟的要求。
Ring Bus设计了两圈高速总线,将CPU、L3 Cache、外围和其他Ring联系起来。Ring有两种运行方法,一种为顺时针,一种为逆时针。
Ring的设计有很多优点,首先它的延迟极低,带宽极大,运行速度很快,这也是为什么intel的Cache和内存性能比AMD高的原因之一。同时它的设计非常方便,只需要核心排成2个序列,然后其他外围对称挂在两边就可以了。如果需要添加核心,直接挂在Ring上,或者直接再加一个Ring就可以了。
虽然Ring是一个好设计,但伴随Xeon系列核心数的增加,Ring的长度和数量的增加,跨核心访问的延迟将越来越高,每增加一个核心都会拖累Ring的整体延迟,在单边超过6核心时,性能会严重下降,缓存之间也更难以保持其一致性。
虽然intel在低核心产品中保留了Ring,但已经在其skylake-SP产品中更新了全新的架构。
二维棋盘,Mesh
在新的架构下,intel将核心排布为棋盘状,比Ring架构自由的多,并支持连接更多的核心。不过因为架构的原因,其缓存速度较Ring慢,intel自己的说法,会增加10%延迟,但是实现了更低的功耗。intel也在搭载Mesh的skylake - SP中加入了更大的L2缓存。
在Ring架构中,访问其他核心的缓存,最多需要十二个周期,平均时间在六个周期,并且能轻易达到非常高的频率和速度,提高整体表现。而在Mesh中,如果需要访问周围的一个核心的缓存,周期要额外多一个,如果需要跨过DDR4部分则需要三个周期,远远慢于Ring。最上和最下的核心访问需要四个周期,而水平的访问最大则为九个周期,对角的访问是最坏的情况,将消耗十三个周期。
虽然损失了部分核心的延迟,但显然平均延迟基本是一个水平,还能连接更多的核心。相比以前的跨Ring访问和多路跨Die访问依然来的更快些。但对于游戏来说,目前Ring架构,虽然L2变大,命中率提高,但其周期仍然太长,更适合服务器和HEDT平台使用。
高级胶水,CCX和infinity fabric
和intel不同,AMD对于自己的模块化设计,有一番独到的见解。在Ryzen中,AMD将每个模块称之为CCX(core complex),CPU之间互联的部分为infinity fabric总线。
CCX在zen1和zen+中被设计为方形结构,核心位于CCX的四角,L2和L3则被排布到四个核心的正中间,L3大小为8MB,四个核心内部共享,速度同步于最高的核心。同时四个core之间都可以随意和其他core共享通讯,周期极低。
而Ryzen的8核心产品中,不仅仅只有一个CCX,而是两个,核心之间以infinity fabric之间互联。
不过AMD对此的描述含糊其辞,不过其原理基本和intel类似,它是一个高速的总线和缓存接口,不过它可以连接非常多的设备,和Ring一样但是更多,甚至可以用在电源管理控制器和主板接口之间。
infinity fabric的互联是有损失的,在每颗32核心epyc处理器中,使用了4个CCX设计,之间的连接就损失了一些PCIE通道。不过由于其优点,AMD即使因为瑕疵屏蔽对称核心之后,依然能共享对方的8MB大缓存,达成总共16MB的L3。在APU中,AMD使用其连接了vega核显。可以预见的是,在定制市场,infinity fabric将带来更多的精彩,而不是简单作为片上集成。
随着8月的到来,各家的发布会的消息已基本落实。Threadripper二代的32核心,但是由于主板的问题,并不支持epyc上更多的pcie通道和八通道内存。intel将发布自己的9900K消费级八核处理器,据消息来看,是将两颗四核Ring架构处理器连接起来。而nVidia则悄悄发布新的显卡,吹起了新一代游戏体验的号角。
下一个硬件竞赛,即将开始。