- 论坛徽章:
- 7
|
回复 5# accessory
不是这样的.
你说的这个太高级.通用性不太强哈.
其实很简单,如果是针对PCI来说,还是把配置空间的实现搞清楚,内核里有些帖子讲到了,前些天new_leaner那个帖子我也说了一大堆废话就是为了说明这个问题.
排开PCI这个特例不谈.
我觉得北桥本身能直接区分内存空间.通常体系结构物理地址空间有个约定,前面的部分地址肯定是内存,那么内存插上后肯定只属于某个固定空间,这个北桥是能够探测到的,或者它还可以自动根据插槽分派.总之它肯定是在逻辑上把内存分到前面,至于这个内存空间到底有多大有没有界限:可能有,比如逻辑上做的比较固定,或者没有,非常好自适应.那么通常总线上(不一定就是PCI总线)其他设备映射到内存空间的时候,程序会根据体系结构的不同也固定在某个空间做分配(老兄看过APCI或一些其他BIOS类的规范,不知道有没有看到相关的东西).这个体系结构的不同实际上就是北桥的实现的不同.当然这2个空间的界限能通过编程改变,或者不能改变.
如此一来不论怎样北桥在硬件上拿到一个地址肯定知道往哪里转.
至于如果是一个物理地址是否合法,就是说它即没落到内存又没落到总线上,北桥肯定要某种规范来处理.比如读出的数据返回全1.
其实在PCI总线上,如果北桥通过自己上面的PCI设备把地址投放到总线时,如果没有从设备响应,那么返回读到是全1. |
|