- 论坛徽章:
- 7
|
回复 #17 new_learner 的帖子
NB是可编程的么?
---也许吧,至少书里提到的IOMMU是可编程的.
只因zx_wing和各位高人没来.胡乱说了2句.
从你的回复看,对配置空间的理解还可加一步.
再明确点说,PCI32位地址-数据线,在地址周期,上面的地址定义就是总线地址,在X86下,总线地址等于物理地址,所以上面就是确确实实的物理地址,当然为了区别mem和IO,同CPU引出了地址线一样,也包含一根MEM/IO线来区分.
当然这里的有些区别的就是有些地址不会从CPU出来直接放在PCI地址线上,比如那个IO里面的0CF8,CPU对这个地址的访问被北桥处理了.
已经知道这个地址是用来配置PCI的.
那么CPU访问这个地址,北桥会转为访问PCI配置空间.已经知道PCI配置空间的寄存器是放到PCI设备上的,就是说一次配置动作的寻址要跨越PCI那数十根槽线,那么这次地址线定义就不同了,具体看看< PCI体系结构> 或者规范,每个PCI设备上有个IDSEL接线,就是片选线,不同的设备的这个线接在不同的地址线上,,那一次对配置空间的寻址被转化为用地址线片选设备,当然这个逻辑是在NB上做的.
PCI体系结构 书说上说如何用地址线对应设备的片选有比较灵活的定义,这个可能有厂商自己决定.
多说2句废话:从PCI设备的角度看,北桥是个PCI设备,在网卡设备做DMA的时候,北桥表现为一个从设备.也就是MEM/IO寻址的角度,北桥和其他设备是无差别的(或许吧...)
回到对书上第一个问题的疑问上来就是,寻址是CPU和总线的事情, 设备上有个PCI接口,他拿到地址怎么使用,比如怎么转为访问设备上的内存或者寄存器都是它自己的逻辑.当然在访问时间上要符合PCI规范的要求. 有些访问也经历千辛万苦,比如设备上有如果有个EEPROM,是串行接口,而且规范和访问方式都和PCI千差万别,那么如果上面存了PCI设备配置空间信息,那对它的访问就要经历 配置空间寻址-本设备主处理器寻址(或者一个简单点的配置线转换逻辑寻址)-EEPROM上串行设备寻址.
在做配置的时候,北桥是个独一无2的设备,应该叫" PCI主控器"(不知道有没有这么一说)
[ 本帖最后由 smalloc 于 2010-1-17 15:51 编辑 ] |
|