PCI总线学习(三)---> PCI总线命令

幻灯片 15

 

 

PCI 命令有4bits,分为IO操作,memory操作,配置操作以及其他操作。

 


幻灯片 16

 

 

各个设备的中断引脚会通过router连到中断控制器的IRQ输入上,当有设备发出中断请求时,中断控制器会通过INTR线发信号给处理器,处理器收到信号,如果是X86处理器会产生两次IA bus cycle,host/PCI bridge收到处理器命令,会发两次IA transaction到中断控制器,第一次是命令,中断控制器将同时发出的IRQ请求分个优先次序,选择要处理的请求,第二次要求中断控制器返回中断向量,处理器得到中断向量后,到内存中的中断表中去读取相应的中断服务起始地址,从而转到中断服务程序进行服务。P6处理器之后产生一个IA bus cycle,host/PCI bridge收到这个IA后会产生两次连续IA到中断控制器,模拟X86处理器行为。

 

幻灯片 17

 

 

 

幻灯片 18

 

 

 

幻灯片 19

 

 

当target收到Special Cycle命令时,它不会assert DEVSEL# 信号,此时减解码桥如果发现没有target通过assert DEVSEL#信号来claim transaction,也不会将transaction传到扩展总线上。

 


幻灯片 20

 

 

address phase阶段,由于目标为总线上的所有的设备,所以AD信号不是一个合法的地址,只是一个stable pattern, C/BE信号为special cycle命令。Data phase阶段,AD线上为相应的消息,当传shutdown和halt消息时,byte enable信号为BE#[1:0]enable,而X86-specific message时是BE#[3:0]enable。

 

幻灯片 21

 

 

使用MWI命令的bus master必须实现cache line Size寄存器,使用MR,MRL,MRM命令的bus master推荐实现cache line Size寄存器。如果没有实现,则默认16或者32bytes。

 


幻灯片 22

 

 

 

幻灯片 23

 

 

假设处理器往prefechablememory中的buffer1中写入了数据,并指示bus master经过bridge去读取并处理这部分数据。Bus master用MRL或者MRM命令去读取数据,bridge看到这个命令开始进行数据预取,预取的数据可能超过了buffer1的界限,到了buffer2中。假设bus master读完有用的数据后,bridge没有丢弃bus master没用到的数据。那么下一次处理器又在buffer2区域写入数据并指示bus master去读取并处理这部分数据,此时,bus master看到bridge中有buffer2的数据,就会直接读之前预取的数据,而这部分数据并不是最新的数据。

 

幻灯片 24

 

 

问题:主存中的一段cache对齐的数据在cpu的cache中被修改,之后,某个bus master又要更新相同的一段数据,这时一种方法是host/PCI bridge先把modified line中的数据写到主存中,再将bus master中最新的数据写到主存中。效率低。可以用WMI命令。当bus master用WMI命令向主存写入数据时,说明bus master保证写入的是一个完整的cache line,这时,host/PCI bridge可以立即接受master的line数据给来更新主存对应的数据。处理器只要将对应的modified line设为无效就可以了,效率更高。用memory write命令不行,因为memory write命令不知道会写入多少数据。

 

幻灯片 25


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值