PCI Express体系结构导读笔记之桥和中断的基础知识

电子说

1.2w人已加入

描述

看完两章后感觉此书干货很多(有时候觉得废话也挺多),特别是关于桥的配置/bus号/device号的分配过程的描述的比较详细。

要点:

  1. PCI设备能直接使用的地址是PCI总线域的地址,处理器能够直接使用的是存储器域的地址,PCI主桥负责在这两种地址之间转换。当然为了方便管理,可以把这两种地址设置为相同的值(如果是I/O地址,则一定相同)。
  2. 每一条PCI总线上都有一个总线仲裁器,每一个PCI主设备都有独立的总线仲裁信号,并与PCI总线仲裁器一一相连。可见一条PCI总线可以挂接PCI主设备的数目,除了与负载能力相关外,还和仲裁器能够提供的仲裁信号数目直接相关。某PCI主设备使用PCI总线进行数据传递时,首先置REQ#信号有效,向PCI仲裁器发出申请,如果仲裁器允许PCI主设备获得总线使用权,则将相应GNT#信号置为有效。之后此PCI主设备就获得了总线使用权,可开始数据通信。
  3. 如果感觉CPU写PCI设备时速度低,考虑检查是否是Posted传送方式(只支持存储器空间写请求)。
  4. 如果感觉各设备相互影响,PCI总线利用效率低,考虑Non-Posted传送方式(一般用于存储器空间读请求、IO/读写请求、配置读写请求)下是否支持了Split总线事务。
  5. PCI桥一般都没有私有寄存器,操作系统也不需要为PCI桥提供专门的驱动程序,这也是这类桥被称为透明桥的原因。(俺觉得这并不表示桥不需要配,只是不需要用户写驱动,因为它是被内核自带的PCI总线驱动配置的)

关于中断,下表为PCI桥规范推荐使用的建立下游PCI设备的INTx信号与上游PCI总线INTx信号之间的映射关系。

PCI设备INTx#信号与PCI总线INTx#信号的映射关系

设备号 PCI设备的INTx#信号 PCI总线的INTx#信号
0, 4, 8, 12, 16, 20, 24, 28 INTA# INTA#
INTB# INTB#
INTC# INTC#
INTD# INTD#
1, 5, 9, 13, 17, 21, 25, 29 INTA# INTB#
INTB# INTC#
INTC# INTD#
INTD# INTA#
2, 6, 10, 14, 18, 22, 26, 30 INTA# INTC#
INTB# INTD#
INTC# INTA#
INTD# INTB#
3, 7, 11, 15, 19, 23, 27, 31 INTA# INTD#
INTB# INTA#
INTC# INTB#
INTD# INTC#

我画了个简化版的映射关系图,适合最常见的场景,只有一层桥,所有设备只使用INTA。很明显,这样映射的主要好处就是负载均衡。

i/o

明天继续阅读PCI总线的数据交换部分,一些硬件细节应该可以跳过,希望尽快进入软件相关章节。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分