計算機的大腦:實現簡易的 CPU

咱們已經看了基本邏輯電路,運算電路,內存的概述。今天咱們用着幾個東西來組裝 CPU。編碼

CPU 簡易結構圖

image

咱們看到這張圖,咱們的簡易 CPU 有運算邏輯部件、寄存器部件和控制部件(圖中的指令解析)cdn

CPU 工做流程

CPU 的運行有讀取指令,解析指令,運行三個階段。 咱們模擬一下使用計算機來計算一個 1+1,看看計算機是如何工做的! 假設咱們已經寫好了咱們的程序,並放到了內存中,以下圖所示: blog

image

假如咱們 指令地址寄存器 的地址爲 00000000內存

  1. CPU 通電首先讀取指令地址寄存器的地址(能夠理解成系統第一條指令),而後讀取相應的內存數據。
  2. 獲得 00010001 ,而後拆分命令是 0001 數據是 0001(假設 0001 是加載到 寄存器1 中)
  3. 執行命令把 0001 存儲到 寄存器1 中,把下一個地址 00000001 存到 指令地址寄存器 中
  4. 而後開始第二輪 讀取內存地址 00000001 的數據
  5. 獲得 00110001 ,而後拆分命令是 0011 數據是 0001(假設 0011 是加載到 寄存器2 中)
  6. 執行命令把 0001 存儲到 寄存器2 中,把下一個地址 00000011 存到 指令地址寄存器 中
  7. 而後開始第三輪 讀取內存地址 00000011 的數據
  8. 獲得 10000111 ,而後拆分命令是 1000 數據是 0111(假設 1000 是對兩個寄存器進行加法運算)
  9. 執行命令把 寄存器1 寄存器2 的值進行相加。

OK! 咱們看了上邊流程,咱們還有幾個問題?虛擬機

  1. 咱們還隱約的發現還缺個東西沒有說也就是「指令表」,每款 CPU 都須要必定的指令表,寫好程序來讓計算機去運算。
  2. 晶振的頻率來推動 CPU 的運算速度,若是 CPU 早就計算完了晶振還不繼續往下運算,就拖慢了總體運行速度。晶振這個詞咱們可能聽着比較生疏,咱們日常買 CPU 上面寫的多少多少 HZ 就是指的這個。( 1GHZ = 十億赫茲 現代的 CPU 運算速度都比較快)

小結

看完了上面,我就理解了爲何 C 語言之類程序不一樣的平臺須要進行移植,由於不一樣的 CPU 指令集不同。然而像 Java 這些虛擬機語言,是在虛擬機上提供了通用的指令表,虛擬機仍是須要針對不一樣的 CPU 平臺進行單獨編碼!工作流

大家還看了什麼,歡迎留言一塊兒討論。it

相關文章
相關標籤/搜索