我试图了解通过指令所需的步骤以及它们与每个振荡器周期的关系。PIC18F4321 的数据表似乎将此过程分为 2 个基本步骤:获取和执行。但是在说哪个步骤属于哪个振荡器周期时似乎并不一致。例如,它说:
在内部,程序计数器每 Q1 递增一次;该指令在 Q4 期间从程序存储器中取出并锁存到指令寄存器 (IR) 中。
这听起来很奇怪,因为它没有提到 Q2 和 Q3。仅凭这一点,我几乎会认为获取需要 1 个振荡器周期,因为它发生在第四季度。但再读一点,它说:
指令获取和执行以这样的方式流水线化,即获取需要一个指令周期,而解码和执行需要另一个指令周期。然而,由于流水线,每条指令在一个周期内有效地执行。
所以现在它告诉我获取需要 Q1 到 Q4。基于此,我假设如果不是流水线,指令将需要 2 个指令周期才能通过,因为完整的指令周期仅用于获取。但我了解在实践中流水线如何使它看起来只需要 1 个指令周期来完成一条指令。
还有一点点,我相信这是最令人困惑的部分,它说:
在执行周期中,取出的指令在周期 Q1 被锁存到指令寄存器 (IR) 中。然后在 Q2、Q3 和 Q4 周期内解码并执行该指令。数据存储器在 Q2 期间读取(操作数读取)并在 Q4 期间写入(目标写入)。
根据我读过的这个和其他资料,它似乎将执行部分分为解码、读取、处理和写入(这让我感到困惑,因为当我认为它实际上并不是指执行部分时,它一直使用执行这个词“获取和执行”)。
1)现在,它什么时候做?当它说读/写将在第二季度/第四季度发生时非常清楚。那么Q3应该在处理吗?
2)解码的振荡器周期是多少?
3) 如果您刚刚在 Q4 中为同一条指令获取指令,为什么还要在 Q1 中再次将指令锁存到 IR?