首頁>技術>

對於一個8位CPU來說,指令可以分為兩大類,一類為ALU相關指令,主要包括需要ALU參與完成的相關指令,比如加法、移位、比較等;另一類是非ALU相關指令,比如載入資料,儲存資料,跳轉等。

無論哪種指令,都可以分為前4位後4位前四位和動作有關,後四位和資料有關

我們先說ALU相關指令,其基本定義如下:

最高位1表示該條指令為ALU指令,接下來三位為操作碼,表示ALU要乾的具體工作;後四位的前兩位和後兩位表示ALU運算所需要的資料所在暫存器的編碼,具體定義如上圖所示。

比如,有一條ALU(1)指令執行加法(000)運算,被加的內容是Resister 2(10)裡的資料與Resister 3(11)的資料,結果存放在Resister 3(11)裡面,那麼它對應的指令就是:

如果把這條指令(1000 1011)存入RAM中,地址為10,那麼當IAR設為10時,開啟計算機,它就會從IAR為10的RAM中讀取該條指令,透過匯流排傳輸至IR,然後在Control Section的控制下,去計算R2R3之和。

如果ALU指令是單輸入指令,比如SHL,SHR或者NOT,資料內容將來自Reg A,經過ALU運算,結果會被存在Reg B中。可以選在從一個暫存器取數,結果存到另外一個暫存器,比如R1→R3;可以選在從一個暫存器取數,結果存到同一個暫存器,比如R2→R2。

如果ALU指令是雙輸入指令,Reg A和Reg B將會被送到ALU,運算結果送到Reg B,Reg A和Reg B可以是同一個暫存器。

透過以上分析我們知道,ALU面對的是兩個輸入:Reg A和Reg B。Reg A和Reg B的邏輯相對是比較明確的,那就是Reg A (ALU) Reg B→Reg B,Reg A和Reg B經過ALU運算,結果存在Reg B裡面,具體實現方式如下:

資料流總結如下:

Step 4:“讀”和“寫”使能端有兩個條件:指令暫存器IR最高位為1,Stepper 4的clk訊號為高;透過控制“讀”“寫”兩個訊號,實現Reg B的內容載入到TMP裡面;

Step 5:“讀”和“寫”使能端有兩個條件:指令暫存器IR最高位為1,Stepper 5的clk訊號為高,實現Reg B的內容加上TMP裡面存的Reg A,結果傳輸至Reg B;Stepper 5的clk訊號還作為ALU操作碼產生訊號的控制,也就是說,只有在step 5才產生非000的ALU操作碼。

Step 6:只要不是比較運算(操作碼111),都要將ACC的計算計算結果儲存至Reg B。

可見,對於ALU指令操作,就是Reg A和Reg B兩個暫存器的資料運算和儲存。但是呢,我們手上有4個暫存器:R0、R1、R2、R3,每一個Reg A或Reg B可以是R0、R1、R2、R3中的任意一個,因此,我們需要對R0、R1、R2、R3編碼,這樣,就可以實現對任何一個暫存器的操作,如下圖所示:

這樣就可以透過指令後四位的暫存器編碼,實現對暫存器裡面資料的操作。

助記符如下:

17
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Word 利用 vba 程式碼實現拆分文件頁數