PCIE控制器——设备地址空间访问

污水处理方法PCIE控制器——设备地址空间访问
由于不同⼚商的PCIE控制器有不同的地址转换⽅式,但⼤致原理类似,本⽂将以某⼤型EDA⼚商的pcie控制器为例辅以解释。该控制器机制和PowerPC体系架构下的PCIe控制器类似。
⼀、 PCI地址空间划分
1.1 存储器域和PCI总线域
PCI spec规定了PCI设备必须提供的单独地址空间,因此PCIe设备的地址空间和CPU可以访问的地址空间是分开的。
根据王齐⽼师的**《PCI Express体系结构导读》**⼀书,后者可以被定义为存储器域,该域包括CPU内部的寄存器、主存空间,即CPU域和DRAM域(在可以接⼊显卡等设备的处理器系统中,CPU域并不能包含所有的DRAM域);⽽前者可以被定义为PCI总线域。⼆者之间的地址转换通过PCIe HOST主桥来实现。
痔疮液存储器域和PCI域相互访问需要先进⾏地址映射,即当CPU要访问PCI外部设备时(正向映射),需要先访问该设备在存储器域的地址,之后经过HOST主桥转换为PCI总线域的物理地址,然后通过PCI总线事务进⾏数据访问;⽽当PCI设备访问主存储器时(反响映射),⾸先通过PCI总线事务访问PCI总线域的地
址空间,然后经过HOST主桥转换为存储器域的地址后,再对这些空间进⾏数据访问。
1.2 PCI总线域划分
在PCI体系结构中⼀共⽀持两种地址空间,因此PCI总线域⼜可以进⼀步划分为Memory Address Space(MMIO 存储器映射空间)和Configuration Address Space(配置空间)。
1.2.1 MMIO空间
MMIO(Memory mapping I/O)即内存映射I/O,它是PCI规范的⼀部分,I/O设备被放置在内存空间⽽不是I/O空间。从处理器的⾓度看,内存映射I/O后系统设备访问起来和内存⼀样。
这样如果访问AGP/PCI-E显卡上的帧缓存,BIOS可以对PCI设备使⽤读写内存⼀样的汇编指令完成,简化了程序设计的难度和接⼝的复杂性。
I/O作为CPU和外设交流的⼀个渠道,主要分为两种,⼀种是Port I/O,⼀种是MMIO(Memory mapping I/O)。
1.2.2 配置空间
配置空间(configuration space),前64个字节(其地址范围为0x00~0x3F)是所有PCI设备必须⽀持的(有不少简单的设备也仅⽀持这些),此外PCI/PCI-X还扩展了0x40~0xFF这段配置空间,在这段空间主要存放⼀些与MSI或者MSI-X中断机制和电源管理相关的Capability结构。
第三节中将详述。
茶浴炉⼆、PCIe设备IO空间
通常对于memory空间和IO空间分开的架构才需要使⽤PCIe的IO空间,例如x86架构,其访问IO空间有专门的指令in/out等。
详情参考链接:
三、PCIe设备mem空间
电子导盲仪当处理器访问PCI设备的地址空间时,⾸先需要访问该设备在存储器域的地址空间,并通过HOST主桥蒋这个存储器域的地址空间转换为PCI总线域的地址空间后,在使⽤PCI总线事务将数据发送给PCI设备。
同样,PCI设备访问存储器域的地址空间,类似进⾏DMA操作时,⾸先访问该存储器地址空间所对应的PCI总线地址空间,之后通过HOST 主桥将PCI地址转换为存储器地址
电子级硝酸3.1 访问机制——地址映射寄存器
在本PCIe控制器的设计中,采⽤inbound和outbound寄存器组来保存存储器域和PCIe域的地址转换关系。
outbound寄存器组
真空超导outbount寄存器实现存储器域地址向PCIe域地址的转换
只有当CPU读写访问的地址范围在outbound寄存器组管理的地址空间内时,HOST主桥才能接收CPU的读写访问,并将CPU在存储器域上的读写访问转换为PCI总线域上的读写访问,然后才能对PCI设备进⾏读写操作
inbound寄存器组
inbound寄存器实现PCIe的地址向CPU域地址的转换
3.2 地址映射⽅式
存储器访问的地址映射⽅式如下:
PCIe总线域地址 = 请求访问的存储器域地址 - MMIO基地址 + bar基址(RP)
计算结果PCIe总线域地址在PCIe总线上⼴播,当该地址在某PCI设备的bar地址空间范围内,则访问该设备的地址空间。
参考Xilinx PCIe IP的存储访问地址映射⽅式:
四、PCI设备的config配置空间
上⽂提到,PCI总线域的地址空间分为配置空间、memory空间和IO空间,对于配置空间的访问,⼀般有两种访问机制,⼀种是通过特定寄存器访问,另外⼀种是通过ECAM的⽅式访问。
⽆论是哪种访问⽅式,都需要对所有的PCI设备进⾏编码以避免冲突,通常以三段编码来区分PCI设备,即Bus Number, Device Number 和Function Number,可以简称为BDF。通过BDF可以唯⼀确定某⼀PCI设备。
由于PCIe总线树上可能存在Bridge接终端设备,或者直接接ep设备,因此对⼆者的配置空间访问请求也有所不同,对上述设备分别是⽤Type1和Type0配置请求。
4.1 访问机制
4.1.1 通过特定寄存器寻址访问
PCI总线规定访问第三节的配置空间的总线事务,即配置读写总线事务,使⽤ID号进⾏寻址。
以PowerPC架构的MPC8548处理器来说,与PCI设备配置空间相关的寄存器由CFG_ADDR(可读写)、CFG_DATA(可读写)和
INT_ACK(只读)寄存器组成,驱动程序等系统软件使⽤CFG_ADDR和CFG_DATA寄存器访问PCI设备的配置空间,⽽使⽤INT_ACK寄存器访问挂接在PCI总线上的中断控制器的中断向量。
对于x86架构来说,⼀般通过CONFIG_ADDRESS和CONFIG_FATA寄存器
CFG_ADDR寄存器
CFG_ADDR寄存器和CFG_DATA寄存器⽤来访问PCI设备的配置空间,其中⽤CFG_ADDR寄存器保存PCI设备的ID号和寄存器号。该寄存器有字段:
1. enable位
当该位为1时,host主桥使能对PCI设备配置空间的访问,当HOST处理器对CFGPDAT寄存器访问时,HOST主桥将对该机存起访问转换位PCI哦诶值读写总线事务并发送的PCI总线上。
2. Bus Number
记录PCI设备的总线号,总线号在HOST主桥时确定,PCI总线可以使⽤PCI桥扩展PCI总线并形成⼀颗PCI总线树。在⼀颗PCI总线树中,总线号由系统软件决定,通常与HOST主桥直接连接的PCI总线编号为0,系统软件使⽤DFS算法扫描PCI总线树上的所有PCI总线,并依次编号
3. Device Number
记录PCI设备的设备号,设备号由PCI设备的IDSEL信号与PCI总线地址先的连接关系确定
4. Function Number
记录PCI设备的功能号,功能号与PCI设备的具体设计相关。⼀个PCI设备最多有8个功能设备,且每⼀个功能设备都有各⾃的PCI配置空间,⼆在绝⼤多数PCI设备中只有⼀个功能设备。
5. Register Number
记录PCI设备的配置寄存器号
4.1.2 ECAM
增强配置访问机制,ARM使⽤ECAM的⽅式访问PCIe配置空间。ECAM是⼀个将配置空间映射到MEMORY空间的规则。硬件根据ECAM 的⽅式将某个Memory空间映射给PCI配置空间,CPU访问对应的memory空间即可以操作PCIe配置空间,其地址空间映射如下:
在ACPI规范中,需要通过MCFG表上报ECAM的地址映射。完成映射后,CPU发出的地址如果落在ECAM的范围内, 根据对应的bdf就可以访问到对应ep的配置空间了。
4.2 PCIe配置寄存器
参考链接:

本文发布于:2024-09-22 07:17:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/305261.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:空间   设备   访问
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议