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