Shadow Register 是什么?
ARM处理器有个Shadow Register的概念,查了很多资料,语焉不详,究竟是什么意思呢?
这其实是个和硬件有关的概念。
有些register是2层的,第一层是供CPU访问,第二层供Hw访问。
|
CPU访问 |
|
Hw访问 |
其中Hw访问的这层register称之为Shadow Register。
CPU在写Register的时候,会先写在上层的Shadow Register,随后硬件update之后才会在下层供Hw访问的Register开始执行。
这是同一个Register,不是2个Register,只不过分了2层。形象的讲上层是下层的Shadow。
因为真正生效的执行Hw动作的是下面这层,而上面这层只是将CPU(也就是将软件)的信息获取到,等下个硬件周期才会执行。
那么这有什么用呢?哪里用到了这点呢?
这样做可以加快程序的相应和信息的处理。
其中ARM的FIQ有用到,也就是fast interrupt,快速中断的意思。
因为FIQ是有Shadow Register的,所以你在使用它或者是设置它的时候,指令可以先存在Shadow Register里面,等到下一个硬件周期就会立即执行。
而没有Shadow Register的IRQ(interrupt),就要等Register里面的数据执行完毕后才能写入,那样就稍慢一些。
这也就是FIQ比IRQ快的一个原因。
Shadow Register 是什么?的更多相关文章
- 影子寄存器(shadow register)
1.以下仅供参考:有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的.但在操作中真正 ...
- STM32 Timer : Auto-reload register register
Auto-reload register (TIMx_ARR) The auto-reload register is preloaded. Writing to or reading from th ...
- STM32通用定时器(转载)
STM32的定时器功能很强大,学习起来也很费劲儿. 其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册-}才搞明 ...
- LPC43xx SGPIO DMA and Interrupts
The SGPIO output pins SGPIO14 and SGPIO15 can trigger a GPDMA request SGPIO pins SGPIO14 and SGPIO15 ...
- LPC43xx SGPIO Pattern Match Mode
模式匹配 所有位串均具有模式匹配功能. 该功能可用于检测启动代码等.要使用该功能,则必须用需匹配的模式来对REG_SS 编程 (请注意, POS 达到零时 REG_SS 不会与 REG 交换!) M ...
- Power Gating的设计(模块)
Switching Fabric的设计: 三种架构:P沟道的switch vdd(header switch),N沟道的switch vss(footer switch),两个switch. 但是如果 ...
- 【原创】MIPS浅议之——中断系统之我见
最近,准确的说应该是最近两个月的时间,我都在研究MIPS的异常与中断.或者可以说,最近这两个月,我才真正了解中断系统的整个结构和处理流程以及为什么要这样做?这段时间我最大的体会就是以前我们在“计算机组 ...
- OpenRisc-47-or1200的WB模块分析
引言 “善妖善老,善始善终”,说的是无论什么事情要从有头有尾,别三分钟热度. 对于or1200的流水线来说,MA阶段是最后一个阶段,也是整条流水线的收尾阶段,负责战场的清扫工作.比如,把运算指令的运算 ...
- Stm32高级定时器(一)
Stm32高级定时器(一) 1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波 ...
随机推荐
- 如何:确定调用 ASP.NET 网页的方式
如何:确定调用 ASP.NET 网页的方式 通常有必要了解调用 ASP.NET 网页的方式:是由原始请求 (HTTP GET).回发 (HTTP POST).来自其他页的跨页面发送 (HTTP POS ...
- Css 梯形图形 并添加文字
HTML页面的代码: <body> <div style="width:500px;border:solid 1px #ccc;"> <div> ...
- C++ 虚函数与纯虚函数
#include<iostream> #include<string> using namespace std; class A{ public: virtual void f ...
- ASP.Net定时任务执行
原料: System.Timers.Timer():通过.NET Thread Pool实现的,轻量,计时精确,对应用程序.消息没有特别的要求:缺点是不支持直接的拖放,需要手工编码. Timer的 ...
- C++和MATLAB混合编程-DLL
先小话一下DLL,DLL是动态链接库,是源代码编译后的二进制库文件和程序接口,和静态链接库不同的是,程序在编译时并不链接动态链接库的执行体,而是在文件中保留一个调用标记,在程序运行时才将动态链接库文件 ...
- 【算法】快速排序-Java版
说在前面的话 平常码砖的时候,对于一个数组进行排序更多的是起泡排序,起泡排序对于一般不是很长的数组进行操作没什么问题,一旦数组过大,很明显效率低. 而快排是对起泡排序的一种改进,效率明显优高. 快排思 ...
- PHPCMS栏目调用2
{php $j=1;} {loop subcat(50) $v} {php if($v['type']!=0) continue;} ...
- WPF Navigation导航
WPF导航这个话题,网上的解决方法有很多种,有点吃猪脚的感觉,弃之可惜,食之乏味. 不过还是简单聊聊吧. 常见的导航: 利用HyperLink导航,可以到某一个Page页面,也可以是外部链接,当然也可 ...
- git 基础命令
1.git init git 初始化仓库 2.git add . git 添加全部文件 3.git add xxx.txt git 添加单独文件 4.git commit -m "提交的 ...
- MVC描述对象的类关系图/调用关系图【学习笔记】