CPU0 處理器的架構

開放電腦

簡介

函式庫

處理器

主機板

輸出入

虛擬機

組譯器

連結器

編譯器

嵌入式系統

作業系統

原始碼下載

文件下載

設計想法

訊息

相關網站

參考文獻

最新修改

簡體版

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