我想了解通过指令及其与每个振荡器周期的关系所需的步骤。 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?
什么是“Q1/Q2/Q3/Q4”?那些时钟周期的名称是?甚至没有链接到您引用的数据表。听起来它可能是一个4或5阶段的流水线,除非很明显指令有单周期延迟。 (作为依赖链的一部分的有效延迟比在更复杂的CPU上的完整流水线长度短得多。分支误预测惩罚显示分支指令执行阶段之前的流水线长度。) –
对不起,我认为说明微控制器的名字就足够了:http://ww1.microchip.com/downloads/en/DeviceDoc/39689b.pdf。是的,他们是时钟周期的名称。从数据表中,时钟输入被分为4个非重叠时钟(Q1到Q4,相当于1个指令周期) – somename
我通常不写PIC的asm,并且不确定谷歌会找到合适的数据表。但是好的,所以Q1到Q4是一个时钟周期的四分之一。在我看来,有些语言指的是整个输入时钟,而其他语言则指的是四倍频时钟的周期。 –