4887|8

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于mips cache的初始化, 大家帮我看看 [复制链接]

    我的启动代码里面有这么一行代码, 对d-cache进行初始化:
    .......
    lui t6, 0x8000 # Get a KSeg0 address for cacheops

    mtc0 zero, C0_TAGLO
    mtc0 zero, C0_TAGHI

    move t7, t4

1: cache 0x9, 0(t6)
  add t7, -1

  bne t7, zero, 1b
..........
================================================
  t4的值是总的缓存sets数, 关于cache指令好像很少有资料讲述, see mips run 70页里面也只是简单的说了参数9是Index_store_tag_D, 但是这个地方cache 0x9, 0(t6) 不知道是如何实现的?  而且把C0_TAGLO清零是什么意思呢?

最新回复

结贴了 同志们 接分  详情 回复 发表于 2009-4-14 17:54
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
刚启动时候,不能保证寄存器的值。需要把未知状态设置为0,为了下一步的初始化cache做准备,C0_TAGLO清零就是这个动作。
下面的动作就是把KSeg0段给cache起来,下面是CE的cache op设置命令,再配合mips芯片手册就知道了。0x9是INDEX_STORE_TAG_D,写入data tag。

#define INDEX_INVALIDATE_I 0x0          // invalidate primary instruction cache
#define INDEX_WRITEBACK_INVALIDATE_D 0x1 // writeback/invalidate primary data cache
#define INDEX_INVALIDATE_SI 0x2         // invalidate secondary instruction cache
#define INDEX_WRITEBACK_INVALIDATE_SD 0x3 // writeback/invalidate secondary data cache

#define INDEX_LOAD_TAG_I 0x4            // load primary instruction tag indexed
#define INDEX_LOAD_TAG_D 0x5            // load primary data tag indexed
#define INDEX_LOAD_TAG_SI 0x6           // load secondary instruction tag indexed
#define INDEX_LOAD_TAG_SD 0x7           // load secondary data tag indexed

#define INDEX_STORE_TAG_I 0x8           // store primary instruction tag indexed
#define INDEX_STORE_TAG_D 0x9           // store primary data tag indexed
#define INDEX_STORE_TAG_SI 0xa          // store secondary instruction tag indexed
#define INDEX_STORE_TAG_SD 0xb          // store secondary data tag indexed

#define CREATE_DIRTY_EXCLUSIVE_D 0xd    // create dirty exclusive primary data cache
#define CREATE_DIRTY_EXCLUSIVE_SD 0xf   // create dirty exclusive secondary data cache

#define HIT_INVALIDATE_I 0x10           // invalidate primary instruction cache
#define HIT_INVALIDATE_D 0x11           // invalidate primary data cache
#define HIT_INVALIDATE_SI 0x12          // invalidate secondary instruction cache
#define HIT_INVALIDATE_SD 0x13          // invalidate secondary data cache

#define HIT_WRITEBACK_INVALIDATE_D 0x15 // writeback/invalidate primary data cache
#define HIT_WRITEBACK_INVALIDATE_SD 0x17 // writeback/invalidate secondary data cache

#define HIT_WRITEBACK_D 0x19            // writeback primary data cache
#define HIT_WRITEBACK_SD 0x1b           // writeback secondary data cache

#define HIT_SET_VIRTUAL_SI 0x1e         // hit set virtual secondary instruction cache
#define HIT_SET_VIRTUAL_SD 0x1f         // hit set virtual secondary data cache
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
BTW:楼主是君正的吗?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
那款 mips cpu 哦...
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢楼上的回复, 我又看了一下文档, 你看是不是这样的
假设我的cache sets数是512, cache 09 0(t6)每执行一次就是把C0_tag寄存器里面各个指定项的值付给cache控制器
的tag存贮器中, 一共是512次, 这样所有的cache line就被初始化了, t6的高位设成0x80000000意思是让cache的
操作数处理的是映射到缓存的地址, t6低位是多少并不重要.
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
不是君正的, 我这个CPU是MIPS 4KE系列的
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
MIPS 4KE 那个就简单的很呐,《for mip run》里面有介绍怎么设置这个的吧...
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
之前看讲的比较晦涩 不明白  但是现在能看明白了  文档就是这样 理解之后再看才发现就是那么回事 但是不明白的时候老是疑惑  
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
结贴了 同志们 接分
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表