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

1 IMMU结构

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

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

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

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

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

1.2 ITLB结构

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

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

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

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

同一时候得到该页的属性SXE、UXE、CI。

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

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

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

or1200于IMMU分析的更多相关文章

  1. or1200中IMMU分析(续)

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 2 IMMU中的特殊寄存器 OR1200处理器中的IMMU包括第2组特殊寄存器,如表10.1所看到的. ITLBW0MRx是指令TL ...

  2. OR1200数据Cache运用情景分析

    以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 13.7DCache使用情景之中的一个--存储指令运行阶段DCache失靶 存储指令运行阶段DCache失靶这样的情景 ...

  3. OpenRisc-43-or1200的IF模块分析

    引言 “喂饱饥饿的CPU”,是计算机体系结构设计者时刻要考虑的问题.要解决这个问题,方法大体可分为两部分,第一就是利用principle of locality而引进的cache技术,缩短取指时间,第 ...

  4. OpenRisc-41-or1200的cache模块分析

    引言 为CPU提供足够的,稳定的指令流和数据流是计算机体系结构设计中两个永恒的话题.为了给CPU提供指令流,需要设计分支预测机构,为了给CPU提供数据流,就需要设计cache了.其实,无论是insn还 ...

  5. OpenRisc-40-or1200的MMU模块分析

    引言 MMU(memory management unit),无论对于computer architecture designer还是OS designer,都是至关重要的部分,设计和使用的好坏,对性 ...

  6. Cache基础知识OR1200在ICache一个简短的引论

    以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 12.1 Cache基本知识 12.1.1 Cache的作用 处理器的设计者通常会声称其设计的处理器一秒钟能做多少次乘 ...

  7. OR1200中指令Cache的结构

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.3 ICache结构 OR1200中实现ICache的文件有or1200_ic_top.v.or1200_ic_fsm.v.o ...

  8. or1200处理器的异常处理类指令介绍

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 我们在计算机体系结构的学习中知道:中断实质上包含由外部事件引起的硬中断(又称外中断)和由内部预先安排的特定指令或内部异常引起的软中断 ...

  9. OR1200指令Cache使用举例

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.4 ICache中的特殊寄存器 通过ICache的接口可知其具有特殊寄存器,而且是不可读的特殊寄存器,OR1200处理器中IC ...

随机推荐

  1. StackExchange.Redis 使用 - 事件(五)

    ConnectionMultiplexer 可以注册如下事件 ConfigurationChanged - 配置更改时 ConfigurationChangedBroadcast - 通过发布订阅更新 ...

  2. MEF初体验之十:部件重组

    一些应用程序被设计成在运行时可以动态改变.例如,一个新的扩展被下载,或者因为其它的多种多样的原因其它的扩展变得不可用.MEF处理这些多样的场景是依赖我们称作重组的功能来实现的,它可已在最初的组合后改变 ...

  3. nodejs 复制、移动文件

    对路径没有做验证 复制文件 var fs = require('fs'); var path = require('path'); var fileName = "coverflow-3.0 ...

  4. 监测谁用了SQL Server的Tempdb空间

    原文:监测谁用了SQL Server的Tempdb空间 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/02/11/sql-server-tempdb. ...

  5. 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)

    写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...

  6. 批量创建采购订单 BAPI_PO_CREATE1

    *&---------------------------------------------------------------------* *& REPORT  ZMM_PO_C ...

  7. 新秀学习Hibernate——一个简单的例子

    一个.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了可以使用Hibernate高速上手,我们先解说一个简单的Hibernate应用实例hibernat ...

  8. 更多RANK37

    By LTL 经过对BDG长期的观察得出的这套理论,希望能对大家学习OI有所帮助. 入门篇 首先在掌握一门语言时(P,C都无所谓的),假设不习惯指针能够直接无视.语言之中对于入门选手来说最重要的递归. ...

  9. 你如何破解后安装PS cs6

    至于破解程序猿支持,资源共享是只有更好的,我相信有很多孩子还在用cs5看版本号.假设你想尝试新的版本号PS.但很长一段时间不能找到字的串行数.现在,你如何支付你的序列号和使用永久裂纹PS cs6. 好 ...

  10. 百度官方wormHole后门检测记录(转)

    本次这个安卓后门真是哔了狗了,刚加入大安卓阵营就出了这个篓子,跟你root不root和什么安卓版本没有版毛钱关系,完全是百度SDK官方提供的后门,不是漏洞,人为的. 乌云地址:http://drops ...