|
单片机的执行速度与什么有关呢,当然对于初学者来说,第一时间想到的是晶振,没错,晶振算一个,但准确的来说应该是单片机的时钟源(再具体一点就是单片机的系统时钟)。单片机的时钟源来说有分为内部时钟和外部时钟,外部时钟源一般指的就是晶振了;内部时钟对于比较老的单片机是没有的(比如51单片机)。还有一点需要注意的是现在许多高级一点的单片机都会涉及到倍频和分频,n倍频即把单片机的时钟源乘以n作为单片机的系统时钟;分频与倍频恰好相反。
第二点,应该是执行一条指令需要多少个时钟周期,对于老一点的51单片机执行一条指令需要12个时钟周期,但现在大多数单片机执行一条指令仅需1个时钟周期(STC的 1 T 单片机),这样速度一下子就提高12倍。
第三点,就是常说的几位机,最初接触的51大多为8位机,而后来随着技术的发展有了16位机(飞思卡尔、AVR等)、32位机(stm32)。我们都知道所有的指令最后执行的都是一连串的2进制数,对于8位机一次可以执行8位,而16位机可以执行16位,32位机可以执行32位,这样32位的明显比8位的快。
最后一点也是比较难理解的一点,就是单片机的内部结构,正常情况下一条执行完成需要经过取指令、解密寻址、执行指令三个步骤,比较老的单片机在执行这三个步骤时需要按照执行顺序依次执行,而高级的单片机(stm32)具有三级流水线,通俗的理解就是可以同时执行三个步骤,这样也大大的增加了单片机的执行速度。
特别注意的是:所有的速度并不是成线性关系的,即在相同条件下,不是32位机的执行速度就是8位机的4倍,更不是具有三级流水线的单片机的执行速度是普通单片机的3倍。具体原因与其内部设计的局限性有关系,这里我也不太清楚,不做太多介绍了。
|
|