PCIe从入门到精通之十二:PCIe设备的配置空间header详解2
0赞0,引言
在上一篇文章《PCIe从入门到精通之十一:PCIe设备的配置空间header详解1》中,我们介绍了PCIe配置空间前0x3F个寄存器(header)以及Type0和Type1的相同部分。在这一篇文章中我们继续介绍PCIe配置空间前0x3F个寄存器Type0和Type1不同的部分。
所有PCIe主题的文章都会收录在《深入浅出聊PCIe》合集里,欢迎评阅。
需要下载PCIe学习资料标准的朋友(pdf格式),请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载链接。
一,温故而知新: PCIe配置空间分类
PCIe架构中的配置空间头部类型PCI header分为Type 0和Type 1,它们的主要区别在于设备在PCIe拓扑中的角色和功能,以及配置空间中包含的寄存器类型。
简单地来说(通俗易懂地说),Type 0 是用于实际执行功能的设备(Endpoint,RCiEP, RCEC),他们相当于公司里边具体干活的一般员工,俗称牛马;而 Type 1 是用于管理、沟通协调和连接这些牛马(设备)的桥梁(PCI-PCI Bridge),他们是公司里的管理层,俗称领导。
在PCI兼容的配置空间里,前0h~3Fh存放的是PCI header(device基本信息),后面的40h~FFh存放的是PCIe Capability Structure(device都有哪些本领)。其中,header: 0h~3Fh里,Type0与Type1两者部分相同,有部分不同;Capability Register:40h~FFh里,Type0与Type1两者相同;
在扩展配置空间里(Byte 100h~FFFh),全部存放的是PCIe Extended Parameters and Capability Structure。Capability Register: Byte100h~FFFh里,Type0与Type1两者相同。
PCIe配置空间Type 0和Type 1对比总结如下:

对应寄存器的offset位置如下图:

二,PCI兼容的配置空间里Type0和Type1不同的部分对比
1. Type 0 配置空间(Endpoint Device)独有的寄存器
Type 0 配置空间主要关注设备的资源分配、功能描述和中断配置。

2. Type 1 配置空间(Bridge Device)独有的寄存器



注:上图来源于网络
Type 1 配置空间主要关注总线拓扑的建立、地址范围的映射和事务的路由。

这些不同的寄存器体现了Type 0和Type 1设备在PCIe总线层次结构中扮演的截然不同的角色:Type 0设备是功能的执行者,需要配置自己的资源;而Type 1设备是网络的构建者,需要管理其连接的总线段和数据流(如Primary Bus Number,Secondary Bus Number和Subordinate Bus Number这三者就是用来管理下游设备的寄存器。)。
三,抛砖引玉
在这一章中我们介绍了前0x3F个寄存器以及Type0和Type1的和不同部分。
这其中我们介绍了PCIe设备Vender ID, Device ID, Subsystem Vendor ID, Subsystem ID,那么从这四个具体含义是什么?它们有什么区别?它们有什么用途?
敬请关注下一篇:《PCIe从入门到精通之十三:PCIe设备Vender ID, Device ID, Subsystem Vendor ID, Subsystem ID的区别》
四,参考文献:
需要以下参考文献(PCIe标准)的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载链接。

百度网盘分享的文件
