2015-10-19 84 views
1

我想了解通过指令及其与每个振荡器周期的关系所需的步骤。 PIC18F4321的数据表似乎将此过程分为两个基本步骤:取指和执行。但在说明哪一步属于哪个振荡器周期时,似乎并不一致。例如,它说:指令周期(PIC18)

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

这听起来很奇怪,因为它没有提到Q2和Q3。从这一点来看,我几乎会认为提取需要1个振荡周期,因为它发生在第4季度。但是,仅仅阅读远一点,它说:

取指令和执行在 一个取指需要一个指令周期,例如是以流水线方式进行,而译码和执行 采取另一种指令周期。但是,由于流水线化,每个指令在一个周期内有效地执行。

所以,现在它告诉我,提取Q1到Q4。基于此,我假设如果不是流水线操作,指令将需要2个指令周期才能完成,因为完全指令周期是单独读取的。但我明白在实践中流水线会使它看起来只需要1个指令周期来完成指令。

还是得远一点,我相信这是最令人困惑的部分,它说:

在执行周期,所取指令锁存到循环 指令寄存器(IR) Q1。这个指令然后在Q2,Q3和Q4周期内解码并执行 。数据存储器是在Q2(操作数读取)期间读取的并且在Q4 (目标写入)期间读取的 。

在此基础上,我看过其他来源,好像是分执行部分为解码,读取,处理和写入(它混淆了我,因为它使用的是执行的时候,我不认为这是实际上是指“获取和执行”的执行部分)。

1)现在,它们每个都做什么?当它说读写会在第二季度/第四季度发生的时候非常清楚。所以Q3应该在处理?

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

3)如果您在第4季度获取了相同的指令时,为什么您必须在Q1中再次将指令锁存到IR?

+0

什么是“Q1/Q2/Q3/Q4”?那些时钟周期的名称是?甚至没有链接到您引用的数据表。听起来它可能是一个4或5阶段的流水线,除非很明显指令有单周期延迟。 (作为依赖链的一部分的有效延迟比在更复杂的CPU上的完整流水线长度短得多。分支误预测惩罚显示分支指令执行阶段之前的流水线长度。) –

+0

对不起,我认为说明微控制器的名字就足够了:http://ww1.microchip.com/downloads/en/DeviceDoc/39689b.pdf。是的,他们是时钟周期的名称。从数据表中,时钟输入被分为4个非重叠时钟(Q1到Q4,相当于1个指令周期) – somename

+0

我通常不写PIC的asm,并且不确定谷歌会找到合适的数据表。但是好的,所以Q1到Q4是一个时钟周期的四分之一。在我看来,有些语言指的是整个输入时钟,而其他语言则指的是四倍频时钟的周期。 –

回答

0

免责声明:我从来没有写过PIC ASM代码,更不用说做PIC的任何性能分析了。我大多知道更强大的CPU,比如x86,读http://agner.org/optimize/,以及http://realworldtech.com/。这个答案只是基于您在问题中提供的手册片段,因为它们对我来说确实有意义。 我可能完全误解了一些东西


所以在外部时钟而言,这是一个2循环管线(读取|执行),在运行核心四泵浦时钟。执行阶段被细分为4个流水线阶段。有点像Pentium4有双重执行单元(即一个使用更快时钟的流水线阶段)。


  1. 听起来好像是的,指令执行中发生了第三季度。

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

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

3)你为什么要锁住指令,在第一季度再次IR如果你 只是做了,在第四季度,当你取这个相同的指令?

听起来PC在Q1中增加了,所以在指令执行期间它指向下一条指令。在Q4中,下一条指令完成被提取到IR中准备执行下一个周期。这是指令数据本身(即PC指向的内容)。我不确定这部分,但这是有道理的。

相关问题