PCIe设备的资源
前面讲了树,理清了PCIe架构的大概框架;讲了链路,知道了框架中的路径。而对于树上的树叶/果实,即最终的PCIe设备,它们在系统中是是怎样存在的?今天开始逐步对PCIe设备的内部细节和协议的分层实现细节展开讲解。
在PCIe系统中,对于每一个PCIe设备,都具有三种类型的资源。具有了资源,PCIe设备才具有了被访问、被使用的基本能力。这三种资源分别是:
- ID Resource
ID资源:即设备在系统中的定位和身份证。用总线号(Bus)、设备号(Device)和功能号(Function)三个变量定义。
- Memory Resource
内存资源:即设备具备哪些可以提供给外部或内部使用的内存。
- IO Resource
IO资源:即设备具有哪些可以使用的IO空间。
在一个PCIe系统中的每一个PCIe设备,如上的三种资源分配都是唯一的。不会有两个设备具备相同的资源。
我们看一个实例,如下这个PCIe tree。红框标注的这个设备是张网卡。
这个设备的ID资源是:总线号3,设备号0,功能号0。
我们可以使用lspci命令查看它的memory和IO资源:
它的IO资源位于d00处,大小256。
它的Memroy资源有两个,一个是位于f7a00000大小为4K,一个是位于f0000000大小16K。
后面会依次详细讲解每种资源的申请、分配和使用。