CPU工作原理概述
為了了解CPU的完整工作過程,我們需要知道兩件事,第一,CPU是如何獲取到指令的;第二,CPU是如何執行指令的。
目錄
一、CPU和內存的交互方式
1、地址空間的概念
2、CPU的取值過程
二、CPU內部的執行過程
1、CPU的基本組成
2、CPU的指令執行過程
一、CPU和內存的交互方式
這里我們要從整體的角度了解CPU是如何從內存中獲取到指令或者數據的。
1、地址空間的概念
一個處理器能夠訪問(讀寫)的存儲空間是有限的,我們稱這個空間為地址空間(尋址空間),地址空間的大小跟地址總線的數目有關。
假設有一個8G的內存,地址總線為32,那么CPU可以訪問到的大小也只是 2^32 ≈ 4G。
2、CPU的取值過程
為了簡化過程,假設地址總線只有2根(2 bit)。CPU要從內存中獲取數據,是通過地址獲取的,即通過地址總線把地址發送給內存,內存再通過數據總線將數據傳遞給CPU。
假設CPU要獲取 0x04地址對應的數據,那么CPU就會通過地址總線發送 11,內存就會通過數據總線返回 0x04對應的數據。但是介于地址總線的數目是2,CPU可以訪問的地址只能是00 ~ 11,即0x00~0x04,這也就是為什么處理器可以訪問的存儲空間是有限的。
二、CPU內部的執行過程
這里我們將進入CPU內部了解CPU獲取到指令以后,是如何執行指令的。
1、CPU的基本組成
CPU主要由兩部分組成:控制器 和 運算器
控制器:CPU的指揮中心,控制著整個CPU執行程序的邏輯過程。比如CPU從內存獲取哪條指令、下一步要執行哪條指令都是由控制器決定的。
運算器:負責算術運算和邏輯運算,其核心是算術邏輯單元ALU。比如CPU從內存獲取到了乘法指令,運算器拿到以后,就會運行對應的乘法單元。
2、CPU的指令執行過程
以CPU執行一條乘法運算為例,我們跳過CPU獲取乘數和被乘數的過程,下面重點來介紹CPU獲取并執行乘法指令的過程。CPU的指令執行分為三步:
- 取指:從內存中獲取到乘法指令
- 譯碼:識別上一步獲取到的指令,將指令解析成具體的運算。
- 站在CPU的角度,它并不知道這是什么指令,如果不知道這是什么指令,也就無法將其送入到對應的運算單元進行運算。
- 執行:控制器控制運算器中對應的運算單元進行運算,運算結果寫入寄存器,指令計數器中的地址會自增。
(1) 取指
指令計數器PC 中每次存放著下一次執行指令的地址,CPU將地址通過地址總線發送給內存,內存通過數據總線將地址對應的內容返回給CPU,CPU將指令保存到指令寄存器IR中,這就完成了一次取指的過程。
(2) 譯碼
CPU現在已經拿到了要執行的指令,但是CPU并不知道這是什么指令,因此需要把指令送到指令譯碼器進行解析。
(3) 執行
經過指令譯碼器的解析,CPU知道這是一個乘法指令,于是就把這條乘法指令送到運算器的乘法運算單元,經過運算得到的結果會保存到寄存器中。
指令執行完畢以后,CPU會為下一次取指令做準備,指令計數器中的地址會自增。(這里先這樣理解,后面了解指令流水線后,當譯碼器在譯碼的時候,PC就已經閑下來了,這時PC就已經自增來取下一條指令了)
總結
- 上一篇: 身体是本钱哪
- 下一篇: Android开发——集成友盟推送SDK