IO寄存器操作的边际效应

  第一种说法:

      side effect(译为边际效应或副作用):是指读取某个地址时可能导致该地址内容发生变化,比如,有些设备的中断状态寄存器只要一读取,便自动清零。I/O 寄存器的操作具有side effect,因此,不能对其操作不能使用cpu缓存。

  原文网址:

  http://qinbh.blog.sohu.com/62733495.html

第二种说法:

  说一下我的理解:I/O端口与实际外部设备相关联,通过访问I/O端口控制外部设备,“边际效应”是指控制设备(读取或写入)生效,访问I/O 口的主要目的就是边际效应,不像访问普通的内存,只是在一个位置存储或读取一个数值,没有别的含义了。我是基于arm平台理解的,在《Linux设备驱动程序》第二版中的说法是“副作用”,不是“边际效应”。

  原文网址:

   http://linux.chinaunix.net/bbs/viewthread.php?tid=890636&page=1#pid6312646

  结合以上两种说法和自己看《Linux设备驱动程序(第3版)》的理解,我个人认为可以这样解释:

  side effect 是指:访问I/O寄存器时,不仅仅会像访问普通内存一样影响存储单元的值,更重要的是它可能改变CPU的I/O端口电平、输出时序或CPU对I /O端口电平的反应等等,从而实现CPU的控制功能。CPU在电路中的意义就是实现其side effect 。


evilrays2012-12-05 16:35发表 [回复] [引用] [举报]
虽然我也不知道这个边际效应真正的含义,但是根据我的理解,我认为你的理解是错误的,《Linux设备驱动程序(第3版)》中访问IO和内存空间的部分涉及到了边际效应,在他的描述中可以看出这个边际效应是需要提防的,就是你在使用这块内存的时候如果进行了优化,那么你第二次使用寄存器或者内存的时候里面的内容有可能已经随着系统的运行被改变了,所以对这部分的内存你不能预取,否则你读到的信息有可能已经变化了,并不是你想要的内容。说副作用也不是很确切,边际效应可以理解为隐患。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值