聊聊PCIe Bus(PCIe总线)

  今天这篇文章,我们来聊聊PCIe Bus(PCIe总线)。 Bus在国内被理解成汽车,在国内还有一种解释是总线的意思。其实这两种翻译还是有共通之处。以我们生活中例子来说,Bus是两个城市中沟通的重要连通方式,而总线则是计算机之间联通的重要方式。与公路相对应的是,PCIe也有不同的规范,就像高速一样,不同的道路也有不同的限速,比如国道和高速,宽度和最高行驶速度都不同。这个就对应着PCIe1.0、PCIe2.0、PCIe3.0、PCIe4.0这些规范。但即使是同一条公务,行驶在不同的线路上也有不同的限速,这个就是跟PCIe1.0不同扩展槽的性能类似,例如PCIE x16/x8/x4/x1四种扩展方式能够支持的最大传输速度也是不一样的。可以说,PCIe总线是计算机设备树的重要组成部分,几乎所有外围硬件的扩展都需要PCIe上,今天我们就来聊聊PCIe发展史。

  在多年以前,计算机主板上不同的设备所使用的的总线接口是完全不一样的,硬盘有硬盘对应的总线接口,网卡有网卡对应的总线接口。 这样好处是每个设备都有对应的总线接口,优化性能简单。但对于个人来说,随着扩展设备的逐渐增多,如果都在主板上扩展对应的总线接口,有点得不偿失,同时造成了主板拓展的局限性,也对硬件规格的统一带来很多的不便。 未解决这个瓶颈,IBM和Intel联手,在1981年第一代IBM PC XT机型上采用了第一代ISA插槽,作为现代PC的开山之作,当时8位的ISA提供了4.77MB/s的带宽(或传输率)。   由于兼容性好,一经推出,ISA总线就受到了各个厂商的欢迎,成为了上个世纪80年代最广泛使用的系统总线。但由于ISA使用的是并行总线,当时的抗干扰技术也不成熟,就导致ISA总线的带宽不能设计的很高,只能达到8MB/s的速率。 这个传输速度对于在90年代逐渐出现的像图像这种大数据传输需求来说还是有点不够劲儿。除了速度慢这个缺点,还有就是ISA总线接口上的设备不能自动配置,无法即插即用。再加上IBM自作聪明在PS/2产品线上引入了MCA总线,迫使其他几家PC兼容机厂商联合起来捣鼓出来EISA。这些都导致了ISA总线年,Intel搞出了自己的杀招,提出PCI(Peripheral Component Interconnect)总线协议,并靠着自己在PC领域的强大影响力,召集了一堆小伙伴组成了名为 PCI-SIG (PCI Special Interest Group)(PCI 特殊兴趣组J)的企业联盟。从那以后这个组织就负责PCI总监的标准制定和推广。

  不得不点赞下Intel这种先见之明,在90年代就开始建立自己的朋友圈,相比于封闭的IBM,英特尔合作共赢的心态让PCI标准得到了广泛推广和使用。统一的标准更有助于外围设备制造商的创新,从那以后各种各样的PCI设备应运而生,丰富了PC的整个生态环境。 相比ISA总线,PCI总线MB/s,速度提升很明显。再就是支持自动配置,即插即用。 但PCI总线也并不是完美的,PCI总线跟ISA总线都是使用了并行总线设计,所以传输速度也受到了影响。再就是PCI总线的带宽共享机制,在高负载下,别的设备有极大几率会出现抢带宽的现象,也不支持热插拔。 于是未解决PCI总线的缺陷,技术再一次进行了升级革新,2004年,Intel再一次带领小伙伴革了PCI的命也就是本篇文章要说的PCI Express(简称PCIe)总线了。如今计算机慢慢的开始是第五代(gen5,5.0),而且在计算机中更是更为了不可或缺的存在。   如今,PCIe能支持的设备非常多,常见的有显卡、固态硬盘(PCIe接口形式)、无线网卡、有线网卡、声卡、视频采集卡、PCIe转接M.2接口、PCIe转接USB接口、PCIe转接Tpye-C接口等。

  常见的PCIe接口主要有四种尺寸,X1、X4、X8、X16,一般情况下四种尺寸的插槽最大带宽是不同的。它们的速度是不一样的,X16的PCIe速度就是X8的两倍,X8就是X4的两倍。当然,上面这段话都是建立在同一代PCIe总线之上的。

  PCIe x16插槽:如上图所示,PCIe x16插槽全长89mm,有164根针脚,靠主板外侧端有一卡口,将16x分为前后两组,较短的插槽有22根针脚,这个是用于供电,每个尺寸的插槽都有这个22根针脚的供电设计。较长的插槽142根,大多数都用在数据传输,具有16通道所带来的高带宽。 目前来看,PCIe x16插槽,大多数都用在GPU显卡以及RAID阵列卡等,这个插槽拥有优良的兼容性,可以向下兼容x1/x4/x8级别的设备,而且具有更强的传输性能,能够说是PCIE x16插槽是PCIE的万能插槽。 由于PCIe x16插槽常用于显卡,与直接相通,在物理位置上直接靠近CPU,这样显卡与处理器之间的数据交换就能够大大减少延迟,让系统的性能能够获得充分的发挥。PCIe x8插槽:全长56mm,有98根针脚,与PCIe x16比较,主要是数据针脚减少至76根,短的供电针脚仍然是22针脚。 为了兼容性,PCIe x8插槽通常加工成PCIE x16插槽的形式,但数据针脚只有一半是有效的,也就是说实际带宽只有线插槽的一半。可以观察主板布线的后半段没有线路连接,甚至针脚也没有焊接。 实际上除了旗舰级或服务器的主板,能提供多条线插槽外,大多数的主板,只会提供一条线插槽,就是最靠近CPU的那条。而第二条和第三条PCIe x16插槽,则多数是PCIe x8甚至是x4级别的。

  PCIe x4插槽:长度为39mm,同样是在PCIE x16插槽的基础上,以减少数据针脚的方式实现,大多数都用在PCIe SSD固态硬盘,或者是通过PCIE转接卡安装的M.2 SSD固态硬盘。 PCIe x4插槽通常由主板芯片扩展而来,不过随着cpu内部PCIE通道数的增多,现在有部分高端主板能开始提供直连cpu的PCIE x4插槽,用于安装PCIE SSD固态硬盘。 不过与PCIe x8插槽一样,PCIe x4插槽为了兼容性,现在多数也是做成PCIe x16插槽的形式,或是扩展为M.2接口,用于安装M.2 SSD、M.2无线接口设备,其余扩展卡则留给PCIE x1插槽负责。PCIE x1插槽:长度仅有25mm,相比PCIE x16插槽,其数据针脚是大幅度减少至14个。PCIE x1插槽的带宽通常由主板芯片提供,主要用途是独立网卡、独立声卡、USB 3.0/3.1扩展卡等都会用到PCIE x1插槽,还可以通过转接线插槽装上显卡,用来挖矿或者实现多屏输出。 X1的另外一个及其重要的作用就是是用来替代原来的PCI设备的。

  但成也Intel ,阻碍也在Intel。我们都知道,Intel在CPU发展方面一直以挤牙膏著称,其实在PCIe方面,Intel挤牙膏那是更严重。 一般来说,规范确定到商品化需要1~2年的时间,就像摩尔定律估算的差不多,每过1~2年,其实产品就要升级进化。 但是靠着英特尔靠着自己的垄断优势,在PCIe升级方面则是亦步亦趋。从2004年发布PCIe1.0以后,到2023年新一代服务器的发布,PCIe5.0才开始逐渐出现在主板上。 而且可以说,PCIe 5.0是PCIe发展的重要分水岭,这是因为人算不如天算,Intel没想到大数据AI、视觉渲染、基因分析以及EDR仿真等需求的突然爆发,让PCIe的数据传输已经赶不上GPU的需求。   未解决PCIe在数据传输的限制,早在几年前,市场上几种不同的传输和内存语义协议逐渐出现--IBM的OpenCAPI内存接口协议、Xilinx的CCIX协议、NVIDIA的NVLink协议、惠普企业版的Gen-Z协议,都是为了解决PCIe4.0传输过慢的问题。 眼看着大家都在革PCIe的命,在2019年3月份Intel推出了CXL(Compute Express Link)协议接口,将CXL协议封装到PCIE链路层数据包中传送,并在CPU端的PCIE总控后端按照事务标识分流CXL专属事务给CXL处理逻辑处理。 Intel希望可以让CPU与GPU、FPGA或其他加速器之间实现高速高效的互联,从而满足高性能异构计算的要求。最有必要注意一下的是CXL标准的接口规格与PCIe 5.0是兼容的,从而让CXL协议让PCIe5.0上可以运行,进一步巩固PCIe在计算机里的影响力。

  反正我建了通往内存的高速路,你GPU怎么走都得听我的。通过这一种方式,也能进一步制衡GPU的发展,一颗CPU想支持几个GPU,还得通过Intel说了算。有必要注意一下的是,第四代英特尔至强可扩展处理器每一颗处理器支持最多4个CXL设备,支持CXL Type1和CXL Type2。)这些将提升服务器的综合能力,为内存密集型和IO密集型场景提供更高价值。

  智能万卡NIC)、以及CXL内存模块(能够理解为其他CPUDDR内存)的连接,对应的应用场景,如大内存、以及不同外设缓存之间的直接数据交换。对这些场景而言,PCIe 6.0接口子系统高达64GT/s的数据传输速率,对于异构计算架构的影响意义重大。

  (PCI express)是用来互联诸如计算机和通信平台应用中外围设备的第三代高性能I/0

  是大势所趋。与单端并行信号相比,高速差分信号能够正常的使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多

  的电源管理,最重要的包含不同板卡的功耗、板卡的能耗等级等。 1、功耗等级 根据《PCIx系列之“

  小弟学习K1_STK(从官网下的最新的例程keystone软件开发包)里面的

  设备并不局限于常见的显卡,很多人存在的误区,其实现在芯片组把硬盘、网卡、声卡、显卡、采集卡之类的都归属于

  。注意:英特尔快速存储技术中的链接电源管理 (LPM) 是一项节能技术

  接口通过基于AXI或ACE协议的互连连接到SoC的其余部分。 读者应熟悉

  -9110IM 提供 1 个完全独立的 CAN 通道,符合 CAN2.0B 规范(兼容 CAN 2.0A

  规定了两个复位方式:conventional Reset和FLR(FunctionLevel Reset),而Conventional Reset由进一步分为两大类:Fundamental Reset和Non-Fundamental Reset。

  基本知识1、PCI-Express(peripheral component interconnect express):是一种高速串行计算机扩展

  最多支持32个Device,每个Device最多支持8个FuncTIon,所以由BDF(

  是大势所趋。与单端并行信号相比,高速差分信号能够正常的使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的

  模块才接收这个数据包,是吧? 2.其中说的BAR配置的地址范围是啥意思,BAR寄存器中只能设置基地址:BASE_ADDR,这个地址范围从哪里来? 望解答。

  @0x33800000 ranges:[ 5.576752] OF: PCI:No

  3.0,有些显卡虽然插在x16的插槽上,但是速度只有x8的速度,总的来说好的显卡目前

  我正在开发基于imx8mm-evk 的定制板。个人会使用 linux 主线,以便让一些事情正常工作。此时切换到 nxp 内核不是可取的。我无法让

  可以表明主机与FPGA硬核能够链接成功,link_up后主机内核程序能读到

  设备,但未成功。在 U-Boot 中,pci 命令(例如枚举)会收到“pci_

  本帖最后由 一只耳朵怪 于 2018-6-20 10:18 编辑 C6678的

  手册中,”CLASSCODE ID“在手册中是只读的,但是手册里面又说“writeable from internal

  驱动已经加载成功,BAR资源也分配了,但是现在加载rc驱动也找不到这个驱动文件ti81xx_

  技术作比较,分析它的技术特性和优势,剖析数据包在各层中的流动过程。/并且详细阐述基于FPGA的两种盯行性实现方案,即采用第三方PHY接口器件和低成本

  链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。

  开发了多DSP雷达信号处理板卡。对DSP互连、DSP与FPGA通信以及基于Xilinx FPGA的

  进行设计。系统可扩展性好、效率高。用DriverStudio开发了WDM

  )是一种高性能互连协议,可应用于网络适配、图形加速、服务器、大数据传输、嵌入式系统等领域。

  链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。

  链路外,还具有多个层次,发送端发送数据时将通过这一些层次,而接收端接收数据时也使用这一些层次。

  ,如果需要连接大量的设备,则需要很多的Switch来进行拓扑,这无疑会大大地增加系统的功耗与设计成本。在普通的PC或者小型计算机系统中,并不要连接很多的

  体系结构如上图所示,其中Device Core and interface to Transaction Layer就是我们常说的应用层或者软件层。这一层决定了

  收发的都是差分信号,有些时候Link两端的设备的对应信号的极性可能是相反的。因此,

  Spec允许在链路训练与初始化的时候,对其做调整,如下图所示。和通道位置翻转

  ,而这部分memory在哪里呢?芯片组中会定义一个base address,而base address开始的256MB的空间内则是

  当然,热插拔不仅仅是硬件的事,其需要软硬件协同实现。要想实现热插拔功能,操作系统、主板热插拔驱动器、

  卡设备硬件功能的角度来看,其需要支持Quiesce命令、Pause命令(可选)、Start命令和Resume命令。

  的通用接口芯片,支持I/O端口映射和扩展ROM以及中断。CH367将高速

  的通用接口芯片,支持I/O端口映射、存储器映射、扩展ROM以及中断。CH368将高速

  3.0,有些显卡虽然插在x16的插槽上,但是速度只有x8的速度,总的来说好的显卡目前

  标准自从推出以来,1代和2代标准已经在PC和Server上逐渐普及,用于满足高速显卡、高速存储设备对于高速数据传输的要求。出于支持更高

  标准的测试矩阵都会呈指数级增长。再加上标准发展导致的测试复杂度增加,这显著提升了实现最新

  硬盘是大家都很熟悉的设备,一路走来,从HDD到SSD,从SATA到NVMe,作为NVMe SSD的前端接口,

  总线年推出以来,慢慢的变成了服务器(Server)和PC上的重要接口。今天为大家粗略地介绍一下

  随着英特尔Alder Lake CPU的发布,以及AMD 7000 Ryzen CPU的即将发布,

  总线年推出以来,慢慢的变成了服务器(Server)和PC上的重要接口。今天为大家粗略地介绍一下

  有广泛的应用,包括用于扩展卡、显卡、网卡等外部设备的连接。与传统的PCI总

其他人还喜欢