PCI总线命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PCI总线命令
总线命令是由通过仲裁获得总线控制权的主设备发给从设备的,说明当前传输事务的类型。总线命令出现于地址相位的c/BE#[3~0]#线上并被译码。这里所说的从设备,是指在c/BE#[3~0]上出现命令的同时被AD[31~00]线上的地址选中的设备。
表9.4给出了总线命令编码及类型说明,命令编码中的1表示高电平,0表示低电平。
下面对总线命令作简要说明:
①中断应答命令实际是让PCI总线运行一个中断响应周期,获取提出中断请求的设备的中断向量。注意到8259A的中断响应为双周期,因此,桥电路应把处理器的双周期格式变换成PCI上的单周期格式(将处理器送出的第一个中断应答信号丢掉即可)。
②特殊周期命令为PCI提供了一个简单的信息广播机制,可用来报告CPU的状态,当需要进行PCI设备间的边带通信时,它还可替代物理信号。特殊周期不包含目标地址,以便发给所有的设备。每个接收设备自行确定广播信息是否适合自己。
③I/O读命令用来从一个映射到I/O地址空间的设备读取数据。AD[31~00]上提供字节地址,全部32位必须完全译码,字节允许信号说明传送数据的宽度,并且必须和字节地址相对应。
④保留命令是为了将来的用途而保留的。
⑤I/0写命令用来向一个映射到I/O地址空间的设备写入数据。和I/O读命令一样,所有的32位必须译码,字节允许信号说明此次传送数据的宽度,并且必须和字节地址保持一致。
⑥存储器读命令用来从一个映射到存储器地址空间的设备读取数据。如果从设备能保证无副作用产生,则它可以为该命令进行预先读取。但从设备必须保证本次PCI传输之后保存于临时缓冲区中的数据的一致性(包括数据次序)。在任何同步操作(如修改I/0状态寄存器或存储器标志)通过此存取路径之前,这个缓冲区必须保持无效。
⑦存储器写命令用来向一个映射到存储器地址空间的设备写入数据。如果从设备返回“准备好”信号,表明它已经准备对所涉及的数据的一致性(包括次序)管理。该命令的实现
可采用完全同步的方式或采用其他方式,但要确保在进行经由该存取路径的同步事件(如修改I/O状态寄存器或存储器标志)之前所有的软件透明入出缓冲区(Posting Buffer)被清除,这意味着主设备在使用了该命令后可以立即启动一个同步事件。
⑧配置读命令用来读取设备的配置空间中的数据。如果一个设备的IDSEL有效且AD[1~
0]=00时,则该设备被选定为配置读命令的目标。在配置读命令的地址相位中,AD[7~2]用来寻址设备配置空间的64个双字寄存器中的一个,AD[10~8]表明多功能设备中哪个设备被选中,AD[31~11]无意义。
⑨配置写命令用来向设备的配置空间写入数据。写配置的寻址与读配置相同。
⑩存储器多行读命令和存储器读命令基本相同,不同点在于它还有一个附加功能,即主设备试图在连接断开之前读取多行Cache数据。只要FRAME#有效,存储器控制器就不断地以流水线方式发出存储器请求。该命令用来传输大块的连续数据。如果有一个对软件透明的缓冲器来暂存数据,则顺序地预读一个或多个Cache行可使存储器的某些性能得以提高。
⑩双地址周期命令用来给64位寻址的设备传送64位地址,该地址不在低4 GB空间内。只支持32位地址的设备不得以任何方式对该命令作出反映,只能把它当作保留命令。
⑩存储器读行命令和存储器读命令基本一致,不同之处在于,它还表示主设备试图读取一个完整的Cache行。该命令也用于大块顺序数据的传输。
⑩存储器写并无效命令与存储器写命令基本相同,不同点是,它要保证最小的传输量是一个Cache行,即主设备在一次PCI传输中将寻址的Cache行的每个字节都要写入。该命令要求主设备的配置寄存器指出Cache行的大小。该命令也是保证Cache一致性的措施。