咱們已經看了基本邏輯電路,運算電路,內存的概述。今天咱們用着幾個東西來組裝 CPU。編碼
CPU 簡易結構圖
咱們看到這張圖,咱們的簡易 CPU 有運算邏輯部件、寄存器部件和控制部件(圖中的指令解析)cdn
CPU 工做流程
CPU 的運行有讀取指令,解析指令,運行三個階段。 咱們模擬一下使用計算機來計算一個 1+1,看看計算機是如何工做的! 假設咱們已經寫好了咱們的程序,並放到了內存中,以下圖所示: blog
假如咱們 指令地址寄存器 的地址爲 00000000內存
- CPU 通電首先讀取指令地址寄存器的地址(能夠理解成系統第一條指令),而後讀取相應的內存數據。
- 獲得 00010001 ,而後拆分命令是 0001 數據是 0001(假設 0001 是加載到 寄存器1 中)
- 執行命令把 0001 存儲到 寄存器1 中,把下一個地址 00000001 存到 指令地址寄存器 中
- 而後開始第二輪 讀取內存地址 00000001 的數據
- 獲得 00110001 ,而後拆分命令是 0011 數據是 0001(假設 0011 是加載到 寄存器2 中)
- 執行命令把 0001 存儲到 寄存器2 中,把下一個地址 00000011 存到 指令地址寄存器 中
- 而後開始第三輪 讀取內存地址 00000011 的數據
- 獲得 10000111 ,而後拆分命令是 1000 數據是 0111(假設 1000 是對兩個寄存器進行加法運算)
- 執行命令把 寄存器1 寄存器2 的值進行相加。
OK! 咱們看了上邊流程,咱們還有幾個問題?虛擬機
- 咱們還隱約的發現還缺個東西沒有說也就是「指令表」,每款 CPU 都須要必定的指令表,寫好程序來讓計算機去運算。
- 晶振的頻率來推動 CPU 的運算速度,若是 CPU 早就計算完了晶振還不繼續往下運算,就拖慢了總體運行速度。晶振這個詞咱們可能聽着比較生疏,咱們日常買 CPU 上面寫的多少多少 HZ 就是指的這個。( 1GHZ = 十億赫茲 現代的 CPU 運算速度都比較快)
小結
看完了上面,我就理解了爲何 C 語言之類程序不一樣的平臺須要進行移植,由於不一樣的 CPU 指令集不同。然而像 Java 這些虛擬機語言,是在虛擬機上提供了通用的指令表,虛擬機仍是須要針對不一樣的 CPU 平臺進行單獨編碼!工作流
大家還看了什麼,歡迎留言一塊兒討論。it