打印

关于pic的rom分段,ram分页

[复制链接]
4654|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
machunshui|  楼主 | 2008-7-21 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学pic16,总是对pic16的rom分段,ram分页感到奇怪,其实仔细看看pic16的指令系统,就不觉得奇怪了.

pic16为了达到精简指令的简单快速要求,所有的指令都是单子指令,对pic16来说是14位指令,所以其指令中针对RAM文件寄存器寻址的位数只有7位,即128字节寻址范围.

goto和CALL指令中的ROM寻址位数只有11位,即2k寻址范围.

这样做的好处是,所有指令都是单字指令,cpu的内核译码执行单元将非常简单,统一.

每个指令的译码执行都为: 译码,读文件寄存器,运算,存储结果.

译码执行非常简单,统一.

单字节化指令的结果,使无论程序的执行效率还是代码率都很高,而且制造成本降低,功耗减小.
沙发
yewuyi| | 2008-7-21 20:13 | 只看该作者

主要是出于DIE面积的考虑

在高一些的系列中因为扩展了指令字长,所以这个问题就解决了,但这个问题显然是相对的,如果高系列的芯片中需要寻址的长度加长,显然,要么是继续增加指令字长,要么是继续分页,这是谁家的芯片都需要解决的问题。

使用特权

评论回复
板凳
machunshui|  楼主 | 2008-7-21 20:31 | 只看该作者

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

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

而是把goto,call设计为双字指令,即goto,call占两个指令字长度,部分rom地址编码在指令的第二个字中.

其实,有ROM分段也无所谓,编译链接应该有警告.

关键是ROM分段不能太多,太多应用就不方便了.

pic18如果不设计成双字指令,那ROM分段太多了.(pc长度21位 2M寻址空间)

这是pic18必须设计成双字指令的一个原因吧.

使用特权

评论回复
地板
su_mj000| | 2008-7-22 00:24 | 只看该作者

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

证实这点很容易。以同一段C语言的程序(如 atoi();最好是以16甚至32位的数据 运算),用不同种类芯片的编译器编译以后比较。

使用特权

评论回复
5
machunshui|  楼主 | 2008-7-22 08:07 | 只看该作者

楼上,怎么比?

楼上,怎么比?
和ARM比16和32位,可能是不行.

和同MIPS的8位机,你比过吗???

要么,你能从指令系统角度说明pic效率低下,

如果两者都不能,

你的言论就可以无视.


要比,最好用汇编比,直接算指令周期,更加直观,

你要是比过,就贴出个汇编例子,算算指令周期

使用特权

评论回复
6
yewuyi| | 2008-7-22 08:45 | 只看该作者

4楼真会挑例子

呵呵,16系列都没硬件乘法器,你那那个比肯定是不行的了……

评价一个芯片要全面评价,一叶障目,不见泰山,呵呵,从PIC的销售量上来说,PIC还是基本得到大家认可的,MCP的策略就是在一个芯片上作到专,而不是全,通过多系列、多型号让大家有各种各样最适合自己方案的选择

使用特权

评论回复
7
machunshui|  楼主 | 2008-7-22 08:57 | 只看该作者

pic18有单周期硬件乘法器

pic18有单周期硬件乘法器,pic24还要硬件除法器.

要是拿pic24和别的单片机比除法运算,

别的单片机很多都可以说都是效率低下

使用特权

评论回复
8
machunshui|  楼主 | 2008-7-22 08:58 | 只看该作者

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

3224

帖子

4

粉丝