1. outstanding 与out-of-order
正常情况下的master与salve的操作是:
读操作:master发送read addr,slave返回data,然后master发送下一笔read addr,salve返回下一笔data;
写操作:master发送write addr和data,salve返回response,然后master发送下一笔write addr和data,slave再返回下一笔response;
当支持outstanding时,master可以不等slave的返回response就可以发送下一笔操作,让数据在互联中排队(排队的数据数量根据设置的buffer缓冲来确定);
Out-of-order则是,对于多个从机,返回的response可以不安master访问的顺序,慢的可以快,快的可以慢。
Outstanding 是针对master的发送,out-of-order则是针对slave的返回。
2. Out-of-order传输的好处
乱序传输可以从两方面提升系统性能:
- 当有多个salve时,内部互联允许快速响应的slave优先慢速响应的slave;
- 不同从机返回的数据可以乱序,如后访问的数据可能会比先访问的数据来的早;
如果master要求返回的数据必须按照他们访问的顺序来返回,则必须使用相同的ID。如果master不要求按顺序返回数据,则可以通过使用不同的ID来实现乱序传输。
也就是说乱序不乱序的实现是通过master的访问ID来进行控制的,同一个ID必须按照顺序。
3. Burst address(4k)
Burst传输不能跨域4k边界:
burst传输不能跨越4k边界,是为了避免一笔burst交易访问两个slave(每个slave都是4k对齐),在aix协议中slave的地址空间最小为4k,如果一笔burst传输访问大于4k,则可能会造成地址从slave1增加了slave2上,slave2又不响应,导致传输无法完成。在AHB中为1k对齐的方式。那么需要设置burst传输时:length*size*8<=4k
所谓的4k边界是指低12bit为0的地址,例如32’h0000_1000,32’h0000_2000,这些特殊的边界称为4k边界。同理1k边界是指低10bit为0。
4k对齐的原因是系统定义一个page的大小是4k。为了更好的访问,就给slave划分的空间是4k。以32位为例,[31:11]相同地址都属于同一个page,没有夸4k边界,即[11:0]可以为0~0xfff。0x1000与0x1fff就没有垮4k边界,0x1fff与0x2000就垮了4k边界。