博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bus,Exclusive access,memory attribute
阅读量:6573 次
发布时间:2019-06-24

本文共 2628 字,大约阅读时间需要 8 分钟。

指令LDREX,STREX是在armv6中新加的指令,配合AMBA3--AXI中的lock[1:0]信号。

在Atomic Access一节中是这么规定的:ARLOCK[1:0]/AWLOCK[1:0]信号为2'b00-------Normal access

                                                    ARLOCK[1:0]/AWLOCK[1:0]信号为2'b01-------Exclusive access

                                                    ARLOCK[1:0]/AWLOCK[1:0]信号为2'b10-------Locked access   

 

exclusive的操作相对于lock操作的优点是:只根据返回的resp来确定原子操作是否正确,不会影响interconnect的性能。

 

对于Exclusive access,从slave的角度来看,首先slave必须支持Exclusive的访问,具体slave必须有一些monitors 来记录收到exclusive访问时的,

                               ARID/AWID,ARADDR/AWADDR,ARSIZE/AWSIZE,ARLEN/AWLEN。总之必须保证访问的master和地址完全的一致。

                                其中的ARID/AWID由arm core来决定,如果是core0,ARID/AWID一般就是0。

从master的角度来看,master要发出一个exclusive的访问必须,先发出exclusive read后再发出exclusive write来完成一次exclusive的访问。

                               1)对于exclusive访问,正确的response是EXOKAY。而由于有的slave不支持exclusive的访问后直接忽视掉lock信号,此时就会

                                  返回OKAY信号。

                               2)在exclusive read之后,slave仍可在该地址接收normal write,此时如果exclusive指定的地址中的数据已经改变,则slave不

                                 会再下次exclusive write的时候,返回EXOKAY,取而代之会返回OKAY,表示出错了,此时write的值也不会写入。

                               3)在一次exclusive read会后,可以不等exclusive write,直接再发出exclusive read,这样slave monitor的地址就会改变,

                                 相当于发起一个新的exclusive操作。

exclusive的操作,不能是cache的属性。

在slave端,monitor的最小的地址是length*size,同样也可以monitor一个比这个乘机更大的地址空间,但是这样可能会使本来正确的

exclusive access却报出了错误。

 

对于lock操作,主要需要interconnect保证只有特定ID的master可以访问一个特定的slave地址,直到同一ID的master发出一个unlock的操作接收到。

                    一个master可以开始一个read/write的lock sequence,但这时必须保证没有其他的outstanding的transaction等待完成。

                    当一个master开始一个lock的transaction时,必须保证没有其他的locked的transaction还没有完成。  

 

                    master必须保证一个locked transaction sequences中,最多只有两个transaction,同时在lock操作的过程中,

                    所有的transaction都必须是同样的ID,一个lock的sequence,以最后一个unlock的transaction结束。ARLOCK/AWLOCK信号无效。

              

LDREX和STREX指令可以用在多个处理器和共享内存系统之间,实现进程间的通信。

LDREX表示从储存器加载数据,相当于读操作,

                    如果该物理地址有共享TLB属性,则LDREX会将该物理地址标记为由当前处理器独占访问,并且清除该处理器对其他任何物理地址的任何独

                                                              占访问标志。然后将该物理地址标记为一个未完成的exclusive访问。

                    如果该物理地址没有共享TLB属性,直接将该物理地址标记为一个未完成的exclusive的访问。        

                          void ldrex32(WORD addr, WORD *data)

                             {   asm("ldrex r2, [r0]");     asm("str  r2, [r1]");   }

STREX表示向存储器储存数据,相当于写操作,

                    如果该物理地址没有共享TLB属性,如果该执行处理器中有一个已标记未访问完成的exclusive操作时,STREX会进行储存,result返回0。

                                                                 如果该执行处理器无一个已标记未访问完成的exclusive操作时,STREX不会进行储存,result返回1。

                    如果该物理地址有共享TLB属性,如果该执行处理器中有一个已标记独占访问的未访问完成的exclusive操作时,STREX会进行储存,

                                                                 result返回0。

                                                              如果该执行处理器中无一个已标记独占访问的未访问完成的exclusive操作时,STREX不会进行储存,

                                                                 result返回1。

                          void strex32(WORD addr, HALF data, WORD *result)

                             {   asm("strex r3, r1, [r0]");     asm("str  r3, [r2]");   }

                                      

AXI中的memory attribute属性,由AxCache信号来指定,0-3bit分别代表Bufferable,Cacheable,Read Allocate,Write Allocate。

    AxCache[0],Bufferable,只针对写操作,表示interconnect,或者其他类似component,可以先返回resp,之后再

        写向final distination。

    AxCache[1],1) 与RA,WA配合,控制cache;

           2) 表示transaction的属性,可以在中间被更改,对于write操作,很多的write操作可以进行merge。

                                对于read操作,表示该地址可以被prefetch。       

    AxCache[2],Read之后更新到cache line中。

    AxCache[3],Write的时候,cache line中也保存最新的值。            

转载地址:http://szljo.baihongyu.com/

你可能感兴趣的文章
限制input输入类型(多种方法实现)
查看>>
redmin3 忘记管理密码找回方法
查看>>
Openresty 学习笔记(三)扩展库之neturl
查看>>
ubuntu 查询cpu个数
查看>>
Java消息队列
查看>>
关于android性能,内存优化
查看>>
Tomcat 优化和性能监测
查看>>
用例不全,质量如何保证?
查看>>
Word邮件合并制作上百份薪酬变动通知书及日期格式处理技巧
查看>>
程序员最常说的那些口头禅
查看>>
两款新iPhoneX终于要开始生产了,网友的反应却出人意料
查看>>
帕雷诺的个展“共此时”在沪开幕 体验真实与虚妄的交错人生
查看>>
每天多采一半油!中东联手中国阿里云的研究有望降低国际油价
查看>>
左耳朵耗子:聊聊分布式系统架构
查看>>
黑莓:一家把未来押宝无人驾驶的老牌手机厂商
查看>>
用了10年海尔家电,青岛一音乐老师为海尔写了1首歌
查看>>
趣谈新春年俗:古代过年为啥要贴门神像?
查看>>
接触网作业车司机许新峰的春运
查看>>
调查:受经济危机影响 巴西民众搬家意愿提升
查看>>
2018年内蒙古孕产妇、婴儿死亡率实现双下降
查看>>