在总线层次结构中进行地址转换

时间:2017-12-08 16:41:21

标签: linux-kernel kernel linux-device-driver cpu-architecture iommu

考虑总线层次结构,其包括与另一总线B连接的总线A.总线B连接其他两个总线C和D.ab,bc和bd是相应的桥。此外,每辆公共汽车都附有设备。

A<-ab->B
B<-bc->C
B<-bd->D

据我所知,根据总线的应用,它可能具有其速度和地址范围容量。我想专注于每个总线的地址空间。由于A是所有总线下层的主机,因此其地址范围应足够宽,以便唯一地确定层次结构中的每个设备。

  1. 我的理解是,通常,总线C上的设备可能具有与总线D上的设备在数字上相同(或重叠)的总线本地地址范围。但是,当这些地址范围映射到总线上总线B时,它们被映射到两个不同的地址范围。这意味着设备Cc可能已经分配了本地地址范围0x000 - 0xfff,并且设备Dd也具有相同的本地地址范围0x000 - 0xfff,但是在总线B上,它们可以映射诸如Cc(0x0000-0x0fff)和Dd之类的东西(0xaaaa - 0xeb3f)。 虽然这是映射实际上非常特定于某个平台,但想要理解这种理解是否正确。

  2. 我一直认为的另一点是,当数据在任一方向上交叉时,网桥执行地址转换功能。如果这是正确的,请告诉我。

  3. 我的另一个问题是,如果网桥执行此转换,何时网桥是否填充了转换表?桥控制器驱动程序有什么作用吗?它是如何做到的(如果有的话)?

0 个答案:

没有答案