然而,光知道這兩部分還不能算是真正揭開了CPU的祕密,只有把「指令」和「計算」這兩部分功能連通起來,咱們才能構成一個真正完整的CPU。
這一講,咱們就在前面知識的基礎上,來看一個完整的CPU是怎麼運轉起來的。編程
4.重複進行1~3的步驟。
這樣的步驟,其實就是一個永不停歇的「 Fetch - Decode - Execute」的循環,咱們把這個循環稱之爲 指令週期(Instruction Cycle)。
函數
三個週期之間的關係翻譯
聽起來是否是很簡單?實際上,控制器的電路特別複雜。下面我給你詳細解析一下。3d
一方面,全部CPU支持的指令,都會在控制器裏面,被解析成不一樣的輸出信號。咱們以前說過,如今的IntelCPU支持2000個以上的指令。這意味着,code
控制器輸出的控制信號,至少有2000種不一樣的組合。blog
運算器裏的ALU和各類組合邏輯電路,能夠認爲是一個固定功能的電路。控制器「翻譯」出來的,就是不一樣的控制信號。這些控制信號,告訴ALU去作不一樣的計算。同步
能夠說正是控制器的存在,讓咱們能夠「編程」來實現功能,能讓咱們的「存儲程序型計算機」名副其實。io
指令譯碼器將輸入的機器碼,解析成不一樣的操做碼和操做數,而後傳輸給ALU進行計算基礎
咱們看似寫了各類複雜的高級程序進行各類函數調用、條件跳轉。其實只是修改PC寄存器裏面的地址。PC寄存器裏面的地址一修改,計算機就能夠加載一條指令新指令循環
往下運行。實際上,PC寄存器還有一個名字,就叫做程序計數器。顧名思義,就是隨着時間變化,不斷去數數。數的數字變大了就去執行一條新指令。
因此,咱們須要的就是一個自動數數的電路。
好了,如今咱們把這四類電路,經過各類方式組合在一塊兒,就能最終組成功能強大的CPU了。可是,要實現這四種電路中的中間兩種,咱們還須要時鐘電路的配合。
下一節,咱們一塊兒來看一看,這些基礎的電路功能是怎麼實現的,以及怎麼把這些電路組合起來變成一個CPU。