5.1.指令的本質(zhì)
雖然把“總線”比喻成“高速公路”,但是兩者之間還是有很大的不同,在現(xiàn)實的高速公路上,汽車向著同一個方向前進,每個汽車有不同的目的地,在不同的路口下高速。但是在電路中,電子的傳輸速度是光速,信號會同時出現(xiàn)在所有的路口,也就是說不可能要求“總線”中的信號去哪個路口,不去哪個路口。
所以我們控制信號的手段是當(dāng)數(shù)據(jù)信號在總線中的時候,可以通過控制哪些元件從“總線”中讀取信號或者控制哪些元件往總線中寫入數(shù)據(jù)的方式來達到控制整個電路運行的目的。
那么具體到電路中,應(yīng)該如何實現(xiàn)控制信號進出總線呢?從第四章我們知道,存儲器(寄存器、內(nèi)存)有兩個讀、寫兩個控制開關(guān)。讓我們好像找到了的“命門”,只要控制好這些讀、寫開關(guān),當(dāng)某個寄存器設(shè)置為讀,數(shù)據(jù)從寄存器傳導(dǎo)到總線,當(dāng)某個寄存器設(shè)置為寫,實現(xiàn)把數(shù)據(jù)從總線讀入寄存器,如此就能控制好整個電路,讓它做我們想做的事情。
為了更加清楚的說明整個控制過程,我們再看看從內(nèi)存中讀取數(shù)據(jù)相加的控制過程,具體計算步驟實現(xiàn)如下(表 5-1):
表 5-1 相加電路的實現(xiàn)步驟
步驟序號 | 步驟描述 | 設(shè)置 |
---|---|---|
1 | 讀被加數(shù) | 內(nèi)存(M)的R=1;暫存寄存器(TR1)的W=1;其余開關(guān)=0 |
2 | 讀加數(shù)和相加一起 | 內(nèi)存(M)的R=1;暫存寄存器(TR1)的R=1;暫存寄存器(TR2)的W=1;其余開關(guān)=0 |
3 | 保存結(jié)果 | 內(nèi)存(M)的W=1;暫存寄存器(TR2)的R=1;其余開關(guān)=0 |
表中的每一行就是一個指令,指令是計算機程序發(fā)給計算機處理器的命令。每一個指令,我們通過完成幾個寄存器的讀寫設(shè)置,完成一個具有一定功能的動作組合。
5.2.指令寄存器
為了保存當(dāng)前需要運行的指令,設(shè)置指令寄存器組,由指令操作碼和地址寄存器兩個8位寄存器組成。指令操作碼寄存器存放的指令的編號,通過指令譯碼器選擇執(zhí)行的動作;地址寄存器指的是該指令執(zhí)行過程中需要的內(nèi)存地址。
圖 5-1 指令格式
表 5-2 電路支持的指令列表
操作碼 | 說明 |
---|---|
0000 0000 | 讀取被加數(shù) |
0000 0001 | 讀取加數(shù),并相加 |
0000 0010 | 將相加的結(jié)果存儲內(nèi)存 |
0000 0100 | 在常量寄存器中存入一個常量 |
0000 0101 | 把常量寄存器的數(shù)存到內(nèi)存中 |
5.3.指令譯碼器
為了使得控制更加簡單,可以把每一個步驟(指令)設(shè)置一個開關(guān),一鍵完成一個步驟。
進一步,可以在錯誤!未找到引用源。基礎(chǔ)上添加譯碼器,實現(xiàn)指令控制的電路。指令譯碼器的實現(xiàn)還是通過邏輯真值表來輔助設(shè)計。
每個指令的操作碼對應(yīng)多個寄存器的設(shè)置操作。比如從內(nèi)存中讀取是指,并且把值放入加法的加數(shù)暫存器TR1中的指令,指令操作碼是 0000,需要將內(nèi)存的R端口和加數(shù)暫存起TR1的W端口設(shè)置為1;執(zhí)行加法的指令,指令操作碼是0001,需要同時設(shè)置M寄存器的R=1,暫存器TR1的R=1,暫存器TR2的W=1。根據(jù)(表 5-1),重新建立操作碼和寄存器設(shè)置的真值表如下表:
表 5-3 指令操作碼和設(shè)置動作的真值表
指令操作碼A3A2A1A0 | 指令描述 | 內(nèi)存M | 加數(shù)暫存器TR1 | 和暫存器TR2 |
---|---|---|---|---|
W | R | W | R | W |
0 0 0 0 | 讀被加數(shù) | 1 | 1 | |
0 0 0 1 | 讀加數(shù),相加 | 1 | ||
0 0 1 0 | 存結(jié)果 | 1 |
邏輯表達式:
邏輯電路:
圖 5-2指令譯碼器電路圖
5.4.內(nèi)存相加電路實現(xiàn)
圖 5-3 基于內(nèi)存的加法功能電路
圖 5-4 簡單內(nèi)存示意圖
完成本章的內(nèi)存相加功能,假設(shè)如圖 5-4 a、b、c的內(nèi)存地址,讀取a、b的值,把相加的結(jié)果保存到c,完整指令步驟如下:
5.5.小節(jié)
本章提出一個如何將內(nèi)存中的兩個數(shù)字相加的功能的問題,繪制以內(nèi)存和加法器為主體的功能電路,同時,為了電路圖的布局更加的合理,引入“數(shù)據(jù)總線”、“地址總線”、“控制總線”的概念。
詳細的闡述指令的本質(zhì)控制電路完成特定功能,解構(gòu)指令譯碼器的內(nèi)部解構(gòu),并提出增加指令寄存器,最后給出了較為完整的內(nèi)存數(shù)據(jù)相加的邏輯電路。
但是本章對于指令寄存器的指令的加載和按順序執(zhí)行指令的過程沒有闡述,下一章將重點解決這個問題。
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121203 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3057瀏覽量
74342 -
指令
+關(guān)注
關(guān)注
1文章
611瀏覽量
35820 -
譯碼器
+關(guān)注
關(guān)注
4文章
312瀏覽量
50469
發(fā)布評論請先 登錄
相關(guān)推薦
轉(zhuǎn):單片機指令執(zhí)行過程
一條指令的執(zhí)行需要多少個時鐘周期
MOVX指令的執(zhí)行過程
ARM與X862.ARM中指令的執(zhí)行
請問哪里能查到ARM A53各個指令執(zhí)行所需要的cycle數(shù)
淺談51單片機指令執(zhí)行的過程
![淺談51單片機<b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>的過程](https://file.elecfans.com/web1/M00/4F/21/o4YBAFrUF7OACbsgAACvq-uzIRg130.png)
單片機MOVX指令執(zhí)行時序深入分析
![單片機MOVX<b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>時序深入分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
[STM32]STM32F407系列教程之三,c語言知識點鞏固 指令執(zhí)行過程
![[STM32]STM32F407系列教程之三,c語言知識點鞏固 <b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>過程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論