通過前面的解讀,我們對電腦的體繫結構有了一定的瞭解,特別是通過對硬碟讀寫的跟蹤,我們知道了電腦裡除了cpu外,還有一些裝置控制器,和一系列裝置,其中cpu指令控制裝置控制器,裝置控制器再控制裝置完成具體的工作。
cpu定址原理
現在,我們可以再往細裡推進。我們現在更加認識到,cpu的核心功能是控制軟體的自動執行以及完成計算指令,電腦指令中除了計算指令外,最重要的即使定址指令了,也就是控制對儲存空間的讀寫。
cpu能夠直接通過指令讀寫的儲存空間是主存空間和控制器裡的寄存器空間,如果在統一記憶體編址模式下,首先掃描一下匯流排上所有需要編址的裝置以及需要的地址空間大小,然後進行統一管理,告訴他們自己的基址,然後,cpu讀寫指令,只需要往匯流排上發地址以及讀寫訊號,這些資料首先流到北橋晶片中,北橋晶片判斷匯流排上的地址空間是是否在pci等局部匯流排地址空間裡,如果是,則資料讀取由pci匯流排控制器來完成(這個以後再講pci匯流排時再講),如果不是,則由儲存控制器來完成對主存的讀寫。
cpu裝置控制的實現
再往細節跟蹤cpu對io裝置的讀寫。首先cpu一條讀寫指令傳到北橋,北橋發現其在某個pci匯流排空間裡,指令傳到匯流排控制器,由匯流排控制器將指令資料往匯流排上發送,某個匯流排上的裝置控制器發現這個地址在自己的地址空間裡,則認領這個指令,然後解析指令,翻譯成對裝置的一系列指令。如讀取指令,裝置讀取資料之後,發送到裝置控制器的地址空間裡,然後資料就可以被cpu讀取了,或者由DMA控制器將資料直接發往主存。
cpu與裝置,裝置控制器的關係
可見,在這幾個回合中,cpu, 控制器,裝置都有自己的重要功能。cpu自動執行程式中一條條指令,如果是裝置儲存空間的讀寫命令,只管把命令編碼之後往匯流排上發,這樣減輕了cpu的複雜度。從cpu到裝置管理員,則經過了北橋以及匯流排的路由,他們不具體執行指令,只是做路由。路由的前提是對每個裝置管理員的空間進行了編址。裝置管理員真正開始執行cpu的指令,但其實他只是將指令翻譯成對具體裝置的控制指令,他是一個商人或者販子,不生產。而具體的裝置則真正是功能的實現體。電腦能幹什麼事,靠的是他們,如印表機可以完成列印,硬碟可以完成儲存,顯示器可以完成資料的顯示,掃描器可以完成掃描。他們都有自己的功能設計,最後通過裝置管理員來接收cpu指令控制,成為電腦的重要組成部分。