当前位置: 首页 > news >正文

合肥建设厅官方网站百度站长

合肥建设厅官方网站,百度站长,自己做网站百度会收录,建筑工程水平防护网本文以Cortex-A53处理器为例#xff0c;通过访问 处理器中的内部存储单元#xff08;tag RAM和dirty RAM#xff09;#xff0c;来读取cache line 中的MOESI信息。 Cortex-A53提供了一种通过读取一些系统寄存器#xff0c;来访问Cache 和 TLB使用的一些内部存储单元的机制…本文以Cortex-A53处理器为例通过访问 处理器中的内部存储单元tag RAM和dirty RAM来读取cache line 中的MOESI信息。 Cortex-A53提供了一种通过读取一些系统寄存器来访问Cache 和 TLB使用的一些内部存储单元的机制。这个功能可以探查出当缓存中的数据与主存中的数据不一致时存在的问题。 此外A64模式和A32模式的读取方式不同 当处理器处于A64模式时先通过一些只写write-only寄存器来选择具体的cache line和内存地址然后通过只读寄存器来读取具体的tag信息。下图为相关寄存器以及相关操作指令需要注意的是这些操作只在EL3时可用如果在其他模式下使用这些指令将会进入Undefined Instruction 异常。 当处理器处于A32模式下时先通过一些只写write-onlyCP15寄存器来选择具体的cache line和内存地址然后通过只读CP15寄存器来读取具体的tag信息。下图为相关寄存器以及相关操作指令需要注意的是这些操作只在EL3时可用如果在其他模式下使用这些CP15指令将会进入Undefined Instruction 异常。 接下来本文以Cortex-A53的Data cache为例读取其某个cache line的tag信息其具体的步骤很简单分为两步 写入Data Cache Tag Read Operation Register写入的内容为具体的Set和way信息通过way index和set index来定位到想要读取的cache line。读取相应的 Data Register 0 和 Data Register 1寄存器通过对Data Register寄存器里面的数据进行解码来获取tag 信息。 其他信息比如Data cache 的data信息Instruction Cache的data或者tag信息以及TLB的data信息都可以用这种方式读取得到。 Step1将Set/way信息写入Data Cache Tag Read Operation Register 首先我们需要从一个虚拟地址VA中解析出Set index信息。 下图为Cortex-A57的4-way组相连的32KB大小的data cache结构其cache line大小也为64 bytes从图中可知一个VA可以被分成几个部分TagSet indexword index以及byte index。其中Set index VA[13:6]。 在另一个实例中32KB大小的4-way组相连data cachecache line大小为32 bytes其Set index VA[12:5] Cortex-A53的Data cache为4-way 组相连结构。假设其为32KB一个cache line的大小为64 bytes我们就可以求出该data cache中有 32 KB / 64 B / 4 2^7 128个set组也就是说至少需要7个bit才能完整解析出具体的set index。如下图所示可以通过公式 S log2(Data cache size / 4). 来计算出Set index的范围Set index VA[12:6]。 由于是4-way 组相连结构cache line 可以存在与任意一个way中所以我们的cache way可能为01,23中任意一个数字。 求得了set和way的index后需要对其进行编码然后写入到Data Cache Tag Read Operation Register寄存器中。其编码规则如下图所示只需将Set和way的值写入对应的bit中即可其中Rd[5:3]为cahche double word数据的偏移量由于本次示例是读取tag信息所以Rd[5:3]为0即可。 所以我们要写入Data Cache Tag Read Operation Register的Rd的值可以通过以下代码获取 unsigned int get_Rd_data(int * VA, way_num) {unsigned int set_way_index VA | 0x1FC0; //get way index, VA[12:6]set_way_index | way_num 30; //way_num could be 0,1,2,3 return set_way_index; }Rd中除了Set和way信息其他值均为00x1FC0为VA[12:6]全为1的情况 然后我们使用CP15寄存器将Rd的值写入假设Rd为R0 MCR p15, 3, r0, c15, c2, 0 ; r0 get_Rd_data(VA,way_num)Step2读取Data Register 1和Data Register 0数据并解码 将Set/way信息写入Data Cache Tag Read Operation Register 后相当于选择了想要操作的cache line接下来我们将读取Data Register 1和Data Register 0的数据来获取该cache line里的tag信息除了tag信息外我们还可以从Data Register 1和Data Register 0两个寄存器中获取 MOESI 状态信息outer内存属性valid 信息 可获得的信息具体见下图 需要注意的是如果是想获取MOESI状态信息则需要两个寄存器配合使用即读取Data Register 0 [1:0]以及Data Register 1 [30:29] Data Register 0 [1:0]里的为来自Dirty RAM的部分状态信息Data Register 1 [30:29]里的为来自tag RAM的部分MOESI信息 其具体的组合见下图 比如读取到的Data Register 0 [1:0]为1以及Data Register 1 [30:29]也为1根据上图的组合关系可知当前cache line的MOESI状态为 SharedDirtyO。 示例代码如下 ; step 1: write set index and way num into Data Cache Tag Read Operation Register MCR p15, 3, r0, c15, c2, 0 ; r0 get_Rd_data(VA,way_num) ; step 2: read Data Register 1 and Data Register 0 MCR p15, 3, r1, c15, c0, 0 ;r1 Data Register 0 MCR p15, 3, r2, c15, c0, 1 ;r2 Data Register 1 参考文章 DDI0500E_cortex_a53_r0p3_trm.pdf
http://www.dnsts.com.cn/news/23245.html

相关文章:

  • 网站服务器空间上海百度推广排名优化
  • 成都专业网站建设套餐食品公司名字大全
  • 淘宝电商设计hyein seo是什么牌子
  • 芜湖做网站建设公司WordPress插件api调用
  • 公司备案证查询网站查询批量建站怎么赚钱
  • 市桥有经验的网站建设虚拟主机控制面板怎么建设网站
  • 百度有没有做游戏下载网站徐汇做网站公司
  • 营销案例网站推荐wordpress 底部样式
  • 站长工具seo查询5g5g新手学做网站图
  • 青岛栈桥重庆企业网站seo
  • 天津葛沽 网站建设公司百度智能小程序怎么优化排名
  • 镇江地区做网站的公司有哪些资深品牌策划公司
  • 苏州网站建设公司鹅鹅鹅深圳建设网站哪家最好
  • 佛山市seo网站设计工具在微信怎么开发公众号
  • 企业建站 wordpress简单的网站更新 关键词优化 关键词互联
  • 自适应影视网站模板门户网页版登录入口
  • 淮南市建设工程质量监督中心网站怎么做网站咨询
  • 讨债公司 做网站房产网站流量排名
  • 网站开发主要用到哪些工具产品设计开发公司
  • 自动跳转手机网站代码wordpress做采集站
  • 网站整站建设深圳注册投资公司的条件
  • 辽宁网站建设哪里好找企业品牌网站建设应该怎么做
  • 厦门专业的网站建设上海网站 工作室室
  • 网站远程图片做导购网站要多少钱
  • 广州口碑好的网站建设设计做一套网站多钱
  • 网站网站在国外沧州网站艰涩很
  • 网站开发 前台代码常用开发工具
  • 个人博客网站源码wordpress密码注册
  • 重庆制作网站广州网站建设如何做
  • 企业网站内容如何备案湖北省建设厅行政审批网站