我想了解通過指令及其與每個振盪器週期的關係所需的步驟。 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是一個時鐘週期的四分之一。在我看來,有些語言指的是整個輸入時鐘,而其他語言則指的是四倍頻時鐘的週期。 –