【www.hzclsc.cn--深度阅读】
母线命令由地址周期时C/BE[3:0]#编码来定义。
母线命令有中断响应、特殊周期、i/o读、i/o写、存储器读、存储器写、配置读、配置写、存储器多行读、双重地址周期(DAC)、存储器行读、存储器写和无效。
中断响应:中断响应是个读命令,采用隐含方式向中断控制器寻址。地址周期地址位是逻辑位,返回的中断向量的长度由使能信号表示。
特殊周期:作为pci上的简单的信号广播机构,当边带信号需要传达时,特殊周期作为一个
可供选择的物理信号。
i/o读:从被叫映射的i/o地址空间读取数据。使能位表示传送字节的尺寸并且和地址位一致。
i/o写:从被叫映射的i/o地址空间写入数据。使能位表示传送字节的尺寸并且和地址位一致。
存储器读:从被叫映射的存储器地址空间读取数据。如果读操作没有边界影响,被叫能够为存储器
读做预先的读操作。而且存储器读在pci传送结束后要保证在临时缓存中保留的任何数据的
一致性(包括顺序)。在任何同步事件通过这条通道之前,这些缓存必须无效。
存储器写:从被叫映射的存储器地址空间写入数据。当被叫返回“ready”,主叫确信数据头部分的一致性,返回和确认操作既可以由存储器写命令同步进行,也可以由植入缓存的软件执行,返回和确认操作之后,同步事件通过该通道。上述表明,使用存储器写命令之后,主叫能立刻处理同步事件。
配置读:从每个中间设备的配置空间读取数据。当IDSEL被置位且AD[1::0]=00时,一个
中间设备被选中进行配置通道。在一个配置周期的地址时期,AD[7::2]寻址每一个终端设备的配置空间的64位寄存器;AD[31::11]是逻辑位与被选中的中间设备无关。AD[10::8]表示中间设备对中断设备的寻址。
配置写:从每个中间设备的配置空间传送数据。当IDSEL被置位且AD[1::0]=00时,一个
中间设备被选中。在一个配置周期的地址时期,AD[7::2]寻址每一个终端设备的配置空间
的64位寄存器;AD[31::11]是逻辑位与被选中的中间设备无关。AD[10::8]表示中间设备
对中断设备的寻址。
存储器多行读:等同于存储器读。主叫在断开连接前尽可能读取更多的缓存,只要FRAME#置位,存储器控制器将继续存储器的流水线作业。这个命令通常用于大量连续的数据传送,存储器系统通过连续地读额外地缓存实现其执行优势。
双重地址周期(DAC):支持64位寻址,用于传送64位地址给终端设备,但地址空间不得
大于4GB。支持32位寻址的被叫对此条命令无效。
存储器行读:等同于存储器读。主叫取一个完整的缓存。这个命令通常用于大量连续的数据传送,存储器系统通过读缓存边界响应单个存储器周期的请求,以实现其执行优势。存储器读命令下,任何同步事件通过通道之前,预取缓存必须无效。
存储器写和无效:等同于存储器写。保证一个完整缓存的最小传送。注意:此条命令在数据周期内,要求所有的使能位置位。主机允许传送穿过缓存边缘以准备传送下一条线。这条命令需要主的配置寄存器指示缓存尺寸,通常用于线性突发序列里。命令允许去除后台
写周期中线路来优化执行,以缩短存取时间。
所有的pci设备(母线桥除外)都必须作为被叫来响应配置读/写命令。其他命令可选。
主叫有能力支持数据块操作的命令(存储器写和无效、存储器行读、存储器多行读),
而主机不能执行数据块操作的命令就使用存储器读或存储器写。
在一个地址范围内读(该范围没有边界影响)或单独读一个双字节用存储器读命令。
在一个预取地址空间读多个双字节一直到下一个缓存边界用存储器行读命令。
在一个预取地址空间读数据块用存储器多行读命令。
被叫也同样处理读命令,只是它们不会为缓存内第一个双字节寻址。
使用存储器读命令,桥只获得主机请求的数据。(桥不能多读是因为不知道下一个数据周期所需要的位数)而获得的数据只有在数据周期结束后才能够使用。
主机保证对存储器行读和存储器多行读的地址范围的预取,所以桥能获得比主叫请求更多的数据。这个进程增强了系统的性能,主叫也获得更多的单一双字节。
存储器多行读允许桥在主叫之前预取数据,从而提升突发传送的机会。
pci基本的母线传送机制是突发。一个突发由一个地址周期和一个或若干个数据周期组成。
pci支持内存地址空间和i/o地址空间的突发。
FRAME#由主叫驱动,表明传送的开始。
IRDY#由主叫驱动,表明准备传送数据。
TRDY#由被叫驱动,表明准备传送数据。
FRAME#和IRDY#没有置位时,接口处于空闲状态。FRAME#置位后的第一个时钟边沿就是地址
周期,地址和母线命令在这个时钟边沿被传送。IRDY#和TRDY#同时置位后,数据在主叫和被叫之间传送。主叫或被叫的IRDY#和TRDY#之一没有置位,等待时钟将被插入数据周期内。
当数据无效时,数据资源必须无条件的指定xRDY#信号线。接收的中间设备不打算接受数据时,中间设备将延时对xRDY#的指定,此时被叫和主叫必须迎合这些潜在的要求。
一旦主叫指定了IRDY#,主叫将不能更改IRDY#和FRAME#,直到不管TRDY#的状态,当前的
数据周期结束。一旦被叫指定了TRDY#和STOP#,被叫将不能更改DEVSEL#、TRDY#、STOP#,
直到当前的数据周期结束。数据传送与否不取决于TRDY#的状态。
主叫完成数据传送之后,FRAME#没有置位且IRDY#被置位,表明主叫准备好。而后TRDY#被置位,被叫准备结束最后的数据传送,接口返回空闲状态,FRAME#和IRDY#没有置位。
pci定义三种物理地址空间:存储器地址空间、i/o地址空间、配置地址空间。
存储器地址空间和i/o地址空间是用户使用的。配置地址空间是定义pci硬件配置的。
pci的被叫利用基地址寄存器存取内部寄存器和功能来实现操作。配置的软件利用基地址寄存器测定一个终端设备在给定的地址范围内需要多少空间,将如何分配。
终端设备寻址空间:
终端设备请求将内部寄存器映射到存储器空间而不是i/o空间。在pc系统中,i/o空间被限制且分割,以后分配变得更困难,然而使用这些空间是允许的。不支持i/o空间的系统允许终端设备请求存储器空间取代请求i/o空间。终端设备能将内部寄存器映射到寄存器空间和可选择
的i/o空间(这两个空间对应两个基地址寄存器)。系统配置软件将分配空间给每一个基地址寄存器。当中间设备被调用,它将决定哪些地址空间用来存取终端设备。如果首选i/o空间,那么i/o基地址寄存器被初始化驱动器将使用i/o地址空间指派的i/o母线传送,否则,驱动器将请求使用存储器基地址寄存器定义的存储器空间进行存取。
注意:两个基地址寄存器指向同一个内部寄存器。
每一个中间设备都有自己的地址编码。pci支持两种地址编码方式:正极和负极。
正极编码:每一个终端设备在指定的地址范围内寻找通道时,正极方式比较快。
负极编码:母线上的仅有一个设备接收通道而其他中间设备不能肯定编码接收,此时采用负极方式
本文来源:http://www.hzclsc.cn/anzhuo/29091.html