计算机组成第五周:单周期处理器

来源:互联网 发布:农产品网络推广方案 编辑:程序博客网 时间:2024/06/05 11:35

1 指令系统的需求

处理器的设计步骤:

  1. 分析指令系统,得出对数据通路的需求
  2. 为数据通路选择合适的组件
  3. 连接组件建立数据通路
  4. 分析每条指令的实现,以确定控制信号
  5. 集成控制信号,形成完整的控制逻辑

MIPS指令系统:

  • 无符号加法和减法:addu rd, rs, rt;subu rd, rs, rt
  • 立即数的逻辑或:ori rt, rs, imm16
  • 装载和存储一个字(32位):lw rt, imm16(rs);sw rt, imm16(rs)
  • 条件分支:beq rs, rt, imm16
需求 功能 算术逻辑单元(ALU) 运算类型为加、减、或、比较,2个来自寄存器或扩展后立即数的32位数 立即数扩展部件 将一个16位立即数扩展为32位数,采用零扩展或符号扩展 程序计数器(PC) 一个32位的寄存器,支持加4或加一个立即数两种加法 寄存器堆 每个寄存器为32位宽,共32个,支持从rs和rt的读操作,支持到rt或rd的写操作 存储器 一个只读的指令存储器,一个可读写的数据存储器,地址和数据均为32位
寄存器堆:busA,busB,busW,Ra,Rb,Rw
在时钟信号(clk)的上升沿,如果写使能信号有效(WriteEnable=1),将busW的内容存入该寄存器,寄存器堆的读操作不受时钟控制
存储器:Data In,Data Out,Address,Write Enable
在时钟信号(clk)的上升沿,如果写使能信号有效(为1),将数据输入信号的内容存入地址信号指定存储单元,存储器的读操作不受时钟控制

2 建立数据通路

所有指令的共同需求

数据通路初步完成

3 不同指令的控制信号

指令类型 R型指令 I型指令 J型指令 运算指令 addu rd, rs, rt;subu rd, rs, rt ori rt, rs, imm16 访存指令 lw rt, imm16(rs);sw rt, imm16(rs) 分支指令 beq rs, rt, imm16

3.1 addu指令

从指令存储器中取回指令
Instruction = MEM[PC]
指令指定的操作
R[rd] = R[rs] + R[rt]
计算下一条指令的地址
PC = PC + 4
RegDst ALUSrc MemtoReg RegWr MemWr nPC_sel ExtOp ALUctr 1 0 0 1 0 +4 x ADD

3.2 ori指令

指令指定的操作:R[rt] = R[rs] | ZeroExt[imm16]

RegDst ALUSrc MemtoReg RegWr MemWr nPC_sel ExtOp ALUctr 0 1 0 1 0 +4 zero OR

3.3 lw指令

指令指定的操作:R[rt] = DataMemory{R[rs] + SignExt[imm16]}

RegDst ALUSrc MemtoReg RegWr MemWr nPC_sel ExtOp ALUctr 0 1 1 1 0 +4 sign ADD

3.4 sw指令

指令指定的操作:DataMemory{R[rs] + SignExt[imm16]} = R[rt]

RegDst ALUSrc MemtoReg RegWr MemWr nPC_sel ExtOp ALUctr x 1 x 0 1 +4 sign ADD

3.5 beq指令

C语言代码:

if(i==j)    f=g+h;else    f=g-h;

MIPS汇编语言代码:

beq     $s3,$s4,True # branch i==jsub     $s0,$s1,$s2j       NextTrue:   add $s0,$s1,$s2Next:   …
从指令存储器中取回指令
Instruction = MEM[PC]
判断转移条件是否成立
if(R[rs] - R[rt] == 0)
计算下一条指令的地址:
then PC = PC + 4 + SignExt[imm16] * 4
else PC = PC + 4

beq指令的操作步骤2

beq指令的操作步骤3

4 控制信号的集成

取指部件将指令交给控制逻辑
控制逻辑分析指令,给出控制信号

控制信号的逻辑表达式

由与门组成的逻辑电路:

  • add = rtype·func5·~func4·~func3·~func2·~func1·~func0
  • sub = rtype·func5·~func4·~func3·~func2· func1·~func0
  • rtype = ~op5·~op4·~op3·~op2·~op1·~op0,
  • ori = ~op5·~op4· op3· op2·~op1· op0
  • lw = op5·~op4·~op3·~op2· op1· op0
  • sw = op5·~op4· op3·~op2· op1· op0
  • beq = ~op5·~op4·~op3· op2·~op1·~op0

由或门组成的逻辑电路:

  • RegDst = add + sub
  • ALUSrc = ori + lw + sw
  • MemtoReg = lw
  • RegWr = add + sub + ori + lw
  • MemWr = sw
  • nPC_sel = beq
  • ExtOp = lw + sw
  • ALUctr[0] = sub + beq
  • ALUctr[1] = or

控制器的实现示意图

0 0