1 BDF (Bus, Device, Function)

BDF是在PCI中就有了的概念。在PCIe 拓扑结构中,我们通过总线号(bus number), 设备号(device numer)和功能号(function number)来唯一地标识各个function。Bus number用于表征当前设备挂载于哪条bus下面,Device number用于表征设备具体是总线下的哪个设备,function number用于表征是device里面的哪个function。

如上例图,从bus 0开始,每经过一个virtual P2P bridge就会形成一个新的Bus。PCIe最多支持256个bus number。软件通过“枚举”的流程来明确整个PCIe拓扑结构,在枚举时遵循深度优先原则,一旦发现一条新的bus后就继续扫描新bus下面的设备。

在单个bus下面最多可以支持32个设备。由于PCIe是点对点的协议,即单个PCIe link两端都只有1个设备(device)链接在一起,因此在PCIe拓扑结构中引入了Vritual P2P Bridge。Vritual P2P Bridge与Vritual P2P Bridge之间是通过virtual bus连接的,不受点对点的限制,这样就使得单个bus下面挂载多个设备成为可能。只有RC和Switch内部的bus下面才能挂载多个设备。

每个设备必须实现function-0, 最多可以实现8个function, 实现的多个function可以是不连续的,比如,function-0,2,7。软件扫描设备发现是multi-function设备时,就必须对该设备的所有function进行check。每个function都有自己独立的config adress space。

2 Configuration Address Space

  • PCI-Compitible Space

PCI兼容的配置空间大小是256B。前64B是config heaer,header分为type-0 config header和type-1 config header,bridge设备使用type-1 header, non-bridge设备使用type-0 header.

剩下的192B是optional PCI capability registers space.对于PCIe function 而言,必须实现的capability有:PCI Express capability, Power Management, MSI and/or MSI-X

如上所示,type-0的config header比type-1的header多了4个BAR。而type-1的header比type-0 header多了primary bus number, secondary bus number, subordinate bus number, memory base/limit, IO base limit,Bridge Control等, 这些信息都是在TLP routing中会用到的。

  • Extended Configuration Space

这部分配置空间一共960DW,这部分空间只能用Enhanced configuration机制(即MMIO)去访问。这部分通常包含 Advanced error reporting, Virtual Channels, Device Serial Number, Power Budgeting等。

3 配置空间访问方式

  • 3.1 IO间接寻址方式-Legacy PCI Compatible mechanism

分两步完成一次config access, 1)将BDF以及DW#写入Config Address port(IO addr 0CF8~0CFB), 2)访问Config Data port(IO addr 0CFC~0CFF)。这种方式在多核系统种,由于是2-step式的访问,为了保证原子性必须加锁,因此具有一定局限性。

  • 3.2 Memory Mapped Access - Enhanced mechanism

将Config影射到Memory空间,直接1-step完成访问。每个function 4K的config空间,按4K对齐的方式映射到一个256MB的Memory空间。

4 Configuration Requests

5 枚举流程

PCIe协议学习笔记之--Configuration Overview相关推荐

  1. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  2. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  3. POP3协议学习笔记

    今日得闲,于是将POP3的学习笔记也整理出来! 互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀.. ...

  4. CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

    1 前言 CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持. 既然CoAP是基于UDP来组包的,那肯定是可以实现. 所以这篇文章给 ...

  5. 网络协议学习笔记 · 22

    IPv6 · 流媒体 · 即时通讯 · 缓存 · 网络爬虫 VPN 作用 VPN与代理的区别 实现原理(隧道协议) 网络爬虫 简易实例 robots.txt 无线网络 缓存(Cache) 响应头 请求 ...

  6. CoAP协议学习笔记 1.2 一张表了解 CoAP 协议

    1 前言 对于CoAP协议的学习,这份100多页的文档肯定没法背下来.我们只需把协议当作工具书,大体知道主体的内容,在遇到细节问题时再去具体章节找问题. 本篇笔记中先对 CoAP 协议内容做个基础了解 ...

  7. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍

    CoAP协议学习笔记可点此查看. 1 前言 在之前的学习中,没有过多关注加密.但实际部分厂家的IoT平台(阿里云.OneNET)已经启用了相关安全处理,有必要深入学习下. 在 CoAP 协议 RFC7 ...

  8. BGP协议学习笔记——BGP基础

    BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...

  9. 极客HTTP协议学习笔记破冰篇(1-7)

    极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...

最新文章

  1. path,classpath
  2. 【原创】CGAL中,2D Arrangements学习笔记
  3. c 语言如何处理表格文件中的数据库,C#程序从Excel表格中读取数据并进行处理
  4. MATLAB之离散时间傅里叶变换DTFT
  5. python基础入门:内置函数之排列组合函数教程
  6. 【数据库范式】 分析题第一范式
  7. 操作篇 HYbrid的应用和学习
  8. javascript arguments
  9. 编译asp.net文件为dll文件
  10. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
  11. python 基础 - 循环语句
  12. BZOJ 2555: SubString [后缀自动机 LCT]
  13. C语言实现去掉字符串中重复的字符
  14. Android网络对讲机的实现
  15. 主板温度过高的原因是什么?主板温度高的原因和处理办法
  16. 数据库系统原理与应用教程(019)—— MySQL 的配置文件
  17. Deprecated注解
  18. java基于ssh的旅游系统
  19. 【Maven】Maven的安装与下载
  20. 一周一书一文(20160814):让未来现在就来——彭小六

热门文章

  1. matlab close curs,matlabfetch的用法
  2. 解决navicat导入excel数据日期混乱问题
  3. 关于上传文件大小受限问题
  4. 市场调研报告-全球与中国网络视频会议(网络研讨会)软件市场现状及未来发展趋势
  5. 正则表达式提取新闻发生时间
  6. 2022年全球及中国可重复使用食品包装行业头部企业市场占有率及排名调研报告
  7. android @nonnull的作用,Android:NullPointerException尽管@NonNull
  8. vue-awesome-swiper 怎么更改轮播图的分页器样式
  9. html5 pdf.js 使用方法,PDF 文件在线预览(pdf.js 使用教程)
  10. catia数控加工01