总线是在计算机部件之间或计算机之间传输数据的子系统。 类型包括:
前端总线(FSB),它在CPU和内存控制器之间传输数据;
直接媒体接口(DMI),它是英特尔集成内存控制器和计算机主板上的英特尔I/O控制器中心之间的点对点互连;用于主板上南桥芯片和北桥芯片之间的连接。DMI与PCIe总线共享了大量的技术特性,像是多通道、差分信号、点对点连线、全双工、8b/10b编码等。大部分DMI的通信布局类似于PCIe x4规格。DMI 3.0于2015年8月发布,每通道可拥有最大8GT/s的吞吐量(8750H的总线速度),x4规格时有3.93GB/s的带宽。也用于CPU与PCH的连接。
快速通道互连(QPI),它是CPU和集成内存控制器之间的点对点互连。
在传统架构中,前端总线充当CPU与系统中所有其他设备(包括主存储器)之间的直接数据链路。在基于HyperTransport和QPI的系统中,系统存储器通过集成在CPU 中的内存控制器独立访问,留下HyperTransport或QPI链路上的带宽用于其他用途。这增加了CPU设计的复杂性,但在多处理器系统中提供了更高的吞吐量和出色的扩展性。Core i7-8750H就使用的IMC,如下所示
集成内存控制器 | ||||||||||||||||
|
其中最大带宽是处理器可以从半导体存储器读取数据或将数据存储到半导体存储器中的最大速率(以GB/s为单位)。
对于8750H和CM246芯片组,都基于coffee lake架构,架构框图如下:
该芯片组PCH 上有多达 30 个高速 I/O 通道,
概览图如下:
Coffee Lake系统芯片由五个主要组件组成:CPU ,LLC,环形互连,系统代理和集成显卡。自2011年推出Sandy Bridge以来,Coffee Lake是英特尔主流微体系结构的最大变化。2006年,英特尔推出了第一款主流四核处理器Core 2 Extreme QX6700,该处理器基于Kentsfield核心。 这些四核处理器由两个独立的管芯组成,这些管芯在多芯片封装中互连。前端总线用作芯片到芯片(die-to-die)的链接,后来到Penryn平台这种配置并没有改变,直到2008年推出基于Nehalem微体系结构的Core i7,Nehalem将所有四个内核整合到一个芯片上并进行大量更改,特别是增强uncore(现在称为系统代理)。 Core i7-980X也是第一款六核用户芯片。
SoC整体概览(hexa):
单核框图:
随着2011年Sandy Bridge的推出,整个系统架构进行了重新设计。 Sandy Bridge的一个特殊目标是其可配置性。 英特尔希望能够在多个细分市场中使用单一设计,而无需在多个物理设计上花费额外资源。其模块化的很大一部分来自Sandy Bridge实现的环形互连(Last Level Cache)。 该环允许英特尔在Sandy Bridge中集成System Agent和集成显卡。
这些组件中的每一个都有自己的环代理(除了单个核心),允许在GPU,SA以及各个核心和高速缓存之间有效地传输数据。 最终结果是一个完整的片上系统(SoC)在单个裸片上有四个内核和一个12 EU GPU。
由于Coffee Lake采用了英特尔第三代增强型14nm成熟工艺,,因此英特尔可以将核心数量从4核增加到6核。 现有的环形互连专门设计用于支持此配置。 除了两个添加的核心之外,还有两个额外的LLC切片。
coffee lake环示意图:
新的十一代cpu架构:
注:
工艺制造中lot指按某种方式生成的硅柱状体,将这些lot切成薄片就称为wafer,wafer是进行集成电路制造的基板,一般以直径来区分,8寸、10寸,12寸等,或者以毫米来区分。直径越大材料的利用率越高,因为在wafer的周边由于弧形的关系是没法利用的 。在wafer上根据需要划分不同的区域,每个区域用于生产特定功能的芯片,称之为die。总的来说,Die或CPU Die指的是处理器在生产过程中,从晶圆(Silicon Wafer)上切割下来的一个个小方块(常见CPU芯片都是方形),在切割下来之前,每个小方块(Die)都需要经过各种加工,将电路逻辑刻到该Die上面。die-to-die即芯片对芯片。
对于主流的CPU厂商Intel和AMD而言,他们会将1个或者N个CPU Die封装起来形成一个CPU Package,有时候也叫作CPU Socket。
一台8750H的laptop测试:
PCI-E
Peripheral Component Interconnect Express(或PCIe)是一种高速串行计算机扩展总线标准,用于将硬件设备连接到计算机。 不同的PCI Express版本支持不同的数据速率。
PCI Express 总线性能 | ||||||||
PCI E 版本 | 推出 | Line 编码 | 原始 传输率 | 带宽 | ||||
×1 | ×2 | ×4 | ×8 | ×16 | ||||
1.0 | 2003 | 0.50 GB/s | 2.0 GB/s | 4.0 GB/s | ||||
2.0 | 2007 | 8b/10b | 5.0 GT/s | 500 MB/s | 1.0 GB/s | 2.0 GB/s | 4.0 GB/s | 8.0 GB/s |
3.0 | 2010 | 8.0 GT/s | 984.6 MB/s | 1.97 GB/s | 3.94 GB/s | 7.88 GB/s | 15.8 GB/s | |
4.0 | 2017 | 128b/130b | 16.0 GT/s | 1969 MB/s | 3.94 GB/s | 7.88 GB/s | 15.75 GB/s | 31.5 GB/s |
5.0 | 2019 | NRZ 128b/130b | 3938 MB/s | 7.88 GB/s | 15.75 GB/s | 31.51 GB/s | 63.0 GB/s | |
6.0 | 2021 | PAM4 & FEC 128b/130b | 64.0 GT/s | 7877 MB/s | 15.75 GB/s | 31.51 GB/s | 63.02 GB/s | 126.03 GB/s |
我们看到X1,X2,X4…是指PCIe连接的通道数(Lane)。
PCI-E串行总线带宽(MB/s) = 串行总线时钟频率(MHz)x串行总线位宽(bit/8 = B)x 串行总线管线x 编码方式x 每时钟传输几组数据(cycle),例:双工PCI-E 1.0 X1,其带宽 = 2500x1/8x1x8/10x1x2=500 MB/s。
两个设备之间的PCIe连接,叫做一个Link,如下图所示:
PCI-e是全双工,发送和接收可以同时进行,而且没有时钟线,它是采用8/10和128/130的编码方式把时钟编入传输信号内的。PCI-e3.0可是工作在4Ghz的频率上。PCIe链路使用串行方式进行数据传送,然而在芯片内部,数据总线仍然是并行的,因此PCIe链路接口需要进行串并转换,这种串并转换将产生较大的延时。除此之外PCIe总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。在4Ghz的频率下,任何一点延时都会带来问题。
两个PCIe设备之间,有专门的发送和接收通道,数据可以同时往两个方向传输,PCIe spec称这种工作模式为双单工模式(dual-simplex)。前面PCIe带宽那张表,上面的带宽,比如PCIe3.0x1,带宽为2GB/s,是指双向带宽,即读写带宽。如果单指读或者写,该值应该减半,即1GB/s的读速度或者写速度。
传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。
GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。GT/s 与Gbps 之间不存在成比例的换算关系。
PCIe 吞吐量(可用带宽)计算方法:
吞吐量 = 传输速率 * 编码方案
例如:PCI-e2.0 协议支持 5.0 GT/s,即每一条Lane 上支持每秒钟内传输 5G个Bit;但这并不意味着 PCIe 2.0协议的每一条Lane支持 5Gbps 的速率。因为PCIe 2.0 的物理层协议中使用的是 8b/10b 的编码方案。 即每传输8个Bit,需要发送10个Bit。
那么, PCIe 2.0协议的每一条Lane支持 5 * 8 / 10 = 4 Gbps = 500 MB/s 的速率。
以一个PCIe 2.0 x8的通道为例,x8的可用带宽为 4 * 8 = 32 Gbps = 4 GB/s。
经检测,该laptop使用的m.2280的nvme接口为PCI-E 2.0x4,速率2GB/s,而北桥除了内存控制器之外,还有1050Ti显卡使用了PCI-E 2.0x16的控制器,速率8GB/s。