我們一般對cpu充滿了崇拜,一個小小的晶片,卻能執行看起來那麼複雜那麼智能的程式,是不是cpu有什麼神奇的地方呢?
其實沒有。我們知道電子技術發展非常迅速,cpu從以前8086到現在的安騰酷睿,其效能不知提高了多少倍,但是其指令集卻沒有多少變化,這跟其功能的設計有很大的關係。cpu的核心功能就是控制電腦各裝置之間的資料互動,以及資料的運算。
那麼cpu究竟是怎麼設計的呢?cpu被設計成自動從記憶體中取出指令並解析執行。指令分三部分,一部分是控制資料轉送的,就是實現cpu與匯流排上的各個裝置做資料互動,由匯流排介面單元組成。一部分是做運算的,包含算數運算和邏輯運算,由運算器完成。當然還有一部分是為了實現複雜的程式邏輯的,包括分支,迴圈等,這個是由指令寄存器,狀態字寄存器和跳轉指令來實現,這個最簡單。程式指令放在記憶體中,將首條指令地址預先放入cpu的指令寄存器,cpu從指令寄存器中擷取指令地址,即可通過匯流排介面單元擷取指令資料,最後解析執行指令,同時指令寄存器的值會自動順序指向下一條指令地址,而cpu同時提供跳轉指令(條件跳轉和無條件跳轉)來實現程式的分支控制,迴圈控制等。
原來cpu看起來就是這麼的簡單啊,他除了運算外,基本只負責與其他組件(主存介面和io介面)互動資料,至於資料到了io介面之外是什麼含義,是儲存,還是控制,是列印還是顯示,這個就看具體的外設是怎麼做的了,這些應該已經脫離cpu指令的控制,也就脫離了程式的控制。那我們寫程式,不就是設計一定的演算法,讓資料在各個元件裡傳遞嗎,最多再做一下算數和邏輯運算,這個我們也不怕啊。
cpu看起來就像一個集市場,他不斷的從記憶體中取出指令,然後對指令進行翻譯,這些指令無非也就是把串連到匯流排上的一些裝置的資料讀進來進行一些列運算,然後再把資料往匯流排上的裝置上發,如此而已。
電腦最神奇的地方就是他用如此簡單的設計,卻能開拓出如此龐大的IT產業,他用如此簡單的設計開拓出了如此複雜的軟體產業。正因為簡單,cpu才永不出錯。
一切都是資料,電腦說到底,處理的是資料,人類需要的說到底,是資訊處理,還是資料。所以,我們要明白,我們寫的不是程式,我們是為資料鋪設公路,讓其通暢無阻。