一條匯編指令是如何在計算機的硬件中進行執行的
阿新 • • 發佈:2018-05-27
環境 color 存儲空間 blank CA 默認 其他 -a 單純
本文說明的是單純的一般的計算指令從儲存設備中取出來之後,運行時(取址,譯碼,執行,回寫 -- 這些操作)在CPU和我們的主存之間的執行過程
以下,我們使用一條簡單的指令進行引入,後續再添加其他的情況:
下面這個圖是就是執行的環境
第四步:回寫
ADD R0,[6] //將主存地址為6的內容取出和寄存器R0的內容相加,並回寫入R0中為了更加明確的了解後續的執行過程先普及一下基本的計算機結構(一個簡單的模型機): 模型機的結構
主存的結構(模型機)
CPU的控制器(CC)結構
CPU的運算器(CA)結構
以上 好的,現在可以進入正題了,tips: 上面的都是說的模型機的結構,不代表現在的硬件的真實的結構
通過上面的圖,我們可以看出:R0中儲存的是數值3,PC中儲存的內容是0001 第一步:取址
- 控制器將指令的地址送往寄存器
- 存儲器按給定的地址讀取處指令的內容,送回控制器
CPU_控制電路: CPU_PC,把你的東西給CPU_MAR,好告訴存儲器該做什麽 PC,CPU_MAR: 收到 (於是CPU_MAR獲得了PC中的東西)取址的工作完成 以下是圖解: 第二步:譯碼----------此時,CPU_MAR在cpu控制電路的指導下,將數據通過 地址總線發送給了存儲器的MAR ,CPU_控制電路並告訴了存儲器的控制邏輯只是一個只讀的 存儲器_MAR: 地址譯碼器大哥,有你的任務 地址譯碼器 : 曉得了 (此時控制邏輯通過控制總線告訴CPU : "I am ready" 過了一會對MDR說) 莫睡了,快起來給你個數據。 存儲器_MDR: MMP,要的 (獲得0001處的內容,10101010) 存儲器_MDR: CPU_MDR,我弄好了,給你 CPU_MDR: 好,給我嘛,已收到! CPU_IR: 給我,我現在要給指令譯碼的部分了! (CPU_MDR的內容復制給)CPU_PC: 悄悄的自增。(變成下一條指令的地址)
- 控制器分析指令的操作性質
- 控制器向有關部件發出指令所需的控制信號
第三步:執行
- 控制器從通用寄存器或存儲器取出操作數
- 控制器命令運算器對操作數進行指令規定的運算
第四步:回寫
- 將運算結果寫入通用寄存器或存儲器(這個要看是代碼是怎麽寫的,默認前面的存儲空間就是回寫的位置)
聲明:以上圖片來自北京大學陸俊林老師的計算機組成原理課程PPT
這個過程就完成了,寄存器和內存中的內容進行ADD操作並回寫如寄存器中的步驟就是這樣的 思考:如果是寄存器和寄存器中的內容進行相加呢?內存某位置內容和寄存器內容相加回寫入內存某一個位置呢?一條匯編指令是如何在計算機的硬件中進行執行的