CPU0 處理器的架構

計算機結構

電腦的歷史

電腦硬體概論

設計的層次

算術單元

暫存器

控制單元

中央處理器

輸出入

記憶體

速度與效能

管線處理

平行處理

電腦系統

投影片下載

家庭作業

Verilog

全加器

加法器

加減器

快速加法器

乘法器

ALU

閂鎖器

脈衝偵測

計數器

多工器

暫存器群

記憶體

延遲問題

浮點數

狀態機

程式計數器

CPU0-Mini

CPU0

CPU0 處理器

程式計數模組

記憶體

指令提取單元

跳躍指令

控制單元

CPU0-Mini

CPU0-Block

相關課程

數位邏輯

計算機結構

Quartus II

Verilog

系統程式

訊息

相關網站

參考文獻

最新修改

簡體版

English

簡介

CPU0 是一個 32 位元的處理器,包含 R0..R15, IR, MAR, MDR 等暫存器,其結構如下圖所示。

cpu0.jpg

圖 1 :CPU0 處理器的結構

其中各個暫存器的用途如下所示:

IR 指令暫存器
R0 常數暫存器, 其值永遠為 0。
R1~R11 通用型暫存器。
R12 狀態暫存器 (Status Word : SW)
R13 堆疊指標暫存器 (Stack Pointer : SP)
R14 連結暫存器 (Link Register : LR)
R15 程式計數器 (Program Counter : PC)
MAR 位址暫存器 (Memory Address Register)
MDR 資料暫存器 (Memory Data Register)

CPU0 的指令集

CPU0 的指令分為三種類型,L 型通常為載入儲存指令、A 型以算術指令為主、J 型則通常為跳躍指令,下圖顯示了這三種類型指令的編碼格式。

cpu0format.jpg

圖 2:CPU0 的三種指令格式

以下是 CPU0 處理器的指令表格式

表 1 :CPU0 的指令表

cpu0instructions.jpg

在第二版的 CPU0_v2 中我們補上了以下指令:

類型 格式 指令 OP 說明 語法 語意
浮點運算 A FADD 41 浮點加法 FADD Ra, Rb, Rc Ra = Rb + Rc
浮點運算 A FSUB 42 浮點減法 FSUB Ra, Rb, Rc Ra = Rb + Rc
浮點運算 A FMUL 43 浮點乘法 FMUL Ra, Rb, Rc Ra = Rb * Rc
浮點運算 A FADD 44 浮點除法 FDIV Ra, Rb, Rc Ra = Rb / Rc
中斷處理 J IRET 2D 中斷返回 IRET PC = LR; INT 0

狀態暫存器

CPU0 的狀態暫存器包含 N, Z, C, V 等狀態,以及 I, T 等中斷模式位元。其結構如下圖所示。

cpu0sw.jpg

圖 3:CPU0 的狀態暫存器

當 CMP Ra, Rb 指令執行時,狀態旗標會因而改變。

假如 Ra > Rb, 則會設定狀態 N=0, Z=0
假如 Ra < Rb, 則會設定狀態 N=1, Z=0
假如 Ra = Rb, 則會設定狀態 N=0, Z=1

於是條件式跳躍的 JGT, JLT, JGE, JLE, JEQ, JNE 等指令,就可以根據狀態暫存器中的 N, Z 旗標進行跳躍動作。

指令的執行步驟

CPU0在執行一個指令時,必須經過提取、解碼與執行等三大階段。

  1. 提取階段
    • 動作1、提取指令 :IR = [PC]
    • 動作2、更新計數器 :PC = PC + 4
  2. 解碼階段
    • 動作3、解碼 :控制單元對IR進行解碼後,設定資料流向開關與 ALU 的運算模式
  3. 執行階段
    • 動作4、執行 :資料流入 ALU,經過運算後,流回指定的暫存器

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License