LVPP

PCI存储空间和配置空间(二)

0
阅读(2906)

PCI存储空间不同于PCI配置空间。PCI存储空间可以存放PCI设备的特殊功能寄存器,也可以用做数据缓冲和存储区域。PCI存储空间分为MEMORY空间和I/O空间两类,它们独立寻址,并使用不同的总线操作命令进行访问。MEMORY空间适用于设备功能寄存器较多或数据流量较大的场合,例如网口芯片、PCI-PCI桥等。I/O空间适用于设备功能寄存器较少或数据流量较小的场合,例如串口芯片、LED控制寄存器等。但在地址空间比较充裕的条件下,也有把范围较小的存储区放入MEMORY空间的做法。操作响应者根据操作发起者发出的总线操作命令类型,来识别当前操作是指向MEMORY空间还是I/O空间。

配置寄存器组(位于配置空间中)中会有一个或多个基址寄存器BARBase Address Register),用于保存指向PCI存储空间的指针,同时BAR中可读不可写的位数决定了该存储空间的大小。BAR的最低位是只读位,它定义了BAR的空间属性。当BAR指向PCIMEMORY存储空间时,该位回读为0;当BAR指向PCII/O存储空间时,该位回读为1。由于BAR的这一属性,使得PCI设备占用的存储区域是放在MEMORY空间,还是放在I/O空间,完全由设备制造商决定,用户无法修改。

单个设备/功能PCIMEMROY空间的容量可选取16byte~2Gbyte。但为了减少参与地址译码的地址线数量,PCI规范建议MEMORY空间分配不小于4Kbyte

单个设备/功能PCII/O空间的容量可选取4byte~256byte ,不允许超过256byte

访问PCI存储空间时,都使用“BAR指针+地址偏移量作为存储空间的访问地址。因此,为每个PCI设备/功能分配合理的地址空间,保证设备/功能间的存储空间不发生重叠,是PCI设备配置操作的一项重要内容。