非透明桥 Non-Transparent Bridging (二)

上个章节,我们了解了:当数据包通过结构从一个系统传输到另一个系统时进行地址转换,这是通过非透明桥(Non-Transparent)完成的。NT桥到底是怎么进行地质转换的?NT桥的内部构造又是啥样的呢?

NT桥的内部,其实是两个Endpoint设备。NT桥将一个透明端口分成两个非透明端口(端点设备/功能)。透明桥的配置空间为Type1,非透明桥的配置空间则为Type0。同时,NT桥中的两个NT EP都有各自的Type0配置空间。如下图:

图片

 

既然是EP,我们知道每个EP都有6个BAR空间。BAR 0 到BAR 5。所谓BAR(Base Address Register)就是每个EP设备的一个寄存器,这个寄存器会向系统申请一段一定大小的空间地址,系统所有访问这个空间地址的报文,都会被路由到这个EP来处理。

通常,BAR0是用作映射到EP设备的配置空间,访问BAR0可以映射访问所有的寄存器。而NT的BAR2 到 BAR5通常都是用于NT桥接地址转换用的。如下,我们以BAR 2为例:

 进入NT Window的报文,会根据我们自己设置的NT桥转换基址(Translated Base Addres)做运算,运算之后的地址刚好要等于我们想访问的B系统里面的目标地址(Target Adress)。这样,即使我们加上一定的偏移(Offset),也能顺利转化为B系统里对应偏移的地址。

 

T地址转换的基本原理就是这样。需要注意的是,如果只是写请求,那么只需要地址翻译、转换就可以了。但如果是Non-Post的事务,这个时候需要的是ID 路由(ID Routing)。情况变得会复杂一些。我们知道请求TLP包含一个请求者ID字段,该字段定义了一个PCIe系统里面的唯一ID,代表生成请求TLP的请求者。当这个读请求包穿过NT桥的时候,如果不进行任何处理,会有两个问题:

1、    因为每个系统里的ID都是唯一的,那么A系统的ID穿过NT桥后,有可能和B系统里面的ID冲突。

2、    完成报文是包含请求者ID字段和完成者ID字段。归属A系统的ID在B系统里可能根本找不到。完成报文不知道该发到哪里去。

因此,NT桥同时也需要完成ID转换和翻译。这部分的内容,大家可以参考芯片厂商的手册。

了解完大概的转换原理之后,我们跳出来再看一看这个系统图:

大家注意一下我标注的不同的颜色,从PCIe域以及地址归属来看,NT桥两边的两个EP设备,其实是分别归属于两个系统的(蓝色属于系统A,绿色属于系统B)。至于两个NT EP中间的NT Bridge,那是厂商芯片自己内部的实现。逻辑上在两个系统内都看不到哦。

       另外,我们前面只讨论了从系统A到系统B穿过NT桥的转换,反之,从系统B到系统A类似,只不多是在B系统里面配置绿色的NT  EP设备而已。我们可以画出如下的地址转换示意图。注意:此图两边地址是完全对称的,实际应用是比较常见的。事实上两边窗口、地址、转换目标地址等都是完全独立的,可以分别配置成不同的内容。

图片

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值