智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 13754|回复: 6
上一主题 下一主题

如何使用SH2A的Register Bank 【转帖】

  [复制链接]

489

主题

1691

帖子

1

精华

管理员

网站创始人&站长

Rank: 11Rank: 11Rank: 11Rank: 11

积分
85927

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

QQ
威望
56985
贡献
17372
兑换币
13142
注册时间
2007-6-8
在线时间
5785 小时
跳转到指定楼层
1#
发表于 2009-9-18 17:00:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:快乐水牛
转自http://www.renesas-mcu.com/read.php?tid=106&fpage=2
SH2A RISC体系是瑞萨基于SH2的结构上发展而来的,具有比SH2更强的处理能力,采用超标量超流水线技术,单个周期可以执行最多2条指令。CPU时钟频率可以达到200MHZ。

有趣的是,SH2A里面有15组寄存器缓冲区,称为Register Banks(以下简称为BANK)。
BANK主要用来发生中断时快速保存相关的寄存器和某些值,SH2A里面的每组BANK能保持的有R0~R14,GBR,PR,MACH,MACL一共19个寄存器和一个该中断向量在向量表中的地址偏移值VTO。如图:



当IO设备的中断产生时,如果开启了BANK功能,这19个寄存器会自动保存到BANK0里,如果发生了中断嵌套,则寄存器会继续保存到BANK1..BANK2....,这15组BANK实际上是一个栈的结构。当发生了15级中断嵌套后,则会发生BANK溢出异常(overflow),此时CPU的寄存器不会被保存到BANK里,而是保持到栈里。
当从中断里返回时,执行RESBANK指令,则可以从BANK里恢复寄存器内容。但是,如果BANK里没有数据时,执行RESBANK,则会发生BANK下溢错误(underflow)。

与BANK有关的寄存器,如图:



IBCR用来使能或禁止某个中断优先级对应的中断是否使用BANK。比如将BIT15设置为1,则优先级为15的中断使用BANK。
IBNR的BE位可以设置BANK使能总开关,BN位记录使用的BANK数,每使用一个BANK,则IBNR加1;恢复寄存器时,IBNR减1。类似于栈指针寄存器。
如图:




使用BANK的优点:
使用BANK,能在中断时快速的保持寄存器,以满足系统对时间的响应度。保存BANK发生在中断响应后与开始执行中断ISR之间,不同于传统的CPU需要在ISR里保存寄存器。
执行一条RESBANK指令从BANK恢复寄存器时,只需要9个时钟周期(普通的指令需要19个周期)。
因此,使用BANK功能,是系统发生中断时,能节约(19-9)+19 = 29个时钟周期。
如图:



使用BANK的缺点:
由于SH2A的BANK是一种类似于栈的设备,但是它又没有栈灵活,所以程序员几乎无法控制BANK的行为。
程序员对BANK的操作为:开启或禁止BANK,但是不能修改BANK的内容。原因是IBNR的BN位是只读的,它不能像SP栈指针寄存器那样可以灵活的操作。
当我们在SH2A上运行多任务操作系统时,如果开启BANK,一定要控制好BANK的行为,否则会带来灾难性的后果!

0

主题

0

帖子

0

精华

注册会员

Rank: 2

积分
123
威望
171
贡献
22
兑换币
0
注册时间
2010-5-2
在线时间
0 小时
2#
发表于 2010-6-27 18:36:42
路过,帮你顶顶




--------------------------------------------------------------------------------------------------------------------
传奇私服传奇私服传奇私服传奇私服传奇私服传奇私服传奇私服传奇私服
支持 反对

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 16:45 , Processed in 0.046305 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表