天天看點

【計算機組成原理】y = a * b + c 的執行具體流程

文章目錄

    • 1.2.2 認識各個硬體部件
      • 1. 主存儲器的基本組成
      • 2. 運算器的基本組成
      • 3. 控制器的基本組成
      • 4. 計算機的工作流程

1.2.2 認識各個硬體部件

1. 主存儲器的基本組成

  • 存儲體:存放資料和指令
  • 位址寄存器:用來存放讀取存儲體資料時存放的具體位置
  • 資料寄存器:用來存放讀取的存儲體資料

CPU要從主存儲器中取出資料,首先要将該資料的位址存如MAR中,然後用控制總線向主存儲器發出指令,主存儲器收到指令後将對應的資料存放到MDR中,等待CPU讀取。

這就好比我們去菜鳥驿站取快遞一樣,告訴從業人員我們的取件碼,然後從業人員就把快遞拿到櫃台,我們在取走。計算機的工作原理在我們的日常生活中處處可見。

CPU要存資料也是類似,先将位址放入MAR,再将要存入的資料放入MDR,後向主存儲器發出控制指令,随後主存儲器就開始存入到存儲體中。

【計算機組成原理】y = a * b + c 的執行具體流程

存儲體裡的資料是如何存的呢?

存儲體就和菜鳥驿站裡的貨架一樣,存儲體被分成一個一個的小格子,每個格子存儲一單元的資料,每個單元都有一個位址。

是以MAR的位數就反映了存儲單元的個數,如果MAR隻有4位,你們存儲體總共隻有

2^4=16

個存儲單元。

MDR的位數就反映了存儲單元的位數,如果MDR有16位,那麼存儲單元也隻有16位。

【計算機組成原理】y = a * b + c 的執行具體流程
  • 存儲單元:每個存儲單元存放一串二進制代碼
  • 存儲字:存儲單元中二進制代碼的組合
  • 存儲字長:存儲單元中二進制代碼的位數

2. 運算器的基本組成

【計算機組成原理】y = a * b + c 的執行具體流程

我們要實作a+b運算的算,首先需要有個地方放a,也就是ACC,再有個地方放b,也就是X,在有人來給它倆加起來,就是ALU,最後将計算的結果放入ACC中。

3. 控制器的基本組成

控制器就是CPU中最重要的部分,它掌控着計算機的運作。

  • CU:控制單元,分析指令,給出控制信号
  • IR:指令寄存器,存放目前執行的之林
  • PC:程式計數器,存放下一條指令位址,有自動加1功能

完成一條指令:首先根據程式計數器中的位址去記憶體找到對應的指令,然後存入指令寄存器中,随後控制單元去指令寄存器中取出指令并分析指令,然後執行。

【計算機組成原理】y = a * b + c 的執行具體流程

4. 計算機的工作流程

這些硬體我們已經了解了一遍,接下來讓我們看在計算機中他們是怎麼協調工作的:

y = a * b + c

編譯後運作發生了什麼?

【計算機組成原理】y = a * b + c 的執行具體流程

左邊那一段進階語言編寫的代碼經過編譯之後就變成了一些指令和資料存入主存中取。

我們總共有4條指令,我們一一解釋:

()表示裡面存的東西

第一條:取數a至ACC

初zhi:(PC)=0,表示下一條指令為位址0

  1. (PC) -> MAR,将位址存入位址寄存器MAR中,(MAR)= 0
  2. M(MAR) -> MDR,控制器通過控制總線告訴主存儲器,我要取資料,随後主存儲器将MAR裡位址對應的資料存入MDR中
  3. PC++,程式計數器的值自動加1,友善下次使用
  4. (MDR) -> IR : 指令從MDR 移動到 IR中
  5. OP(IR) -> CU,指令的操作碼會被送到CU,CU分析後得知,這是“取數”指令
  6. AD(IP) -> MAR,指令的位址嗎送到MAR,導緻(MAR) = 5
  7. M(MAR) -> MDR ,導緻(MDR)= 2
  8. (MDR) -> ACC ,資料被送到ACC
【計算機組成原理】y = a * b + c 的執行具體流程

這裡我們都要經過取指令、分析指令、執行指令的過程

其中 1-4是取指令,5是分析指令,6-8是執行指令

第二條:乘b得ab,存于ACC中

上一條指令執行後,(PC)=1,(ACC)=2

  1. (PC) -> MAR
  2. M(MAR) -> MDR
  3. (MDR) -> IR
  4. PC++
  5. OP(IR) -> CU,分析這是乘得指令
  6. AD(IR) -> MAR
  7. M(MAR) -> MDR
  8. (MDR) -> MQ ,乘數
  9. (ACC) -> X , 被乘數
  10. (X)*(MQ) ->ACC,ALU實作邏輯運算,如果乘積太大,需要MQ輔助存儲
【計算機組成原理】y = a * b + c 的執行具體流程

第三條:加c得ab + c,存于ACC中

上一條指令後,(PC) = 2,(ACC) = 6

  1. (PC) -> MAR
  2. M(MAR) -> MDR
  3. (MDR) -> IR
  4. PC ++
  5. OP(IR) -> CU,CU分析這是“加法”指令
  6. AD(IR) -> MAR
  7. M(MAR) -> MDR
  8. (MDR) -> x
  9. (ACC)+ (x) -> ACC,ALU實作運算

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-Ker3bdCA-1675498937811)(https://xiaoxin18.oss-cn-hangzhou.aliyuncs.com/2022/image-20230204161735385.png)]

第四條:加ab + c,存于ACC中

上一條指令後,(PC) = 3,(ACC) =7

  1. (PC) -> MAR
  2. M(MAR) -> MDR
  3. (MDR) -> IR
  4. PC ++
  5. OP(IR) -> CU,CU分析這是“存數”指令
  6. AD(IR) -> MAR
  7. (ACC) -> MDR
  8. (MDR) -> M(MAR)
【計算機組成原理】y = a * b + c 的執行具體流程

第五條:停機

上一條指令後,(PC) = 4

  1. (PC) -> MAR
  2. M(MAR) -> MDR
  3. (MDR) -> IR
  4. PC ++
  5. OP(IR) -> CU,CU分析這是停機指令
【計算機組成原理】y = a * b + c 的執行具體流程

總結

【計算機組成原理】y = a * b + c 的執行具體流程

繼續閱讀