历史上的今天

今天是:2024年11月25日(星期一)

2021年11月25日 | ARM使用术语清除(flush)和清理(clean)表示对cache的基本操作

发布者:堕落的猫 来源: eefocus关键字:ARM  清除  cache  基本操作 手机看文章 扫描二维码
随时随地手机看文章

清除cache的意思是清除cache中存储的全部数据。对处理器而言,清除操作只要清零相应cache行的有效位即可。当存储器配置上有变化时,整体或部分cache可能需要进行清除操作。有时也用术语作废(invalidate)来代替术语“清除”。然而,对于采用写回策略的D-cache,就需要使用清理(clean)操作。


清理cache的意思是把脏的(即被改写过的)cache行强制写到主存,并把cache行中的脏位清零。清理cache可以重建cache与主存之间的一致性,它只用在使用写回策略的D-cache上。


改变系统的存储器配置可能要执行清除和清理cache的操作。访问权限、cache和缓冲策略的变化或者重新映射虚拟地址等操作都需要清理或清除cache。


在分离cache中执行自修改代码之前,cache也需要执行清理和清除操作。自修改代码包括将代码简单地从一个地方拷贝到另一个地方。清理和清除操作是由两种可能的情况引起的:第一,自修改代码可能别承载在D-cache中,因此,不可能作为一条指令从主存中进行加载;第二,I-cache中现存的指令可能会屏蔽写到主存中的新指令。


如果cache使用写回策略并且自修改代码被写入主存中,那么第一步就是将指令以数据块的形式写到主存中某处;稍后,程序跳转到主存中,以指令流的形式从主存中的该处开始执行。其中,当代码作为数据写入到主存中时,如果cache存储器中代表自修改代码被写入的主存位置的cache行有效,那么代码有可能会被写入到cache中(没有写入主存)。这些cache行会被拷贝到D-cache,而不是被拷贝到主存。如果发生了这种情况,那么当程序跳转到自修改代码所在的地方(主存某处)时,就会执行原来数据表示的代码,因为自修改代码此时实际上还在D-cache中。为了防止这种情况发生,可以进行D-cache的清理操作,把指令代码强制作为数据存到主存中,从而这些数据就可以作为指令流从主存中读出来。


D-cache被清理后,新的指令就被写到主存中。但是,I-cache中可能会有效cache行存储新数据(代码)地址对应的指令。接下来,在新代码所在的地址读取指令时,仍然会得到I-cache中的老代码,而不是主存中的新代码。清除I-cache可以防止这种情况的发生。


在linux的代码中涉及到自搬运代码的地方有:

1.应用程序的装载:

Load_aout_binary

Load_aout_libary

Load_aout_interp

Load_flat_file


2.Fiq代码的搬运:

3.Signal.c中:

Setup_frame

Setup_rt_frame

关键字:ARM  清除  cache  基本操作 引用地址:ARM使用术语清除(flush)和清理(clean)表示对cache的基本操作

上一篇:ARM基础学习-Cache和写缓冲器
下一篇:ARMv8-AArch64寄存器和指令集

推荐阅读

机器人是“制造业皇冠顶端的明珠”,其研发、制造、应用是衡量一个国家科技创新和高端制造业水平的重要标志。近日,聚焦“机器人与智能制造”话题,近百位领域内专家、学者在省自然基金委主办的第三期燕赵科学上,分享了机器人技术研究的进展。 “拥抱触手可及的机器人时代”成为本次论坛主题,这传递出专家学者对机器人技术将获得更广泛应用的强烈信心...
一、GPIO说明GPIO(General Purpose I/O ports)即通用输入/输出口。我们在实际应用中,不管是接LCD、接键盘,控制流水灯等等应用,都离不开对I/O的操作。可以说,GPIO的操作是所有硬件操作的基础。S3C2440共有130个I/0端口,共分九组,分别为:GPA、GPB、...、GPJ。我们可以通过寄存器来操作这些IO。S3C2440共有三种寄存器,分别为GPxCON、GPxDAT、GPx...
尼康计划裁减相当于整个集团员工一成的2千人。虽然主要原因是此前属于公司摇钱树的相机业务的低迷,但背景则是主业之一的半导体制造设备的主要客户美国英特尔的业绩低迷。尼康此前高居半导体制造设备的全球份额首位,但如今这一份额已降至约7%。在半导体行业,美国英伟达在总市值上超越英特尔等,这种结构的变化已开始产生影响。 “尼康正在半导体相关产...
本月早些时候,vivo 在中国市场推出了 vivo Y76s 5G 智能手机,主要配置包括天玑 810 芯片组、5000 万像素双摄像头和 44W 快速充电。现在,该公司又在马来西亚发布了 vivo Y76,搭载 5000 万像素的三摄像头,但处理器为比较弱的天玑 700 芯片。  vivo Y76 的尺寸为 163.84 x 75 x 7.79 毫米,重量为 175 克,有一个...

史海拾趣

问答坊 | AI 解惑

十四位数仿真科学计算器1.7语音型

十四位数仿真科学计算器1.7语音型…

查看全部问答∨

DSP无法连接

大家觉得这可能是什么问题啊?是驱动,还是DSP坏了?…

查看全部问答∨

linux下部分中文显示乱码,请大家帮帮忙

我的根目录下有两个中文文件夹:(目)    (我) 用loacale -a命令显示出来的locale有以下几项 .... zh_CN zh_CN.GB2312 zh_CN.gb18030 zh_CN.gb2312 zh_CN.gbk zh_CN.my zh_CN.utf8 .... 系统启动之后locale 命令的输出结果为 L ...…

查看全部问答∨

闹钟的问题

用IAppointment设定一个闹钟,时间到了没有"日程提醒" 再去设定另一个闹钟,上一个已过时间的闹钟就马上蹦出"日程提醒"来,这是怎么回事? “日程提醒”界面好好象是poom画的,我想显示自己的闹钟界面该怎么做? 我的poom组件还需要其它 ...…

查看全部问答∨

开发板串口问题,求助!

我用的2440的板子,S3C2440A芯片,支持3个串口,硬件引出两个,一个用于控制台,另外一个是不是叫做扩展串口,按照《完全开发手册》上添加了扩展串口驱动, 使用命令:cat /proc/tty/driver/serial       显示:serinfo:1.0 ...…

查看全部问答∨

VB.NET开发WINCE串口通讯程序

有没有用VB.NET做WIN MOBILE 5.0的串口通讯程序啊,最近在网上找到一些资料,可是总是调试不正确,无法打开端口,发送接收数据。 我现在是使用WIN MOBILE 5.0系统的PDA,希望开发WIN CE 串口通讯软件,进行对单片机的数据采集,只采集温度数据。 ...…

查看全部问答∨

LED专用恒流IC集汇

SIPEX SP6682   为白色LED配置的高效电荷泵调节器 SP6683   平行结构配置的高功率LED驱动器 SP6685   用于照相机闪光灯的电荷泵LED驱动器 SP6686   400mA降压/升压电荷泵LED驱动器 SP6687&nb ...…

查看全部问答∨

飞思卡尔单片机MC9RS08KA8的C程序的例子

高手求助一下,哪位有MC9RS08KA8的C程序例子呢?急用!小女子新学,好歹不知道从何下手!谢谢各位的帮忙!…

查看全部问答∨

stm32105写U盘问题

我使用STM32F105RB程序作了一段写U盘扇区的代码 U8 MassStorageDevSectWrite(U32 LBAddr,U16 Len,U8 *PtrBuf){    U32 *tmp;    U32 Tag=0x0000000c,TotalByteNum_32,MassStorageDevSectReadTryCnt;  &nb ...…

查看全部问答∨

开源一个mjpeg播放器程序,STM32F407 avi视频播放 嗨大了!!!!!!!

之前看到日本人做的那个视频播放器,真是羡慕加妒忌呀,于是自己花时间做了这个,虽然效果相差甚远,但总算是对得起观众,我这个没有超频,所以只能是牺牲尺寸,有点小,将就着看个视频,挺有成就感的!!该播放器是基于FATFS作者开源的tjpgd编写的 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved