英特尔处理器之间点对点高速互联协议

时间轴
处理器互联也在逐渐的进化
1992 64 bit Data Bus Pentium
1995 Double Pumped Bus
2000 Quad Pumped Bus Pentium
2003 Dual Independent Bus (DIB)
2004 Shared Front side Bus(FSB)
2005 Dedicated High Speed Interconnects (DHSI)
2008 Quick Path Interconnect(QPI) 2018H2诞生,NUMA环境中连接多个处理器的,高速点对点通信协议;
2017 Ultra Path Interconnect (UPI) 搭载skylake server processor

QPI架构分层

从下到上是:物理层,链路层,路由层,传输层,协议层;(基本上认为是四层协议)
  • 物理层:负责收发0,1;传输的单位是20bit,也被称为是physical unit 或者phit
    • 4.8GT/s的话,带宽是:4.8GT/s*16bit/8*2 direction=19.2GB/s
    • 可以工作在full half quarter宽度,full宽度的时候2个phit组成为1个flit
  • 链路层:负责可靠传输和流控,传输的单位是80bit,也被称为是flow control unit或者flit
    • 支持14个消息类型,但是又一部分没使用;实际上可能只使用6个;
    • 支持3个虚拟网络,最大就是14*3=42个虚拟通道;
    • 流速控制使用令牌;发送者的令牌减少,接收者的令牌增加,每转发完成返回令牌;
    • 每80bit需要8wbit进行crc校验;
  • 路由层:指导包的传输
    • 基本是FW写路由表实现;
  • 传输层:负责可靠端到端传输,为可靠性预留;
  • 协议层:各种flit包的传输
    • 实现一致性
    • 基于MESI(messy)协议,增加一个forward状态成MESIF协议;
    • 核心上是CA(Cache Agent),内存侧是HA(Home Agent)
    • 请求行为分为两种倾向:source snoop和home snoop,简单来讲就是少核心的时候使用source snoop ,多核心的时候使用home snoop;
      • source snoop是two hop snoop,二跳探听,在第二次的时候收到数据;
      • home snoop是three hop snoop,三跳探听,在第三次的时候收到数据;

UPI架构优化

skylake处理器使用的是基于home snoop的一致性协议;并且进一步有两个变化,with directory和without directory。
在有了目录的一致性的协议可以比较有效的减少不必要的嗅探(snoop)
并且这一代看上去统一了CA和HA,称为一个CHA,也就是LLC Coherent Agent and Home Agent
具体的其他细节并没有找到更多的资料。

参考文献:
Intel QPI互联技术介绍技术白皮书

万事走心 精益求美


原文地址:https://www.cnblogs.com/kongchung/p/12153995.html