首页 > 其他分享 >PCI-Express-Technology(三)

PCI-Express-Technology(三)

时间:2024-05-10 12:44:41浏览次数:19  
标签:Function Express 总线 PCIe PCI Device Technology 设备

3.1 总线/设备/功能/的定义(Definition of Bus,Device and Function)

正如PCI一样,每个PCIe功能(Function)的标识在其所在的设备内,以及这个设备所连接的总线内,都是唯一的。其标识符一般被称为“BDF”。对于任意一个 PCIe 拓扑结构,配置软件负责检测出拓扑中的每个Bus、Device和Function,缩写为BDF。接下来的几节将会结合一个PCIe拓扑的示例,来讨论BDF的主要特征。图 3‑1展示了一个PCIe拓扑结构,图中着重标识了示例系统中的Buses、Devices和Functions。本章后续内容将解释总线编号和设备编号分配的过程。

img

图 3‑1示例系统

3.2 PCIe总线(PCIe Buses)

软件总共可以分配256个总线编号。第一个总线号,Bus 0,通常由硬件分配给RC(Root Complex)。Bus 0由一个集成有EP的虚拟PCI总线,一到多个虚拟PCI-to-PCI Bridges(P2P)组成。其中的P2P Bridges拥有不可更改、硬件编码(hard-coded)的设备号和功能号。每个P2P Bridge都会产生一个新的总线,其他PCIe设备可以连接在到这些新产生的总线上去。每个总线都必须被分配一个唯一的总线号。配置软件分配总线号的过程中,首先从Bus 0/Device 0/Function 0开始搜索其他的Bridges。当找到一个Bridge之后,软件就给这个Bridge产生的新总线分配一个与上一级总线的总线号不同的、数字更大的编号。一旦新总线被分配了一个总线号之后,软件就会从新总线继续搜索更新的Bridges,而不是在上一级总线上继续搜索。这被称为“深度优先搜索(depth first search)”,关于这种搜索的细节内容,请参阅“Enumeration – Discovering the Topology”一节。

3.3 PCIe设备(PCIe Devices)

PCIe允许在单个PCI总线上最多挂载32个设备,然而PCIe点对点(point-to-point)的性质意味着只有一个设备可以直接连接在PCIe链路上,也就是Device 0。但是,通过RC和Switches包含的虚拟PCI总线。更多的设备可以“连接”到总线上。

每个设备都必须实现Function 0,其最多可以有8个功能(Function)。当一个设备拥有2个或以上的Function时,称之为多功能设备(Multi-Function Device)。

3.4 PCIe功能(PCIe Functions)

正如此前所讨论的一样,Function被设计为每个设备中之内的一个逻辑层次。这些Function可能包含硬盘驱动接口、显示控制器、以太网控制器、USB控制器等等。多Function的设备不需要依次按照编号逐个实现 Function。例如,一个设备可以只实现Function 0、2、7。因此,当配置软件检测到了一个多Function设备时,必须检查所有可能的Function,以了解当前Device存在哪些Function。每个Function都有它们自己的配置地址空间,这个配置地址空间用于设置与Function相关的资源。

 

标签:Function,Express,总线,PCIe,PCI,Device,Technology,设备
From: https://www.cnblogs.com/VerweileDoch/p/18184080

相关文章

  • 界面控件开发包DevExpress v23.2.6全新发布|附高速下载
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress近期重要版本v23.2已正式发布,该版本拥有众多新产品和数十个具有高影响力的功......
  • C#动态查询:巧用Expression组合多条件表达式
     概述:在C#中,通过`Expression`类、`AndAlso`和`OrElse`方法可组合两个`Expression<Func<T,bool>>`,实现多条件动态查询。通过创建表达式树,可轻松构建复杂的查询条件。在C#中,可以使用AndAlso和OrElse方法组合两个Expression<Func<T,bool>>类型的表达式。以下是详细解释和实例......
  • PCI-Express-Technology(四)
    PCIe支持三个地址空间,与PCI中的三个地址空间完全相同:n配置空间(Configuration)n内存地址空间(Memory)nIO地址空间(IO)4.1.1配置空间(ConfigurationSpace)如我们在Chapter1中所讨论的,配置空间是由PCI引入的,软件通过配置空间就可以用一种标准化的方法来对设备的状态进行控制和......
  • PCI-Express-Technology(二)
    第一代PCIe(称为Gen1或者PCIe协议规范版本1.x)中,比特率为2.5GT/s,将它除以10即可得知一个通道的速率将可以达到0.25GB/s。因为链路可以在同一时刻进行发送和接收,因此聚合带宽可以达到这个数值的两倍,即每个通道达到0.5GB/s。第二代PCIe(称为Gen2或者PCIe2.x)中将总线频......
  • PCI-Express-Technology(一)
    https://github.com/ljgibbslf/Chinese-Translation-of-PCI-Express-Technology-/blob/main/1%20%E8%83%8C%E6%99%AF.md1.3.2PCI总线发起方(Initiator)与目标方(Target)在PCI层次结构中,总线上的每个设备(device)可以包含多达8个功能(function),这些功能都共享该设备的总线接口,功能......
  • PCIE思考:简单路由
    上电:主机设备上电,BIOS通过扫描下游设备的BAR,为其注册响应的空间,当需要对这些空间进行操作的时候,就会转换成TLP包的形式进行访问,当然直接和PCIE设备交互的还是RC;其中BAR的低位(具体情况具体分析)作为寻址其的地址;简单DMA读步骤(PCIE设备发起读):1.下游设备发起请求;2.CPU把数据写到......
  • TLP元素与PCIE数据流
    不同于并行总线,PCIe这样的串行总线不使用总线上的控制信号来表示某时刻链路上正在发生什么。相反地,PCIe链路上的发送方发出的比特流必须要有一个预期的大小,还要有一个可供接收方辨认的格式,这样接收方才能理解比特流的内容。此外,PCIe在传输数据包时并不使用任何直接握手机制(imme......
  • 界面组件DevExpress Blazor UI v23.2亮点 - 图表组件全新升级
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。DevExpress Blazor控件目前已经升级到v23.2版本了,此版本进一步增强了图表组......
  • PCIE学习(一):PCIE基本知识
    PCIE和板卡点对点的方式连接两个设备。FPGA中的PCIE享有独立的IO,BANK,因为其配置复杂。A7系列支持2.0KU部分支持3.0KU+部分支持4.0通过高速BANK可以引出能连接高速设备的IO(GTX和GTH);在XILINX7Z035FGG676中有两个这样的BANK,每个BANK提供四对高速收发器,所以总的来说是8对......
  • 使用libvirt配置pci bus的numa亲和性
    前面的一篇文章在qemu中绑定pcibus到numanode-半山随笔-博客园(cnblogs.com)中记录了如何使用qemu命令行来设置pcibus与numa的亲和性。本篇来记录如何使用libvirt来做同样的事。libvirt相较于qemu是一个更高层的工具,在提供便捷性的同时也损失了一点灵活性。就拿设置pcib......