时钟周期,机器周期,指令周期
做嵌入式开发,之前追求的是懂得越多越好,最近的一段时间的经历给自己提示,作为一个工程师,不仅面要广,而且深度也必须到位。工作与信息安全相关,涉及一些加密算法,平时都用协处理器来做,根本不用去优化代码,最近想要不把加密算法实现在DSP上看看在DSP上的计算速度与协处理器相比会怎样。
因此查了一些资料,看为什么DSP会比单片机快,其中涉及一些机器周期指令周期的内容,百度了一下,查到相关资料,看到都是之前课本上讲过的,之前都没有注意过,现在记录下来,以供以后随时查看。
原文地址:https://zhidao.baidu.com/question/281443102.html
时钟周期/震荡周期:
时钟周期又叫震荡周期、节拍周期,定义为时钟晶振频率的倒数,时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。例如晶振为12M,则时钟周期为1/12us。又可以被定义为节拍。
机器周期:
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。比如,取值周期,取数周期。在80C51内部,机器周期一般包括12个时钟周期。例如24M的晶振,机器周期为12/24M秒。
指令周期:
指令周期是指取出并完成一条指令所需的时间,一般由若干个机器周期组成,分为单周期指令,双周期指令和多周期指令。
对于一些简单的单字节指令,在取指令在后期中,指令取出到指令寄存器后,立即译码执行,不再需要其他的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令、则需要两个或两个以上的机器周期。
之前看到一款安全芯片提到 指令周期为一个系统时钟周期,开始不是特别明白,后来查阅网上的资料,资料里面讲到:
单周期指令的CPU一般都是基于RISC架构的,像ARM,AVR这样的,指令集中抛弃那些复杂的指令,对于一条指令来说5个阶段是串行执行,但这5个功能单元是并行运行的。
单周期指令是指流水线处理,像CPU中的RISC架构/DSP处理器等。流水线处理一般把一条指令分为多级(大多都在5-7级),每一级都可以并行执行(总线和存储器不发生冲突时)。实际上执行一条指令需要多个指令周期,由于单周期内也有多条指令处于执行的不同阶段,平均下来相当于单周期指令。
这样看起来,就大概知道为什么DSP快了,它是单周期指令的。
当然还会有一些别的设计在里面。
要想把算法集成到DSP中使其运算的快,还要代码放到内部RAM中运行,代码算法优化,或者用汇编编写等各个方面。