在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12782|回复: 19

[讨论]如何设计指令集

[复制链接]
发表于 2004-8-19 11:21:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
    前面 liuiang 已经发过关于设计指令集的帖子,这里,为了专门讨论指令集的设计,所以另开一铁,希望大家踊跃发言
    指令集的设计是每一个MCU或DSP设计者不可回避的宿命,如果说算法是灵魂,那指令集就是灵魂的宿主。更极端地说,指令集是算法与CPU地接口,CPU出生的目的就是为了指令集。电路的成功与否影响CPU的出生,有方法可依,而指令集的成功与否影响CPU的成长,充满不确定性。
    回到主题上来,首先说指令集的规模。指令集的规模是首要特征,就是大家所说的CISC与RISC。指令集的规模对指令译码器有着直接的影响,而指令译码器是整个CPU中最难设计的电路。以51位例,它有112条指令(真正的51指令集,包括中断指令,指令码为A5),8位的位宽没有任何的浪费,它的译码器设计很有难度,相信只要设计过51译码器,你不会再惧怕任何CPU的译码器。
    把指令集归归类,无外乎5种:算逻操作指令、传输指令、跳转指令、中断指令、位操作指令。其中前4种是每个CPU都应该具有的。这里特别注意中断指令,它一般都只有一条指令,但它对CPU功能和电路设计的影响巨大,51中也有中断指令,但它是不公开使用,是CPU自己专用的,对于那些需要操作系统的CPU,中断指令就开放了,因为它是操作系统的最有用指令。位操作指令是MCU所必备的,51的成功就是很好的例子。算逻指令这个人人都知道,它取决与几个比较通用的逻辑:加法器、乘法器、桶形移位器,要使用什么样的指令,就得有什么样的逻辑,这个比较容易确定。传输指令和跳转指令是指令集设计的难点和关键所在。对于传输指令,CISC与RISC有本质的区别,RISC用很少的指令来专门完成数据的传输,而CISC中很多指令本身具有数据传输的操作,光就mov指令来说,CISC也有多种形式。对于跳转指令,它是真正体现CPU优势的因素之一,设计起来很难。传输指令和跳转指令设计的主要影响因素是寻址方式。
    指令集还要包括的部分恐怕就是专用CPU中的专用指令了。就以我们目前的实力,做通用CPU的机会不是很多,但做专用CPU就不一样了。专用CPU中的专用指令的设计取决于对所使用的算法的领悟程度,没有现成的案例可以参考。我个人认为,指令集设计分一下步骤执行:1,根据设计目标对位操作指令进行取舍;2,慎重考虑,决定中断指令的去留,一般来说,中断指令都是用的上的,但对于某些专用的处理器,如果它只干一件活,就可以考虑去掉中断指令,去掉中断指令就意味着去掉中断系统,简化译码器的设计难度,甚至堆栈都不要了,好处太诱人了;3,决定算逻指令,这取决与可能出现的算法以及计算的速度等指标的要求,条件不多,选择也容易;4,传输指令,这要看你使用RISC还是CISC,参照别人的做法,方案可以确定,但能不能做好或创新就看你的天分了;5,跳转指令得费点脑细胞,幸好有别人的可以参考,同样,要创新就得天才,这两部分中寻址方式是重头戏,脑细胞当然是不能少的;6,专用指令,专用指令一般都是针对与专有逻辑,可以说指令与逻辑相辅相成,想把它做到最优,需得明白,考验你造化的时候到了。
    以上纯属个人观点,希望能抛砖引玉,也欢迎大家拍砖
发表于 2004-8-19 11:52:57 | 显示全部楼层

[讨论]如何设计指令集

顶!
不过,对于51指令集,真的是112条?中断指令码A5?但通常软件汇编程序是不会有的啊。这个应该同具体51CPU实现有关吧?!
 楼主| 发表于 2004-8-20 10:00:18 | 显示全部楼层

[讨论]如何设计指令集

我是这样认为的。当初我们讨论51的中断系统工作机理的时候,发现中断其实就是执行了一条指令,而51的指令集中只有一个指令码没有用到,就是A5。从51的设计者的角度出发,8位指令,共256个状态,开放的有255个状态,就以CISC的风格,怎么能浪费掉这么宝贵的东西呢?把A5作为中断指令,只要中断到来时把IR(指令寄存器)置为A5就可以了,剩下的和一般指令的处理没有任何差别,这样就可以实现中断,你不觉得这样做很符合51的风格吗?(51中断最快的情况相当于双周期指令的执行时间)
发表于 2004-8-20 10:11:18 | 显示全部楼层

[讨论]如何设计指令集

长见识
用了几年51,从来没有注意过
发表于 2004-8-29 12:29:08 | 显示全部楼层

[讨论]如何设计指令集

这真还很迷惑,一点都不清楚。
发表于 2006-10-10 23:12:10 | 显示全部楼层
写得很好,有没有专门讲这方面得书,请指点一下
发表于 2006-11-14 22:01:51 | 显示全部楼层
长见识!!看来系统设计不是那么简单的哦!!
发表于 2006-11-14 22:07:10 | 显示全部楼层
想不到指令设计还要考虑这么多!!
我曾经以为51的指令只不过是依据一些简单规则的数字游戏而已
发表于 2007-7-20 12:26:13 | 显示全部楼层
嗯,我也对这方面感兴趣。不知道能否说的更详细些呵呵
发表于 2007-9-4 14:39:12 | 显示全部楼层
学习学习~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 03:44 , Processed in 0.022793 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表