|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2010-5-4 22:50:13
|
显示全部楼层
3,对Rn的读操作可以在当前时钟周期完成
猜想:共32个的Rn是由独立的寄存器构造的,而不是映射至data ram中实现的。
mov a, Rn 这是为数不多的几条1cycle完成的指令中最特别的一条,因为它需要在1cycle中完成Rn的读出。之前有提到,同步sram的读取,数据需要在下一个cycle才能获得,那么说明Rn在物理实现上并不是sram,只能是寄存器。这点从mov a,@Ri指令(1byte,2cycle)也可以得到证实,只有Rn物理上是寄存器时,才只需要读1次sram而不是读2次,从而在2cycle内完成。问题在于这样的结构需要256bit寄存器来构造Rn,逻辑耗费很大,如果将Rn 映射至data ram中实现的话,可以瘦身很多,代价就是执行周期更长,但这无谓好坏,看designer怎样在时间和空间上取得一个平衡罢了。
有点意外的是,mov Rn, a这条指令,却要耗费2cycle完成,这一点是比较奇怪的,因为mov a, Rn, mov Rn, a这两条指令的opcode都只有1byte,Rn是隐含在opcode中的,不需要再读另外的operand来指定,并且mov Rn, a是直接将acc的内容写入Rn,也不需经过alu,应该不存在第2点讨论的情形。那么为什么还需要多1个cycle呢?这点实在是很费解,暂无结论。 |
|