首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指令周期(PIC18)

指令周期(PIC18)
EN

Stack Overflow用户
提问于 2015-10-19 00:18:14
回答 1查看 805关注 0票数 1

我试图理解执行指令所需的步骤及其与每个振荡器周期的关系。PIC18F4321的数据表似乎将这个过程划分为两个基本步骤:获取和执行。但是,当说出哪一步属于哪个振荡器周期时,它似乎并不一致。例如,它说:

在内部,程序计数器在每个Q1上递增;指令从程序存储器中取出,并在Q4期间锁入指令寄存器(IR)。

这听起来很奇怪,因为它没有提到Q2和Q3。从这一点出发,我几乎会被引导到一个振子周期,因为它发生在Q4中。但只要再读一读,它就会说:

读取和执行指令的方式是流水线化的,使取的指令周期为一次,而解码和执行则采用另一次指令周期,然而由于流水线的缘故,每条指令有效地在一个再读周期内执行。

所以现在它告诉我,抓取需要通过Q1通过Q4。基于此,我假设如果不是用于流水线,指令将需要2个指令周期才能通过,因为一个完整的指令周期仅用于获取。但我明白在实际操作中,流水线会使人觉得只需要一个指令周期就可以完成指令。

还有一点,我认为这是最令人困惑的部分,它说:

在执行周期中,获取的指令被锁定到循环Q1中的指令寄存器(IR)中。然后,在Q2、Q3和Q4循环中解码并执行该指令。数据存储器在Q2(操作数读取)期间读取,在Q4 (目标非特定写入)期间被写入。

基于我所阅读的这些和其他来源,它似乎将执行部分划分为解码、读取、处理和写入(这让我感到困惑,因为当我不认为它实际上指的是“提取和执行”的执行部分时,它就一直使用“执行”这个词。

( 1)现在,它什么时候做每一件事?很明显,当它说,读/写将发生在第二季度/第四季度。那么Q3应该在处理吗?

2)用于解码的振荡器周期是什么?

3)如果您在获取同一条指令时只在Q1中使用Q4,为什么要将指令锁定为IR?

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 03:07:38

免责声明:我从未编写过PIC asm代码,更不用说对PIC进行任何性能分析了。我主要是从阅读http://agner.org/optimize/http://realworldtech.com/上的内容中了解到更强大的CPU,比如http://agner.org/optimize/。这个答案仅仅是基于你在问题中输入的手册的片段,因为它们对我来说是有意义的。,我可能完全误解了的意思。

因此,就外部时钟而言,它是一个2周期流水线(Fetch Execute),在执行核中有一个四泵时钟。执行阶段被细分为4个流水线阶段。有点像Pentium4是如何使用双泵执行单元的(即一个使用更快时钟的流水线级)。

  1. 听起来是的,指令执行发生在Q3中。

2)用于解码的振荡器周期是什么?

我不明白这个问题。它使用所述乘法时钟解码每个输入时钟的一条指令。

3)如果您在获取同一条指令时只在Q1中使用Q4,为什么要将指令锁定为IR?

听起来PC在Q1中是递增的,所以在执行指令时,它指向下一个指令。在Q4中,下一个指令将被提取到IR中,以便为下一个周期的执行做准备。这是指令数据本身(即PC所指向的)。我不确定这部分,但这是有道理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33204774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档