精华内容
下载资源
问答
  • PCIE bus number是什么? 如图所示为PCIE协议规定的3DW配置请求head的格式。其中字节8包含了bus number、device number、以及function number。 Bus number指的当前PCIE设备在PCIE系统结构中被分配的总线号。...
    1. PCIE bus number是什么?

    如图所示为PCIE协议规定的3DW配置请求head的格式。其中字节8包含了bus number、device number、以及function number。

    Bus number指的当前PCIE设备在PCIE系统结构中被分配的总线号。PCIE的部分TLP传输需要确定bus number才能完成。

    2、PCIE 是如何获取bus number的?

    为支持ID路由,每个PCIE设备(端点和交换开关)中都应设置有贮存设备总线号和设备号的寄存器,复位时,该寄存器清0,每当设备在它的原级链路上检测到一个

    Type0配置写事务包时,它就从该TLP头标中的第8~9字节“捕获”它自己的总线号和设备 号,并贮存入上述总线号和设备号寄存器。所以说在接收至少一个 Type0配置写事务包以前,设备不会响应除配置周期以外的任何事务。PCIE协 议中没有定义贮存总线号和设备号信息的配置空间单元,只是规定了它必须做这件事。

    两个对接的PCIE设备,主设备是RC端,从设备是EP端,那么上电复位后,EP是如何获取自身的bus number的呢?

    在这样的一个PCIE结构中,上电复位后,RC端发起一个对EP的配置写事务,EP会解析配置请求中的bus number,并保存下来,作为自身的bus number号。之后就可以相应其他TLP事务了。也就是说,上电复位后,EP必须先接收到一个配置写,然后才能相应其他TLP事务。

    参考文献:

    PCI、PCI-X和PCIExpress的原理及体系结构-马鸣锦  P79

     

     

     

     

    展开全文
  • PCIe1.1采用4通道传输时理论带宽可达1 GB/s,满足了UM-BUS总线测试系统的传输带宽需求,由此设计实现了UM-BUS总线测试系统的PCIe1.1 x4链路通道的应用方案,给出了基于FPGA的PCIe总线的BMD传输方案。测试结果表明,...
  • pcie cpu gpu bandwidth bus

    2019-09-12 17:14:17
    总线是在计算机部件之间或计算机之间传输数据的子系统。 类型包括: ...DMI与PCIe总线共享了大量的技术特性,像是多通道、差分信号、点对点连线、全双工、8b/10b编码等。大部分DMI的通信布局类...

    总线是在计算机部件之间或计算机之间传输数据的子系统。 类型包括:

    前端总线(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,如下所示

    集成内存控制器

    最大类型DDR4-2666,LPDDR3-2133
    支持ECC
    最大内存64 GiB
    控制器1
    通道2
    宽度64位
    最大带宽(39.74 GiB / s?)
    41.8 GB/s
    带宽

     19.87 GiB / s

    双通道 39.74 GiB / s

    其中最大带宽是处理器可以从半导体存储器读取数据或将数据存储到半导体存储器中的最大速率(以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

    8b/10b

    2.5 GT/s

    250 MB/s

    0.50 GB/s

    1.0 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

    128b/130b

    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

    32.0 GT/s

    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。

    展开全文
  • pcie的pci_scan_bus

    千次阅读 2017-03-28 10:02:19
    pcie的资源主要有三种,分别是io/mem/bus.再调用pci_create_root_bus的时候,这三种资源要提前准备好 [ 13.419865] pci_bus 0002:80: root bus resource [mem 0xa8800000-0xaffeffff window] [ 13.419865] pci_...
    pcie的资源主要有三种,分别是io/mem/bus.再调用pci_create_root_bus的时候,这三种资源要提前准备好
    
    [   13.419865] pci_bus 0002:80: root bus resource [mem 0xa8800000-0xaffeffff window]
    [   13.419865] pci_bus 0002:80: root bus resource [mem 0xa8800000-0xaffeffff window]
    [   13.434941] pci_bus 0002:80: root bus resource [io  0x0000-0xffff window]
    [   13.434941] pci_bus 0002:80: root bus resource [io  0x0000-0xffff window]
    [   13.448617] pci_bus 0002:80: root bus resource [bus 80-87]
    [   13.448617] pci_bus 0002:80: root bus resource [bus 80-87]

    例如在pci_scan_bus中首先添加到resources中
    struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
                        void *sysdata)
    {
        LIST_HEAD(resources);
        struct pci_bus *b;

        pci_add_resource(&resources, &ioport_resource);
        pci_add_resource(&resources, &iomem_resource);
        pci_add_resource(&resources, &busn_resource);
        b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
        if (b) {
            pci_scan_child_bus(b);
        } else {
            pci_free_resource_list(&resources);
        }
        return b;
    }
    重点看一下资源是如何添加到resources 中
    void pci_add_resource(struct list_head *resources, struct resource *res)
    {
        pci_add_resource_offset(resources, res, 0);
    }
    void pci_add_resource_offset(struct list_head *resources, struct resource *res,
                     resource_size_t offset)
    {
        struct resource_entry *entry;

        entry = resource_list_create_entry(res, 0);
        if (!entry) {
            printk(KERN_ERR "PCI: can't add host bridge window %pR\n", res);
            return;
        }

        entry->offset = offset;
        resource_list_add_tail(entry, resources);
    }
    在pci_add_resource_offset中首先通过resource_list_create_entry 申请memory,并给resource_entry 中的__res 赋值
    struct resource_entry *resource_list_create_entry(struct resource *res,
                              size_t extra_size)
    {
        struct resource_entry *entry;

        entry = kzalloc(sizeof(*entry) + extra_size, GFP_KERNEL);
        if (entry) {
            INIT_LIST_HEAD(&entry->node);
            entry->res = res ? res : &entry->__res;
        }

        return entry;
    }
    一般res 不为null。
    在pci_add_resource_offset 得到entry中再给offset赋值0.最后将resources 插入到resources 列表中.
    回到pci_scan_bus 中将io/mem/bus 资源插入到resources 这个list中后,然后将可以通过pci_create_root_bus来创建root bus后,就可以通过pci_scan_child_bus来scan 子总线.
    展开全文
  • 不知道是怎麼回事百度上也找不到,哪位大神幫幫我。![图片](https://img-ask.csdn.net/upload/201705/26/1495797199_598095.jpg)
  • 解决Ubuntu下的PCIE Bus Error问题

    千次阅读 2020-03-15 19:16:40
    1 环境 Windows 10 + Ubuntu 16.04 LTS 双系统安装 设备:蓝天Clevo P775TM 2 问题缘由 为了Win10+Ubuntu 16.04双系统共存的方案,去年趁SSD还是白菜价的时候入了intel 760P 256 GB专门作为Ubuntu...PCIe Bus Erro...

    1 环境

    Windows 10 + Ubuntu 16.04 LTS 双系统安装
    设备:蓝天Clevo P775TM

    2 问题缘由

    为了Win10+Ubuntu 16.04双系统共存的方案,去年趁SSD还是白菜价的时候入了intel 760P 256 GB专门作为Ubuntu系统的“栖身之所”
    但很快就遇上异常问题:关机时被不明错误信息刷屏,如下图所示
    在这里插入图片描述

    #错误代码如下
    PCIe Bus Error: severity=Uncorrected(Non-Fatal),type=Transaction Layer,id=00d8(Requester ID) 
    				device [8086:a2e7] error status/mask=00100000/00010000
    				[20] Unsupported Request (First)
    

    Ubuntu系统下每次关机或重启,都会出现上述错误信息刷屏若干秒后,才会正常执行Reboot或Shutdown命令。每次在Ubuntu下干的活越多,刷屏时间会越长,甚至有一次刷了长达半个小时仍未刷完
    起初只是拖慢关机/重启速度,并且在中文社区搜索类似问题无果,所以没有多管它,但最近在配置DL相关环境,安装Cuda时需要敲快捷键进入Ubuntu命令行界面的时候才发现问题严重性:

    原本应该出现的账号密码输入消失,Ubuntu命令行界面被PCIe Bus Error的错误信息无限刷屏导致完全无法使用

    不想再在另一台设备上弄SSH帮助安装Cuda,太麻烦,必须解决

    3 问题启发

    参考帖子(均来自英文社区):

    [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1758545
    [2] https://unix.stackexchange.com/questions/327730/what-causes-this-pcieport-00000003-0-pcie-bus-error-aer-bad-tlp/369090#369090
    [3] https://askubuntu.com/questions/911296/pcie-bus-error-ubuntu-16-04

    PCIe Bus Error已经提示问题来自PCIe设备,那么可以判断只有与Wifi网卡、NVME固态硬盘有关联,但想想就知道肯定是拿来装Ubuntu的760p嫌疑最大
    经大佬提醒,Transaction Layer代表PCIe事务层出问题(PCIe具体原理移步百度),很有可能是Ubuntu内部触发了什么奇怪的东西,但基本可以排除760p硬件损坏的情况

    以下引自英文社区
    在这里插入图片描述
    在这里插入图片描述
    可以由上述内容归纳出解决流程

    4 问题解决流程

    在命令行中输入:

    sudo gedit /etc/default/grub
    

    在gedit下编辑grub引导文件,在最后一行输入:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nommconf"
    

    如下图划线位置所示,保存即可
    在这里插入图片描述
    最后别忘了更新grub文件和重启

    sudo update-grub
    sudo reboot
    

    重启完毕,至此问题解决,关机/重启不再出现刷屏,命令行界面可以正常使用!

    5 后记

    在这里插入图片描述
    当时问了一圈确实只有我的设备出这个问题,那你很棒棒哦嘤特尔

    看来还是英文社区靠谱些,配置DL环境的时候主要也是看某个微软大佬的英文博客弄的,对比国内只知道抄抄抄的社区环境不知道高到哪里去
    学好英语比什么都重要(确信)

    展开全文
  • 电脑一直报PCIE BUS错误的原因

    千次阅读 2019-09-21 11:57:09
    报错 新装Linux 系统后,每隔数分钟则报以下错误: AER:Corrected error ...pcie bus error: severity=Corrected, type=Data Link Layer,(Transmitter ID)  device [8086:9d14] error status/mask=0000100...
  • 介绍了一种基于PCIE总线主模式DMA高速数据传输系统的设计.该系统利用Xilinx公司V5系列的FPGA芯片搭建了x1通道的PCIE系统.实验利用自行开发的PCIE接口板实现了单字读写及DMA读写的传输方式,并在上位机软件界面上及...
  • 由于测试系统需要在数据采集终端与PC之间建立高带宽的通信通道,设计了UM-BUS总线测试系统的PCIe2.0 x1通道的应用方案,设计并实现了基于FPGA的PCIe总线DMA数据传输方案。实验测试结果表明,实际传输速度可以稳定...
  • PCIe 总线基本概念

    2019-11-12 18:30:41
    PCIe Bus
  • pcie的pci_create_root_bus 分析

    千次阅读 2017-03-27 10:08:02
    在pci_create_root_bus 中 首先会申请一个pci的root bus  struct pci_bus *b;  b = pci_alloc_bus(NULL);  if (!b)  return NULL;  b->sysdata = sysdata;  b->ops = ops;  b->number = b->
  • 有些行业应用中,会使用到计算机集群设计,或者两个Node之间协同工作的设计,比如SMP...这里主要描述一下另外一种形态基于PCIe的NTB技术。 Non-Transparent Bridge,非透明桥,这个在intel的某些北桥(处理器)中已经已经
  • PCIE

    2018-05-07 11:07:00
    PCIe链路可以由多条Lane组成,目前PCIe链路×1、×2、×4、×8、×16和×32宽度的PCIe链路,还有几乎不使用的×12链路。 PCIe总线规范 总线频率 ...
  • PCIe

    千次阅读 2018-07-25 18:16:04
    在基于PCIe总线的Add-in卡中,PRSNT1#和PRSNT2#信号直接相连,而在处理器主板中,PRSNT1#信号接地,而PRSNT2#信号通过上拉电阻接为高。PCIe设备的热插拔结构如图4‑3所示。 如上图所示,当Add-In卡没有插入时,...
  • Jan 22 11:42:00 office-test-001 kernel: pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e8(Receiver ID) Jan 22 11:42:00 office-test-001 kernel: pcieport 0000:00:1d...
  • 进入Linux系统 root身份 编辑/etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="quiet" 将quiet改为 pci=nomsi 之后执行 update-grub 命令 转载于:https://www.cnblogs.com/xiaojianliu/p/9311491.html...
  • 桌面打开控制台,命令: vi /etc/default/grub 注释掉: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 换行输入以下内容: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi" 按esc键...
  • PCIE驱动

    2021-09-23 21:49:47
    linuxPci驱动获取指定设备bus、device以及devfn数据方式 pcie 驱动程序分析 PCIe 配置空间读写内核实现
  • 1) If the Max_Read_...2, baidu search: “PCIe Max Read Request Size”, “PCIe Max Payload Size” http://www.xilinx.com/support/answers/36596.html http://mt.sohu.com/20161110/n472770654.shtml ...
  • PCIe】配置空间

    万次阅读 多人点赞 2016-06-07 15:11:49
    介绍PCI/PCIe配置空间。
  • PCIe资料汇总

    千次阅读 2017-05-30 22:30:24
    整理PCIe相关知识及资料
  • += pcie.o pcie_fault.o pcie_hp.o pciehpc.o pcishpc.o pcie_pwr.o ./common/Makefile.files:PCIEB_OBJS += pcieb.o ./sparc/Makefile.files:PCIE_MISC_OBJS += pcie_sparc.o ./sparc...
  • PCIe】非常适合初学的pcie博客(PCIe知识整理)

    万次阅读 多人点赞 2018-07-30 10:55:16
    非常适合初学的pcie博客: PCIE扫盲(第一阶段):http://blog.chinaaet.com/justlxy/p/5100053251 PCIe简介:http://blog.chinaaet.com/justlxy/p/5100053066 这一章主要介绍PCIe的由来,在2001年的时候被...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,417
精华内容 1,766
关键字:

buspcie