本人小白,欲转战ARM,请教一些问题
最近在为了ARM芯片选什么学而纠结。首先问一下,32位和8位的速度到底能差多少?(做大量的整数和浮点的数学运算)形象的说一下。
新唐的ARM Cortex M0好便宜啊(就单片芯片而言,那个带调试器的板子好贵啊)!缺点在哪儿(我相信有得必有失),和STM32系列(比如STM32-F103和新唐120系列的)比性能怎么样?
怎么从一个用惯了51和kiel的转型成用ARM的? "做大量的整数和浮点的数学运算"那你选ARM干嘛啊? 直接上DSP吧 那个带调试器的板子好贵啊
一点也不贵,赠送很多,二手的应该很便宜。 搭车同问:32位和8位的速度到底差多少?形象的说一下吧。 1.2 mips /Mhz stm32一般运行72M。51单片机在12M得时候大约一共才0.8 mips左右。楼主自己看吧。 qwe2231695 发表于 2013-6-4 10:18 static/image/common/back.gif
1.2 mips /Mhz stm32一般运行72M。51单片机在12M得时候大约一共才0.8 mips左右。楼主自己看吧。 ...
那单周期的40M的51岂不是也有几十mips了和stm32有的一拼:)
zhugean 发表于 2013-6-4 11:05 static/image/common/back.gif
那单周期的40M的51岂不是也有几十mips了和stm32有的一拼:)
单周期STC比51大约快5倍,RAM和flash 和流水线都不是ARM一个概念的,还缺少乘法器和指令分支预测。40M 单周期51最多能10MIPS吧。 STM32F3 有带FPU(浮点运算单元) 一台小货车一次能装8吨。一台大卡车一次能装32吨。
不说浮点运算,比如整数的加减乘数,在小于8位时,51和arm没差别。但是16和32位的时候,51要来回折腾才能运算完成,而arm也不过一条指令的事情。处理浮点数的时候差别就更大了,带fpu的arm不过几条指令十几个周期完成一次浮点乘法,8位的单片机估计要几百条指令上千个周期了。 买个开发板,上路吧,别问了,有51基础,很快的。
网上找来两张图! "一台小货车一次能装8吨。一台大卡车一次能装32吨。 "
这个形象,哈? Excellence 发表于 2013-6-4 11:38 static/image/common/back.gif
买个开发板,上路吧,别问了,有51基础,很快的。
+1 学STM32吧,用的人多,楼上兄弟也说了,买个板子上路吧,别拘泥于细节了,等你玩转STM32了其他的单片机也就容易了。 想一下这个问题:为什么8,16,32位就都是飞跃,而32位到64位就没那么轰动?
因为8位最大127,16位最大32767
计算机里寻址、计算等任何地方都需要整数
8或16位整数的处理能力,根本跟不上计算机的处理需求
甚至有的大数组,下标都不止3万个
所以在实际中,肯定需要经常把几个8或16位,拼成位数较多的数据来用
几个运算单位拼的数算起来能快么?
而32位最大已经有了2147483647之多
这个范围计算一般足够了,甚至连内存寻址,直接用都没有大问题
所以32位的当然快
但再往上的话,位数增长是指数,一次翻一倍;而人类的运算需求增长是线性,一点点慢慢涨
64位的最大有9.2 * 10^18之多
这么大的数,除了UNIX时间戳,或者是大于2G的大内存寻址,还有什么用?
所以64位推动计算变革的力量,也就比较有限
同理,高于128位的架构,我甚至都想不出再有什么存在的意义。 duci002 发表于 2013-6-4 12:07 static/image/common/back.gif
网上找来两张图!
谢谢!很有用。 shamiao 发表于 2013-6-4 13:32 static/image/common/back.gif
想一下这个问题:为什么8,16,32位就都是飞跃,而32位到64位就没那么轰动?
因为8位最大127,16位最大327 ...
说的有道理,不过最后一个观点不是很同意。 技术发展的速度往往超乎人们的意料,也许过不了多少年就会有128位计算的需求。我觉得目前人工智能技术的主要制约环节就在现有计算机处理能力不足,其次才是软件算法。 看楼主的取向,学STM32比较好。 Etual 发表于 2013-6-4 15:11 static/image/common/back.gif
看楼主的取向,学STM32比较好。
说道“取向”这个次就有种基的感觉。 单精度浮点四则运算同频率下CM3(不带FPU)比单周期51(C8051F)平均快3--4倍,不像想象中的快很多。 一般说的STM32都是Cortex-M3的103型号,不带FPU,实际上性能和1T的51差距不是特别巨大(特别是51晶振超过12M之后),STM32更多的是价格差距不太大的情况下,更多的资源(频率、内存、引脚、内部串口等),更灵活的引脚分配映射。
STM32 103系列 直白的讲,几乎是大品牌中计算性能最差的MCU了,其他的哪家做的性能都比他家好,但是价格也贵,另外就是大家对计算性能的要求其实没那么高,价格又差不多,所以,火了 javabean 发表于 2013-6-5 09:33 static/image/common/back.gif
一般说的STM32都是Cortex-M3的103型号,不带FPU,实际上性能和1T的51差距不是特别巨大(特别是51晶振超过12 ...
谢谢提示,我觉得大量的浮点数运算还是DSP来的靠谱。那么带FPU的STM32有哪些,运算速度如何?M0和M3,M4的性能差异到底在哪儿(同频率条件)? 清雨影 发表于 2013-6-5 10:33 static/image/common/back.gif
谢谢提示,我觉得大量的浮点数运算还是DSP来的靠谱。那么带FPU的STM32有哪些,运算速度如何?M0和M3,M4 ...
传统的ARM对应于现在的Cortex-A系列,也就是A8,A9,A15这些架构,性能不错,你看现在手机都用它,而且还打算往服务器方向进军,DSP之类的说实话这两年不是那么火爆了,FPGA比较流行一些,要不然挖矿bitcon怎么不用DSP,二用FPGA,Coretex-M是MCU的级别,性能,容量都有限,价格不错
M0,M0+,M1,M3,M4主要是指令集不同,也就是Thumb的版本不同,主要是指令数量的扩展,单周期乘法器,如果是其他系列还有64位的CPU,超长指令之类的出现,当然这些现在来只要你不是搞时代风头浪尖的东西都用不着。
从运算速度来说,STM32 F1与F4同频率下,F4要快一倍,但是考虑到F4的频率可以达到168M,而F1只有72M(讨论性能的时候就不要看低电压低功耗的型号啦),都按设计的最大时钟频率来看,实际性能大概差5倍左右。当然这主要是数学运算测试的结果。当然如果跳出ST的圈子,看看其他厂商,那么性能还有不少提升空间。当然,如果你真的追求速度,Cortex-M不是你的选择,Cortex-A15才是你的目标。随随便便就能升到1.5G的主频,还有多核心,这才是主流…… javabean 发表于 2013-6-5 09:33
一般说的STM32都是Cortex-M3的103型号,不带FPU,实际上性能和1T的51差距不是特别巨大(特别是51晶振超过12 ...
比较赞同这个说法。如果AVR Mega系列跑在16M,在很多实际应用中并不会比STM32F103系列差很多。 LDMega 发表于 2013-6-5 11:45 static/image/common/back.gif
比较赞同这个说法。如果AVR Mega系列跑在16M,在很多实际应用中并不会比STM32F103系列差很多。 ...
atmega8可只是8位机…… 清雨影 发表于 2013-6-5 13:20
atmega8可只是8位机……
我知道是8位的,我是说一些实际的应用,不是跑什么测试。比如IO控制,Mega系列不见得比STM32差。 共同关注! CM3运算的主要优势是32位运算,特别是单周期的乘法和硬件除法指令,缺点是运算牵涉到内存的话效率较低。 速度很重要吗?我觉得关键是资源,各种资源,不全指片上的硬件,比如可以使用基于库的开发,可以基于更复杂操作系统的开发……,软件可以大量的复用,这样可以加快开发的进度。
就速度而言,ARM的M3比51要快很多,但快多少,从量上还真说不上,但我觉得就控制领域而言,速度好像不是主要的考虑因素。
进入ARM,你会进入一个完全不同的领域,许多问题的考虑思路会完全不同,
如果只注重讨论速度,说明还没有从资源匮乏的8位开发的领域、方式中走出来
页:
[1]