[转帖]intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh

intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh

https://baijiahao.baidu.com/s?id=1607585351741429318&wfr=spider&for=pc

intel和amd的架构特点

喻拓

发布时间:18-08-0116:41优质原创作者

从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则悄悄发布新的显卡,吹起了新一代游戏体验的号角。

下一个硬件竞赛,即将开始。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/11368121.html

时间: 2024-11-05 22:36:13

[转帖]intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh的相关文章

[转帖]Intel 上一代 可扩展CPU的简单报价

8.1万元人间毒物!Intel 28核铂金版Xeon 8180零售上市 http://news.mydrivers.com/1/541/541670.htm 猜你想看:英特尔 CPU处理器 Xeon Intel日前发布了全新一代的Xeon Scalable至强可扩展处理器家族(代号Skylake-SP),拥有全新引入的Mesh网格式架构,最多28核心56线程.六通道DDR4,Intel称其为十年来最大的技术进步. 这种专门面向服务器.数据中心的极品一般人是看不到的,不过在强大的日本秋叶原,没有不

【转帖】处理器史话 | 服务器CPU市场的战役, AMD、Intel和ARM的厮杀

处理器史话 | 服务器CPU市场的战役, AMD.Intel和ARM的厮杀 https://www.eefocus.com/mcu-dsp/377300 说完了个性鲜明的消费类电子,接下来聊一聊通用的“巨无霸”型 CPU——服务器 CPU.服务器 CPU,顾名思义,就是在服务器上使用的 CPU. 众所周知,服务器是网络中的重要设备,要接受少至几人.几十人,或者多至成千上万人的访问,因此,对服务器具有大数据量的快速吞吐.超强的稳定性.长时间运行等严格要求.作为计算机“大脑”的 CPU,是衡量服务器

使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

不过必须XP SP3以上才行.所有API大全: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).aspx -------------------------------------------------------------------------------- 现在多核处理器已经很普及了,市场主流是双核处理器,还有4核.8核等高端产品.而且Intel推广了超线程技术(Hyper-Threa

windows下绑定线程(进程)到指定的CPU核心

一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU切换时损耗的性能.2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载,可以将一个线程在不同时间分配到不同CPU,从而使得每一个CPU不“过累”.然而,Inter又有一个技术叫做SpeedStep,当一个CPU没有满负荷运行时自动降频从而达到节能减排的目的.这两个功能实际是冲突的:一个程序被分配到多个CPU协同工作->每个CPU都不是满载->每个CPU都会降频-&g

[转帖]Intel为何吊打AMD,先进半导体工艺带来什么?

Intel为何吊打AMD,先进半导体工艺带来什么? 2016-3-10 15:38  |  作者:Strike   |  关键字:超能课堂,半导体工艺,CPU制程 分享到 按照摩尔定律的发展趋势,晶体管的栅极间距每两年会缩小0.7倍,半导体工艺制程正在变得越来越小,而这样做有什么好处呢?今天就要来探讨一下这个问题. 本文约2152字,需4分钟阅读 1971年,Intel发布了第一个处理器4004,它采用10微米工艺生产,仅包含2300多个晶体管,而45年后的今天,Intel现在规模最大的是代号K

设置线程的亲缘性(指定其所运行的CPU核心)

#include <stdio.h> #include <windows.h> #include <process.h> #include <time.h> unsigned int _stdcall thread_proc(void* arg) { double x = 100.0; int r = 0; srand((unsigned)time(0) ); while(1) { r = rand();//模拟运算 x/=r; } return 0; }

给进程分配cpu核心

新负责的程序采用生产者和消费者的模式,生产者的速度非常快,数据几乎都在内存里,处理起来很快.而消费者要频繁的I/O.所以打算给生产者和消费者分配不一样的核心. 生产者只需要一个核心就够了,其余分配给消费者. 查了下这方面的资料,shell端有taskset命令可用. taskset: -p 正在运行的进程pid -c 列表形式显示指定cpu -v version -h help 用法:i.e. # taskset -cp 1,2,3 4321 # taskset -c 1,2,3-5 /usr/

测试CPU核心个数

//测试CPU核心个数 #if !defined (_WIN32) && !defined (_WIN64) #define LINUX #include <unistd.h> #else #define WINDOWS #include <windows.h> #endif unsigned core_count() { unsigned count = 1; // 至少一个 #if defined (LINUX) count = sysconf(_SC_NPRO

如何查看服务器CPU核心数和线程数

知道服务器CPU型号,那么我们如何在服务器里面查看服务器CPU核心数和线程数呢? 步骤: 先用鼠标右键点击屏幕最下方的任务栏空白处.会弹出一个菜单. 在菜单中用鼠标左键点选“启动任务管理器”. 点击任务管理器的“性能”选项. 在“性能”选项的“cpu使用记录”项中有几个方框就说明cpu有几个线程. cpu线程数不一定等于cpu的核心数,因为有些cpu采用了超线程技术,一个核心可以有两个线程.如果想查看cpu的核心数可以安装一个CPU-Z软件,打开后就可以看见有几个核心和线程了. PS:超线程处理