3.2.2 总线周期时序
在IA-32结构处理器中,数据传输周期指在总线上传输一个数据项所需要的时间,数据项的宽度最高为数据线的宽度。对于64位的数据总线,一次传输的数据项宽度为8字节,该数据项可传入处理器,也可来自处理器。
总线周期是指从处理器驱动地址和总线周期定义信号(如)开始,到总线所希望的最后
应答有效,总线周期结束为止。一个总线周期可能包含1~4个数据传输周期。IA-32结构处理器所能产生的所有总线周期如表3-1所示。
其中,查询周期可能由系统逻辑启动,迫使处理器执行,所有突发周期都是可以被高速缓存的,而所有被高速缓存的读周期都是可突发传输的。
突发周期指具有连续的4个数据传输周期的一次总线周期。总线操作指完成一次独立功能的总线周期序列过程,如一次锁定的读、修改、写周期或中断响应周期。
表3-1 IA-32处理器所能产生的总线周期
注:当=0或PCD=1时,任何周期间Cache将不会有效。
1.存储器读写周期
在微处理器启动一次总线周期时,如果总线周期定义接口信号的,说明启动的总线周期是存储器访问周期。若接口信号W/R——=1,为存储器写周期;
,则为存储器读周期。8086的存储器读写周期由4个T组成,如图3.4所示。IA-32处理器的存储器读写周期通常由2个T构成。
(1)单次传输周期
单次读写周期由2个T构成,在T1期间,CPU驱动地址锁存信号有效,同时还驱动其他总线周期并定义信号和地址信号。
有效表明总线周期中的地址编码信息已经稳定地输出到地址总线AB上。在单次传输周期中,CPU在T1期间还输出
无效,说明该周期不可高速缓存,是一次单次传输周期。
在T2期间,如果存储器或I/O设备速度足够快,系统逻辑能及时返回有效应答信号,在T2的上升沿CPU采样
,若
则将数据驱动到数据总线DB,完成一次存储器读写操作。单次存储器读写周期时序如图3.9所示。
在图3.9中,DP为奇偶校验信号,为校验结果输出信号。根据存储器或I/O设备的响应速度,在T2期间如果系统没准备好驱动或接收数据,
,处理器自动在T2状态之后再插入一个T2(与8086的Tw相同),等待与存储器或I/O设备的同步,如图3.10所示。
图3.9 单次存储器/IO读写周期
图3.10 插入T2的单次存储器/IO读写周期
在单次传输中,要结束总线周期,系统逻辑必须提供信号,如果CPU采样到
,将连续插入T2等待直到
为止。
(2)突发读周期
由于处理器所执行的程序和处理的数据在存储器中存放的顺序性、连续性和大规模性,可能要求处理器从存储器中一次取出多个数据,因此处理器设计了适应多个数据传输的专门总线周期——突发周期。突发周期包括突发读和突发写周期,突发周期一般针对存储器,不能对I/O端口进行突发访问。
在突发周期中,处理器能够在连续的时钟状态内连续采样或驱动多个数据项,突发周期一般由5个T状态T1、T2、T2、T2、T2组成。在T1状态,CPU给出地址,在后续的4个T2状态分别连续驱动或采样4个数据项。在突发周期取得或驱动4个数据项之前,每次都必须采样并判断信号有效,否则就插入等待状态T2。当CPU启动突发周期后,还需要外部系统逻辑配合,即在CPU给出突发周期的第一个地址后,后续的3次地址由外部系统逻辑计算给出。
突发读周期时序如图3.11所示。在T1期间,CPU输出地址锁存信号有效,启动第一个总线周期,同时还输出地址和其他突发读周期相关信号,如
,
等。
图3.11 IA-32处理器突发读周期时序
在T2期间,CPU采样和
,CPU采样并判断
有效后,在下一时钟直接转入T2,再次采样
,执行一次32字节的读周期。在整个突发读周期中,CPU需4次采样、判断
信号。
(3)突发写周期
在突发写周期中,CPU忽略信号,用
信号来判断外部写缓冲器是否为空。如果此时
信号有效,则该突发写周期是一个回写周期。IA-32处理器的突发写周期时序如图3.12所示。
图3.12 IA-32处理器突发写周期时序
IA-32处理器在下列情况下需要执行回写周期:
① 替换数据Cache中的修改行;
② 在查询周期中,命中了数据Cache中的修改行;
③ 在一次内部监听中,命中了数据Cache中的修改行;
④ 在有效时,数据Cache中存在修改行;
⑤ 在执行指令WBINVD时,数据Cache中存在修改行。
在当代CPU中,回写周期可以被高速缓存,除回写周期外,其他写周期一般都是单次传输写周期。
(4)流水线突发读周期
流水线突发读周期与突发读周期类似。在流水线突发读周期执行中,当处理器第一次采样并判断信号有效时,还要采样并判断
信号是否有效。
信号有效说明系统逻辑要求处理器尽早输出下一地址(一次流水线传输请求),不需等待当前总线周期完成,处理器就开始为下一总线周期输出
信号和其他相关信号。流水线周期主要用于减少周期与周期之间的后台时间Ti。系统逻辑输出
有效后,在延迟两个时钟,处理器开始启动下一总线周期。
当处理器采样并判断信号有效时,由于当前总线周期还未完成,处理器所启动的下一总线周期为等待执行周期。如果
此时再变为无效,则等待执行周期仍然将被启动。图3.13为流水线方式进行两次突发读周期的时序。其中,T12既作为第一个突发周期的第三个有效T2(第一个T2为等待状态),又作为下一突发读周期的T1状态。在T12期间,CPU采样、判断当前突发读周期的第三次
信号和第三个数据项,输出
启动下一突发读周期和为下一突发读周期输出地址和其他相关的周期信号。
T12后的T2P期间,由于当前突发读周期还未完成,为了防止总线冲突,被启动的下一突发周期转入等待执行周期。T2P作为前一突发周期的一个T2状态,用于完成其最后一个数据项的采集,T2P后的第一个T2状态即为该突发读周期的第一个数据采集状态。
图3.13 两次流水线突发读周期时序
2.总线周期过渡
若前后相邻的在线总线周期类型相同,从前一周期转入后一周期时,可直接以流水线的方式进行。但若前后相邻的在线总线周期类型不同,从前一周期以流水线方式转入后一周期时,处理器将在两个周期之间插入一个静止时钟TD,以完成总线切换。这种前后相邻的总线周期也称为背对背传输的总线周期,如图3.14所示为以流水线方式进行的背对背读和写周期。
图3.14 流水线式的背对背传输读和写周期
3.I/O读写周期
当处理器执行一条I/O指令(如IN或OUT)时,将启动针对I/O端口的访问周期,如图3.15所示为一次I/O读周期和其后的I/O写周期时序。在I/O周期执行期间,处理器输出
图3.15 I/O读和写周期
在I/O读周期中,处理器首先输出信号有效,启动第一次总线周期。在
无效后的每个脉冲边沿采样并判断
信号,若
则插入一个T2时钟,若
则读取数据,完成I/O总线周期。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。