BLOG

Record, summarize, and improve.

总线发展

简介

在计算机体系结构中,总线  (过去也称为数据高速公路  或数据总线)是一种在计算机内部组件之间或计算机之间传输数据的通信系统。此表达式涵盖所有相关的硬件组件(电线、光纤等)。和软件,包括通信协议。

在大多数传统的计算机体系结构中,CPU和主存往往是紧密耦合的,连接两者的内部总线被称为系统总线。在包含高速缓存的系统中,CPU使用高性能系统总线与内存通信,系统总线的运行速度高于内存。内部总线(也称为内部数据总线,内存总线或系统总线)将计算机的内部组件连接到主板。本地总线将CPU和内存连接到扩展总线,扩展总线又将计算机连接到外围设备。总线系统(如现代计算机中的SATA端口)支持多个外围设备,允许在没有扩展卡的情况下连接多个硬盘。

总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由由数据线、地址线、控制线等构成。

接口是一种连接标准,又常常被称之为物理接口。

协议就是传输数据的规则。

总线考虑两个因素:带宽bandwidth、延迟latency

在具有类似于多计算机的体系结构的系统中,但通过总线而不是网络进行通信,系统总线被称为前端总线。在这样的系统中,扩展总线可能不与它们的主机CPU共享任何架构,而是支持许多不同的CPU,就像PCI的情况一样。虽然术语“外围总线”有时被用来指除系统总线之外的所有其他总线,但“扩展总线”也被用来描述与外围总线分离的第三类总线,其包括像PCI这样的总线系统。

存储器总线是计算机系统中将主存储器连接到存储器控制器的总线。最初,使用VMEbus和S-100总线等通用总线,但为了减少延迟,现代内存总线被设计为直接连接到DRAM芯片,因此由JEDEC等芯片标准机构设计。例如,各种代的SDRAM和串行点对点总线,如SLDRAM和RDRAM。一个例外是完全缓冲的DIMM,尽管经过精心设计以最大限度地减少影响,但因其较高的延迟而受到批评。

总线可以是并行总线,其在多条导线上并行地传送数据字,或串行总线,其以位串行形式传送数据。在每个方向上添加额外的电源和控制连接、差分驱动器和数据连接通常意味着大多数串行总线具有比1-Wire和UNI/O中使用的最小导体更多的导体。随着数据速率的增加,并行总线上的时序偏差、功耗、电磁干扰和串扰等问题变得越来越难以解决。通常,串行总线可以以比并行总线更高的总数据速率操作,尽管具有更少的电连接,因为串行总线固有地没有时序偏斜或串扰。USB、FireWire和Serial ATA就是这样的例子。多点连接不适合快速串行总线,因此大多数现代串行总线使用菊花链或集线器设计。

以太网等网络连接通常不被视为总线,尽管这种差异主要是概念上的,而不是实际的。通常用于表征总线的属性是由总线为所连接的硬件提供功率。这强调了总线架构的总线起源,即提供开关电源或分布式电源。这不包括作为总线的串行RS—232、并行Centronics、IEEE 1284接口和以太网等方案,因为这些设备也需要单独的电源。通用串行总线设备可以使用总线供电,但通常使用单独的电源。

第一代

早期的计算机总线是连接计算机内存和外围设备的线束。在早期的澳大利亚CSIRAC计算机中被称为“数字中继线”,  它们以电力总线或母线命名。几乎总是有一个总线用于内存,一个或多个单独的总线用于外围设备。这些是通过单独的指令访问的,具有完全不同的时间和协议。

最先出现的并发之一是中断的使用。早期的计算机程序通过循环等待外围设备就绪来执行I/O。这对于有其他任务要做的程序来说是浪费时间。此外,如果程序试图执行这些其他任务,则程序再次检查可能需要太长时间,从而导致数据丢失。因此,工程师们安排外围设备中断CPU。中断必须优先处理,因为CPU一次只能执行一个外围设备的代码,并且某些设备比其他设备更注重时间。

高端系统引入了通道控制器的概念,通道控制器本质上是专门处理给定总线的输入和输出的小型计算机。IBM于1958年在IBM 709上引入了这些功能,并成为其平台的常见功能。其他高性能供应商如Control Data Corporation也实现了类似的设计。一般来说,通道控制器会尽最大努力在内部运行所有的总线操作,如果可能的话,当CPU被认为是忙碌时,将数据转移到其他地方,并且只在必要时使用中断。这大大降低了CPU负载,并提供了更好的整体系统性能。

为了提供模块化,存储器和I/O总线可以组合成统一的系统总线。  在这种情况下,单个机械和电气系统可以用于将许多系统组件连接在一起,或者在某些情况下,将所有系统组件连接在一起。

Image in a image block

后来的计算机程序开始共享几个CPU共用的内存。对该内存总线的访问也必须优先考虑。区分中断或总线访问优先级的简单方法是使用链。在这种情况下,信号将自然地以物理或逻辑顺序流过总线,从而消除了对复杂调度的需要。

第二代

像NuBus这样的"第二代"总线系统解决了其中的一些问题。他们通常将计算机分为两个“世界”,一边是CPU和内存,另一边是各种设备。总线控制器从CPU侧接收数据,并将其转移到外围设备侧,从而将通信协议负担从CPU本身转移。这允许CPU和内存端从设备总线独立发展,或者只是“总线”。总线上的设备可以在没有CPU干预的情况下相互通信。这导致了更好的"真实的世界"性能,但也要求卡要复杂得多。这些总线也经常通过在数据路径的大小方面“更大”来解决速度问题,从第一代的8位并行总线移动到第二代的16位或32位,以及添加软件设置(现在标准化为即插即用)来取代或替换跳线。

然而,这些新的系统与它们早期的表亲有一个共同的特点,那就是bus上的每个人都必须以同样的速度说话。虽然CPU现在是独立的,可以提高速度,但CPU和内存的速度继续提高,远远快于它们与之交谈的总线。其结果是,总线速度现在比现代系统所需的速度慢得多,机器对数据的需求也很大。这个问题的一个特别常见的例子是,视频卡的速度甚至超过了PCI等较新的总线系统,计算机开始包括AGP只是为了驱动视频卡。到2004年,AGP再次被高端视频卡和其他外围设备所超越,并被新的PCI Express总线所取代。

越来越多的外部设备也开始使用自己的总线系统。当磁盘驱动器首次推出时,它们将通过插入总线的卡添加到机器上,这就是为什么计算机在总线上有这么多插槽。但在20世纪80年代和90年代,SCSI和IDE等新系统被引入以满足这一需求,使得现代系统中的大多数插槽都是空的。今天,在典型的机器中可能有大约五个不同的总线,支持各种设备。

前端总线

前端总线(FSB)是一种计算机通信接口(总线),在20世纪90年代和21世纪初经常用于基于英特尔芯片的计算机。EV6总线为竞争对手AMD CPU提供了相同的功能。两者通常都在中央处理器(CPU)和内存控制器集线器(称为北桥)之间传输数据。

最初的前端总线架构已被HyperTransport、Intel QuickPath Interconnect、Direct Media Interface取代,现在则被Intel Ultra Path Interconnect取代。

后端总线

后端总线(英语:Backside Bus,BSB)是一种计算机总线,用于早期的英特尔平台,将CPU连接到CPU高速缓存,通常是芯片外的L2。如果一个设计使用了后端总线沿着和前端总线(FSB),则该设计被称为使用双总线架构,或英特尔术语中的双独立总线(DIB) [1] 架构。

第三代

自2001年以来,“第三代”bus已经进入市场,包括HyperTransport和InfiniBand。它们在物理连接方面也非常灵活,既可以用作内部总线,也可以将不同的机器连接在一起。这可能会导致复杂的问题,当试图服务于不同的请求,所以这些系统上的大部分工作涉及软件设计,而不是硬件本身。一般来说,这些第三代总线往往看起来更像一个网络,而不是总线的原始概念,需要比早期系统更高的协议开销,同时还允许多个设备同时使用总线。

像Wishbone这样的总线是由开源硬件运动开发的,试图进一步消除计算机设计中的法律的和专利限制。

Compute Express Link(CXL)是一种用于高速CPU到设备和CPU到内存的开放式标准互连,旨在加速下一代数据中心性能。

内部总线示例

Parallel 并行
  • Asus Media Bus proprietary, used on some Asus Socket 7 motherboards

    Asus Media Bus专有,用于某些Asus Socket 7主板

  • Computer Automated Measurement and Control (CAMAC) for instrumentation systems

    仪器系统的计算机自动测量和控制(CAMAC)

  • Extended ISA or EISA

    扩展伊萨或EISA

  • Industry Standard Architecture or ISA

    工业标准体系结构或伊萨

  • Low Pin Count or LPC

    低引脚数或LPC

  • MBus
  • MicroChannel or MCA

     微通道或MCA

  • Multibus for industrial systems

    用于工业系统的多总线

  • NuBus or IEEE 1196

    NuBus或IEEE 1196

  • OPTi local bus used on early Intel 80486 motherboards.

    OPTi本地总线用于早期的Intel 80486主板。

  • Peripheral Component Interconnect or Conventional PCI

    外围组件互连或常规PCI

  • Parallel ATA (also known as Advanced Technology Attachment, ATA, PATA, IDE, EIDE, ATAPI, etc.), Hard disk driveoptical disk drivetape drive peripheral attachment bus

    并行ATA(也称为高级技术附件、ATA、PATA、IDE、艾德、ATAPI等),硬盘驱动器、光盘驱动器、磁带驱动器外围连接总线

  • S-100 bus or IEEE 696, used in the Altair 8800 and similar microcomputers

    S—100总线或IEEE 696,用于Altair 8800和类似的微型计算机

  • SBus or IEEE 1496

    SBus或IEEE 1496

  • SS-50 Bus  SS-50客车
  • Runway bus, a proprietary front side CPU bus developed by Hewlett-Packard for use by its PA-RISC microprocessor family

    Runway总线,由Hewlett-Packard开发的专用前端CPU总线,供其PA-RISC微处理器系列使用

  • GSC/HSC, a proprietary peripheral bus developed by Hewlett-Packard for use by its PA-RISC microprocessor family

    GSC/HSC,由Hewlett-Packard为其PA-RISC微处理器系列开发的专用外围总线

  • Precision Bus, a proprietary bus developed by Hewlett-Packard for use by its HP3000 computer family

    Precision Bus,由Hewlett-Packard开发的专用总线,用于其HP 3000计算机系列

  • STEbus
  • STD Bus (for STD-80 [8-bit] and STD32 [16-/32-bit]), FAQ Archived 2012-02-27 at the Wayback Machine

    STD Bus(for STD-80 [8-bit] and STD 32 [16-/32-bit]),FAQ互联网档桉馆的存档,存档日期2012-02-27.

  • Unibus, a proprietary bus developed by Digital Equipment Corporation for their PDP-11 and early VAX computers.

    Unibus是Digital Equipment Corporation为PDP-11和早期VAX计算机开发的专有总线。

  • Q-Bus, a proprietary bus developed by Digital Equipment Corporation for their PDP and later VAX computers.

    Q-Bus是Digital Equipment Corporation为PDP和后来的VAX计算机开发的专有总线。

  • VESA Local Bus or VLB or VL-bus

    VESA本地总线或VLB或VL总线

  • VMEbus, the VERSAmodule Eurocard bus

    VMEbus,VERSA模块欧洲卡总线

  • PC/104
  • PC/104-Plus  PC/104—Plus
  • PCI-104
  • PCI/104-Express
  • PCI/104
  • Zorro II and Zorro III, used in Amiga computer systems

    Zorro II和Zorro III,用于Amiga计算机系统

Serial 串行

外部总线示例

Parallel 平行
  • HIPPI High Performance Parallel Interface

    高性能并行接口

  • IEEE-488 (also known as GPIB, General-Purpose Interface Bus, and HPIB, Hewlett-Packard Instrumentation Bus)

    IEEE-488(也称为GPIB,通用接口总线和HPIB,惠普仪器总线)

  • PC Card, previously known as PCMCIA, much used in laptop computers and other portables, but fading with the introduction of USB and built-in network and modem connections

    PC卡,以前称为PCMCIA,主要用于笔记本电脑和其他便携式设备,但随着USB和内置网络和调制解调器连接的引入而逐渐消失

Serial 串行

许多现场总线是串行数据总线(不要与系统总线或扩展卡的并行“数据总线”部分混淆),其中一些使用RS—485电气特性,然后指定自己的协议和连接器:

其他串行总线包括:

所有总线

Technical and de facto standards for wired computer buses
General System bus
Front-side bus
Back-side bus
Daisy chain
Control bus
Address bus
Bus contention
Bus mastering
Network on a chip
Plug and play
List of bus bandwidths
Standards SS-50 bus
S-100 bus
Multibus
Unibus
VAXBI
MBus
STD Bus
SMBus
Q-Bus
Europe Card Bus
ISA
STEbus
Zorro II
Zorro III
CAMAC
FASTBUS
LPC
HP Precision Bus
EISA
VME
VXI
VXS
NuBus
TURBOchannel
MCA
SBus
VLB
HP GSC bus
InfiniBand
Ethernet
UPA
PCI
PCI Extended (PCI-X)
PXI
PCI Express (PCIe)
AGP
Compute Express Link (CXL)
Direct Media Interface (DMI)
RapidIO
Intel QuickPath Interconnect
NVLink
HyperTransport 
Infinity Fabric
Intel Ultra Path Interconnect
Coherent Accelerator Processor Interface (CAPI)
SpaceWire
Storage ST-506
ESDI
IPI
SMD
Parallel ATA (PATA)
SSA
DSSI
HIPPI
Serial ATA (SATA)
SCSI 
Parallel
SAS
Fibre Channel
SATAe
• PCI Express (via AHCI or NVMe logical device interface)
Peripheral Apple Desktop Bus
Atari SIO
DCB
Commodore bus
HP-IL
HIL
MIDI
RS-232
RS-422
RS-423
RS-485
Lightning
DMX512-A
IEEE-488 (GPIB)
IEEE-1284 (parallel port)
IEEE-1394 (FireWire)
UNI/O
1-Wire
I²C (ACCESS.busPMBusSMBus)
I3C
SPI
D²B
Parallel SCSI
Profibus
USB
Camera Link
External PCIe
Thunderbolt
Audio ADAT Lightpipe
AES3
Intel HD Audio
I²S
MADI
McASP
S/PDIF
TOSLINK
Portable PC Card
ExpressCard
Embedded Multidrop bus
CoreConnect
AMBA (AXI)
Wishbone
SLIMbus

CXL

Compute Express Link (CXL) 是高速、高容量中央处理器 (CPU) 到设备和 CPU 到内存连接的开放标准,专为高性能数据中心计算机而设计。     CXL 基于串行 PCI Express (PCIe) 物理和电气接口构建,包括基于 PCIe 的块输入/输出协议 (CXL.io) 和用于访问系统内存 (CXL.cache) 和设备内存 (CXL.mem) 的新缓存一致性协议。串行通信和池化功能使 CXL 内存在实现高存储容量时能够克服常见 DIMM 内存的性能和插槽封装限制。  

Coherent Accelerator Processor Interface(CAPI)相干加速器处理器接口 是一种用于大型数据中心计算机的高速处理器扩展总线标准,最初设计为在 PCI Express 之上分层,用于将中央处理器 (CPU) 直接连接到图形处理单元 (GPU)、ASIC、FPGA 或快速存储等外部加速器。   它在不同指令集架构的设备之间提供低延迟、高速、直接的内存访问连接。2022 年 8 月 1 日,OpenCAPI 规范和资产被转移到 Compute Express Link (CXL) 联盟。

Protocols 协议

CXL 标准定义了三个单独的协议: 

  • CXL.io – based on PCIe 5.0 (and PCIe 6.0 after CXL 3.0) with a few enhancements, it provides configuration, link initialization and management, device discovery and enumeration, interrupts, DMA, and register I/O access using non-coherent loads/stores.

    CXL.io – 基于 PCIe 5.0(以及 CXL 3.0 之后的 PCIe 6.0)和一些增强功能,它提供配置、链路初始化和管理、设备发现和枚举、中断、DMA 以及使用非相干加载/存储的寄存器 I/O 访问。

  • CXL.cache – allows peripheral devices to coherently access and cache host CPU memory with a low latency request/response interface.

    CXL.cache – 允许外围设备通过低延迟请求/响应接口一致地访问和缓存主机 CPU 内存。

  • CXL.mem – allows host CPU to coherently access cached device memory with load/store commands for both volatile (RAM) and persistent non-volatile (flash memory) storage.

    CXL.mem – 允许主机 CPU 使用加载/存储命令一致地访问缓存的设备内存,用于易失性 (RAM) 和持久性非易失性(闪存)存储。

CXL.cache and CXL.mem protocols operate with a common link/transaction layer, which is separate from the CXL.io protocol link and transaction layer. These protocols/layers are multiplexed together by an Arbitration and Multiplexing (ARB/MUX) block before being transported over standard PCIe 5.0 PHY using fixed-width 528 bit (66 byte) Flow Control Unit (FLIT) block consisting of four 16-byte data 'slots' and a two-byte cyclic redundancy check (CRC) value. CXL FLITs encapsulate PCIe standard Transaction Layer Packet (TLP) and Data Link Layer Packet (DLLP) data with a variable frame size format.

CXL.cache 和 CXL.mem 协议使用公共链接/事务层运行,该层独立于 CXL.io 协议链接和事务层。这些协议/层通过仲裁和多路复用 (ARB/MUX) 块多路复用在一起,然后使用固定宽度的 528 位(66 字节)流量控制单元 (FLIT) 块通过标准 PCIe 5.0 PHY 传输,该块由四个 16 字节数据“插槽”和一个两字节循环冗余校验 (CRC) 值组成。  CXL FLIT 使用可变帧大小格式封装 PCIe 标准事务层数据包 (TLP) 和数据链路层数据包 (DLLP) 数据。 

CXL 3.0 introduces 256-byte FLIT in PAM-4 transfer mode.

CXL 3.0 在 PAM-4 传输模式下引入了 256 字节 FLIT。

Device types 设备类型

CXL 旨在支持三种主要设备类型:

  • Type 1 (CXL.io and CXL.cache) – specialised accelerators (such as smart NIC) with no local memory. Devices rely on coherent access to host CPU memory.

    类型 1(CXL.io 和 CXL.cache) – 没有本地内存的专用加速器(如智能 NIC)。设备依赖于对主机 CPU 内存的连贯访问。

  • Type 2 (CXL.io, CXL.cache and CXL.mem) – general-purpose accelerators (GPUASIC or FPGA) with high-performance GDDR or HBM local memory. Devices can coherently access host CPU's memory and/or provide coherent or non-coherent access to device local memory from the host CPU.

    类型 2(CXL.io、CXL.cache 和 CXL.mem)——具有高性能 GDDR 或 HBM 本地内存的通用加速器(GPU、ASIC 或 FPGA)。设备可以连贯地访问主机 CPU 的内存和/或从主机 CPU 提供对设备本地内存的连贯或非连贯访问。

  • Type 3 (CXL.io and CXL.mem) – memory expansion boards and persistent memory. Devices provide host CPU with low-latency access to local DRAM or byte-addressible non-volatile storage.

    类型 3(CXL.io 和 CXL.mem) – 内存扩展板和持久内存。设备为主机 CPU 提供对本地 DRAM 或字节可寻址非易失性存储的低延迟访问。

Type 2 devices implement two memory coherence modes, managed by device driver. In device bias mode, device directly accesses local memory and no caching is performed by the CPU; in host bias mode, the host CPU's cache controller handles all access to device memory. Coherence mode can be set individually for each 4 KB page, stored in a translation table in local memory of Type 2 devices. Unlike other CPU-to-CPU memory coherency protocols, this arrangement only requires the host CPU memory controller to implement the cache agent; such asymmetric approach reduces implementation complexity and reduces latency.类型 2 设备实现两种内存一致性模式,由设备驱动程序管理。在器件偏置模式下,器件直接访问本地内存,CPU不进行缓存;在主机偏置模式下,主机 CPU 的缓存控制器处理对设备内存的所有访问。可以为每个 4 KB 页面单独设置一致性模式,存储在 Type 2 设备本地存储器的转换表中。与其他 CPU 到 CPU 内存一致性协议不同,这种安排只需要主机 CPU 内存控制器来实现缓存代理;这种非对称方法降低了实现的复杂性并减少了延迟。

CXL 2.0 added support for switching in tree-based device fabrics, allowing PCIe, CXL 1.1 and CXL 2.0 devices to form virtual hierarchies of single- and multi-logic devices that can be managed by multiple hosts.CXL 2.0 增加了对基于树的设备结构中交换的支持,允许 PCIe、CXL 1.1 和 CXL 2.0 设备形成可由多个主机管理的单逻辑和多逻辑设备的虚拟层次结构。

CXL 3.0 replaced bias modes with enhanced coherency semantics, allowing Type 2 and Type 3 devices to back invalidate the data in the host cache when the device has made a change to the local memory. Enhanced coherency also helps implement peer-to-peer transfers within a virtual hierarchy of devices in the same coherency domain. It also supports memory sharing of the same memory segment between multiple devices, as opposed to memory pooling where each device was assigned a separate segment.CXL 3.0 用增强的一致性语义取代了偏置模式,允许 Type 2 和 Type 3 设备在设备对本地内存进行更改时反向使主机缓存中的数据失效。增强的一致性还有助于在同一一致性域中的设备虚拟层次结构中实现点对点传输。它还支持在多个设备之间共享同一内存段的内存,而不是为每个设备分配单独段的内存池。

CXL 3.0 allows multiple Type 1 and Type 2 devices per each CXL root port; it also adds multi-level switching, helping implement device fabrics with non-tree topologies like mesh, ring, or spline/leaf. Each node can be a host or a device of any type. Type 3 devices can implement Global Fabric Attached Memory (GFAM) mode, which connects a memory device to a switch node without requiring direct host connection. Devices and hosts use Port Based Routing (PBR) addressing mechanism that supports up to 4,096 nodes.CXL 3.0 允许每个 CXL 根端口有多个 Type 1 和 Type 2 设备;它还增加了多级交换,有助于实现具有非树状拓扑结构(如网格、环形或样条/叶)的设备结构。每个节点可以是主机,也可以是任何类型的设备。类型 3 设备可以实现全局结构附加内存 (GFAM) 模式,该模式将内存设备连接到交换机节点,而无需直接连接主机。设备和主机使用基于端口的路由 (PBR) 寻址机制,最多支持 4,096 个节点。

解决哪些问题

CXL(Compute Express Link)协议主要为了解决CPU和设备、设备和设备之间的memory鸿沟

DMA对内存的访问还是要通过内存控制器,延迟问题相当高,基于此,Intel推出了I/OAT技术,DMA可以直接访问CPU LLC cache,大大提高了性能,I/OAT在网卡等高速设备上得到了广泛应用。尽管I/OAT解决了部分问题,但主存和设备内存的割裂问题远远没有得到解决,它们的地址不能统一编址,缓存一致性也不能保证。

那么在CXL之前,有没有相关的解决方案呢?有的,还不只一种。其中就有以IBM牵头的OpenCAPI,ARM为代表支持的CCIX,AMD等支持的GenZ和Nvidia自行提出的Nvlink等等多种协议,可谓一个乱字了得。因为篇幅所限,我们单独简单了解一下和CXL定位比较接近的Nvlink[1]

Image in a image block

Nvlink可以替代SLI来连接GPU和GPU;如果CPU也支持Nvlink,则整个CPU和GPU的cache一致性和内存统一编址也可以做到。

初代CXL包括自己的协议,但是运行在PCIe gen5 (5.0)的物理层上,并寄希望在Gen 6上能够得到更广泛的应用

CXL协议包括[4]三个子协议:

  • CXL. io 是IO类型,和传统PCIe类似
  • CXL.cache 允许设备访问主存和cache
  • CXL.memory 允许CPU访问设备的内存.

NVLink

NVLink是英伟达开发的基于线的串行多通道近距离通信链路。与 PCI Express 不同,设备可以由多个 NVLink 组成,并且设备使用网状网络而不是中央集线器进行通信。该协议于 2014 年 3 月首次发布,使用专有的高速信令互连 (NVHS)。

NVLink 是由 Nvidia 开发的一种基于线的通信协议,用于近距离半导体通信,可用于处理器系统中 CPU 和 GPU 之间的数据和控制代码传输,并且仅在 GPU 之间传输。NVLink 指定点对点连接,每个差分对的数据速率为 20、25 和 50 Gbit/s (v1.0/v2.0/v3.0+ resp.)。对于 NVLink 1.0 和 2.0,八个差分对形成一个“子链路”,两个“子链路”(每个方向一个)形成一个“链路”。从 NVlink 3.0 开始,只有四个差分对形成“子链路”。对于 NVLink 2.0 及更高版本,子链路的总数据速率为 25 GB/s,链路的总数据速率为 50 GB/s。每个 V100 GPU 最多支持 6 个链路。因此,每个 GPU 能够支持高达 300 GB/s 的总双向带宽。   迄今为止推出的 NVLink 产品专注于高性能应用领域。2020 年 5 月 14 日发布的 NVLink 3.0 将每个差分对的数据速率从 25 Gbit/s 提高到 50 Gbit/s,同时将每个 NVLink 的对数从 8 个减半到 4 个。基于 Ampere 的 A100 GPU 有 12 个链路,总带宽达到 600GB/s。  Hopper 有 18 个 NVLink 4.0 链路,总带宽为 900GB/s。  因此,NVLink 2.0、3.0 和 4.0 每个双向链路都有 50GB/s,并相应地有 6、12 和 18 个链路。

下表显示了基于标准规范的基本指标比较:

Interconnect Transferrate Line code Effective payload rate 有效载荷率per lane 每车道per direction 每个方向 Max total 最大总数lane length 车道长度(PCIe: incl. 5" for PCBs)(PCIe:包括 5 英寸用于 PCB) Realized in design 在设计中实现
PCIe 1.x 2.5 GT/s 8b/10b ~0.25 GB/s 20" = ~51 cm
PCIe 2.x 5 GT/s 8b/10b ~0.5 GB/s 20" = ~51 cm
PCIe 3.x 8 GT/s 128b/130b ~1 GB/s 20" = ~51 cm 20“ = ~51厘米 Pascal, 帕斯卡Volta, 沃尔特Turing 图灵机
PCIe 4.0 16 GT/s 128b/130b ~2 GB/s 8−12" = ~20−30 cm8−12“ = ~20−30厘米 Volta on Xavier Volta on Xavier(泽维尔沃尔特酒店)(8x, 4x, 1x), (8 倍、4 倍、1 倍)、Ampere, 安培Power 9 电源 9
PCIe 5.0 32 GT/s 128b/130b ~4 GB/s Hopper
PCIe 6.0 64 GT/s 1b/1b ~8 GB/s Blackwell
NVLink 1.0 20 Gbit/s ~2.5 GB/s Pascal, 帕斯卡Power 8+ 电源 8+
NVLink 2.0 25 Gbit/s ~3.125 GB/s Volta, 沃尔特NVSwitch for Volta 适用于 Volta 的 NVSwitchPower 9 电源 9
NVLink 3.0 50 Gbit/s ~6.25 GB/s Ampere, 安培NVSwitch for Ampere 适用于 Ampere 的 NVSwitch
NVLink 4.0(also as C2C, chip-to-chip)(也称为 C2C,芯片到芯片) 100 Gbit/s  100 Gbit/秒 ~6.25 GB/s Hopper,  料斗Nvidia Grace Datacenter/Server CPUNvidia Grace 数据中心/服务器 CPUNVSwitch for Hopper 适用于 Hopper 的 NVSwitch
NVLink 5.0(also as C2C, chip-to-chip)(也称为 C2C,芯片到芯片) 200 Gbit/s Blackwell,  布莱克威尔Nvidia Grace Datacenter/Server CPUNvidia Grace 数据中心/服务器 CPUNVSwitch for Blackwell 适用于 Blackwell 的 NVSwitch

下表显示了所有提供 NVLink 选项之一的实际半导体的相关总线参数的比较:

Semiconductor Board/bus 板/总线delivery variant 交付变体 Interconnect Transmission 传输technology 科技rate (per lane) 速率(每通道) Lanes per 每车道数sub-link 子链接(out + in) (输出 + 输入) Sub-link data rate 子链路数据速率(per data direction) (按数据方向) Sub-link 子链接or unit 或单位count 计数 Total data rate 总数据速率(out + in) (输出 + 输入) Total 总lanes 车道(out + in) (输出 + 输入) Total 总data rate 数据速率(out + in) (输出 + 输入)
Nvidia GP100 P100 SXM, P100 SXM, P100 PCI-E P100 PCI-E  接口 PCIe 3.0 GT/s 16 + 16  128 Gbit/s = 16 GB/s128 Gbit/秒 = 16 GB/秒 1 16 + 16 GB/s016 + 016 千兆字节/s 32  32 GB/s
Nvidia GV100 V100 SXM2, V100 SXM2, V100 PCI-E V100 PCI-E  接口 PCIe 3.0 GT/s 16 + 16  128 Gbit/s = 16 GB/s128 Gbit/秒 = 16 GB/秒 1 16 + 16 GB/s 016 + 016 千兆字节/s 32  32 GB/s
Nvidia TU104 GeForce RTX 2080, GeForce RTX 2080、Quadro RTX 5000 Quadro RTX 5000 操作系统 PCIe 3.0 GT/s 16 + 16  128 Gbit/s = 16 GB/s128 Gbit/秒 = 16 GB/秒 1 16 + 16 GB/s 016 + 016 千兆字节/s 32  32 GB/s
Nvidia TU102 GeForce RTX 2080 Ti, GeForce RTX 2080 Ti,Quadro RTX 6000/8000 Quadro RTX 6000/8000 操作系统 PCIe 3.0 GT/s 16 + 16  128 Gbit/s = 16 GB/s128 Gbit/秒 = 16 GB/秒 1 16 + 16 GB/s 016 + 016 千兆字节/s 32  32 GB/s
Nvidia Xavier  (generic) PCIe 4.0 Ⓓ PCIe 4.0 (D)2 units: x8 (dual) 2 个单位:x8(双)1 unit: x4 (dual) 1 个单元:x4(双)3 units: x13 个单位:x1  16 GT/s 8 + 8  08 + 08 (乙)4 + 4  04 + 04 (乙)1 + 1 128 Gbit/s = 16 GB/s128 Gbit/秒 = 16 GB/秒64 Gbit/s = 8 GB/s64 Gbit/秒 = 08 GB/秒16 Gbit/s = 2 GB/s16 Gbit/秒 = 02 GB/秒 Ⓓ213 Ⓓ32 + 32 GB/s 032 + 032 千兆字节/s8 + 8 GB/s 008 + 008 千兆字节/s6 + 6 GB/s 006 + 006 千兆字节/s 40  80 GB/s
IBM Power9 (generic) PCIe 4.0 16 GT/s 16 + 16  256 Gbit/s = 32 GB/s256 Gbit/秒 = 32 GB/秒 3 96 + 96 GB/s 096 + 096 千兆字节/s 96 192 GB/s
Nvidia GA100 
Nvidia GA102 
Ampere A100 安培 A100(SXM4 & PCIe) (SXM4 和 PCIe) PCIe 4.0 16 GT/s 16 + 16  256 Gbit/s = 32 GB/s256 Gbit/秒 = 32 GB/秒 1 32 + 32 GB/s 032 + 032 千兆字节/s 32  64 GB/s
Nvidia GP100 P100 SXM, P100 SXM,(not available with P100 PCI-E)(不适用于 P100 PCI-E) NVLink 1.0 20 GT/s 8 + 8  160 Gbit/s = 20 GB/s160 Gbit/s = 20 GB/秒 4 80 + 80 GB/s 080 + 080 千兆字节/s 64 160 GB/s
Nvidia Xavier  (generic) NVLink 1.0 20 GT/s 8 + 8  160 Gbit/s = 20 GB/s160 Gbit/s = 20 GB/秒
IBM Power8+ (generic) NVLink 1.0 20 GT/s 8 + 8  160 Gbit/s = 20 GB/s160 Gbit/s = 20 GB/秒 4 80 + 80 GB/s 080 + 080 千兆字节/s 64 160 GB/s
Nvidia GV100 V100 SXM2 V100 SXM2  系列(not available with V100 PCI-E)(不适用于 V100 PCI-E) NVLink 2.0 25 GT/s 8 + 8  200 Gbit/s = 25 GB/s 6 150 + 150 GB/s 150 + 150 千兆字节/s 96 300 GB/s
IBM Power9 (generic) NVLink 2.0(BlueLink ports) (BlueLink 端口) 25 GT/s 8 + 8  200 Gbit/s = 25 GB/s 6 150 + 150 GB/s 150 + 150 千兆字节/s 96 300 GB/s
NVSwitch for Volta (generic) (通用)(fully connected 18x18 switch)(全连接18x18开关) NVLink 2.0 25 GT/s 8 + 8  200 Gbit/s = 25 GB/s 2 * 8 + 2= 18 450 + 450 GB/s 450 + 450 千兆字节/s 288 900 GB/s
Nvidia TU104 GeForce RTX 2080, GeForce RTX 2080、Quadro RTX 5000Quadro RTX 5000  操作系统 NVLink 2.0 25 GT/s 8 + 8  200 Gbit/s = 25 GB/s 1 25 + 25 GB/s 025 + 025 千兆字节/s 16 50 GB/s
Nvidia TU102 GeForce RTX 2080 Ti, GeForce RTX 2080 Ti,Quadro RTX 6000/8000Quadro RTX 6000/8000  操作系统 NVLink 2.0 25 GT/s 8 + 8  200 Gbit/s = 25 GB/s 2 50 + 50 GB/s 050 + 050 千兆字节/s 32 100 GB/s
Nvidia GA100 Ampere A100 安培 A100(SXM4 & PCIe)(SXM4 和 PCIe  ) NVLink 3.0 50 GT/s 4 + 4  200 Gbit/s = 25 GB/s 12 300 + 300 GB/s 300 + 300 千兆字节/s 96 600 GB/s
Nvidia GA102  GeForce RTX 3090 GeForce RTX 3090 操作系统Quadro RTX A6000 NVLink 3.0 28.125 GT/s 4 + 4  112.5 Gbit/s = 14.0625 GB/s112.5 Gbit/秒 = 14.0625 GB/秒 4 56.25 + 56.25 GB/s 56.25 + 56.25 千兆字节/s 16 112.5 GB/s
NVSwitch for Ampere  (generic) (通用)(fully connected 18x18 switch)(全连接18x18开关) NVLink 3.0 50 GT/s 8 + 8  400 Gbit/s = 50 GB/s 2 * 8 + 2= 18 900 + 900 GB/s 900 + 900 千兆字节/s 288 1800 GB/s
NVSwitch for Hopper (fully connected 64 port switch)(全连接64端换机) NVLink 4.0 106.25 GT/s 9 + 9  450 Gbit/s 18 900 GB/s 128 7200 GB/s
Nvidia Grace CPU Nvidia GH200 Superchip 英伟达GH200超级芯片 PCIe-5 (4x, 16x) @ 512 GB/sPCIe-5 (4x, 16x) @ 512 千兆字节/s
Nvidia Grace CPU Nvidia GH200 Superchip 英伟达GH200超级芯片 NVLink-C2C @ 900 GB/s NVLink-C2C @ 900 千兆字节/秒
Nvidia Hopper GPU Nvidia GH200 Superchip 英伟达GH200超级芯片 NVLink-C2C @ 900 GB/s NVLink-C2C @ 900 千兆字节/秒
Nvidia Hopper GPU Nvidia GH200 Superchip 英伟达GH200超级芯片 NVLink 4 (18x) @ 900 GB/sNVLink 4 (18x) @ 900 千兆字节/秒

Note: Data rate columns were rounded by being approximated by transmission rate, see real world performance paragraph注意:数据速率列通过近似传输速率进行四舍五入,请参阅实际性能段落

: sample value; NVLink sub-link bundling should be possible(A):样品值;NVLink 子链路捆绑应该是可能的

: sample value; other fractions for the PCIe lane usage should be possible(B):样本值;PCIe通道使用的其他部分应该是可能的

: a single (no! 16) PCIe lane transfers data over a differential pair(C):单个(编号:16)PCIe通道通过差分对传输数据

: various limitations of finally possible combinations might apply due to chip pin muxing and board design(D):由于芯片引脚多路复用和电路板设计,最终可能的组合可能存在各种限制

dual: interface unit can either be configured as a root hub or an end pointdual:接口单元可以配置为根集线器或端点

generic: bare semiconductor without any board design specific restrictions applied通用:裸半导体,不应用任何电路板设计特定限制

Usage with plug-in boards

对于各种版本的插件板(存在少量具有此功能的高端游戏和专业图形 GPU 板),它们暴露了用于将它们连接到 NVLink 组的额外连接器,确实存在类似数量的略有不同、相对紧凑的基于 PCB 的互连插头。通常,由于其物理和逻辑设计,只有相同类型的电路板才能配合在一起。对于某些设置,需要使用两个相同的插头才能实现全数据速率。到目前为止,典型的插头是 U 形的,在形状的每个末端行程上都有一个细网格边缘连接器,背对着观察者。插头的宽度决定了插卡与主机系统主板的距离 - 卡的放置距离通常由匹配的插头决定(已知可用的插头宽度为 3 到 5 个插槽,也取决于板类型)。   从2004年开始,互连通常被称为可扩展链路接口(SLI),因为它的结构设计和外观,即使基于NVLink的现代设计具有完全不同的技术性质,与以前的设计相比,其基本级别具有不同的功能。报告的真实世界设备包括:

  • Quadro GP100 (a pair of cards will make use of up to 2 bridges; the setup realizes either 2 or 4 NVLink connections with up to 160 GB/s - this might resemble NVLink 1.0 with 20 GT/s)

    Quadro GP100(一对卡最多可使用 2 个桥;  该设置实现了 2 或 4 个 NVLink 连接,速度高达 160 GB/s  - 这可能类似于 NVLink 1.0 的 20 GT/s)

  • Quadro GV100 (a pair of cards will need up to 2 bridges and realize up to 200 GB/s - this might resemble NVLink 2.0 with 25 GT/s and 4 links)

    Quadro GV100(一对卡最多需要 2 个桥接器,最高可达 200 GB/s  - 这可能类似于 NVLink 2.0,具有 25 GT/s 和 4 个链路)

  • GeForce RTX 2080 based on TU104 (with single bridge "GeForce RTX NVLink-Bridge")

    基于 TU104 的 GeForce RTX 2080(带单桥“GeForce RTX NVLink-Bridge”  )

  • GeForce RTX 2080 Ti based on TU102 (with single bridge "GeForce RTX NVLink-Bridge")

    基于 TU102 的 GeForce RTX 2080 Ti(带单桥“GeForce RTX NVLink-Bridge”  )

  • Quadro RTX 5000 based on TU104 (with single bridge "NVLink" up to 50 GB/s - this might resemble NVLink 2.0 with 25 GT/s and 1 link)

    基于 TU104 的 Quadro RTX 5000  (单桥“NVLink”高达 50 GB/s  - 这可能类似于 NVLink 2.0,具有 25 GT/s 和 1 个链路)

  • Quadro RTX 6000 based on TU102 (with single bridge "NVLink HB" up to 100 GB/s - this might resemble NVLink 2.0 with 25 GT/s and 2 links)

    基于 TU102 的 Quadro RTX 6000  (单桥“NVLink HB”高达 100 GB/s  - 这可能类似于具有 25 GT/s 和 2 个链路的 NVLink 2.0)

  • Quadro RTX 8000 based on TU102 (with single bridge "NVLink HB" up to 100 GB/s - this might resemble NVLink 2.0 with 25 GT/s and 2 links)

    基于 TU102 的 Quadro RTX 8000  (单桥“NVLink HB”高达 100 GB/s  - 这可能类似于 NVLink 2.0,具有 25 GT/s 和 2 个链路)

服务软件和编程

对于 Tesla、Quadro 和 Grid 产品线,NVML-API(Nvidia 管理库 API)提供了一组函数,用于以编程方式控制 Windows 和 Linux 系统上 NVLink 互连的某些方面,例如组件评估和版本以及状态/错误查询和性能监控。  此外,通过提供 NCCL 库(Nvidia Collective Communications Library),公共空间中的开发人员将能够在 NVLink 上实现人工智能和类似计算饥饿主题的强大实现。  Nvidia 控制面板中的“3D 设置”»“配置 SLI、Surround、PhysX”页面和 CUDA 示例应用程序“simpleP2P”使用此类 API 来实现其 NVLink 功能方面的服务。在 Linux 平台上,带有子命令“nvidia-smi nvlink”的命令行应用程序提供了一组类似的高级信息和控制。 

HyperTransport

HyperTransport (HT),以前称为 Lightning Data Transport,是一种用于计算机处理器互连的技术。它是 2001 年 4 月 2 日推出的双向串行/并行高带宽、低延迟点对点链路。  HyperTransport Consortium 负责推广和开发 HyperTransport 技术。

HyperTransport 最广为人知的是 AMD 中央处理器 (CPU) 的系统总线架构,从 Athlon 64 到 AMD FX 和相关主板芯片组。IBM 和苹果公司也将HyperTransport 用于 Power Mac G5 机器以及一些现代 MIPS 系统。

目前的规格HTX 3.1在2014年的高速(2666和3200 MT/s或约10.4GB/s和12.8GB/s)DDR4 RAM和较慢(约1GB/s类似于高端PCIe SSD ULLtraDIMM闪存)技术 [clarification needed] 方面仍然具有竞争力-在通用CPU总线上的RAM速度范围比任何英特尔前端总线都更广。英特尔技术要求每个速度范围的RAM都有自己的接口,从而导致主板布局更复杂,但瓶颈更少。26 GB/s的HTX 3.1可以作为一个统一的总线,支持多达四个以最快速度运行的DDR4棒。除此之外,DDR4 RAM可能需要两个或更多的HTX 3.1总线,从而降低了其作为统一传输的价值。

Links and rates

HyperTransport有四个版本:1.x、2.0、3.0和3.1,运行频率从200 MHz到3.2GHz。它也是DDR或“双倍数据速率”连接,这意味着它在时钟信号的上升沿和下降沿都发送数据。这允许在3.2GHz下运行时的最大数据速率为6400 MT/s。在当前计算中,工作频率与主板芯片组(北桥)自动同步。

HyperTransport支持自动更新的位宽,每个链接从2到32位不等;每个HyperTransport总线有两个单向链接。随着3.1版本的出现,使用完整的32位链路并利用完整的HyperTransport 3.1规范的工作频率,理论传输速率为25.6 GB/s(3.2GHz ×每个时钟周期2次传输×每个链路32位),或51.2GB/s聚合吞吐量,使其比大多数现有的PC工作站和服务器总线标准更快,也比大多数高性能计算和网络总线标准更快。

各种宽度的链路可以在单个系统配置中混合在一起,如在到另一个CPU的一个16位链路和到外围设备的一个8位链路中,这允许CPU之间的更宽互连以及到外围设备的更低带宽互连。它还支持链路拆分,其中单个16位链路可以划分为两个8位链路。由于其较低的开销,该技术通常也具有比其他解决方案更低的延迟。

Packet-oriented

HyperTransport是基于数据包的,其中每个数据包由一组32位字组成,而不管链路的物理宽度如何。数据包中的第一个字总是包含一个命令字段。许多数据包包含40位地址。当需要64位寻址时,附加的32位控制分组被预先考虑。数据有效载荷在控制分组之后发送。传输总是被填充为32位的倍数,而不管其实际长度。

HyperTransport数据包以称为位时间的段进入互连。所需的位时间数取决于链路宽度。HyperTransport还支持系统管理消息、信号中断、向相邻设备或处理器发出探测、I/O事务和一般数据事务。支持两种写入命令:posted和non—posted。发布的写入不需要目标的响应。这通常用于高带宽设备,例如统一内存访问流量或直接内存访问传输。非发布写入需要来自接收方的响应,其形式为"目标完成"响应。读取还需要一个包含读取数据的响应。HyperTransport支持PCI消费者/生产者订购模型。

Power-managed

HyperTransport还促进了电源管理,因为它符合高级配置和电源接口规范。这意味着处理器睡眠状态(C状态)的变化可以通知设备状态(D状态)的变化,例如,当CPU进入睡眠状态时关闭磁盘。HyperTransport 3.0增加了更多功能,允许集中式电源管理控制器实现电源管理策略。

Applications

Front-side bus replacement

HyperTransport的主要用途是取代英特尔定义的前端总线,这对于每种类型的英特尔处理器都是不同的。例如,Pentium不能直接插入PCI Express总线,而必须先通过适配器来扩展系统。专有前端总线必须通过各种标准总线(如AGP或PCI Express)的适配器连接。这些通常包括在相应的控制器功能中,即北桥和南桥。

相比之下,HyperTransport是一个开放的规范,由多公司联盟发布。单个HyperTransport适配器芯片将与各种支持HyperTransport的微处理器一起工作。

AMD使用HyperTransport取代了Opteron、Athlon 64、Athlon II、Sempron 64、Turion 64、Phenom、Phenom II和FX系列微处理器的前端总线。

多处理机互连

HyperTransport的另一个用途是作为NUMA多处理器计算机的互连。AMD在其Opteron和Athlon 64 FX(双插槽直接连接(DSDC)架构)系列处理器中使用了带有专有缓存一致性扩展的HyperTransport作为其直接连接架构的一部分。与EPYC服务器CPU一起使用的Infinity Fabric是HyperTransport的超集。Newisys的HORUS互连将这一概念扩展到更大的集群。来自3Leaf Systems的Aqua设备虚拟化并互连CPU、内存和I/O。

路由器或交换机总线更换

HyperTransport也可以用作路由器和交换机中的总线。路由器和交换机有多个网络接口,必须尽可能快地在这些端口之间转发数据。例如,一个四端口、1000 Mbit/s的以太网路由器需要最大8000 Mbit/s的内部带宽(1000 Mbit/s × 4端口× 2方向)--HyperTransport大大超过了这个应用所需的带宽。然而,4 + 1端口10 Gb路由器需要100 Gbit/s的内部带宽。再加上802.11ac 8天线和WiGig 60 GHz标准(802.11ad),HyperTransport变得更加可行(所需带宽使用20到24个通道)。

协处理器互连

CPU和协处理器之间的延迟和带宽问题通常是其实际实现的主要绊脚石。FPGA等协处理器已经出现,可以访问HyperTransport总线并集成在主板上。来自两个主要制造商(Altera和Xilinx)的当前一代FPGA直接支持HyperTransport接口,并提供IP内核。公司如XtremeData,Inc.和DRC采用这些FPGA(DRC采用Xilinx)并创建一个模块,允许FPGA直接插入Opteron插座。

AMD于2006年9月21日启动了一项名为Torrenza的计划,以进一步推广HyperTransport在插件卡和协处理器中的使用。这一举措将他们的“Socket F”开放给XtremeData和DRC等插件板。

附加卡连接器(HTX和HTX 3)

HyperTransport Consortium发布了一个连接器规范,允许基于插槽的外设使用HyperTransport接口直接连接到微处理器。它被称为HyperTransport eXpansion(HTX)。使用与16通道PCI Express插槽相同的机械连接器的反向实例(加上用于电源引脚的x1连接器),HTX允许开发支持直接访问CPU和DMA到系统RAM的插件卡。此插槽的初始卡是QLogic InfiniPath InfiniBand HCA。IBM和惠普等公司已经发布了HTX兼容系统。

最初的HTX标准仅限于16位和800MHz。

2008年8月,HyperTransport Consortium发布了HTX 3,将HTX的时钟速率扩展到2.6GHz(5.2GT/s,10.7GTi,5.2真实的GHz数据速率,3 MT/s编辑速率),并保留了向后兼容性。

Implementations

频率规格

yperTransportversion Year Max. HT frequency 最大HT频率 Max. link width 最大链路宽度 Max. aggregate bandwidth (GB/s)最大聚合带宽(GB/s)
bi-directional 16-bit unidirectional 16-位单向 32-bit unidirectional* 32-位单向 *
1.0 2001 800 MHz 32-bit 12.8 3.2 6.4
1.1 2002 800 MHz 32-bit 12.8 3.2 6.4
2.0 2004 1.4 GHz 32-bit 22.4 5.6 11.2
3.0 2006 2.6 GHz 32-bit 41.6 10.4 20.8
3.1 2008 3.2 GHz 32-bit 51.2 12.8 25.6

在市场营销中,HT指的是HyperTransport,而后来HT指的是英特尔在某些基于奔腾4和较新的基于Nehalem和Westmere的英特尔酷睿微处理器上的超线程功能,两者之间存在一些混淆。超线程技术(Hyper-Threading Technology,HTT)或HT技术。由于这种潜在的混淆,HyperTransport Consortium总是使用书面形式:“HyperTransport。“

Infinity Fabric(IF)是AMD在2016年宣布的HyperTransport的超集,作为其GPU和CPU的互连。它也可用作CPU和GPU(异构系统架构)之间通信的芯片间互连,这种安排被称为Infinity架构。该公司表示,Infinity Fabric将从30 GB/s扩展到512 GB/s,并用于随后于2017年发布的基于Zen-based的CPU和Vega GPU。

在Zen和Zen+ CPU上,“SDF”数据互连以与DRAM存储器时钟(MEMCLK)相同的频率运行,这是为了消除由不同时钟速度引起的延迟而做出的决定。因此,使用更快的RAM模块使整个总线更快。链路是32位宽的,就像在HT中一样,但是与原始的2个相比,每个周期完成8次传输(128位数据包)。为了更高的功率效率,进行了电气改变。  在Zen 2和Zen 3 CPU上,IF总线在一个单独的时钟上,与DRAM时钟的比率为1:1或2:1,因为Zen早期的高速DRAM问题影响了IF速度,因此影响了系统稳定性。公交车的宽度也增加了一倍。  在Zen 4和更高版本的CPU上,IF总线能够以与DRAM异步的时钟运行,以允许DDR5能够实现的更高时钟速度。

QuickPath Interconnect

Intel QuickPath Interconnect(QPI) [1] [2] 是Intel开发的点对点处理器互连,从2008年开始取代Xeon、Itanium和某些台式机平台中的前端总线(FSB)。它增加了可扩展性和可用带宽。在此之前,Intel称之为Common System Interface(CSI)。 [3] 早期的版本被称为Yet Another Protocol(雅普)和雅普+。

虽然有时被称为“总线”,但QPI是点对点互连。它的设计是为了与AMD自2003年以来一直使用的HyperTransport竞争。

Image in a image block

QPI是英特尔称为QuickPath架构的系统架构的一个元素,该架构实现了英特尔称为QuickPath技术的内容。 [12] 在单处理器主板上的最简单形式中,单个QPI用于将处理器连接到IO Hub(例如,将Intel Core i7连接到X58)。在架构的更复杂的实例中,单独的QPI链路对连接主板上网络中的一个或多个处理器和一个或多个IO集线器或路由集线器,允许所有组件通过网络访问其他组件。与HyperTransport一样,QuickPath架构假设处理器将具有集成的内存控制器,并启用非统一内存访问(NUMA)架构。

每个QPI包括两个20通道点对点数据链路,每个方向一个(全双工),每个方向有一个单独的时钟对,总共42个信号。每个信号都是一个差分对,因此引脚总数为84。20个数据通道被划分为四个“象限”,每个象限有5个通道。传输的基本单位是80位微片,其中8位用于错误检测,8位用于“链路层报头”,64位用于数据。一个80位微片在两个时钟周期内传输(四个20位传输,每个时钟周期两个)。QPI带宽通过计算每个方向上每两个时钟周期的64位(8字节)数据传输来通告。 

虽然最初的实现使用单个四象限链路,但QPI规范允许其他实现。每个象限都可以独立使用。在高可靠性服务器上,QPI链路可以在降级模式下运行。如果20+1信号中的一个或多个发生故障,接口将使用10+1甚至5+1剩余信号进行操作,甚至在时钟发生故障时将时钟重新分配给数据信号。 [8] 最初的Nehalem实现使用了一个完整的四象限接口,以实现25.6 GB/s(6.4GT/s × 1字节× 4),这提供了X48芯片组中使用的Intel 1600 MHz FSB理论带宽的两倍。

虽然一些高端的Core i7处理器会暴露QPI,但其他用于单插槽主板的“主流”Nehalem台式机和移动的处理器(例如LGA 1156 Core i3、Core i5和其他来自Lynnfield/ Clarksfield及其后续系列的Core i7处理器)不会暴露QPI,因为这些处理器不打算参与多插槽系统。

然而,QPI在这些芯片内部用于与“非核心”通信,这是包含内存控制器,CPU端PCI Express和GPU的芯片的一部分;非核心可能与CPU核心在同一个芯片上,也可能不在同一个芯片上,例如它在Westmere的Clarkdale/ Arrandale中的单独芯片上。

在2009年后的单插槽芯片中,从Lynnfield、Clarksfield、Clarkdale和Arrandale开始,传统的北桥功能被集成到这些处理器中,因此它们通过较慢的PCI和PCI Express接口进行外部通信。

因此,不需要承担经由处理器插槽暴露(前)前端总线接口的费用。

虽然核心-非核心QPI链路不存在于桌面和移动的桑迪桥处理器中(例如,在克拉克代尔上),但片上核心之间的内部环形互连也基于QPI背后的原则,至少就高速缓存一致性而言。

频率规格

作为一个同步电路,QPI的时钟频率为2.4 GHz、2.93 GHz、3.2 GHz、3.6 GHz、4.0 GHz或4.8 GHz(桑迪Bridge-E/EP平台引入了3.6 GHz和4.0 GHz频率,Haswell-E/EP平台引入了4.8 GHz频率)。特定链路的时钟速率取决于链路两端组件的能力以及印刷电路板上信号路径的信号特性。非极端的Core i7 9 xx处理器在股票参考时钟下被限制在2.4 GHz频率。

位传输发生在时钟的上升沿和下降沿,因此传输速率是时钟速率的两倍。

英特尔通过仅计算每个80位微片中的64位数据有效负载来描述数据吞吐量(以GB/s为单位)。然而,英特尔随后将结果加倍,因为单向发送和接收链路对可以同时处于活动状态。因此,Intel将具有3.2 GHz时钟的20通道QPI链路对(发送和接收)描述为具有25.6 GB/s的数据速率。2.4 GHz的时钟速率产生19.2 GB/s的数据速率。

Protocol layers

Physical layer 物理层

物理层包括实际布线和差分发送器和接收器,以及发送和接收物理层单元的最低层逻辑。物理层单元是20位的“phit”。当所有20个通道都可用时,物理层在20个通道上使用单个时钟边沿传输20位“物理量“,或者当QPI由于故障而重新配置时,在10个或5个通道上传输。请注意,除了数据信号外,还将时钟信号从发送器转发到接收器(这简化了时钟恢复,但需要额外的引脚)。

Link layer 链路层

链路层负责发送和接收80位微片。每个微片作为四个20位的微片发送到物理层。每个微片包含由链路层发射机生成的8位CRC和72位有效载荷。如果链路层接收器检测到CRC错误,则接收器经由该对的返回链路上的微片通知发送器,并且发送器重新发送微片。链路层使用信用/借记方案来实现流控制,以防止接收方的缓冲区溢出。链路层支持六种不同类别的消息,以允许较高层区分数据微片和非数据消息,主要用于维护高速缓存一致性。在QuickPath体系结构的复杂实现中,链路层可以配置为为不同的类维护单独的流和流控制。目前尚不清楚这是否需要或实现单处理器和双处理器实现。

Routing layer 路由层

路由层发送由8位报头和64位有效载荷组成的72位单元。消息头包含目的地和消息类型。当路由层收到一个单元时,它会检查其路由表,以确定该单元是否已到达其目的地。如果是,则将其传递到下一个更高层。如果没有,则在正确的出站QPI上发送。在只有一个QPI的设备上,路由层是最小的。对于更复杂的实现,路由层的路由表更复杂,并且被动态地修改以避免失败的QPI链路。

Transport layer 传输层

传输层是不需要的,并且不存在于仅用于点对点连接的设备中。包括Core i7。传输层通过QPI网络从可能不直接连接的其他设备上的对等设备发送和接收数据(即,数据可能已经通过中间设备路由。传输层验证数据是否完整,如果不是,则它请求从它的对等体重传。

Protocol layer 协议层

协议层代表设备发送和接收数据包。一个典型的数据包是一个内存缓存行。协议层还通过发送和接收相关消息来参与缓存一致性的维护。

高级微控制器总线架构(AMBA)

Arm高级微控制器总线架构(AMBA)是一种开放标准的片上互连规范,用于片上系统(SoC)设计中功能块的连接和管理。它有助于开发具有大量控制器和总线架构组件的多处理器设计。自成立以来,AMBA的范围,尽管它的名字,远远超出了微控制器设备。如今,AMBA广泛用于一系列ASIC和SoC部件,包括智能手机等现代便携式移动的设备中使用的应用处理器。AMBA是Arm Ltd.的注册商标。

ARM于1996年推出了AMBA。最早的AMBA总线是高级系统总线(ASB)和高级外围总线(APB)。在1999年的第二个版本AMBA 2中,Arm增加了AMBA高性能总线(AHB),这是一个单时钟边缘协议。2003年,Arm推出了第三代AMBA 3,包括高级可扩展接口(AXI),以实现更高性能的互连,以及高级跟踪总线(ATB),作为CoreSight片上调试和跟踪解决方案的一部分。2010年,AMBA 4规范从AMBA 4 AXI4开始引入,然后在2011年,AMBA 4 AXI Coherent Extensions(ACE)扩展了系统范围的一致性。2013年,AMBA 5 Coherent Hub Interface(CHI)规范推出,重新设计了高速传输层和旨在减少拥塞的功能。这些协议是当今嵌入式处理器总线架构的事实标准,因为它们有很好的文档记录。

AMBA规格是免版税的,与平台无关,可用于任何处理器架构。由于其广泛的采用,AMBA有一个强大的合作伙伴生态系统,确保不同设计团队和供应商的IP组件之间的兼容性和可扩展性

AMBA 5规范定义了以下总线/接口:

  • AXI5、AXI5-Lite和ACE5协议规范
  • 高级高性能总线(AHB5,AHB-Lite)
  • Coherent Hub Interface(CHI)
  • Distributed Translation Interface 分布式传输接口(DTI)
  • Generic Flash Bus (GFB) 通用闪存总线(GFB)

AMBA 4规范定义了以下总线/接口:

  • AXI Coherent Extensions(ACE)—广泛用于最新的Arm Cortex—A处理器,包括Cortex—A7和Cortex—A15
  • AXI Coherent Extensions Lite(ACE—Lite)
  • 高级可扩展接口4(AXI4)
  • 高级可扩展接口4精简版(AXI4—Lite)
  • 高级可扩展接口4流(AXI4—Stream v1.0)
  • 高级跟踪总线(ATB v1.1)
  • 高级外围总线(APB4 v2.0)
  • AMBA低功耗接口(Q通道和P通道)

AMBA 3规范定义了四种总线/接口:

  • Advanced eXtensible Interface (AXI3 or AXI v1.0) - widely used on Arm Cortex-A processors including Cortex-A9

    高级可扩展接口(AXI3或AXI v1.0)—广泛用于Arm Cortex—A处理器,包括Cortex—A9

  • Advanced High-performance Bus Lite (AHB-Lite v1.0)

    高级高性能总线精简版(AHB—Lite v1.0)

  • Advanced Peripheral Bus (APB3 v1.0)

    高级外围总线(APB3 v1.0)

  • Advanced Trace Bus (ATB v1.0)

    高级跟踪总线(ATB v1.0)

AMBA 2规范定义了三种总线/接口:

  • Advanced High-performance Bus (AHB) - widely used on ARM7, ARM9 and Arm Cortex-M based designs

    高级高性能总线(AHB)-广泛用于基于ARM 7、ARM9和Arm Cortex-M的设计

  • Advanced System Bus (ASB)

    高级系统总线(ASB)

  • Advanced Peripheral Bus (APB2 or APB)

    高级外围总线(APB 2或APB)

AMBA规范(第一版)定义了两种总线/接口:

  • Advanced System Bus (ASB)

    高级系统总线(ASB)

  • Advanced Peripheral Bus (APB)

    高级外围总线(APB)

Image in a image block

Image in a image block

  • DMI是Intel(英特尔)公司开发用于连接主板南北桥的总线,取代了以前的Hub-Link总线。DMI采用点对点的连接方式,时钟频率为100MHz,由于它是基于PCI-Express总线,因此具有PCI-E总线的优势。DMI实现了上行与下行各1GB/s的数据传输率,总带宽达到2GB/s,这个高速接口集成了高级优先服务,允许并发通讯和真正的同步传输能力。因为内部已经集成了内存控制器与PCI-E控制器,因此与芯片组之间的数据交换用不着QPI。一个低速的DMI就可以满足。这是以前南桥和北桥之间交换数据的通道。带宽要比QPI小很多,只有2.5GT/S
  • QPI总线是I7中使用的集成内存控制器的架构,通过QPI总线,CPU可以直接通过内存控制器访问内存数据,而无需如传统FSB总线架构一样再通过一次北桥,引起传输延迟,造成性能损失。

竞争对手

  • Wishbone from OpenCores – Free and open bus architecture (formerly from Silicore)

    OpenCores的Wishbone-自由和开放总线架构(以前来自Silicore)

  • CoreConnect bus technology from IBM, used in IBM's embedded PowerPC, but also in many other SoClike systems with the Xilinx MicroBlaze or similar cores

    IBM的CoreConnect总线技术,用于IBM的嵌入式PowerPC,也用于许多其他具有Xilinx MicroBlaze或类似内核的类SoC系统

  • IPBus by IDT

    关于IDT

  • Avalon – proprietary bus system by Altera for use in their Nios II SoCs

    Avalon -Altera的专有总线系统,用于Nios II SoC

  • Open Core Protocol (OCP) from Accellera

    来自Accellera的开放核心协议(OCP)

  • HyperTransport (HT) from AMD (though this is an off-chip interface, not on-chip bus)

    来自AMD的HyperTransport(HT)(尽管这是片外接口,而不是片上总线)

  • QuickPath Interconnect (QPI) by Intel (though this is an off-chip interface, not on-chip bus)

    Intel的QuickPath Interconnect(QPI)(虽然这是片外接口,而不是片上总线)

  • virtual share from PICC - free and open source

    来自PICC的虚拟共享-免费和开源

  • TileLink - Free and open bus architecture from CHIPS Alliance

    TileLink -来自CHIPS Alliance  的免费开放总线架构

PCI与PCIe

PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCI express):第一部分是历史沿革和硬件架构;第二部分是软件界面和UEFI中的PCI/PCe。

PCIe

PCIe总线:https://en.wikipedia.org/wiki/PCI_Express

发展

Image in a image block

Image in a image block

PCI/PCIe的历史

在我们看PCIe是什么之前,我们应该要了解一下PCIe的祖先们,这样我们才能对PCIe的一些设计有了更深刻的理解,并感叹计算机技术的飞速发展和工程师们的不懈努力。

1. ISA (Industry Standard Architecture)

2. MCA (Micro Channel Architecture)

3. EISA (Extended Industry Standard Architecture)

4. VLB (VESA Local Bus)

5. PCI (Peripheral Component Interconnect)

6. PCI-X (Peripheral Component Interconnect eXtended)

7. AGP (Accelerated Graphics Port)

8. PCI Express (Peripheral Component Interconnect Express)

科技的每一步前进都是为了解决前一代中出现的问题,这里的问题就是速度。作为扩展接口,它主要用于外围设备的连接和扩展,而外围设备吞吐速度的提高,往往会倒推接口速度的提升。第一代ISA插槽出现在第一代IBM PC XT机型上(1981),作为现代PC的盘古之作,8位的ISA提供了4.77MB/s的带宽(或传输率)。到了1984年,IBM就在PC AT上将带宽提高了几乎一倍,16位ISA第二代提供了8MB/s的传输率。但其对传输像图像这种数据来说还是杯水车薪。

IBM自作聪明在PS/2产品线上引入了MCA总线,迫使其他几家PC兼容机厂商联合起来捣鼓出来EISA。因为两者都期待兼容ISA,导致速度没有多大提升。真正的高速总线始于VLB,它绑定自己的频率到了当时486 CPU内部总线频率:33MHz。而到了奔腾时代,内部总线提高到了66MHz,给VLB带来了严重的兼容问题,造成致命一击。

Intel在1992年提出PCI(Peripheral Component Interconnect)总线协议,并召集其它的小伙伴组成了名为 PCI-SIG (PCI Special Interest Group)(PCI 特殊兴趣组J)的企业联盟。从那以后这个组织就负责PCI和其继承者们(PCI-X和PCIe的标准制定和推广。

不得不点赞下这种开放的行为,相对IBM当时的封闭,合作共赢的心态使得PCI标准得以广泛推广和使用。有似天雷勾动地火,统一的标准撩拨起了外围设备制造商的创新,从那以后各种各样的PCI设备应运而生,丰富了PC的整个生态环境。

PCI总线标准初试啼声就提供了133MB/s的带宽(33MHz时钟,每时钟传送32bit)。这对当时一般的台式机已经是超高速了,但对于服务器或者视频来说还是不够。于是AGP被发明出来专门连接北桥与显卡,而为服务器则提出PCI-X来连接高速设备。

2004年,Intel再一次带领小伙伴革了PCI的命。PCI express(PCIe,注意官方写法是这样,而不是PCIE或者PCI-E)诞生了,其后又经历了两代,现在是第三代(gen3,3.0),gen4有望在2017年公布,而gen5已经开始起草中。

下面这个大表列出所有的速度比较。其中一些x8,x16的概念后面细节部分有介绍。

Image in a image block

从下面的主频变化图中,大家可能注意到更新速度越来越快。

Image in a image block

PCI和PCIe架构

1。PCI架构

一个典型的桌面系统PCI架构如下图:

Image in a image block

如图,桌面系统一般只有一个Host Bridge用于隔离处理器系统的存储器域与PCI总线域,并完成处理器与PCI设备间的数据交换。每个Host Bridge单独管理独立的总线空间,包括PCI Bus, PCI I/O, PCI Memory, and PCI

Prefetchable Memory Space。桌面系统也一般只有一个Root Bridge,每个Root Bridge管理一个Local Bus空间,它下面挂载了一颗PCI总线树,在同一颗PCI总线树上的所有PCI设备属于同一个PCI总线域。一颗典型的PCI总线树如图:

Image in a image block

从图中我们可以看出 PCI 总线主要被分成三部分:

1. PCI 设备。符合 PCI 总线标准的设备就被称为 PCI 设备,PCI 总线架构中可以包含多个 PCI 设备。图中的 Audio、LAN 都是一个 PCI 设备。PCI 设备同时也分为主设备和目标设备两种,主设备是一次访问操作的发起者,而目标设备则是被访问者。

2. PCI 总线。PCI 总线在系统中可以有多条,类似于树状结构进行扩展,每条 PCI 总线都可以连接多个 PCI 设备/桥。上图中有两条 PCI 总线。

3. PCI 桥。当一条 PCI 总线的承载量不够时,可以用新的 PCI 总线进行扩展,而 PCI 桥则是连接 PCI 总线之间的纽带。

服务器的情况要复杂一点,举个例子,如Intel志强第三代四路服务器,共四颗CPU,每个CPU都被划分了共享但区隔的Bus, PCI I/O, PCI Memory范围,其构成可以表示成如下图:

Image in a image block

可以看出,只有一个Host Bridge,但有四个Root Bridge,管理了四颗单独的PCI树,树之间共享Bus等等PCI空间。

在某些时候,当服务器连接入大量的PCI bridge或者PCIe设备后,Bus数目很快就入不敷出了,这时就需要引入Segment的概念,扩展PCI Bus的数目。如下例:

Image in a image block

如图,我们就有了两个Segment,每个Segment有自己的bus空间,这样我们就有了512个Bus数可以分配,但其他PCI空间因为只有一个Host Bridge所以是共享的。会不会有更复杂的情况呢? 在某些大型服务器上,会有多个Host bridge的情况出现,这里我们就不展开了。

PCI标准有什么特点吗?

1. 它是个并行总线。在一个时钟周期内32个bit(后扩展到64)同时被传输。引脚定义如下:

Image in a image block

地址和数据在一个时钟周期内按照协议,分别一次被传输。

2. PCI空间与处理器空间隔离。PCI设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过Host bridge隔离。处理器需要通过Host bridge才能访问PCI设备,而PCI设备需要通过Host bridge才能主存储器。在Host bridge中含有许多缓冲,这些缓冲使得处理器总线与PCI总线工作在各自的时钟频率中,彼此互不干扰。Host bridge的存在也使得PCI设备和处理器可以方便地共享主存储器资源。处理器访问PCI设备时,必须通过Host bridge进行地址转换;而PCI设备访问主存储器时,也需要通过Host bridge进行地址转换。

深入理解PCI空间与处理器空间的不同是理解和使用PCI的基础。

3.扩展性强。PCI总线具有很强的扩展性。在PCI总线中,Root Bridge可以直接连出一条PCI总线,这条总线也是该Root bridge所管理的第一条PCI总线,该总线还可以通过PCI桥扩展出一系列PCI总线,并以Root bridge为根节点,形成1颗PCI总线树。在同一条PCI总线上的设备间可以直接通信,并不会影响其他PCI总线上设备间的数据通信。隶属于同一颗PCI总线树上的PCI设备,也可以直接通信,但是需要通过PCI桥进行数据转发。

2。PCIe架构

PCI后期越来越不能适应高速发展的数据传输需求,PCI-X和AGP走了两条略有不同的路径,PCI-x不断提高时钟频率,而AGP通过在一个时钟周期内传输多次数据来提速。随着频率的提高,PCI并行传输遇到了干扰的问题:高速传输的时候,并行的连线直接干扰异常严重,而且随着频率的提高,干扰(EMI)越来越不可跨越。

乱入一个话题,经常有朋友问我为什么现在越来越多的通讯协议改成串行了,SATA/SAS,PCIe,USB,QPI等等,经典理论不是并行快吗?一次传输多个bit不是效率更高吗?从PCI到PCIe的历程我们可以一窥原因。

PCIe和PCI最大的改变是由并行改为串行,通过使用差分信号传输(differential transmission),如图

Image in a image block

相同内容通过一正一反镜像传输,干扰可以很快被发现和纠正,从而可以将传输频率大幅提升。加上PCI原来基本是半双工的(地址/数据线太多,不得不复用线路),而串行可以全双工。综合下来,如果如果我们从频率提高下来得到的收益大于一次传输多个bit的收益,这个选择就是合理的。我们做个简单的计算:

PCI传输: 33MHz x 4B = 133MB/s

PCIe 1.0 x1: 2.5GHz x 1b = 250MB/s (知道为什么不是2500M / 8=312.5MB吗?)

速度快了一倍!我们还得到了另外的好处,例如布线简单,线路可以加长(甚至变成线缆连出机箱!),多个lane还可以整合成为更高带宽的线路等等。

PCIe还在很多方面和PCI有很大不同:

1. PCI是总线结构,而PCIe是点对点结构。一个典型的PCIe系统框图如下:

Image in a image block

一个典型的结构是一个root port和一个endpoint直接组成一个点对点连接对,而Switch可以同时连接几个endpoint。一个root port和一个endpoint对就需要一个单独的PCI bus。而PCI是在同一个总线上的设备共享同一个bus number。过去主板上的PCI插槽都公用一个PCI bus,而现在的PCIe插槽却连在芯片组不同的root port上。

2. PCIe的连线是由不同的lane来连接的,这些lane可以合在一起提供更高的带宽。譬如两个1lane可以合成2lane的连接,写作x2。两个x2可以变成x4,最大直到x16,往往给带宽需求最大的显卡使用。

3. PCI配置空间从256B扩展为4k,同时提供了PCIe memory map访问方式,我们在软件部分会详细介绍。

4.PCIe提供了很多特殊功能,如Complete Timeout(CTO),MaxPayload等等几十个特性,而且还在随着PCIe版本的进化不断增加中,对电源管理也提出了单独的State(L0/L0s/L1等等)。这些请参见PCIe 3.0 spec,本文不再详述。

5. 其他VC的内容,和固件理解无关,本文不再提及。INT到MSI的部分会在将来介绍PC中断系统时详细讲解。

PCIe 1.0和2.0采用了8b/10b编码方式,这意味着每个字节(8b)都用10bit传输,这就是为什么2.5GHz和5GHz时钟,每时钟1b数据,结果不是312.5MB/s和625MB/s而是250MB/s和500MB/s。PCIe 3.0和4.0采用128b/130b编码,减小了浪费(overhead),所以才能在8GHz时钟下带宽达到1000MB/s(而不是800MB/s)。即将于今年发布的PCIe 4.0还会将频率提高一倍,达到16GHz,带宽达到2GB/s每Lane。

Image in a image block

后记

对于一般用户来说,PCIe对用户可见的部分就是主板上大大小小的PCIe插槽了,有时还和PCI插槽混在一起,造成了一定的混乱,其实也很好区分:

Image in a image block

如图,PCI插槽都是等长的,防呆口位置靠上,大部分都是纯白色。PCIe插槽大大小小,最小的x1,最大的x16,防呆口靠下。各种PCIe插槽大小如下:

Image in a image block

SMBus

SMBus (系统管理总线的英文缩写,加泰罗尼亚语 Bus de Manegament de Sistemes)是一种基于简化I2C总线的串行通信协议,用于电子系统与其能源(例如电池系统)的通信。 SMBus 由IntelDuracell于 1995 年创建。

SMBus总线是一种简化的I2C总线,其OSI层模型定义为:

  • 物理层(PHY) :就像I2C总线有2条线,时钟和数据。然而,在时间和紧张程度方面存在细微差别(参见)
  • 数据链路层 (MAC) :与 I2C 总线相同的帧,但功能差异较小(请参阅)

PMBus (电源管理总线,英文Power Management Bus)是一种开放标准,是SMBus总线(系统管理总线)的变体,负责电源的数字控制。与SMBus一样,它是一种基于I2C的低速通信协议。与 SMBus 不同,它定义了一系列用户命令。 PMBus 由半导体和开关电源制造商联盟创立。

Paràmetre SMBus PMBus
Línies de Bus Clock, Data, Interrupció Clock, Data, Interrupció, Control,Protecció
Velocitat màx. de Bus I2C 100 KHz 400 KHz (PMBus 1.2) 1 MHz (PMBus 1.3)
Blocks fins a 255 bytes fins a 32 bytes
Bits d'adressa 7 bits 7 bits
Comandes d'usuari no

AVSBus (AdaptiveVoltageScalingBus的英文缩写,AdaptiveVoltageBus)是一种开放标准,是PMBus总线的一个变体,负责电源的数字控制。 AVSBus 是 PMBus 总线的补充,因为它可以在负载点进行更精确的控制。 AVSBus 由 SMI 组织以及半导体和开关电源制造商联盟创建。

Paràmetre PMBus AVSBus
Línies de Bus Clock, Data, Interrupció, Control,Protecció AVS_MData, AVS_SData, AVS_Clock
Velocitat màx. de Bus I2C 400 KHz (PMBus 1.2) 1 MHz (PMBus 1.3) 50 MHz
Blocks fins a 32 bytes (256 bits) 32 bits
Comandes d'usuari

其他

HBA是什么?

HBA是Host Bus Adapter(主机总线适配器)的简称,它是一个在服务器和存储装置之间提供物理连接和输入/输出(I/O)处理的电路板或集成电路适配器。使用HBA卡可以大大减轻主机微处理器进行数据存储和数据检索的负担。如今HBA卡已被广泛应用于各种互联,最常用的是基于光纤通道、iSCSI和SAS协议的连接。HBA卡根据支持的协议有不同的类型,如FC HBA卡、iSCSI HBA卡和SAS HBA卡。

NIC是什么?

NIC卡即网卡,是Network Interface Card的简称,又称局域网卡或网络适配器。它是将网络设备(如电脑)和服务器相连的扩展电路板。这篇文章详细介绍了NIC的相关知识:《一文带你全方位了解网卡》

CNA是什么?

CNA即converged network adapter的缩写,就是融合网络适配器,也叫融合网络端口控制器,简称C-NIC。顾名思义,该硬件组件可以将HBA的功能与NIC结合起来。一方面,CNA配备了PCIe接口,能提供存储设备或服务器与FC SAN之间的连接和数据传输,另一方面它可以直接将以太网流量从相同的网络设备传输到局域网中。

HBA、NIC与CNA有何区别?

HBA、NIC和CNA这三种不同类型的电路板都能为网络设备提供数据处理和物理连接。然而,它们有着独特的功能和工作模式,应用领域也各不相同。

HBA:上文中已经提到,不同类型的HBA卡传输协议不同。FC HBA卡通常安装在HBA服务器上,并通过光纤跳线连接到光纤交换机;当采用FC SAN组网时,大多数情况下需选用FC HBA卡;iSCSI HBA通常用在使用iSCSI协议的IP SAN中,通过TCP/IP网络向远程服务器上的存储设备发送SCSI命令。iSCSI HBA上有RJ45端口或光口,可以连双绞线或光纤跳线。至于SAS HBA卡,使用SCSI命令集来连接SATA或SAS兼容设备,在启用SCSI的DAS网络中非常流行。

NIC:以太网网络接口卡基于IP工作,带有光端口或电端口两大类。NIC卡通常通过光纤跳线或双绞线连接到以太网交换机。目前市场上传统的网卡大多是使用了iSCSI和NAS协议,可分别用在IP SAN和NAS网络。

CNA:融合网络适配器将前面两个适配器的功能合二为一,在一个端口上支持光纤通道(FC)和以太网协议。通常以太网用于TCP/IP网络,光纤通道用于存储网络。使用CNA卡时,光纤通道将直接通过以太网传输到启用了FCoE的交换机以太网端口上。然后,融合交换机将FCoE流量转换为FC流量并传输到FC SAN,以太网流量则被传输到LAN。

网卡基于总线接口类型分类

ISA总线网卡:ISA总线发布于1981年,是IBM标准兼容的总线结构。由于9Mbps的网卡速度较慢,ISA总线接口逐渐被淘汰,现在市场上很少见。

PCI总线网卡:PCI发布于19世纪90年代,替代了以前的ISA标准。它的固定宽度为32位(数据传输速率为133MB/s)和64位(数据传输速率为266MB/s)。这种类型的网卡最初用于服务器,后来逐渐应用于电脑。如今大多数电脑没有扩展卡,而是采用嵌入式网卡。因此,PCI总线网卡已被其他总线接口取代,如PCI- X或USB接口。

PCI-X网卡:PCI- X是一种增强的PCI总线技术。它支持64位运行,最高可达1064MB/s。多数情况下PCI- X的插槽与PCI网卡是向后兼容的。

PCIe网卡:PCIe是一种最新的标准,在计算机和服务器主板上很流行。PCIe网卡现在有五个版本,分别支持不同的速度。这篇文章《PCIe卡教程:关于PCI Express卡你需要知道的一切》详细介绍了PCIe网卡的相关知识。

USB网卡:USB总线是一种外部总线标准。它有三个版本,具有不同的传输速率,可以与各种设备一起工作