关于pic的rom分段,ram分页

[复制链接]
5774|7
 楼主| machunshui 发表于 2008-7-21 11:21 | 显示全部楼层 |阅读模式
初学pic16,总是对pic16的rom分段,ram分页感到奇怪,其实仔细看看pic16的指令系统,就不觉得奇怪了.<br /><br />pic16为了达到精简指令的简单快速要求,所有的指令都是单子指令,对pic16来说是14位指令,所以其指令中针对RAM文件寄存器寻址的位数只有7位,即128字节寻址范围.<br /><br />goto和CALL指令中的ROM寻址位数只有11位,即2k寻址范围.<br /><br />这样做的好处是,所有指令都是单字指令,cpu的内核译码执行单元将非常简单,统一.<br /><br />每个指令的译码执行都为:&nbsp;译码,读文件寄存器,运算,存储结果.<br /><br />译码执行非常简单,统一.<br /><br />单字节化指令的结果,使无论程序的执行效率还是代码率都很高,而且制造成本降低,功耗减小.
yewuyi 发表于 2008-7-21 20:13 | 显示全部楼层

主要是出于DIE面积的考虑

在高一些的系列中因为扩展了指令字长,所以这个问题就解决了,但这个问题显然是相对的,如果高系列的芯片中需要寻址的长度加长,显然,要么是继续增加指令字长,要么是继续分页,这是谁家的芯片都需要解决的问题。
 楼主| machunshui 发表于 2008-7-21 20:31 | 显示全部楼层

对于pic18的rom分段的取消,不是简单的通过增长指令长度解决

对于pic18的rom分段的取消,不是简单的通过增长指令长度解决的.<br /><br />而是把goto,call设计为双字指令,即goto,call占两个指令字长度,部分rom地址编码在指令的第二个字中.<br /><br />其实,有ROM分段也无所谓,编译链接应该有警告.<br /><br />关键是ROM分段不能太多,太多应用就不方便了.<br /><br />pic18如果不设计成双字指令,那ROM分段太多了.(pc长度21位&nbsp;2M寻址空间)<br /><br />这是pic18必须设计成双字指令的一个原因吧.
su_mj000 发表于 2008-7-22 00:24 | 显示全部楼层

错!PIC16/PIC18的一大缺陷就是指令效率低下

证实这点很容易。以同一段C语言的程序(如&nbsp;atoi();最好是以16甚至32位的数据&nbsp;运算),用不同种类芯片的编译器编译以后比较。<br />
 楼主| machunshui 发表于 2008-7-22 08:07 | 显示全部楼层

楼上,怎么比?

楼上,怎么比?<br />和ARM比16和32位,可能是不行.<br /><br />和同MIPS的8位机,你比过吗???<br /><br />要么,你能从指令系统角度说明pic效率低下,<br /><br />如果两者都不能,<br /><br />你的言论就可以无视.<br /><br /><br />要比,最好用汇编比,直接算指令周期,更加直观,<br /><br />你要是比过,就贴出个汇编例子,算算指令周期
yewuyi 发表于 2008-7-22 08:45 | 显示全部楼层

4楼真会挑例子

呵呵,16系列都没硬件乘法器,你那那个比肯定是不行的了……<br /><br />评价一个芯片要全面评价,一叶障目,不见泰山,呵呵,从PIC的销售量上来说,PIC还是基本得到大家认可的,MCP的策略就是在一个芯片上作到专,而不是全,通过多系列、多型号让大家有各种各样最适合自己方案的选择
 楼主| machunshui 发表于 2008-7-22 08:57 | 显示全部楼层

pic18有单周期硬件乘法器

pic18有单周期硬件乘法器,pic24还要硬件除法器.<br /><br />要是拿pic24和别的单片机比除法运算,<br /><br />别的单片机很多都可以说都是效率低下
 楼主| machunshui 发表于 2008-7-22 08:58 | 显示全部楼层

要比最好用汇编,算指令周期,指令空间

要比最好用汇编,算指令周期,指令空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

3224

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部