or1200于IMMU分析

or1200于IMMU分析

以下摘录《步骤吓得核心——软-core处理器的室内设计与分析》一本书

1 IMMU结构

      OR1200中实现IMMU的文件有or1200_immu_top.vor1200_immu_tlb.vor1200_spram.v,当中使用or1200_immu_top.v实现了IMMU模块,使用or1200_immu_tlb.v实现了ITLB模块,or1200_spram.v是一个单口RAM。使用事实上现了ITLB的表项。如图10.5所看到的。

本小节将分别介绍IMMU模块与其余模块的连接关系、ITLB结构。

 

or1200于IMMU分析

 

1.1 IMMU模块与其余模块的连接关系

      图10.6给出了IMMU与其它模块的连接关系。当中的大部分接口都非常直观。

IMMUCPU之间的接口是指令Wishbone总线的一部分。IMMUQMEM之间也是Wishbone总线的一部分,当没有配置IMMU时能够觉得CPUQMEM是直接相连的,这一点在第3章中已有说明。此外,IMMU还有与特殊寄存器訪问有关的接口:spr_csspr_writespr_addrspr_dat_ispr_dat_o,这说明在IMMU中存在特殊寄存器,而且该特殊寄存器可读(有spr_dat_o接口)、可写(有spr_dat_i接口)。

 

or1200于IMMU分析

 

1.2 ITLB结构

      前文已述。OR1200MMU的功能主要就体如今TLB的实现上,对IMMU而言就是ITLB。所以首先给出ITLB的结构,图10.4是一个通用的TLB变换原理图。每一个处理器实现TLB的功能都会有详细的实现方式,此处讨论的是OR1200中的实现方式。

      OR1200ITLB将图10.4中的项分两部分存放,标识存放在MR_RAM表中。数据存放在TR_RAM表中,如图10.7所看到的。从名称上也能够知道这里的表实际是採用RAM实现的,表的索引相应RAM地址,表项相应RAM内容。

 

 

or1200于IMMU分析

 

      还是以默认配置中TLB64项为例,同一时候依照OR1200中的习惯将虚拟地址称为有效地址。MR_RAM表每一项占14bit,当中高13bit是有效地址的19-31位,最低bitV,代表该表项是否有效。TR_RAM表每一项占22bit,当中高19bit是物理地址的13-31位,低位的3bit各自是UXEUser Execute Enable)、SXESupervisor Execute Enable)、CICache Inhibit)。分别代表用户模式是否可运行、特权模式是否可运行、是否禁止缓存。IMMU使用UXESXE实现对存储器中指令页的保护。CI的作用是指示处理器要不要将该页放置在缓存中,假设CI1。则该页代码不会出如今缓存中。每次訪问都须要从存储器中读取。反之表示该页代码能够被缓存。

      ITLB的翻译过程是:利用有效地址中的13-18bit作为索引同一时候查询MR_RAMTR_RAM两个表。利用MR_RAM表中得到的结果推断ITLB是否命中,ITLB命中的条件是MR_RAM表项中的“有效地址的19-31位”与CPU提供的有效地址中的19-31位相等,而且V1,反之ITLB未命中。也称为ITLB失靶。当ITLB命中的时候,将从TR_RAM表索引得到的表项中的“物理地址的13-31位”与CPU提供的有效地址低13位结合作为物理地址。

同一时候得到该页的属性SXEUXECI

      IMMU利用ITLB的翻译结果进行下一步操作,分三种情况:

  •   ITLB命中。但SXE0。而当前处理器处于特权模式。或者UXE0。而当前处理器处于用户模式,均会违反页保护策略,引发指令页失效异常,处理器转移到指令页失效异常的处理例程,參考表1.3可知相应地址是0x400
  •   ITLB命中。而且没有违反页保护策略,那么会取得相应物理地址处的指令
  •   ITLB失靶。因为OR1200没有实现硬件的ITLB载入,所以仅仅能通过软件实现ITLB载入,ITLB失靶引发ITLB失靶异常,处理器转移到ITLB失靶异常的处理例程。參考表1.3可知相应地址是0xA00,用户需编写失靶异常的处理例程,在当中将须要的页表项载入入ITLB

 

 

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109371.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用python编写猴子吃桃问题_人工智能猴子摘香蕉

    用python编写猴子吃桃问题_人工智能猴子摘香蕉该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#includeintW;/*W-猴子的水平位置*/intx;/*x-当猴子在箱子顶上时取x=1;否则取x=0*/intc;/*c-是香蕉正下方的地板位置*/intY;/*Y-箱子的水平位置*/intz;/*z-当猴子摘到香蕉时取z=1;否则取z=0*/intascll=25;voidGo…

    2022年9月25日
    2
  • oracle存储过程捕捉异常后回滚_Oracle存储过程异常

    oracle存储过程捕捉异常后回滚_Oracle存储过程异常由三种方式抛出异常1.通过PL/SQL运行时引擎2.使用RAISE语句3.调用RAISE_APPLICATION_ERROR存储过程当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过RAISE语句抛出RAISEexception_name;显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例…

    2022年7月17日
    15
  • 哈理工 oj 2122 旅行(map + 最短路dij算法)

    哈理工 oj 2122 旅行(map + 最短路dij算法)旅行TimeLimit:1000MSMemoryLimit:32768KTotalSubmit:18(6users)TotalAccepted:3(3users)Rating:SpecialJudge:NoDescription“04.24,和Sakur

    2022年10月8日
    5
  • ADRC学习

    学习ADRC先从提出这个算法的论文《从PID技术到“自抗扰控制”技术》开始。https://download.csdn.net/download/qq_34445388/10309935调试四轮智能车,板球控制系统,两轮直立车,舵机控制,这些控制系统用的都是PID控制,虽然我已经有很多种改进方法,但是还是很难突破传统PID的限制,调节速度和超调一定同时存在,想要得到较好的控制效果,用现…

    2022年4月3日
    47
  • 作业2 分析TGA文件「建议收藏」

    一、TGA文件格式解析二、文件格式文件头(TgaFileHeader):由图像描述信息字段长度、颜色表类型、图像类型、颜色表说明和图像说明五个字段组成,总计18字节,描述了图像存储的基本信息,应用程序可依据该部分字段值读写图像数据。图像/颜色表数据(Image/ColorMapData):由图像描述信息(可选)、颜色表数据和图像数据三部分组成,用于存储图片的图像信息。开发者自定义区域(DeveloperArea):包含开发者定义字段列表和开发者字典(用于存储开发者定义字段的值),该区域为

    2022年4月9日
    41
  • snmp协议端口号_SNMP OID

    snmp协议端口号_SNMP OID记一次日常工作1、SNMP是一个简单的网络管理协议,起初我也不知道啥玩意,在自己做安全设备配置日志审计服务器时突然发现的,某厂商设备不支持syslog服务器配置,只有snmp的配置,我当即填上相关信息如下图可见,将状态整为开启,版本自己选择的v2,因为顾虑v1版本可能存在一些缺陷,填好IP、端口、间隔发送时间、还有一个community选项是对应我们的server端的名称。2、原本以为简单的就完事了,我就进行下一步取server端搞一搞,三下五除二的就把server端的基本信息配置好,下图仅为snmp

    2022年8月20日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号