對于CPU來說,內存是一個存放指令和數據的地方,并不能在內存中完成計算功能,例如要計算 a = b + c,必須將 a、b、c 都讀取到CPU內部才能進行加法運算。為了解具體的過程,我們不妨先來看一下程序從硬盤到CPU的過程示意圖。
cpu.jpeg
運算單元:是CPU的大腦,負責加減乘除、比較、位移等運算工作,每種運算都有對應的電路支持,速度很快。
寄存器(Register):是CPU內部非常小、非常快速的存儲部件,它的容量很有限,對于32位的CPU,每個寄存器一般能存儲32位(4個字節)的數據,對于64位的CPU,每個寄存器一般能存儲64位(8個字節)的數據。嵌入式系統功能單一,寄存器數量較少。
寄存器在程序的執行過程中至關重要,不可或缺,它們可以用來完成數學運算、控制循環次數、控制程序的執行流程、標記CPU運行狀態等。
那么,在CPU內部為什么又要設置緩存呢?雖然內存的讀取速度已經很快了,但是和CPU比起來,還是有很大差距的,不是一個數量級的,如果每次都從內存中讀取數據,會嚴重拖慢CPU的運行速度,CPU經常處于等待狀態,無事可做。在CPU內部設置一個緩存,可以將使用頻繁的數據暫時讀取到緩存,需要同一地址上的數據時,就不用大老遠地再去訪問內存,直接從緩存中讀取即可。
內存是為了解決硬盤速度慢,CPU中的緩存是為了解決內存速度慢
緩存的容量是有限的,CPU只能從緩存中讀取到部分數據,對于使用不是很頻繁的數據,會繞過緩存,直接到內存中讀取。所以不是每次都能從緩存中得到數據,這就是緩存的命中率,能夠從緩存中讀取就命中,否則就沒命中。
這里說明了CPU的簡單構造,重點是讓大家認識程序在運行中整個加載與執行過程。