你的位置:首页 > 知识课堂 > 正文

什么是寄存器边际效应?

发布时间:2013-03-08


今天我们就来学习什么是寄存器边际效应?通俗的解释是:我们边际效应向往某事物时,情绪投入越多,第一次接触到此事物时情感体验也越为强烈,但是,第二次接触时,会淡一些,第三次,会更淡……以此发展,我们接触该事物的次数越多,我们的情感体验也越为淡漠,一步步趋向乏味。这效应,在经济学和社会学中同样有效,在经济学中叫“边际效益递减率”,在社会学中叫“剥夺与满足命题”,是由霍曼斯提出来的,用标准的学术语言说就是:“某人在近期内重复获得相同报酬的次数越多,那么,这一报酬的追加部分对他的价值就越小。这就是边际效应,但今天我们讲述的是其中一种,就是寄存器边际效应?

什么是寄存器边际效应?

寄存器边际效应一
sideeffect(译为边际效应或副作用):是指读取某个地址时可能导致该地址内容发生变化,比如,有些设备的中断状态寄存器只要一读取,便自动清零。I/O 寄存器的操作具有sideeffect,因此,对其操作不能使用cpu缓存。
Linux内核中定义了很多宏,对硬件端口和寄存器进行操作,从网上搜集了一些宏定义的信息:
1. __REG简单的说就是获得后面所示物理地址映射后的虚拟地址,例如:
#define GPLR0__REG(0x40E00000) /* GPIO Pin-Level Register GPIO<31:0> */
#define GPLR1__REG(0x40E00004) /* GPIO Pin-Level Register GPIO<63:32> */
#define GPLR2__REG(0x40E00008) /* GPIO Pin-Level Register GPIO<80:64> */
pxa处理器内部寄存器的物理地址和内核空间的虚拟地址对应关系如下:
Intel PXA internal I/O mappings:* 0x40000000 - 0x41ffffff <--> 0xf8000000 - 0xf9ffffff
* 0x44000000 - 0x45ffffff <--> 0xfa000000 - 0xfbffffff
* 0x48000000 - 0x49ffffff <--> 0xfc000000 - 0xfdffffff
2. #define GPLR(x)__REG2(0x40E00000,((x) & 0x60) >> 3).
还有一个转换的句子#define GPIO_bit(x) (1 << ((x) & 0x1f))
GPIO共有80个,所以32bit的寄存器只好每组做3个. GPIO_BIT就是1左移x位(并且不要超过32);而GPLR(X)则是根据x的数值(这个是GPIO号,如16,37,72)得到3个GPLR中属于该GPIO的GPLR的起始地址,(__REG2就是获得两个地址的和).这样子可以通过下面的赋值方法:
GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) | GPIO_bit(GPIO49_nPWE);来设置GPIO48所在GPSR的2个位.这么一大堆,是为了用到GPIO号定义好的宏.简单的GPSR3=XXXX|XXXX也是可以的.
3. side effect(译为边际效应或副作用):是指读取某个地址时可能导致该地址内容发生变化,比如,有些设备的中断状态寄存器只要一读取,便自动清零。I/O寄存器的操作具有side effect,因此,对其操作不能使用cpu缓存。
寄存器边际效应二
I/O端口与实际外部设备相关联,通过访问I/O端口控制外部设备,“边际效应”是指控制设备(读取或写入)生效,访问I/O 口的主要目的就是边际效应,不像访问普通的内存,只是在一个位置存储或读取一个数值,没有别的含义了。我是基于arm平台理解的,在《linux设备驱动程序》第二版中的说法是“副作用”,不是“边际效应”。
寄存器边际效应三
访问I/O寄存器时,不仅仅会像访问普通内存一样影响存储单元的值,更重要的是它可能改变CPU的I/O端口电平、输出时序或CPU对I /O端口电平的反应等等,从而实现CPU的控制功能。CPU在电路中的意义就是实现其sideeffect。

以上就是我们学习的文章寄存器边际效应?有时也称为边际贡献,是指消费者在逐次增加一个单位消费品的时候,带来的单位效用是逐渐递减的。希望这篇文章会对读者有所帮助  谢谢!

特别推荐
技术文章更多>>
技术白皮书下载更多>>
热门搜索
 

关闭

 

关闭