电脑主板价格 马自达6电脑主板价格( 四 )


但是Mesh网路下,每个处理器都是节点,都可以传递和广播数据,这样一来一个较大的L3存在的意义就被削弱了,因此英特尔改用了较大的L2和较小的L3,并且不再采用包含式结构,转而采用独立式缓存设计,L2和L3缓存数据互不影响,从本代产品开始,英特尔全面采用Mesh互联架构设计超多核心处理器,从目前的测试来看,其效果和性能表现还是不错的 。
回到AMD这里来 。目前AMD所有的锐龙家族处理器产品都源于一个原生的四核心模块,被称为一个CPU Complex(CCX),CCX的内部链接可能是交叉互联也可能是通过其他的方式,由于其核心数量较少(只有四个物理核心),因此其技术难度相对来说低很多 。对外部来说,AMD希望通过扩展CCX数量实现处理器核心数量增加,这就意味着各个CCX之间的连接就会成为关键 。如果观察AMD发布的代号为“Naples”的EPYC处理器,就会发现AMD实际上是将两个CCX绑定为一个模块,然后再通过Infinity Fabric总线将其连接起来 。
从宏观上看,Naples处理器四个模块之间使用的依旧是传统的交叉互联方案,只是总线换成了Infinity Fabric 。每个模块的两个CCX再用Infinity Fabric连接在一起 。比如桌面版本的锐龙 7就是两个CCX模块使用Infinity Fabric总线连接获得的“4+4”八核心处理器,也就是两个CCX的Infinity Fabric总线直连 。更高端的服务器版本的32核心霄龙EPYC处理器使用的是“(4+4)×4”的设计,四个模块采用Infinity Fabric总线交叉互联 。
锐龙 Threadripper处理器则采用的是“(4+4)×2”或者“(3+3)×2”的方式,也就是两个模块采用Infinity Fabric总线直连的方案 。
▲AMD展示的EYPC处理器,可见四个核心模块在一个基板上 。
▲AMD EYPC Naples处理器的内部链接架构简图
从连接角度来说,AMD的这种设计实际上避开了超多核心处理器设计所需要面对的物理连接上的问题,也避开了诸如使用环形总线或者Mesh架构这样的选择 。相比环形总线或者Mesh网络,传统的交叉总线连接各模块的主要问题在于模块和模块之间的同步和并行性问题应该如何解决,也就是说如果两个不同CCX之间需要通讯的话,如何解决通讯延迟和带宽问题 。在环形总线上,解决这个问题的是环形总线本身,在Mesh网络中,每个核心自己就是收发站,可以转发信息并选择较快、较近、不拥堵的路径 。
举例来说,当两个具有高度相关性的线程同时在系统中运行时,操作系统可能将其随机分配在任何两个空闲的核心执行 。如果是环形总线或者Mesh网络的话,在处理器内部能够以比较高的高效率互联互通,延迟甚至可以被各种方法所优化、掩蔽,或者处理器在调配中可以将这两个线程再度分配至拥有共享资源的两个核心执行(处理器对操作系统而言被看做一个整体的话),这样可以实现降低延迟、提高效率的目的 。
但在传统网络中,如果两个有相关性的线程被分配给完全不同的两个模块处理,比如A模块处理线程1,B模块处理线程0,同时线程1和线程0存在高度相关性,其数据共享、一致性就需要通过总线来完成,这无疑增加了大量的通讯延迟 。因为对传统结构的处理器来说,处理器A模块的A1核心和B模块的B1核心的通讯,需要通过A模块的转发中心转发至Infinity Fabric总线后,再交由B模块的转发中心,再到达B1核心,中间的延迟和带宽可能还是能够对性能产生影响的 。
这还仅仅是一种情况,实际操作中,如果存在对带宽敏感的应用,那么较好将这个应用的不同线程均分在不同的CCX上,使其能够使用更多的DDR4带宽,因为每个CCX只能管理一对DDR4控制器 。如果对延迟高度敏感,那么较好将所有线程都塞入一个CCX(当然较好小于等于4个),这样线程可以高速共享L3缓存,性能会有较佳表现 。如果出现具有相关性、带宽敏感和延迟敏感的应用的多个线程需要执行,这就非常考验AMD的优化能力了 。