courseNotes:计算机系统结构 您所在的位置:网站首页 计算机系统结构cpi courseNotes:计算机系统结构

courseNotes:计算机系统结构

2023-05-02 22:28| 来源: 网络整理| 查看: 265

计算机系统结构-CS2305 MIPS基础Mips指令结构

结构

注释 #注释

.*

.data:.word:.text:

寄存器

0 $zero 常量0 (The Constant Value 0)

1 $at 汇编器临时变量 [a]temp2-3 $v0-$v1 函数返回结果、表达式值 value returned [0-1]4-7 $a0-$a3 函数调用时传递的参数 arguments [0-3]

8-15 $t0-$t7 临时变量 Temporaries [0-9]16-23* $s0-$s7 需要保存的临时变量 [Save]Temp [0-7]24-25 $t8-$t9 临时变量 Temporaries26-27 $k0-$k1 为操作系统内核保留 [Kernel]Temp [0-1]

28 $gp 全局指针 Global Pointer29 $sp 栈指针 Stack Pointer30* $fp 结构指针/桢指针 Frame Pointer

31* $ra 返回地址 Return Address # 常常用来存储code段指令地址以供函数等返回

寄存器使用规范

被调用函数应该保存的: GP SP FP(指针28-30,RA不保存) S0-S7 需要保存的临时变量

由主调函数保存的: a1-a3 参数寄存器 (arguments) ra t0-t9 临时寄存器

基础指令

不含立即数(R Type){operation} {value}, {operand1}, {operand2(if exists)}

含立即数(I Type){operation} {value}, (%immediate){operand}

状态转移 (J Type){operation} {target}

赋取值

(I - Type)lw — load wordsw — save word

算术

加 add addi —int addu —unsigned int addui —unsigned + immediate

减 sub, subu

与/或/或非 and, andi or, ori nor

左/右移 (R) sll —shift left logic srl eg. sll $t2, $s0, 8 (逻辑移位,空出位置清零)

Go To

bne — go to if not equalbeq — go to if equal

J %PC’ or {Label}JR {$x}

JAL %PC’ or {Label} 转移并链接 Jump and link 将下一条指令的地址,即PC+4保存在寄存器 $ra 中,从而当过程返回时可以链接到当前指令的下一条指令。

伪指令

* only the assembler gets to use $at

subu {}, {}, {}mov {dst},{src}la dst,label (load address)li dst, imm (load immediate)

堆栈

利用$SP完成

addi $sp, $sp, -4 # 移动指针 (push s0)sw $s0, 0($sp) # S0入栈(保存s0的值)add $t0, $a0, $a1 # t0 = a0 + a1add $t1, $a2, $a3 sub $s0, $t0, $t1add $v0, $s0, $zero # MOV v0 s0lw $s0, 0($sp) # 恢复s0addi $sp, $sp, 4 # 恢复栈顶指针 (pop s0)jr $ra int f; f = (g + h) - (i + j); return f; 处理器设计

设计处理器的五个步骤

分析指令系统,得出对数据通路的需求 选择数据通路上合适的组件 连接组件构成数据通路 分析每一条指令的实现,以确定控制信号 集成控制信号,完成控制逻辑 单周期处理器基本元件

读状态单元的内容-> 通过组合逻辑电路实现指令的功能-> 将结果写入一个或多个状态单元

每周期更新一次状态单元,是否更新需要显式信号寄存器、存储器在时钟边沿来到、写允许信号有效时更新状态(下一个周期写入)

状态单元:寄存器文件

CLK(时钟输入):时钟边沿触发状态转换

32个寄存器

两个32位输出: busA 、 busB 一个32位输入: busW

寄存器选通

RA(5位):选通RA指定的寄存器 RB (5位):选通RB指定的寄存器 读操作,看做一个组合电路模块的实现 RA 、 RB 有效 => busA 、 busB 有效 RW(5位): 选通Rw指定的寄存器 写操作: CLK边沿触发 当Write Enable 为1时,将busW 端口上的数据写入Rw指定的寄存器 状态单元:存储器

时钟输入 (CLK) 改变存储器状态需要时钟边沿触发 存储器总线 32位数据输入总线: Data In 32位数据输出总线: Data Out 读写操作 读操作,看做一个组合电路模块的实现 一定时间内完成从“地址信号有效” (Address) =>“数据输出” Data Out 写操作:时序电路 CLK边沿触发 Write Enable = 1: 将Data In的输入写入Address选中的那个字 数据通路上的其它单元

组合逻辑单元

32位加法器 3-8译码器 ALU 多路选择器 MUX 数据通路连接取指令

收到CLK信号 ->把PC值发送给指令存储器 ->把PC值发送给加法器,加法器将发出PC+4信号 这个信号可能接入其它组件,最后输入寄存器的并不一定是PC+4 指令译码

读寄存器 指令中的寄存器地址连接到RA和RB 从寄存器文件读,输出到BusA和BusB


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有