非透明桥 Non-Transparent Bridging (一)

 

 考虑一个最基本的问题:系统A如何和另外一个系统B通信?当然,这个问题答案有无数种。如利用串口、USB通信,利用网卡通信、利用FC通信等待。两个不同的系统间,可以通过任意其他的协议方式进行通信。但这些方式都是间接的访问,所谓间接是指:有通讯协议的转换、有数据的多次拷贝。

    问:系统A的CPU有没有可能直接访问系统B的内存和外设呢?

    答:有!PCIe Non-Transparent Bridging功能就可以实现,也就是非透明桥!

       非透明桥(NT)的理解不是特别容易,涉及的内容也比较多。我尝试用一些通俗易懂的方式分几节来分析一下NT的内容。

    我们首先来回顾一下PCIe系统里面,数据包的路由方式。以地址路由(参考:Address Routing)为例:

 PCIe系统里面,每个设备、每个Switch,都有明确的属于自己的地址、地址范围。数据包在系统里面,根据某个确定的地址路由、寻址。每个地址具有唯一性。下面,让我们考虑两个PCIe系统的场景:

 

系统A如果需要访问到另外一个系统B的某个地址,存在两个问题:

1、通过什么物理路径?

2、假设解决了问题1,同样存在地址冲突的问题:例如A系统访问地址2500h,这个地址在A系统里存在于左下方的Switch下,同时这个2500h地址也存在于B系统里的左下方的Switch下。由系统A的CPU发起的2500h地址访问,到底该访问哪一个呢?

(为什么两个系统不能通过透明交换机本机连接?PCIe数据路由是基于地址的,两个系统可能资源分配冲突,这意味着两个设备具有相同的资源分配,因此具有该地址的数据包无法正确路由,)

解决方案是什么?当数据包通过结构从一个系统传输到另一个系统时进行地址转换,这是通过非透明桥(NT)完成的。

我们来看看传统透明桥的路由:

①某个访问地址1500h的数据报文到达上行口P-P桥,P-P桥一看,这个地址在我的窗口范围内,向下行端口转发。

②图中高亮的下行端口P-P透明桥,一看,这个地址在我的桥下窗口范围内,继续向下转发。

③穿过透明P-P桥的数据报文,地址仍然为1500h。

对比透明桥,非透明桥的路由如下:

 

①   某个访问地址Δ + 1500h的数据报文到达上行口P-P桥,P-P桥一看,这个地址在我的窗口范围内,向下行端口转发。

②图中高亮的下行端口P-P透明桥,一看,这个地址在我的桥下窗口范围内,继续向下转发。

 ③  穿过非透明P-P桥的数据报文,地址进行了翻译!从Δ +1500h变成1500h。

④⑤是数据报文在系统B里的路由。

    有意思了!非透明桥NT经过一个简单的地址翻译,把在A系统中的地址,翻译到了对应的B系统的地址!这里需要注意的是:

1、为什么是Δ + 1500h?因为如果是1500h的话,肯定和本系统的1500h冲突。

2、Δ + 1500h所在的资源范围是怎么申请的?是非透明桥NT的BAR资源,向系统申请的。

    可以看出:非透明桥和透明桥看上去功能很像,最大的不同是:透明桥是进来什么地址,出去就是什么地址,对于桥上下两侧是“透明”的。非透明桥是有翻译功能的,可以把一个地址翻译成另一个地址(当然,也会有ID翻译功能)。所谓非透明的部分意义也是在于此。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值