本文内容非商业用途可无需授权转载,请务必注明作者及本微信公众号、微博ID:唐僧_huangliang,以便更好地与读者互动。
听说
Gen-Z
这个新的互连标准组织已经有段时间了,之前没太仔细研究,直到看了《
FMS2017
闪存峰会演讲资料下载(持续更新)
》中的这份资料,觉得有必要写点东西跟大家分享一下。
内存、
PCIe
带宽跟不上
CPU
核心数增长
如上图,从
Xeon5500/5600
时代开始
Intel
在
CPU
中集成了内存控制器,当时是每个
LGA-1366
插槽
3
通道;到
XeonE5
时代增加到每个
LGA-2011
插槽
4
通道;及至代号为
Skylake-EP
(
Purley
)的最新一代
Xeon Scalable
服务器,每个
LGA-3647
插槽控制
6
通道内存,参见
《
IntelXeon SP
服务器架构曝光:
ApachePass
、
QuickAssist
》。
AMD
现在又一次想做超车者,在
EPYC
(
Naples
)平台上祭出
LGA-4094
超大封装和
8
通道内存控制器。(扩展阅读:《
AMDEPYC
官方资料乌龙?谈服务器
CPU
互连效率
》)可以预见的是,
Intel
下一代服务器
CPU
插槽也只有增大而没有减小的道理。
而内存通道的增加赶不上核心数量,于是平均
每个
Core
的内存带宽总体呈下降趋势
。最大
28
核的
Xeon SP
核这一代是个例外,不知
2019
年计划的
60
核又会是怎样的设计?
伴随而来的是,
CPU
、内存的功耗和物理空间占用等方面的不断提升。关于上图中列出的
2U 4
节点服务器演进,我在《
2U4
节点
XeonSP
服务器设计:扩展性与散热的权衡
》里面曾有深入一些的讨论,有兴趣的读者可以看看。
除了内存带宽,没有和计算密度成正比增长的还有
I/O
带宽。
Intel
这一代更新每
CPU
提供的
PCIe lane
数量从
40
加到了
48
个,
PCIe 3.x 8GT/s
到单一设备的带宽不变。到下一代的
PCIe4.0
,
PCIex16
双向总带宽可接近
64GB/s
,而
CPU
本地
DDR4
内存带宽已达
100GB/s
,
GPU
上的
HBM
带宽更是超过
732GB/s
。
在尚未发布的
POWER9 LaGrange
平台上,整合有
PCI Gen4
控制器,两颗
CPU
一共引出
84lane
,此外每
CPU
还支持
2
个
x8 lane
的
NVLink/OpenCAPI@ 25Gbps
。更多细节参见《
初探
OpenPOWER9
服务器设计:
x86
不再寂寞
》。
有人说是
PCIe 4.0
正式规范不断跳票导致了
Power9
的发布推迟,胡乱猜测一句,
Intel
在这里面有没有点私心呢?另一方面
IBM
也开始多条腿走路,
NVLink/OpenCAPI
的
25Gbps
速率就已经超过了
PCIe 4.0
的
16GT/s
,而
PCIe 5.0
草案中才涉及
25GT/s
和
32GT/s
。
Gen-Z
为什么要以内存为中心?
Gen-Z
支持直连、交换或者
Fabric
拓扑
面对挑战,
Gen-Z
提出了以内存为中心的架构,其核心思想是一个
内存语义的
Fabric
通信协议
。如上图,
主内存脱离
CPU
而池化
,
CPU
角色相对弱化为
SoC
(其本地控制的内存可能用于管理),而
FPGA
、
GPU
加速器,网络、存储
I/O
则提升到对等的角色。
是不是和
HP The Mechine
有点相似呢?而该架构显然是
Intel
不愿接受的,因为这些年来他们做了以下事情:
在当初
IntelXeon 5000/5400
系列和之前的服务器平台,
MCH
北桥
一直是整个系统的核心枢纽,向上有
FSB
前端总线连接
CPU
,同时提供内存控制器、
PCIe
控制器,并向下连接南桥。
后来
AMD
从
Opteron
(
K8
)开始在
CPU
中
整合内存控制器
,听说因为他们请来了
Alpha
的架构师,而这个方向也是从
RISC
小型机学来的。
后来的事情许多朋友都清楚,
Intel
为了提高内存性能
/
降低延时,并且让
CPU
间通信不在受
FSB
绕道北桥所累,在
Xeon 5500
平台上取消
MCH
同时引入
QPI
互连,把内存控制器整合进
CPU
。
此时
PCIe
控制器仍保留在
IOH
芯片组中,并且还可以增加第二颗
IOH
以提高
PCIe
扩展能力。但
IOH
使用的
QPI
是
Intel
私有协议,毕竟不能实现像
PCIe Switch
那样拓扑
。再后来到了
Xeon E5
平台,
Intel
进一步提高集成度,
将
PCIe
控制器整合进
CPU
,回到了我们前面的讨论。
在当前的架构体系(包括
x86
)中,
CPU
控制的
内存总线是每个通道
72bit
(含
ECC
)同步接口
,每个
DDR4 DIMM
内存插槽
288pin
。
4-8
个内存通道提供每通道
17-25GB/s
带宽
。
而换成
Memory Semantic Fabric
之后,
处理器和内存(
Media Module
)之间通过
Gen-Z Logic
连接,把内存控制器拆分到
CPU
之外
。此时可以有
2-8
个高速串行链路
,号称低延时、高性能的
异步接口,处理器和内存介质无关性
(即支持
DDR
几代不再取决
/
绑定于
CPU
)。
外置内存控制器是否划算?
其实
Intel
也不是没干过类似的事情,其实在历史上他们曾经两次引入内存缓冲技术,大家还记得
FBD
(全缓冲内存)和
SMI
吗?
Fully Buffered DIMM
出现于
Intel 5000
系列芯片组,在双路服务器平台上终止于
5400
。当时
刚开始在主板上引入
4
通道内存
,大概是
64/72
位
DDR
接口布线设计遇到难度,于是改用一种
14bit
下行(北向)
/10bit
上行(南向)的接口技术。北桥的内存通道连接到
内存中央的
AMB
芯片
,再由此在同一个通道内的向下串连更多
DIMM
。这个时期遇到的问题是内存不对等的延时增加,以及每条
DIMM
上
AMB
增加了
成本和功耗
。
第二次是从
Xeon 7500
一直到
XeonE7 v4
。上图以
Dell PowerEdge R910
服务器资料为例,
4
颗