• ERAT读和写指令(eratre和eratwe)


     ERAT管理指令

    为了使hypervisor(或 “bare-metal” operating system)软件可以直接操作ERAT的entries,在A2 core中实现一组nonarchitected的ERAT管理指令。为了防止user和guest模式下的程序影响TLB地址转换和访问控制机制,所有的ERAT管理指令都是hypervisor privileged。

    ERAT读和写指令(eratre和eratwe)

    ERAT entries通过eratre和eratwe进行读写操作。因为一个ERAT entry位数大于64bit,需要执行多条eratre和eratwe指令来transfer所有的ERAT entry信息。一个ERAT entry由ERAT word 0和ERAT word 1两部分组成。eratre和eratwe指令的RA段标记GPR,该GPR的低位用于index要被读写的ERAT entry。立即数字段(WS)指定ERAT的Entry中哪个word被传递(即,WS = 0指定ERAT字段0,以此类推)。最后,被选ERAT word的内容传输到指定的target或source GPR(the MMUCR0 GS,TS,TID,ExtClass,和TID_NZ fields, for TLB word 0; see Figure 6-3)。

    在以前的嵌入式实现中,在更新ERAT的entrie时需要注意软件顺序和软件锁情况,因为对多个entry(等于或大于2个)进行更新。在A2设计中,每个ERAT cache包括4个(每个线程1个)64-bit RPN寄存器,这些寄存器在RPN写后更新(WS=1)。当WS=0(EPN部分)时执行eratwe时,ERAT entry的两部分都会被原子地更新。写入entry中RPN部分的数据是最新的RPN寄存器数据。

    每个EART word的field如图6-3所示。这些bit numbers表示与ERAT field对应的目标bits或source GPR。注意,ERAT word 0的GS、TS、TID、ExtClass和TID_NZ的field分别与MMUCR0[TGS]、[TS]、[TID]、[ECL]和[TID_NZ]的field对应,而不是与target或source GPR对应。

    执行eratwe时,硬件计算出的parity会记录在entry中。如果parity位存储的particular word被eratre读取,表明parity error,将产生parity错误机器检查异常。See Section 6.13.1 Parity Errors Generated from tlbre or eratre on page 230 for more information about parity operation。

    图 6-3 ERAT Entry Word的定义 

    RPN22-31:Real page number MSBs (4 GB base real address). Reset value is specified by boot configuration ring. 

    1000000000表示:210

    RPN32-51:Real page number LSBs (4 KB real page number offset). Reset value is specified by the boot configuration ring.

    10000000000000000表示:216=64k

    E:Reset value of endian storage attribute is specified by the boot configuration

    ring.

    VF:Virtualization fault

    UX:User mode execution access

    SX:Supervisor mode execution access

    UW:User mode write access

    SW:Supervisor mode write access

    UR:user mode read access

    SR:supervisor mode read access disabled/enable

    ========

    EPN:effective page number

    TID:Processor Thread ID

  • 相关阅读:
    MySql什么时候表锁or行锁?
    TypeScript核心
    【boost网络库从青铜到王者】第七篇:asio网络编程中的异步echo服务器,以应答为主
    段码屏学习
    代码随想录算法训练营day60|84.柱状图中最大的矩形 |完结撒花~
    免费SSL证书和付费SSL证书的区别在哪儿?
    [题]P1150 Peter 的烟 #数学推导
    【docker】网络模式管理
    基于微信小程序的懒人美食帮外卖订餐设计与实现(亮点:多角色的订餐系统、最贴近现实的小程序)
    Layui + Flask 使用(01)
  • 原文地址:https://blog.csdn.net/qianniuwei321/article/details/126814119