历史上的今天
今天是:2025年03月02日(星期日)
2020年03月02日 | PIC系列单片机采用指令流水线结构
2020-03-02 来源:eefocus
因为PIC系列单片机采用了指令空间和数据空间分开的哈佛结构,用了两种位数不同的总线。因此,取指令和取数占有可能同时交叠进行,所以在PIC系列微控制器中取指令和执行指令就采用指令流水线结构。当第一条指令被掏出后,随即进入执行阶段,这时可能会从某寄存器取数而送至另一寄存器,或从一端口向寄存器传送数等,但数据不会流经程序总线,而只是在数据总线中活动,因此,在这段时间内,程序总线有空,可以同时掏出第二条指令。当第一条指令执行完毕,就可执行第二条指令,同时掏出第3条指令,……如斯等等。这样,除了第一条指令的掏出,其余各条指令的执行和下一条指令的掏出是同时进行的,使得在每个时钟周期可以获得最高效率。
在大多数微控制器中,取指令和指令执行都是顺序进行的,但在PIC单片机指令流水线结构中,取指令和执行指令在时间上是相互重叠的,所以PIC系列单片机才可能实现单周期指令。
只有涉及到改变程序计数器PC值的程序分支指令(例如GOTO、CALL)等才需要两个周期。
此外,PIC的结构特点还体现在寄存器组上,如寄存器I/O口、定时器和程序寄存器等都是采用了RAM结构形式,而且都只需要一个周期就可以完成访问和操纵。而其它单片机常需要两个或两个以上的周期才能改变寄存器的内容。上述各项,就是PIC系列单片性能做到指令总数少,且大都为单周期指令的重要原因。
史海拾趣
|
有这样一个语句:PieVectTable.T1PINT=&tim_isr//将中断的入口地址写到向量表的起始位置 也就是说tim_isr()成了中断服务程序。 我有个疑问:PieVectTable是PIE_VECT_TABLE的结构体变量,他要对PIE_VECT_TABLE结构体中定义的T1PINT成员进行访问 ...… 查看全部问答> |
|
#include #define uchar unsigned char #define uint unsigned long int #define RS RB4 #define E RE2 #define UPKEY RB1 #define DOWNKEY RB2 #define CLRKEY RB5 uchar table[]=\" 000:000:000 ...… 查看全部问答> |
|
手持设备,操作系统为WINCE,当USB接口接上电脑的时候为手持设备为disk mode,而接上带USB接口的充电器就充电, 现在的问题是:我怎样区分插上的另一头连接计算机的USB线,还是另一头个就是AC供电器的线。wince usb驱动里面 怎样标志他们的不同呢 ...… 查看全部问答> |
|
Microsoft ActiveSync 方式复制文档到wince与通过SD Card复制到wince有区别吗? Microsoft ActiveSync 方式复制文档到wince与通过SD Card复制到wince有区别吗? 问题正如标题! 我今天才发现的,我通过SD CARD复制一个应用程序文档到winCE,发现不能运行,提示错误,具体内容忘记了,类似不可以识别之类。 后来我通过Microsof ...… 查看全部问答> |




