Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85786
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-28 17:19
文章分类

全部博文(17)

文章存档

2017年(5)

2015年(4)

2014年(8)

我的朋友

分类:

2014-11-17 15:46:54

原文地址:非透明PCI桥 作者:conghonglei

PCI桥规范定义了透明桥的实现规则。通过PCI透明桥,处理器系统可以以HOST主桥为根节点,建立一颗PCI树,在这棵树上的PCI设备共享同一个PCI总线域上的地址空间。

但是在某些场合PCI透明桥并不适用,比如无法通过PCI透明桥连接两个处理器系统,不便解决两个处理器间的地址冲突,可以通过PCI非透明桥解决这个问题。非透明桥不是PCI总线定义的标准桥片,但是这类桥片在连接两个处理器系统中得到了广泛的应用。

比如两个处理器系统,各自拥有自己的PCI总线域,通过PCI非透明桥就可以将这两个PCI总线域联接在一起。注意的是,非透明PCI桥的作用是对不同PCI总线域地址空间进行隔离,而不是隔离存储域地址空间;HOST主桥的作用才是将存储器域与PCI总线域进行隔离。

非透明PCI桥可以连接两条独立的PCI总线,虽然一条被称为Primary PCI总线,一条称为Secondary PCI总线,但是这两条总线没有从属关系,两边是完全对等的。也就是说,从处理器的角度来说,总是其对端的PCI总线为Secondary PCI总线,而起自身PCI总线为Primary总线。

对于非透明桥的PCI桥片来说,包含两个PCI配置空间,分别是Primary PCI总线配置空间和Secondary PCI总线配置空间,在大多数情况下,在Primary PCI总线上的Host处理器管理Primary PCI配置空间,在Secondary PCI总线上的Host处理器管理Secondary PCI配置空间。以Primary PCI配置空间为例(Secondary PCI总线的配置寄存器也基本雷同),其配置寄存器共分为两组,一组寄存器与PCI设备的配置寄存器的BAR0~5对应,这些寄存器与标准PCI配置寄存器BAR0~5的功能相同;另一组寄存器是Translated Base寄存器,这组寄存器的主要作用是将来自Primary PCI总线的数据访问转换到Secondary PCI总线。整体配置寄存器组如下:

Offset      Registers                       corresponded PCI reg
0x10-0x13   Primary CSR and Memory 0 BAR    BAR0
0x14-0x17   Primary CSR I/O BAR             BAR1
0x18-0x1B   DS memory 1 BAR                 BAR2
0x1C-0x1F   DS memory 2 BAR                 BAR3
0x20-0x23   DS memory 3 BAR                 BAR4
0x24-0x27   DS memory 3 upper 32 bits       BAR5
0x94-0x97   DS Memory 0 Translated Base
0x98-0x9B   DS I/O or Memory 1 Translated Base
0x9C-0x9F   DS Memory 2 Translated Base
0xA0-0xA3   DS Memory 3 Translated Base


对于Primary PCI总线,所有BAR0~5寄存器映射的地址空间都将占用Primary PCI总线域,然而这些地址空间中所对应的数据并不在Primary PCI总线域中,而是在Secondary PCI总线域中。Translated Base寄存器实现不同PCI总线域地址空间的转换。

假设处理器X使用BAR2寄存器映射处理器Y的存储器地址空间,BAR2寄存器使用DS Memory 2 Translated Base来将来自Primary PCI总线的访问转换为对Secondary PCI总线地址空间的访问。整个访问过程如下:
1. 首先处理器X访问在处理器X域中,且与非透明桥的BAR2空间相对应的存储器地址空间。
2. HOST主桥将进行存储器域到PCI总线域的转换,并将这个请求发送到Primary PCI总线上
3. 非透明桥发现这个数据请求发向BAR2地址空间,则接收这个数据请求,并在桥片中暂存这个数据请求
4. 非透明桥根据DS Memory 2 Translated Base寄存器的内容,进行地址转换。假设其基地址预先设为0x1000-0000。
5. 经过非透明桥的转换后,这个数据请求将穿越非透明桥,从Primary PCI总线域进入Secondary PCI总线域,访问处理器Y的基地址为0x1000-0000的存储器区域。
6. 处理器Y的HOST主桥将接收这个存储器访问请求,并最终将数据请求发向处理器Y的存储器中。

阅读(1327) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~