仅对英特尔可见 — GUID: nik1412467942812
Ixiasoft
3.5.4.1. 可变延迟的流水线读传输(Pipelined Read Transfer with Variable Latency)
采集地址和控制信号后, Avalon® -MM流水线agent需要一个或多个周期来生成数据。流水线agent可以在任何给定时间有多个待定读传输。
可变延迟流水线读传输:
- 需要一个额外信号,readdatavalid,指示读数据何时有效。
- 包括与非流水线读传输相同的一组信号。
agent必须按照接受读命令的相同顺序返回readdata。具有可变延迟的流水线agent端口必须使用waitrequest。agent可以通过置位waitrequest来停止传输,以保持一个可接受数量的待定传输。agent可以通过置位readdatavalid将数据传输到host,而不用考虑agent是否通过waitrequest来暂停一个新命令。
注: 待定传输的最大数量是从接口(agent interface)的一个属性。互连架构使用此数量来构建逻辑,将readdata布线到请求的host。从接口(而非互连架构)必须跟踪待定读取的数量。agent必须置位waitrequest以防止待定读取的数量超过最大数量。如果agent有waitrequestAllowance > 0,那么agent必须尽早地置位waitrequest,以便待定传输总数(包括在waitrequest置位期间接受的那些数量)不超过指定的待定传输的最大数量。
图 12. 可变延迟的流水线读传输(Pipelined Read Transfers with Variable Latency)
下图显示了几个agent读传输。通过可变延迟使agent流水化。在此图中,agent最多可接受两个待定传输。agent使用waitrequest来避免超过这个最大值。
此图中的编号标识了以下转换:
- host置位address和read,启动一个读传输。
- agent捕获addr1。
- agent捕获addr2。
- 由于agent已经接受最多2个待定读取,因此agent置位waitrequest,从而导致第三个传输停止。
- Agent置位data1,即对addr1的响应。agentjiechudata1,即对addr1的响应。agent解除置位waitrequest。
- agent捕获addr4。互连捕获data2。
- agent捕获addr4。互连捕获data2。
- agent驱动readdatavalid和readdata以响应第三次读传输。
- Agent驱动addr5。互连捕获data3。read信号被jiechuaddr5。互连捕获data3。read信号被解除置位。waitrequest的值不再相关。
- interconnect采集data4。
- agent驱动data5,并置位readdatavalid,完成最后待定读传输的数据阶段。
如果agent在处理待定读传输时无法处理写传输,那么agent必须置位waitrequest,并且停止写操作,直到完成待定读传输。在agent接受对与当前待定读传输相同地址的写传输的情况下, Avalon® -MM规范没有定义readdata的值。