PCIE学习笔记:关于Function概念的一些疑问(未完待续~~) | 您所在的位置:网站首页 › 呼应句的作用 › PCIE学习笔记:关于Function概念的一些疑问(未完待续~~) |
问题描述:什么是Function? 在学习 LogicJitterGibbs:[译文] 《PCI Express Technology 3.0》Chapter 4 Address Space & Transaction Routing//地址空间与事务路由 3、4小节 时,有一句话我比较疑惑: 一旦一个Function的BAR们都被编程写入了,这个Function就知道自己所拥有的地址范围了,这意味着这个Function将会把任何目的地址在这一范围内的事务都声明为自己的,这个地址范围就是被写入它的某一个BAR的地址范围。通过上一章,我知道了pcie的空间映射是由bar寄存器来实现的,那么这个function是什么呢?难道对于同一个pcie设备来说,还会有不同的function?而且还对应不同的地址分配? 初步结论:之所以会有这个问题,还是因为对前面“PCIe扫盲——BDF与配置空间”章节没有理解透彻; PCIe扫盲——BDF与配置空间:http://blog.chinaaet.com/justlxy/p/5100053262 总结起来就是 1.Function的概念Function被设计为每个设备中之内的一个逻辑层次。这些Function可能包含硬盘驱动接口、显示控制器、以太网控制器、USB控制器等等。多Function的设备不需要依次按照编号逐个实现 Function。例如,一个设备可以只实现Function 0、2、7。因此,当配置软件检测到了一个多Function设备时,必须检查所有可能的Function,以了解当前Device存在哪些Function。 斜体引用自PCIE背景知识学习(7) - 沉默改良者 - 博客园,用于加深理解一个pcie设备,最多可以支持8个Function(func-0是必须要实现的),每一个function都有一个唯一独立的配置空间(Configuration Space)与之对应,这个配置地址空间用于设置与Function相关的资源。,当一个设备拥有2个或以上的Function时,称之为多功能设备(Multi-Function Device)。 可能还会有Physical function和Virtual function的概念,其中所谓的最多支持8个function,可能全指virtual function,而physical function只有一个,这8个virtual function可由physical function分配而来,具体机制暂未看到,该处存疑,未完待续~~ 2.Function的作用PCI/PCIe总线中的每一个功能(Function)都有一个唯一的标识符与之对应。这个标识符就是BDF(Bus,Device,Function),PCIe的配置软件(即Root的应用层,一般是PC)应当有能力识别整个PCIe总线系统的拓扑逻辑,以及其中的每一条总线(Bus),每一个设备(Device)和每一项功能(Function)。 3.BDF机制扫描/寻址拓扑的例子软件总共可以分配256个总线编号。第一个总线号,Bus 0,通常由硬件分配给RC(Root Complex)。每个总线都必须被分配一个唯一的总线号。配置软件分配总线号的过程中,首先从Bus 0/Device 0/Function 0开始搜索其他的Bridges。当找到一个Bridge之后,软件就给这个Bridge产生的新总线分配一个与上一级总线的总线号不同的、数字更大的编号。 一旦新总线被分配了一个总线号之后,软件就会从新总线继续搜索更新的Bridges,而不是在上一级总线上继续搜索。这被称为“深度优先搜索(depth first search)。 参考资料: 1.PCIe扫盲——BDF与配置空间:http://blog.chinaaet.com/justlxy/p/5100053262 2.PCIE背景知识学习(7) - 沉默改良者 - 博客园 PS: Felix大佬的资料是真的全,除了教科书之外,中文全网pcie相关的资料基本全来源于他!附上Felix大佬的主页链接~~ Felix技术源于积累,成功始于执着!个人邮箱:[email protected] QQ:157610946还有LogicJitterGibbs老兄的整理和翻译也功不可没,学到了很多东西! LogicJitterGibbs |
CopyRight 2018-2019 实验室设备网 版权所有 |