PCIe(二) —— 配置空间
发布网友
发布时间:2024-09-02 23:40
我来回答
共1个回答
热心网友
时间:2024-09-02 23:36
在深入了解PCIe系统结构的上篇文章后,我们继续探讨其核心概念——配置空间,它对理解PCIe工作原理至关重要。内存访问是理解PCIe的关键,因为其大部分操作基于内存请求,包括I/O请求和配置空间访问,即使是中断处理也与内存访问密切相关。通过虚拟内存的概念,我们知道CPU访问的是虚拟地址,经过MMU转换为物理地址后才能获取数据。
在PCIe中,每个设备都有专属的4096字节配置空间,用于存储设备信息,且大小固定不变。配置空间的结构因设备类型(终端设备Type 0或Switch Type 1)而异,但都包含一个共同的头部,其中包含了设备的标识符等基本信息。系统在启动时,BIOS通过ACPI分配配置空间并映射到物理地址空间,操作系统通过ECAM进行管理。
PCIe使用BDF(Bus-Device-Function)来定位配置空间,通过左移位和偏移计算,可以快速定位到特定设备的配置区域。配置空间的访问通过setpci命令进行,需要遵循字段长度规则,以避免潜在的错误。Type 0设备的配置空间包含BAR,用于描述设备的内存和I/O空间,而Type 1设备的配置空间则主要包含路由信息,用于路由PCIe消息。
配置空间的访问流程涉及从CPU发起的配置空间读取请求,通过路由信息,最终到达目标设备。PCIe的热插拔和路由机制通过遍历过程和预留Bus Number得以实现。在下文中,我们还将深入探讨PCIe的数据报文结构和传输。