1. 程式人生 > >怎麼理解STM8的三級流水線架構?

怎麼理解STM8的三級流水線架構?

我們知道STM8使用了三級流水線來執行它的指令程式碼,那要怎麼樣來理解三級流水線的意思呢?三級流水線是以下三級:
1. 取指令
2. 指令解碼和定址
3. 指令執行
我們來打個炒雞蛋的比方吧,現在有3個人一起炒雞蛋,第1個人(小明)取雞蛋,第2個人(小華)敲開雞蛋,第3個人(小強)炒雞蛋。(當然現實生活中炒雞蛋需要的時間比前現兩個要多得多,我們這裡假設他們3個的動作都很快。)小明取完雞蛋給小華後,應該馬上取下一個雞蛋,而小華敲開雞蛋給小強後,就可以很快就接到小明拿過來的雞蛋了,而小強炒完後也可以馬上再拿到下一個雞蛋。所以這種方式是很快的,這也是三級流水線的通俗理解。如果只是小強一個人炒的話,那取雞蛋,敲開雞蛋,和炒雞蛋都是自己一個人做,那顯然效率就降低了很多。所以看回到我們的三級流水線架構,就是這樣子的一個過程。下圖是某三條指令的執行時間圖。
這裡寫圖片描述


其中F1~F3代表Fetch(取指令)的意思,D代表Decode(解碼)的意思,而E代表Execution(指令執行)的意思。可以看到取址階段第一條指令取完後,馬上就取第二條指令,解碼階段第一條指令解碼完就馬上解碼第二條指令,執行階段也是一樣的過程。跟上面的炒雞蛋的例子是相型別的。
我們再來看一個STM8三級流水線執行程式碼的圖。
這裡寫圖片描述
從圖中我們可以看到,我們的PC指標一直都是指向第二級的,即是解碼和定址階段的那一級,而不是第三級(程式碼正在執行)。所以說跟我們平常所想的還是有些不一樣的。
好吧,本文就到這裡。