courseNotes:计算机系统结构 | 您所在的位置:网站首页 › 计算机系统结构cpi › courseNotes:计算机系统结构 |
计算机系统结构-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 Tobne — 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 实验室设备网 版权所有 |