zoukankan      html  css  js  c++  java
  • Bus,Exclusive access,memory attribute

    指令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中也保存最新的值。            

  • 相关阅读:
    Querying for Event Information
    通过注册表查询 .Net Framework 的版本
    [Batch脚本] if else 的格式
    逆天技能
    财运是靠自己争取的,而财商是可以通过后天学习提高的
    必须冒着可能付出惨痛代价的风险前进,否则你就只能永远做个井底之蛙
    财商低的六种表现
    中国大唐集团公司 主要经营范围
    中国大唐集团公司是2002年12月29日在原国家电力公司部分企事业单位基础上组建而成的特大型发电企业集团
    中国大唐集团公司在役及在建资产分布在全国31个省区市以及境外
  • 原文地址:https://www.cnblogs.com/-9-8/p/4654294.html
Copyright © 2011-2022 走看看