芯片破解网


首页 -- 单片机破解-- IC破解-- 芯片破解-- 新闻技术 --关于我们
 
芯片破解网 >> 单片机破解 >> 当前位置

DSPIC30F系列芯片内部指令停止技术

指令停止周期
  指令停止本质上是附加在指令读阶段前的一个指令周期的等待时间,以便让前面的写操作先完成再发生下一个读操作。 为了达到中断延迟的目的,应该注意停止周期与检测到它的指令后的那个指令是相关的(即停止周期总是在指令执行周期之前)。
  如果检测到了RAW 数据相依性, dsPIC30F 将开始指令停止周期。 在指令停止期间,会发生下列事件:
  1. 正在进行的(上一条指令的)写操作可以正常完成。
  2. 在指令停止周期结束前不会寻址数据空间。
  3. 在指令停止周期结束前禁止PC 递增。
  4. 指令停止周期结束前禁止再次取指。
  指令停止周期和中断
  当会造成指令停止的两个相邻指令与中断事件同时发生时,可能会产生以下两个结果之一:
  1. 中断可能会在第一个指令执行时发生。 这种情况下,允许第一条指令完成,而第二个指令则将在ISR 完成后执行。 这样,因为异常过程为第一条指令提供了完成写阶段的时间,停止周期将在第二条指令中被消除。
  2. 中断可能会在第二条指令执行时发生。 在这种情况下,允许第二条指令和附加的停止周期在ISR 前执行。 这样,与第二条指令关联的停止周期会正常执行。 但是,停止周期实际上会被嵌入到异常过程时序内。 如果一个正常的双周期指令被中断,异常过程将会继续。
  指令停止周期和流程更改指令
  CALL和RCALL指令使用W15写入堆栈,并且如果下一条指令读取的源使用W15,可能会因此在下一条指令前强制执行指令停止。
  RETFIE和RETURN指令永远不能在下一条指令前强制执行指令停止,因为这些指令都只能执行读操作。 但是,用户应该注意RETLW 指令能强制执行停止,因为它会在最后一个周期写入W 寄存器。
  因为GOTO 和转移指令不执行写操作,所以永远不能强制执行指令停止。
  指令停止以及DO 和REPEAT 循环
  除了增加指令停止周期外, RAW 数据相依性不会影响DO 或REPEAT 循环的工作。REPEAT循环中预取的指令在循环完成或发生异常前不会改变。 虽然寄存器相关性检查会跨指令边界进行,在REPEAT 循环中dsPIC30F 实际上会比较同一个指令的源和目标地址。
  DO 循环的最后一条指令会预取循环起始地址处的指令或下一条指令(循环外)。 指令停止的决定是由循环的最后一条指令和预取指令的内容做出的。
  指令停止和程序空间可视性(PSV)
  当通过使能PSV (CORCON<2>)位将程序空间(PS)映射到数据空间,并且X 空间EA 处于可见程序空间范围时,读或写周期会被重新定向到程序空间中的地址。 从程序空间访问数据最多需要花费3 个指令周期。
  PSV地址空间的指令操作与任何其他指令一样,会受到RAW数据相关性和后续指令停止的影响。
  考虑以下代码段:
  ADD W0,[W1],[W2++] ; PSV = 1, W1=0x8000, PSVPAG=0xAA
  MOV [W2],[W3]
  此指令序列将需要5 个指令周期来执行。 增加的2 个指令周期用于通过W1 执行PSV 访问。 此外,为了解决W2 造成的RAW 数据相关性,插入了一个指令停止周期。
返回顶部


2013-2015 芯片破解网 All Rights Reserved.
如有任何问题和建议请联系:498187676@qq.com

深圳市星光芯电子有限公司 版权所有

地址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1618(李朗软件园对面) 电话:0755-88820678
手机:13713820066 QQ:498187676 联系:周工


站点地图

粤ICP备12084176号