相關術語
RAM:指內存,斷電后內容無法保存,因此叫做易失性存儲;另一個相關的概念是ROM,字面上是只讀存儲器,從字面上里面更適合用於嵌入式設備,現在意義有所延伸,具體自行查找資料。RAM的速度遠快於ROM,CPU與內存直接進行數據交換。
CPU:計算機的所有計算操作都由它執行,只要先記住它是一塊有輸入和輸出的集成電路就行了。
Instruction:指令,是CPU進行操作的基本單元,大致包含操作對象、操作對象的地址、對操作對象進行何種操作。
RAM相關結構
程序要想被CPU執行,首先要被編譯(具體編譯改變,請查看我的另外一篇文章編譯的基本概念)成CPU可以執行的指令操作,這里就不詳細介紹,本文就假設程序已經被編譯好了,放在了內存中。內存中存放的數據分為兩類,一類是指令;另一類是數據,不管是指令還是數據都有其對應的地址。
下圖就是接下來我們將會涉及的內存結構,這是從視頻中直接截取下來的,大家將就着看。
在上圖中,現在已經存放了地址為100、104、108、112的一系列指令;地址為2000、2004、2008的一系列數據。
CPU相關結構
這里只放出CPU的執行指令時涉及的基本結構,真實的情況還會復雜很多。
這里涉及到的結構有Program Counter(程序計數器)、Instruction Register(指令寄存器)、Data Register(數據寄存器)、ALU(算數邏輯單元),可以將計數器、寄存器都可以簡單理解為存放數據的器件。上述程序計數器用來存放指令的地址;指令寄存器用來存放指令(初學者可能會搞混數據和地址的區別,稍加區分就可以分辨);數據寄存器存放參與計算的數據,下圖中的A、B、C都是數據寄存器;ALU就是用於計算的器件。
執行過程
本文內容為便於理解,僅涉及到CPU和內存間的數據交換。
在了解了RAM和CPU相關結構之后,接下來就可以正式開始說明執行的過程,其實就是對以上敘述內容的一個組合。
- 程序計數器初始內容為100,指向內存中的某一項指令,注意100指的是地址;
- 指令寄存器根據程序計算器的指向地址,將內存中地址為100的指令抓取到自身,此時存放LOAD A,2000;
- CPU按照指令內容,將內存地址為2000的數據,上載到數據寄存器A中,此時CPU和RAM的狀態如下圖所示;
- 以上3步已完成一個指令的基本操作步驟。接下來程序計數器依次指向104指令地址、108指令地址、112指令地址,分別完成將2004地址的數據賦值給B數據寄存器;ALU將A、B內的數據相乘賦值給C數據寄存器;將C數據寄存器數據寫入內容地址2008中。
- 這樣就完成了50×0.1這個簡單程序的計算,最后CPU和RAM所處狀態如下圖所示。
來自:https://blog.csdn.net/dong_daxia/article/details/80289951