打印

ARM和51的速度疑惑

[复制链接]
5769|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
称序匠人|  楼主 | 2009-9-22 23:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM, ip, ps, MIPS, hz
比如C8051F120 它的晶振接22.1184Mhz
100 MIPS

而cortex-m3的外接 8M 倍频后达到 72Mhz

但只有 1.25mips/Mhz 这样1.25*72= 90 mips

是C8051F120 每秒执行百万指令多
也就是这51比这arm 速度更快吗?

新手问下  这2 CPU和 晶振 速度 和mips 怎么理解?

相关帖子

沙发
zq1987731| | 2009-9-23 00:57 | 只看该作者
LZ说的M3是STM32吧...看到这72M主频就明白了...
在此注意一点:1.25 DMIPS/MHz (Dhrystone 2.1)
另外LZ竟然拿51和M3比.......指令长度8位和32位就是一大差距
另外某些人一直根深蒂固的思想即51的IO速度...本人泼盆冷水先:
示例用死循环(其余省略)——

while(1)
{
    P1_1 = 1;
    P1_1 = 0;    // 禁止中断,while(1)判定占用时间忽略
}
然后...
标准51(AT89XXX)在12MHz主频下方波输出500KHz(这个大家都知道)
STC在12MHz晶振下IO方波输出1.5MHz(所谓的“单周期”,其IO操作仍需4个时钟,不信自己去试试)

那么...请仍然认为51的IO速度在同样主频下比ARM-Cortex-M3快的各位请解释下——
STM32在72MHz主频下能让GPIO通过1→0翻转的死循环输出18MHz方波是怎么回事?

51还能死撑多半是靠它的廉价,以及庞大的潜在用户群,毕竟超多高校都拿这个作为基础课......

使用特权

评论回复
板凳
huangqi412| | 2009-9-23 06:54 | 只看该作者
。。。CPU不是专门干IO反转的吧。。。   看看运算能力

使用特权

评论回复
地板
ningling_21| | 2009-9-23 07:26 | 只看该作者
关键是看CPU的综合性能

使用特权

评论回复
5
aozima| | 2009-9-23 07:32 | 只看该作者
经常看到有人程序中写着delay_ms(*)
然后在那里骂ARM的IO翻转效率低

使用特权

评论回复
6
ejack| | 2009-9-23 07:36 | 只看该作者
3L的例子不准确。
评价CPU,价格、性能(速度、指令效率)、功能模块、扩展能力、口碑、购买渠道……

使用特权

评论回复
7
zq1987731| | 2009-9-23 08:22 | 只看该作者
评价CPU,当然是多方面的因素,可我仅针对51的强项——即IO速度来说,那么我在3L的例子不准确?请Mr.ejack单就I/O速度举个更准确得例子出来。
    在很多人潜意识里,51是绝不能和M3比的,但他们的底线是M3的IO操作速度在51之下,以及51的廉价(而非性价比)。我只是击溃“51的I/O速度比ARM快”这一“防线”而已。
    另外51中大量使用delay_ms(*)让人看了就不爽,这宝贵的CPU时间都拿来干了些什么?速度本来够慢了,还来个慢上加慢!

使用特权

评论回复
8
machunshui| | 2009-9-23 10:57 | 只看该作者
stm32 是1.25DMIPS,不是MIPS。

DMIPS标志的时运算性能,
MIPS是指令执行速度。

不能混为一谈

使用特权

评论回复
9
NE5532| | 2009-9-23 21:50 | 只看该作者
速度不是光看谁跑得快,要看跑什么,怎么跑。ARM对OS有硬件支持,跑OS就快。

使用特权

评论回复
10
ejack| | 2009-9-23 22:26 | 只看该作者
8# zq1987731

我没说你的观点不对,我只是说你举的例子不太准确。
1.你的例程能让基本51翻出500kHz标准方波吗?
2.翻转IO不是特别合适用来表述51的短板。慢吞吞的51通过一些扩展模块一样能产生高速方波;高速CPU操作IO如果不提高效率也会很低劣……
3.delay_ms()的确是很让人心痛的东东……不过结合51一般应用的场合,他除了傻等还能干什么呢?

使用特权

评论回复
11
zq1987731| | 2009-9-24 00:04 | 只看该作者
本帖最后由 zq1987731 于 2009-9-24 16:07 编辑
1.你的例程能让基本51翻出500kHz标准方波吗?

这样啊...可能是3L的注释部分本人写得太不起眼了..
我特别说明一点就是while(1)判定时间忽略,中断关闭
实际上真正写在单片机中的测试程序中的无限死循环是这样:
 
while(1)
{
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0; P1_1 = 1; P1_1 = 0;
    ………………………………(直到ROM放不下为止)  
}
然后IO口输出的方波频率就是极其接近500K,STM32的IO翻转速度18MHz我也是这么干的。

用这个简陋的例子就是因为它被广泛的“51迷”用来和M3叫板而已...而就在这一点上加以证明才比较有“说服力”。

2.翻转IO不是特别合适用来表述51的短板。慢吞吞的51通过一些扩展模块一样能产生高速方波;高速CPU操作IO如果不提高效率也会很低劣……

产生高速方波只是一个举例,就和点LED一样,谁会在应用中让单片机造方波?除了PWM...可连不带硬件PWM光靠定时器都能输出三相+死区的STM32都已经这么强了,要是LPC17XX那个系列带完全硬件PWM的还得了?说到扩展模块..这方面51和ARM没有可比性,后者仅仅依靠自身单芯片就可完成51拖了一大堆外围“模块”的多数功能,何况STM32直接有将主频分频后输出的能力,典型值:36MHz

3.delay_ms()的确是很让人心痛的东东……不过结合51一般应用的场合,他除了傻等还能干什么呢?

我以前用51时,从来不用delay_ms();一般都是定时器提供时基后只在ISR中提供标志位的复位/置位,就比如键盘,用状态机+定时器几乎就是0等待,那么整个程序中凡是需要delay_ms();的一律状态机方法解决,delay_us();的话,如果数值小,直接死等,不然我会用个运行时间心理有数的“空闲任务”来堵“缝隙”。
后面上了STM32就没那么多事了,别说delay_ms();了,连delay_us();都没用过,这个毕竟主频高51太多,和51去比就显得是在“耍赖”了。

使用特权

评论回复
12
aceice| | 2009-9-24 12:08 | 只看该作者
本帖最后由 aceice 于 2009-9-24 12:09 编辑

:lol
我现在的51程序全是定时器+标志位方式运行,while里就只有sleep
感觉这样容易模块化。
一般的应用,都没有硬实时性这个要求。反正我没碰上。

使用特权

评论回复
13
machunshui| | 2009-9-24 12:37 | 只看该作者
"后面上了STM32就没那么多事了,别说delay_ms();了,连delay_us();都没用过,这个毕竟主频高51太多,和51去比就显得是在“耍赖”了。"

关键有些迷信51的,喜欢拿IO速度和ARM,
没有CM3以前,
因为ARM7不是特别针对控制的,
还真拿这些论调没办法。

使用特权

评论回复
14
大道至简| | 2009-9-24 15:13 | 只看该作者
奴隶制效率再高也高不过资本主义制度。

首先是架构的先进性,其次才是跑多快。。。。。。

我是这么认为的。。。。。

汽车开到200km就快要散架了,波音飞机的额定速度就800km。。。。。。

使用特权

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

本版积分规则

13

主题

36

帖子

0

粉丝