ARM 开启Dcache 问题

ARM 开启Dcache 问题ARM926EJSDca 是依赖于 MMU 只有开启 MMU 后 Dcache 才真正有效 正常情况下 开启 Dcache 可以大大加快 CPU 性能 但是遇到特殊情况则出现很大的问题 有以下三种情况 采用不可缓存代码 采用自修改代码 操作 AHB 总线 采用不可缓存代码与其他 ARM9 系列的缓存内核来比 尽管非缓存代码的性能得到了改善 仍然推荐采用 ICache 这

ARM926EJS Dcache是依赖于MMU,只有开启MMU后Dcache 才真正有效。

正常情况下,开启 Dcache 可以大大加快 CPU 性能;但是遇到特殊情况则出现很大的问题。

有以下三种情况:

  • 采用不可缓存代码;
  • 采用自修改代码;
  • 操作AHB总线。

  1. 采用不可缓存代码与其他ARM9系列的缓存内核来比,尽管非缓存代码的性能得到了改善,仍然推荐采用ICache,这是实践证明了的。

    非缓存代码通常用在boot loader上面,防止cache污染。但是现在ICache在没有启用MMU的情况下仍然能够使能,而且可以通过控制 cache lockdown register 来防止污染,所以采用非缓存代码是没有优点的。

  2. 采用自修改代码采用一个四字的缓冲区来保存推测到的将要获取的取指令。只有连续的指令可以准确地获取,万一 ARM9EJ-S 内核,缓冲区的内容会被丢掉(discard/flush)。在内核连续预取指的序列中,预取缓冲区的内容可能变为无效,这种情况下,预取缓冲器也应该被刷新(flush)。
  3. 操作AHB总线 ss

为了保证数据和指令的一致性,必须做以下操作

代码如下:

c语言(iar):

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

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

(0)
上一篇 2026年3月26日 下午8:59
下一篇 2026年3月26日 下午9:00


相关推荐

  • 【Ubuntu】在Ubuntu中运行Pycharm闪退+程序运行报错Cannot allocate memory

    【Ubuntu】在Ubuntu中运行Pycharm闪退+程序运行报错Cannot allocate memory程序运行后报错如下 且 pycharm 无法 indexing 完成持续闪退 OSError Errno12 Cannotalloca 排错步骤终端监视内存使用情况 watch n2free m 清理 cache echo3 gt proc sys vm drop caches 结果在程序运行过程中监视内存使用情况的终端出错 并报错 Cannotalloca 因此判断原因是内存不够 解决方法首先尝试了扩大内存 即在虚拟机设置中直接扩大内存

    2026年3月27日
    2
  • 二进制实现加法_递归实现十进制转换二进制

    二进制实现加法_递归实现十进制转换二进制一、原理1、化简先看一个例子:看一下3+4的加法运算3的二进制表示:0114的二进制表示:1003^4(3按位异或4)的结果是:111=>7上面的到的结果是

    2022年8月3日
    8
  • 静态变量与静态函数

    静态变量与静态函数堆与栈 1 栈区 stack 有编译器自动分配释放 存放函数的参数值 局部变量的值等 操作凡是类似于数据结构中的栈 2 堆区 heap 一般有程序员分配和释放 动态存储分配 分配方式类似于链表 3 全局区 static 全局变量和静态变量的存储 有系统释放 4 文字常量区 常量字符串存放 系统释放 5 程序代码区 存放函数体的二进制代码 堆与栈的区别 1 栈内存存

    2026年3月19日
    2
  • winform界面美化

    winform界面美化 介绍如下:1.这是DELPHI的换肤软件的DOTNET版,使用简单并有皮肤编辑工具,可到官方网站去下,当前版本为:1.20.1,更新时间:2008-04-202.这次发布的版本包括了DotNetSkin的ForVS2003和VS2005两个版本。3.未破解前,如果要显示标题栏,则标题标显示的是Logo图片,样式请看官方的DEMO程序;如果不显示标题栏,则在程序启动的时候提示一个对话框(T

    2022年5月8日
    47
  • js 全局变量优点和缺点

    js 全局变量优点和缺点全局变量的优点:可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。全局变量的缺点:(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立

    2022年6月9日
    67
  • python保留小数位数_结果保留两位小数

    python保留小数位数_结果保留两位小数介绍3中方法:1、round(a,2)2、print(‘%.2f’%(a/b))3、format(a,’.2f’)

    2022年8月11日
    8

发表回复

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

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