CPU的基本工作原理
程序 = 指令 + 數據
只有指令,才最終在運行階段,被運行程序的計算機的CPU去執行
1、CPU的組成
(1)ALU(算術邏輯單元)
? ? ? ? 算術:加法 減法 乘法 除法 取余
? ? ? ? 邏輯:與 或 非
? ? ? ? 需要利用到寄存器完成中間數據的臨時保存
? ?注:8位數的加法器 = 7 * 全加器 + 1 * 半加器
(2)CU(控制單元)
? ? ? ? ?主要負責控制memory<——>register數據傳遞的指令以及驅動ALU工作
3、CPU是計算機的核心,ALU是CPU的核心
? ? ? 所有程序的執行,本質上都是計算+讀取+存入
4、(1)取碼階段
? ? ? ? ? ? ? ?CU(控制單元)根據PC寄存器的值,去內存響應位置,把數據(指令)讀取到IR寄存器中,正常情況下,PC寄存器中的值自動加一
(2)解碼階段
? ? ? ? ? ? ? CU按照預先設定的指令集解讀指令數據(opcode+操作數)
? ? ? ? ? ? ? ?例如:0010 1110
? ? ? ? ? ? ? ? ? ? ? ? ? 人為規定:0010是opcode,查詢指令表,知道0010代表的意思:從后邊地址指定內存處,將數據讀取到A寄存器
(3)執行階段
? ? ? ? ? ? LOAD指令應該由CU執行,所以按照規定執行指令:從內存的14處地址,將數據讀取到A寄存器中
5、由于硬件中PC在自動加一,所以我們的代碼形成的指令才能順序的往下執行
6、代碼中的一條語句,很有可能是需要多條指令才能完成
? ? ?語句是一組指令的封裝抽象
? ? ?變量是一段內存空間的封裝抽象
7、PC寄存器中的值在這個指令周期中很關鍵,可以控制執行哪里的指令
8、CPU的運算快慢就是看CPU執行指令周期的頻率(假定每個指令周期的頻率恒定)
? ? ?CPU的主頻可以粗略的看成每秒鐘CPU能執行多少個指令周期
9、CPU往往會提供一些指令,這些指令可以去修改PC的值:分支語句(if、else、while、for、break、continue......)
? ? ? 通過CPU中預先規定的指令,可以修改PC中的值(帶條件修改),進而影響執行流(execution flow)
? ? ? 我們平時的main方法:我們的程序啟動,有“人”把我們的程序翻譯出來的指令的第一條地址放到PC中,我們的程序就正常跑起來了
10、CPU的正常工作流程:
? ? ? ? 取碼——>編碼——>執行周期
? ? ? ?只要你的電腦在開機狀態下,CPU就在不停循環這個周期
? ? ? ?在硬件CPU的視角中,只有指令的概念,沒有指令屬于誰的概念,不知道執行是屬于哪個程序,哪個類,哪個方法(程序、類、方法等概念不是為了計算機硬件準備的,是為了寫程序的人準備的)
11、CPU的中斷模型(Interrupt Mode)
? ? ? ? 正常模式下,CPU可以順序執行,可以分支執行,但總歸只能按照既定順序去執行,但現實中,很多時候,需要暫時中斷CPU 的當前執行流,先讓CPU去做點其他工作,再回過頭繼續執行原來的執行流
?CPU硬件中提供了一種機制(中斷)讓CPU停下
(1)保存當前PC的值到內存的某個位置
(2)修改PC的值,讓執行其他執行流
(3)其他執行流執行結束后,通過將剛才保存的PC值恢復到PC寄存器中
(4)繼續原來的執行流
12、中斷經常用作:
(1)IO設備的處理
? ? ? ? ?當有外部數據到達Input設備時,觸發某個終端,讓當前正在執行的執行流暫停,切換到Input驅動對應的執行流,把Input設備中讀取的數據,放到內存的某個位置,恢復之前的執行流
(2)操作系統中用來作進度調度(線程調度)
總結
以上是生活随笔為你收集整理的CPU的基本工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oc中block的本质及底层原理
- 下一篇: 花10年时间学程序就能做好吗?