隨著我們的解讀,電腦的結構已經越來越清晰,我們知道將電腦指令組合在一起成為程式來控制硬體工作,這樣巧妙的通過編寫不同的軟體來控制相同的硬體以完成不同的任務,以增強系統靈活性。我們也知道電腦指令無非也就是傳傳資料,作作運算。但是我們仍不知道對於每一條指令的執行,電腦是如何控制的。
cpu內部控制
和pc體系機構一樣,cpu內部也是一個有機整體,分成很多組件來一起完成cpu的功能。與外部匯流排相連的有地址緩衝器MAR,資料緩衝器MAR。內部功能組件有運算器ALU,與運算器相關的是累加器 ACC,與指令相關的是指令計數器pc, 指令寄存器 IR等。與外部cpu指令控制pc介面之間的資料互動一樣,在cpu內部,通過微指令來控制資料在cpu內部以及與外部匯流排的資料流向開關。我們可以為cpu構築一個簡單的模型,如。
MRD和MAR與外部的匯流排相連,分別用來緩衝匯流排資料和發送地址給匯流排。pc是程式計數器用來存放下一條指令的地址。IR是指令寄存器用來存放從記憶體中取出的地址。AC是累加器,與外部匯流排相連,同時作為ALU運算器的一個運算元以及運算結果。CU是控制器,他根據IR中指令中的作業碼,結合時鐘訊號,發出一系列的控制訊號。現在我們來看看cpu是如何從記憶體中取出指令來執行的。
1,控制訊號C(0)有效,開啟PC送往MAR的控制門,pc中的地址達到MAR中。
2,控制訊號C(1)有效,開啟MAR送往地址匯流排的輸出門。
3,通過控制匯流排向主存發讀訊號。
4,控制訊號C(2)有效,開啟資料匯流排送至MDR的輸入門。
5,C(3)有效,開啟MDR和IR之間的控制門,至此,指令送至IR
6,C(4)有效,開啟指令作業碼送至CU的輸出門,CU在作業碼和時鐘的控制下產生該指令的各種控制訊號。
7,使PC 內容加1。
指令解碼
真的是很簡單,cpu執行指令其實就只需要針對每個指令,記住它的時序控制序列,知道每個指令在執行的時候,每個刻度應該發特定的控制訊號來聯通兩個元件,使資料從一個元件進入另一個元件,或者與匯流排進行互動。顯然,每個指令的執行,都是發一些不變的控制訊號,每一條指令其實就是對應於一系列的開關動作,每一個開關動作就是所謂的微操作,而且我們還可以把這些微操作寫在韌體裡,只要升級韌體,就可以完成對指令操作的修改或者升級。
中的cpu模型沒有考慮到cpu的內部匯流排,cpu內部元件之間是直接連在一起的,我們也可以改進這個模型,用內部匯流排將各組件連在一起,然後再設定每個元件進出匯流排的開關,這樣我們同樣可以通過控制訊號,來控制資料從一個元件通向另一個元件,圖所示。
在這種高超的設計下,電腦得以智能的的運行,同時我們看到,電腦其實就是一個普通的自動控制系統而已。只是由於設計的巧妙,他看起來是那麼的智能,那麼的不可思議。