文档库 最新最全的文档下载
当前位置:文档库 › 指令周期比较

指令周期比较

指令周期比较
指令周期比较

8051、ARM和DSP指令周期的测试与分析

[日期:2007-1-12] 来源:单片机与嵌入式系统应用作者:华中科技大学李达

[字体:大中小]

摘要在实时嵌入式控制系统中,指令周期对系统的性能有至关重要的影响。介绍几种最常用的微控制器的工作机制,采用一段循环语句对这几种微控制器的指令周期进行测试,并进行分析比较。分析结论对系统控制器的选择有一定的指导作用。关键词指令周期测试AT8 9S51 LPC2114 TMS320F2812

在实时控制系统中,选择微控制器的指标时最重要的是计算速度的问题。指令周期是反映计算速度的一个重要指标,为此本文对三种最具代表性的微控制器(AT89S51单片机、ARM7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和测试。为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置位和清零,通过观察GPIO口的波形变化得到整个循环的周期。为了将整个循环的周期与具体的每一条指令的指令周期对应起来,通过C语言源程序得到汇编语言指令来计算每一条汇编语言的指令周期。

1 AT89S51工作机制及指令周期的测试

AT89S51单片机的时钟采用内部方式,时钟发生器对振荡脉冲进行2分频。由于时钟周期为振荡周期的两倍(时钟周期=振荡周期P1+振荡周期P2),而1个机器周期含有6个时钟,因此1个机器周期包括12个晶振的振荡周期。取石英晶振的振荡频率为11.059 2 MHz,则单片机的机器周期为12/11.059 2=1.085 1 μs。51系列单片机的指令周期一般含1~4个机器周期,多数指令为单周期指令,有2周期和4周期指令。

为了观察指令周期,对单片机的P1口的最低位进行循环置位操作和清除操作。源程序如下:

#include

main() {

while(1) {

P1=0x01;

P1=0x00;

}

}

采用KEIL uVISION2进行编译、链接,生成可执行文件。当调用该集成环境中的Deb ug时,可以得到上述源程序混合模式的反汇编代码:

2:main()

3: {

4:while(1)

5:{

6:P1=0x01;

0x000F759001MOVP1(0x90),#0x01

7:P1=0x00;

0x0012 E4CLRA

0x0013 F590MOVP1(0x90),A

8:}

0x001580EDSJMPmain (C:0003)

其中斜体的代码为C源程序,正体的代码为斜体C源程序对应的汇编语言代码。每行汇编代码的第1列为该代码在存储器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。所有指令共占用6个机器周期(其中“MOV P1(0x90),#0x01”占用2个机器周期,“CLR A”和“MOV P1(0x90),A”各占用1个机器周期,最后一个跳转指令占用2个机器周期),则总的循环周期为6×机器周期=6×1.085 1 μs=6.51 μs。

图1 P1口最低位的波形

将编译、链接生成的可执行文件下载到AT89S51的Flash中执行可以得到P1口最低位的波形,如图1所示。整个循环周期为6.1 μs,与上面的分析完全一致。

2 LPC2114工作机制及指令周期的测试

LPC2114是基于ARM7TDMI核的可加密的单片机,具有零等待128 KB的片内Flas h,16 KB的SRAM。时钟频率可达60 MHz(晶振的频率为11.059 2 MHz,时钟频率设置为11.059 2×4 =44.236 8 MHz,片内外设频率为时钟频率的1/4,即晶振的频率)。A RM7TDMI核通过使用三级流水线和大量使用内部寄存器来提高指令流的执行速度,能提供0.9 MIPS/MHz的指令执行速度,即指令周期为1/(0.9×44.236 8)=0.025 12 μs,约为25 ns。

为了观察指令周期,将LPC2114中GPIO的P0.25脚设置为输出口,并对其进行循环的置位操作和清除操作。C源程序如下:

#include"config.h"

//P0.25引脚输出

#defineLEDCON0x02000000

intmain(void)

{//设置所有引脚连接GPIO

PINSEL0 = 0x00000000;

PINSEL1 = 0x00000000;

//设置LED4控制口为输出

IO0DIR = LEDCON;

while(1)

{IO0SET = LEDCON;

IO0CLR = LEDCON;

}

return(0);

}

采用ADS1.2进行编译、链接,生成可执行文件。当调用AXD Debugger时,可以得到上述源程序的反汇编代码:

main[0xe59f1020]ldrr1,0x40000248

40000224[0xe3a00000]movr0,#0

40000228[0xe5810000]strr0,[r1,#0]

4000022c[0xe5810004]strr0,[r1,#4]

40000230[0xe3a00780]movr0,#0x2000000

40000234[0xe1c115c0]bicr1,r1,r0,asr #11

40000238[0xe5810008]strr0,[r1,#8]

4000023c[0xe5810004]strr0,[r1,#4]

40000240[0xe581000c]strr0,[r1,#0xc]

40000244[0xeafffffc]b0x4000023c

40000248[0xe002c000]dcd0xe002c000

每行汇编代码的第1列为该代码在存储器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。循环部分的语句最关键的就是下面3句:

4000023c[0xe5810004]strr0,[r1,#4]

40000240[0xe581000c]strr0,[r1,#0xc]

40000244[0xeafffffc]b0x4000023c

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分GPIO的P0.25的输出波形,如图2所示。从图中可以看出,循环周期中保持为高电平的时间为1350 ns左右,低电平的时间为450 ns左右,即指令“str r0,[r1,#4]”和指令“str r0,[r1,#0xc]”均需350 ns 左右,而跳转指令则需100 ns左右。这主要是由于以下原因造成的:①ARM的大部分指令是单周期的,但是也有一些指令(如乘法指令)是多周期的;②基于ARM核的微控制器只有加载、存储和交换指令可以对存储器的数据进行访问,这样从存储器读数据或向存储器写数据要增加1个时钟周期;③访问片内外设要增加一个外设时钟周期。当然,每个指令还要有1个时钟周期,跳转时要清空流水线还要另加一定的时钟周期。

图2 GPIO的P0.25脚输出波形

为了观察乘法指令,特地采用下述汇编语言进行了实验。首先是没有乘法指令的汇编源程序:

INCLUDELPC2294.INC ;引入头文件

; P0.25引脚控制LED4,低电平点亮

LEDCONEQU0x02000000

EXPORTMAIN

;声明程序代码块

AREALEDCONC,CODE,READONLY

;装载寄存器地址,PINSEL0

MAINLDRR0,=PINSEL0

;设置数据,即设置引脚连接GPIO

MOVR1,#0x00000000

STRR1,[R0]; [R0] ← R1

LDRR0,=PINSEL1

STRR1,[R0]

LDRR0,=IO0DIR

LDRR1,=LEDCON

;设置LED控制口为输出

STRR1,[R0]

;设置GPIO控制参数

LOOPLDRR1,=LEDCON

LEDSETLDRR0,=IO0SET

; LED控制I/O置位,即LED4熄灭

STRR1,[R0]

; LED控制I/O复位,即LED4点亮

STRR1,[R0]

;无条件跳转到LOOP

B LOOP

采用ADS1.2进行编译、链接后的汇编代码为:

LOOP [0xe3a01780]movr1,#0x2000000

LEDSET[0xe59f0028] ldrr0,0x40000128

400000fc[0xe5801000]strr1,[r0,#0]

LEDCLR[0xe59f0024] ldrr0,0x4000012c

40000104 [0xe5801000]strr1,[r0,#0]

40000108 [0xeafffff9] bLOOP

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分的GPIO的P0.25脚输出波形,如图3所示。从图中可以看出,循环周期中保持为高电平的时间为450 ns左右,低电平的时间为550 ns左右。

图3 GPIO的P0.25脚输出波形2

在上例的LOOP循环部分中加入乘法指令,即将循环部分改为:

LOOP LDRR1,=LEDCON

LEDSETLDRR0,=IO0SET

STRR1,[R0]

MOVR2,#0x0234

MULR2,R1,R2

STRR1,[R0]

B LOOP

采用ADS1.2进行编译、链接后的汇编代码为:

LOOP[0xe3a01780]movr1,#0x2000000

LEDSET[0xe59f0030]ldrr0,0x40000130

400000fc[0xe5801000]strr1,[r0,#0]

40000100[0xe3a02f8d]movr2,#0x234

40000104[0xe0020291] mulr2,r1,r2

LEDCLR[0xe59f0024] ldrr0,0x40000134

4000010c[0xe5801000]strr1,[r0,#0]

40000110[0xeafffff7]bLOOP

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分的GPIO的P0.25脚输出波形,如图4所示。从图中可以看出,循环周期中保持为高电平的时间为550 ns左右,低电平的时间为550 ns左右。与上例比较可知,多出的MUL乘法指令和MOV传送指令共占用100 ns。

综上所述,得出如下结论:当ARM指令放在RAM中运行时,指令“str r0,[r1,#4]”和指令“strr0,[r1,#0xc]”均需350 ns左右,相当于14个指令周期;指令“ldr r0,0x4000012c”的执行时间为100 ns,相当于4个指令周期;MUL乘法指令和MOV传送指令共占用100 ns,相当于4个指令周期;跳转指令共占用100 ns,相当于4个指令周期。

3 TMS320F2812工作机制及指令周期测试

TMS320F2812是TI公司的一款用于控制的高性能和高性价比的32位定点DSP芯片。该芯片最高可在150 MHz主频下工作(本文将其设置到100 MHz),并带有18K×16位0等待周期片上SRAM和128K×16位片上Flash(存取时间为36 ns)。TMS320F2812采用哈佛总线结构,即在同一个时钟周期内可同时进行一次取指令、读数据和写数据的操作,同时TMS320F2812还通过采用8级流水线来提高系统指令的执行速度。

为了观察指令周期,对TMS320F2812的GPIOA0进行循环的置位操作和清除操作。C源程序如下:

#include "DSP28_Device.h"

void main(void) {

InitSysCtrl();/*初始化系统*/

DINT;/*关中断*/

IER = 0x0000;

IFR = 0x0000;

InitPieCtrl();/*初始化PIE控制寄存器*/

InitPieVectTable();/*初始化PIE矢量表*/

InitGpio();/*初始化EV*/

EINT;

ERTM;

for(;;) {

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

}

}

图4 GPIO的P0.25脚输出波形3

其中最重要的是要对通用输入/输出进行初始化和确定系统CPU时钟。其中系统的时钟通过PLL设定为100 MHz,而初始化InitGpio() 的源程序为:

#include "DSP28_Device.h"

void InitGpio(void)

{ EALLOW;

//多路复用器选为数字I/O

GpioMuxRegs.GPAMUX.all=0x0000;

//GPIOAO为输出,其余为输入

GpioMuxRegs.GPADIR.all=0x0001;

GpioMuxRegs.GPAQUAL.all=0x0000;

EDIS;

}

通过在主程序for(;;)的地方加断点,可以很容易找到上面主程序中循环部分程序编译后的汇编指令:

3F8011 L1:

3F8011761FMOVWDP,#0x01C3

3F8013 2820 MOV@32,#0xFFFF

3F8015 2820 MOV@32,#0xFFFF

3F8017 2820 MOV@32,#0xFFFF

3F8019 2820 MOV@32,#0xFFFF

3F801B 2820 MOV@32,#0xFFFF

3F801D 2820 MOV@32,#0xFFFF

3F801F 2B20 MOV@32,#0

3F8020 2B20 MOV@32,#0

3F8021 2B20 MOV@32,#0

3F8022 6FEF SBL1,UNC

其中第1列为程序在RAM中的位置,第2列为机器码,后面就是汇编语言程序。指令“MOV @32,#0xFFFF”使GPIO输出高电平,指令“MOV @32,#0”使GPIO输出低电平。其中含有6个使GPIOA0输出高电平的指令和3个使GPIOA0输出低电平的指令,系统的指

令周期为10 ns,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SA RAM中进行调试,可得GPIOA0的波形,如图5所示。其中高电平时间正好为60 ns。注意,由于3个低电平之后要进行跳转,故清空流水线的周期要长一些。

图5 TMS320F2812中GPIOA0的波形1

为了观察乘法指令的周期,将上述循环部分的C源程序修改为:

for(;;)

{Uint16 test1,test2,test3;

test1=0x1234; test2=0x2345;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

test3=test1*test2;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

}

上述程序经过编译、链接后的汇编指令如下:

3F8012L1:

3F80122841MOV*-SP[1],#0x1234

3F8014 2842 MOV*-SP[2],#0x2345

3F8016 761F MOVWDP,#0x01C3

3F8018 2820 MOV@32,#0xFFFF

3F801A 2820 MOV@32,#0xFFFF

3F801C 2820 MOV@32,#0xFFFF

3F801E 2D42 MOVT,*-SP[2]

3F801F 1241 MPYACC,T,*-SP[1]

3F8020 9643 MOV*-SP[3],AL

3F8021 2B20 MOV@32,#0

3F8022 2B20 MOV@32,#0

3F8023 2B20 MOV@32,#0

3F8024 6FEE SBL1,UNC

其中使GPIOA0为高电平的指令仍然为6个指令周期(其中包括1个乘法指令),因为乘法指令也是单周期的,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SARAM中进行调试可得GPIOA0的波形,如图6所示。其中高电平时间正好为60 ns,而由于3个低电平之后要进行跳转,要清空流水线,而且还要为乘法做准备,因此保持低电平的时间比图5所需的时间要长。当采用数字式示波器观察时,如果探头采用×1档观察的波形不是很理想,则可以采用×10档,并配合调节探头的补偿旋钮。

图6 TMS320F2812中GPIOA0的波形2

4 三种微处理器的比较

首先要强调的是,这几种微控制器都可以通过提高晶振的振荡频率来缩短指令周期,但是这些控制器的振荡频率是有一定限制的,例如单片机不超过40 MHz,而LPC2114的频率不超过60 MHz,TMS320F2812的最高频率为150 MHz。在同样的工作频率下,ARM 指令运行的指令周期远远高于传统的单片机。因为传统的单片机没有采用流水线机制,而ARM核和DSP都采用了流水线,但是由于访问外设和RAM等存储器要加一定的时钟周期,因此ARM不是真正可以实现单周期运行的,特别是不能实现单周期的乘法指令,而DSP 可以实现真正的单周期乘法指令,速度要远远高于ARM微控制器。

时钟周期.机器周期.指令周期的含义

时钟周期.机器周期.指令周期的含义 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是 单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最 基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ 的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于 时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统 一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速 度就越快。 8051单片机把一个时钟周期定义为一个节 第 1 页 拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段 完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周 期(状态周期)组成。 8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个 时钟周期定义为一个节拍(用P表示),二个节拍定义 第 2 页 为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就 是说一个机器周期=6个状态周期=12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周 期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译 码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则 第 3 页

时钟周期 指令周期 机器周期 状态周期

时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。 8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S 表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期:

执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。 总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。 指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。 机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。 时钟周期:CPU的晶振的工作频率的倒数。

51单片机指令周期,机器周期,时钟周期详解

51单片机指令周期,机器周期,时钟周期详解 51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是 又都不太一样,很容易混淆。还是详细分析一下。 时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振 荡周期。比方说,80C51单片机外接了一个11.0592M的晶体振荡器,那我们 就说这个单片机系统的时钟周期是1/11.0592M,这里要注意11.0592M是频率,周期是频率的倒数。 机器周期:单片机执行指令所消耗的最小时间单位。我们都知道51单 片机采用的CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的 时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数倍,这就是机器周期的意义所在。8051系列单片机又在这个基础上进行细分,将一个机器周期划分为6个状态周期,也就是S1-S6,每个状态周期又由两个 节拍组成,P1和P2,而P1=P2=时钟周期。这也就是经常说的8051系列单片机的的时钟频率是晶振频率的12分频,或者是1/12,就是这个意思。现在(截 至2012)新的单片机已经能做到不分频了,就是机器周期=时钟周期。 指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的 整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到 不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。 来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。

单片机指令周期怎么计算

单片机指令周期怎么计算 指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。 来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。 指令周期是不确定的,因为她和该条指令所包含的机器周期有关。一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。 对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期) 也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。 该定义指的是执行一条指令所需要的时间,通常一个指令周期会由若干个机器周期组成。指令不同,所需的机器周期数也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 PIC单片机指令周期计算PIC单片机的每四个时钟周期为一个内部指令周期 例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS 实例一:35us,8MHz的晶振,8位定时器,分频比1/2 ,初值E4 实例二:156.25us ,32768Hz的晶振,8位定时器,分频比1/32 ,初值FC 计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2

单片机时钟周期、机器周期、指令周期与总线周期

单片机时钟周期、机器周期、指令周期与总线周期 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状

态周期)组成。 8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。具体计算为:时钟周期Xcycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。 例如外接24M晶振的单片机,他的一个机器周期=12/24M秒;52系列单片机一个机器周期等于12个时钟周期。设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。12M经过分频变为1M,由T=1/f,即一个机器周期变为1us 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。通常,包含一个机器周期的指令成为单周期指令,比如CLR,MOV等等。包含两个机器周期的指令称为双周期指令。另外还有4周期指令,比如乘法和除法指令。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接

8051 时钟周期,机器周期,指令周期

时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ 的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储

器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是0.5425μs。一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,就是双周期指令,所以指令周期为0.5425μs 但不是所有机器周期都等于12个时钟周期的。

弱智的PIC教程之11 机器周期,指令周期

【弱智的PIC教程之11】 机器周期、指令周期 【问题引入】 上一讲中,我们单步执行时,可以看到LED一个一个被点亮。但如果连续运行,会发现LED乱闪烁 。为什么呢,我们来仔细研究一下。 下面这两张图,是RB0和RB1相继被点亮的截图。 可以看出,从RB0端口LED亮→灭→RB1亮,总共才花费2us的时间。如果将程序烧录到单片机硬件,用实际的电路进行运行,由于视觉暂留的原因,我们能看到的是8个LED全部亮,而不是一个一个依次点亮(用Protues仿真的效果与实际有差异)。 为此我们需要在每个LED点亮后,进行一段延时,让其保持一定的时间,再熄灭,点亮下一个LED。 是的,我们需要延时,增加一个延时子程序。这就是本讲要解决的问题。 【机器频率、机器周期】 每个单片机运行时,读需要一个元器件,就是晶振。如果你手头上有实物之类的电路板,可以找到上面的晶振,如下图的模样: 晶振和单片机内部的相关电路,构成一个振荡器,产生固定的振荡频率,单片机的运行全部依靠这种振荡,实现统一步

伐。可以把这种振荡比喻成为单片机的心脏。如果它出现故障停止运行了,单片机也就停止运行了。 有的电路板上找不到晶振,是因为已经固化的单片机内部了,或者使用的是陶振、阻容振荡。但这不影响我们分析。 仔细看晶振上的数值,比如我手头上的一个晶振,上面是“4MHz”,这就是单片机的心跳速度,我们叫做“机器频率”,其倒数就是“机器周期” 关于机器周期、指令周期我们在第14讲还会有进一步阐述。 回到前面这个例子来,我们是用Proteus仿真,在MPLAB IDE中,单击下面这个图标,打开PROTEUS程序: 进入到PROTEUS程序中,双击PIC16F628A,出现Edit Component对话框,如下: 这是我们在第3讲中设置的机器频率:4MHz,当然我们也可以设置成其他频率,如8MHz、20MHz等。就好比我们实际使用中,将4MHz的晶振换成8MHZ的一样。 关于晶振的使用条件,请参考该型号单片机的《数据手册》。 【指令周期】 指令周期是:单片机运行一“步”所花费的时间,等于4个机器周期。在上面的例子中,机器频率是4MHz,机器周期是1/4us,即0.25us,指令周期=4*0.25=1us。 在本讲开始的【问题引入】中,在第7us点亮RB0LED,运行两条指令后,点亮RB1LED,两条指令花去2us,所以第二张图上,显示在第7+2=9us时,RB1LED点亮。 PIC16系列的单片机大约有33条指令,绝大部分指令运行时,只需要一个指令周期。少数几条指令运行需要2个指令周期。如:GOTO、CALL等等,后面会有详细的介绍。

时钟周期机器周期指令周期

基本知识学习:时钟周期机器周期总线周期指令周期 学习linux才发现要懂得好多细节性的东西,这些东西原来总认为不知道也可以照样工作,呵呵~ 总体来说,学习计算机在windows下就是个错误,起码在入门后应该转移到linux/unix下来,尤其是对于计算机专业的人来说! 基本知识,还需要好好补补~朝花夕拾! From: https://www.wendangku.net/doc/1f16483273.html,/sodarfish/blog/item/8c6a4503816a28ea09fa93c3.html =============================================================================== ==== 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S 表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6 个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6 个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

三、简答题

三、简答题 1.请说明指令周期、机器周期、时钟周期之间的关系。 1.指令周期是指取出并执行一条指令的时间,指令周期常常用若干个CPU周期数来表示,CPU周期也称为机器周期,而一个CPU周期又包含若干个时钟周期(也称为节拍脉冲或T周期)。 2.某机字长32位,定位表示,尾数31位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少? 2.解: (1)定点原码整数表示时, 最大正数值= (231– 1 )10 最小负数值= -(231– 1 )10 (2)定点原码小数表示时, 最大正数值=–(1 - 231)10 最小负数值=–(1 - 231)10 3.比较通道、DMA、中断三种基本I/O方式的异同点。 答:通道是通过执行通道指令来实现输入/输出的,由通道负责对外围设备的统一管理,并组织外围设备与内存间的数据传输;DMA是由DMA控制器在获得总线控制权后,直接在内存与外设之间实现数据传送的,传送速率只受到内存访问时间的限制,适用于高速外设与内存间进行大量的数据传输;中断是通过CPU在响应中断时,转入中断服务程序,执行输入/输出指令来完成输入/输出的,比较适合随机出现的服务。 4.CPU中有哪些主要寄存器?简述这些寄存器的功能。 4.CPU有以下寄存器: ①指令寄存器(IR):用来保存当前正在执行的一条指令。 ②程序计数器(PC):用来确定下一条指令的地址。 ③地址寄存器(AR):用来保存当前CPU所访问的内存单元的地址。 ④缓冲寄存器(DR):CPU和内存、外部设备之间信息传送的中转站。 ⑤通用寄存器(AC):当运算器执行全部算术和逻辑运算时,为ALU提供一个工作区。 ⑥状态条件寄存器(PSW):保存运算的结果建立的各种条件码内容。 5.何谓串行传输,有何优缺点?适用什么场合? 5.串行传输是指用一条线按位串行传送数据 优点:线路成本低;缺点:传送速度慢 适用场合:主机与低速外设间的传送,远距离通信总线的数据传送,系统之间的通信总线的数据传送。 6.指令和数据都存放在主存,如何识别从主存储器中取出的是指令还是数据? 答:指令和数据都存放在主存,它们都以二进制代码形式出现,区分的方法为: (1)取指令或数据时所处的机器周期不同:取指周期取出的是指令;分析、取数或执行周期取出的是数据。 (2)取指令或数据时地址的来源不同:指令地址来源于程序计算器;数据地址来源于地址形成部件。 7.什么是微指令和微操作?微程序和机器指令有何关系?

时钟周期、机器周期、及指令周期

时钟周期、机器周期、及指令周期 本文介绍什么是时钟周期、机器周期、及指令周期等。 单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。―个机器周期包括12个时钟周期。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,也是一个晶振周期。它的一个机器周期是12×(1/12)us,也就是1us。 机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 指令周期 指令周期所需的时间执行指令,通常一个机器周期数组成。指令是不同的机器周期所需的数量也不同。对于一些简单的单字节指令,指令的读取周期,指示出指令寄存器解码后立即执行,不再需要其他机器周期。对于一些如指挥权的更复杂的指令,乘法指令,你需要两个或更多的机器周期。 通常的机器周期的指令称为单周期指令,其中包括两个机器周期的指令称为双周期指令

MSP430的时钟周期(振荡周期)、机器周期、指令周期之间的关系

MSP430的时钟周期(振荡周期)、机器周期、指令周期之间的关系 通用知识 时钟周期也称为振荡周期:定义为时钟脉冲的倒数(时钟周期就是直接供内部CPU使用的晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。 机器周期:在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。一个S周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。 指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 专用知识: 在430中,一个时钟周期= MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us; 一个机器周期=一个时钟周期,即430每个动作都能完成一个基本操作; 一个指令周期= 1~6个机器周期,具体根据具体指令而定。 另:指令长度,只是一个存储单位与时间没有必然关系。

MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为: (1)DCO 数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调;c:选择DCOCTL.MODx的值进行细调。 (2)LFXT1 接低频振荡器。典型为接32768HZ的时钟振荡器,此时振荡器不需要接负载电容。也可以接450KHZ~8MHZ的标准晶体振荡器,此时需要接负载电容。 (3)XT2 接450KHZ~8MHZ的标准晶体振荡器。此时需要接负载电容,不用时可以关闭。 低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。当然高端430还有锁频环(FLL)及FLL+等模块,但是初步不用考虑那么多。 MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。 (1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。 (2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。

指令周期、时钟周期、总线周期概念辨析

指令周期、时钟周期、总线周期概念辨析 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间)),它一般由12个时钟周期组成。而时钟周期=1秒/晶振频率,因此单片机的机器周期=12秒/晶振频率 . 指令周期(Instruction Cycle):取出并执行一条指令的时间。 总线周期(BUS Cycle):也就是一个访存储器或I/O端口操作所用的时间。 时钟周期(Clock Cycle):又称节拍周期,是处理操作的最基本单位。(晶振频率的倒数,也称T状态) 指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期。 指令周期 CPU每取出一条指令并执行这条指令,都要完成一系列的操作,这一系列操作所需要的时间通常叫做一个指令周期。换言之指令周期是取出一条指令并执行这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。例如一条加法指令的指令周期同一条乘法指令的指令周期是不相同的。指令周期常常用若干个CPU周期数来表示,CPU周期也称机器周期。指令不同,所需的机器周期数也不同。对于一些简单的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 总线周期 1.微处理器是在时钟信号CLK控制下按节拍工作的。8086/8088系统的时钟频率为4.77MHz,每个时钟周期约为200ns。 2.由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。一个总线周期一般包含4个时钟周期,这4个时钟周期分别称4个状态即T1状态、T2状态、T3状态和T4状态。 时钟周期 一个CPU周期时间有包含若干个时钟周期(通常称为节拍脉冲或T周期,他是处理操作的最基本单位)。时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 μs),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ

(2020年7月整理)数据通路及指令周期流程图.doc

数据通路、指令周期流程图 某计算机有如下部件,ALU,移位器,主存M,主存数据寄存器MDR,主存地址寄存器MAR,指令寄存器IR,通用寄存器R0 R3,暂存器C和D。 (1)请将各逻辑部件组成一个数据通路,并标明数据流动方向。 (2)画出“ADD R1,R2”指令的指令周期流程图。 (3)请述说RISC指令系统和CISC指令系统的区别及应用 解: (1) 设该系统为单总线结构,暂存器C和D用于ALU的输入端数据暂存,移位器作为ALU输出端的缓冲器,可对ALU的运算结果进行附加操作,则数据通路可设计如下: (2) 根据上面的数据通路,可画出“ADD R1,R2”的指令周期流程图如下:

ADD R1, R2 (3)请述说RISC指令系统和CISC指令系统的区别及应用 RISC 和CISC 是目前设计制造微处理器的两种典型技术,RISC虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有: (1)指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。 (2)存储器操作:RISC 对存储器操作有限制,使控制简单化;而

CISC 机器的存储器操作指令多,操作直接。 (3)程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。 (4)中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。 (5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。(6)设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。(7)用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。 (8)应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。

机器周期

机器周期 指令周期(Instruction Cycle):取出并执行一条指令的时间。 总线周期(BUS Cycle):也就是一个访问存储器或I/O端口操作所用的时间。 时钟周期(Clock Cycle):又称节拍周期,是处理操作的最基本单位。(晶振频率的倒数,也称T状态) 指令周期、总线周期和时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期。 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的 8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6 个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6 个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周 期,(也就是计算机通过内部或外部总线进行一次信息传输从而完成一个或 几个微操作所需要的时间)),它一般由12个时钟周期组成。而时钟周期=1 秒/晶振频率,因此单片机的机器周期=12秒/晶振频率 . 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

ARM7各种指令的周期数

ARM7各种指令的周期数 ARM7 具有3 级流水线结构(取指、译码、执行),对大多数指令来说每 条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入stall 状态,指令执行时间超过1 个周期。经过在LPC213x/214x(NXP ARM7TDMI-S)上的试验,得出各类指令的执行周期数如下:1、大部分算术运算和逻辑运算指令都是单周期的(乘法例外)。 2、STR 指令需要增加1 个总线周期。如果地址位于内部SRAM,则是2 个周期;如果地址位于AHB、VPB 等外设总线上(例如访问外设的寄存器),由于 局部总线和外设总线桥接还有额外延时,因此需要再增加一些周期数,在 LPC213x/214x 上,当VPB 和主频相同时,需要再增加5 个周期额外延时,即用STR 指令访问外设寄存器需要7 个期。3、LDR 指令需要增加2 个总线周期。同理,如果地址位于内部SRAM,则是3 个周期;如果地址在外设总线上,同样需要再增加一些周期数,在LPC213x/214x 上,当VPB 和主频相同时,LDR 指令需要8 个周期。4、对于一次操作多个寄存器的STM、LDM 类指令,指令周期数与STR、LDR 类似,但每增加一个寄存器需要增加一个总线周期,例如当地址位于内部SRAM、寄存器个数为N 时,执行周期数为1+N(STM)和2+N(LDM)。5、无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要3 个周期(假设访问程序存储空间是单周期的)。 6、LDR 指令的目标寄存器为R15(PC)时,相当于读总线+跳转,至少需要 5 个周期(假设访问程序存储空间是单周期的)。7、乘法指令根据操作数位数的不同,从2-5 个周期都有可能。8、对于所有的带条件的指令,如果条件不满足,指令不被执行,都只需要花1 个周期来跳过该指令。9、实际应用时,还需考虑程序存储器的访问速度(影响流水线取指阶段的周期数)以及Cache

MSP430单片机的时钟周期和机器周期与指令周期之间的关系解析

MSP430单片机的时钟周期和机器周期与指令周期之间的关系解析时钟简介: 时钟周期也称为振荡周期:定义为时钟脉冲的倒数(时钟周期就是直接供内部CPU使用的晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。机器周期:在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。一个S周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 MSP430 单片机上电后,如果不对时钟系统进行设置,默认800 kHz的DCOCLK为MCLK和SMCLK 的时钟源,LFXTl接32768 Hz晶体,工作在低频模式(XTS=O)作为ACLK的时钟源。CPU的指令周期由MCLK决定,所以默认的指令周期就是1/800 kHz=“1”.25μs。要得到lμs的指令周期需要调整DCO频率,即MCLK=1 MHz,只需进行如下设置:BCSCTLl=XT20FF+RSEL2;//关闭XT2振荡器,设定DCO频率为1 MHz。 DCOCTL=DCO2//使得单指令周期为lμs MSP430的时钟周期(振荡周期)、机器周期、指令周期之间的关系 在430中,一个时钟周期= MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us;一个机器周期= 一个时钟周期,即430每个动作都能完成一个基本操作;一个指令周期= 1~6个机器周期,具体根据具体指令而定。另:指令长度,只是一个存储单位与时间没有必然关系。MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为:

单片机指令周期_机器周期_状态周期_振荡时钟周期之间的关系

指令周期机器周期状态周期振荡时钟周期(时钟周期) 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用 4MHZ的时钟频率,则时钟周期为0.25us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期由6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期==6个状态周期==12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 总线周期:

单片机指令周期机器周期状态周期振荡时钟周期之间的关系19页word文档

指令周期机器周期状态周期振荡时钟周期(时钟周期) 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ 的时钟频率,则时钟周期为0.25us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期由6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期==6个状态周期==12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期。

相关文档
相关文档 最新文档