码迷,mamicode.com
首页 > 其他好文 > 详细

or1200中IMMU分析

时间:2014-06-05 08:48:55      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:or1200 openrisc 软核处理   处理器   软核   开源   or1200 软核处理器   

以下内容摘自《步步惊芯——软核处理器内部设计分析》一书

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结构。

 

bubuko.com,布布扣

 

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接口)。

 

bubuko.com,布布扣

 

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内容。

 

 

bubuko.com,布布扣

 

      还是以默认配置中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

 

 

 

or1200中IMMU分析,布布扣,bubuko.com

or1200中IMMU分析

标签:or1200 openrisc 软核处理   处理器   软核   开源   or1200 软核处理器   

原文地址:http://blog.csdn.net/leishangwen/article/details/27523091

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!