计算机组成与设计(八)—— 单周期处理器

处理器的设计步骤

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

具体设计步骤

(一)分析指令系统

MIPS的所有指令是非常多的,我们只实现其简化版,包含如下6种:

(二)需求分析

需求分析,需要存放指令地址的32位寄存器(PC),需要存放指令的存储器,可读,数据和指令均为32位(MEM[PC])。还需要一个寄存器堆,用来保存源操作数和目的操作数,一个ALU进行运算。

(三)选择组件

所以我们需要如下组件:

  • 算术逻辑单元(ALU):操作数为2个32位数,来自寄存器或扩展后的立即数
  • 立即数扩展部件:将一个16位立即数扩展为32位,扩展方式包括零扩展和符号扩展
  • 程序计数器(Program Counter,PC):是一个32位寄存器,支持两种加法:加4或加立即数
  • 寄存器堆(Register File):包含32个寄存器,每个32位宽;支持读和写操作
  • 存储器:一个是只读的指令寄存器,一个可读写的数据存储器,两者地址和数据都是32位(这两个存储器实际对应CPU中的指令高速缓存和数据高速缓存,虽然冯·诺伊曼结构要求指令和数据不加区分的存储,但在CPU的高速缓存是做区分的)

寄存器堆

内部构成是3个32位寄存器。Ra(5位):寄存器编号,将该编号寄存器的内容放到busA。Rb(5位):寄存器编号,将该编号寄存器的内容放到busB。Rw(5位):寄存器编号,在时钟上升沿,如果写使能信号有效,将busW的内容存入该寄存器。

busA和busB:两组32位的数据输出,busW:一组32位的数据输入

存储器

Address:32位的地址信号,该信号指定一个存储单元,将其内容送到数据输出信号。Write Enable:写使能信号,在时钟上升沿,如果写使能信号有效(为1),将数据输入信号的内容存入地址信号指定的存储单元。

Date In:32位的数据输入信号。Date Out:32位的数据输出信号。

(四)建立数据通路

建立数据通路,即根据指令的需求连接组件。指令的需求包括所有指令的共同需求、不同指令的不同需求。

所有指令的共同需求

主要包括取指令和更新PC

不同指令的不同需求

加法和减法指令的需求是最简单的

逻辑运算指令有立即数参与,需要增加两个二路选择器,一个选择数据输入来自寄存器还是立即数,另一个选择目的寄存器是rd还是rs

访存指令需要对立即数进行符号扩展,同时需要一个数据存储器用来读取和写入数据

数据通路初步完成

(五)控制信号的集成

现有指令所需的控制信号

控制信号哪来的呢?肯定来自指令。我们说opcode和func决定了指定功能,理所当然,控制信号也由它们决定。

opcode和func决定了8个信号

以add指令(add  rd,rs,rt;PC = PC + 4)为例,看需要将哪些信号设为有效,哪些设为无效,哪些任意。如图所示

用同样的分析方法,我们可以得到其它的指令的信号设置,它们的逻辑表达式如下:

根据数字逻辑的知识,我们很容易求出每个控制信号关于opcode和func的逻辑表达式

例如,求$RegDest$,按行观察

$RegDest = add + sub$

$add = rtype · func5 · ~func4·~func3·~func2·~func1·~func0$

$sub = rtype · func5 · ~func4·~func3·~func2·func1·~func0$

$rtype = ~op5·~op4·~op3·~op2·~op1·~op0$

同理可得到其它表达式的逻辑表达式

观察发现,这些表达式都是先相与、再相或,所以可用如下的电路来实现

参考链接:https://www.coursera.org/learn/jisuanji-zucheng/lecture/kRJer/506-kong-zhi-xin-hao-de-ji-cheng

原文地址:https://www.cnblogs.com/lfri/p/10050089.html

时间: 2024-11-05 18:40:21

计算机组成与设计(八)—— 单周期处理器的相关文章

计算机组成与设计(九)—— 流水线处理器

流水线的基本原理 指令的主要执行步骤 这个是之前设计的单周期寄存器,它已经能正确的执行MIPS指令. 而MIPS的指令可以分成如下5个阶段: 取指(Fetch)::从存储器取指令,并更新PC 译码(Decode):指令译码,从寄存器堆读出寄存器的值 执行(Execute):运算指令:进行算术逻辑运算,访存指令:计算存储器的地址 访存(Memory):Load指令:从存储器读指令,Store指令:将数据写入寄存器 回写(Write Back):将数据写入寄存器堆 与示意图结合如下: 单周期与流水线

单周期CPU设计

终于有点时间了,恰好多周期的设计也已经完成,其实只想写写多周期的,无奈单周期补上才好,哈哈哈~ -----+-----黄金分割线-----+----- 首先要理解什么叫单周期CPU(与后面多周期CPU对比)单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成. 单周期CPU的功能:能够实现一些指令功能操作.需设计的指令与格式如下: ==>算术运算指令 (1)add rd , rs, rt  (说明:以助记符表示,是汇编指令:以代码表示,是机

计算机组成与设计(十)—— 流水线的冒险

冒险 流水线技术之所以能提高性能 究其本质是利用了时间上的并行性,那它让原本应该先后执行的指令在时间上一定程度的并行起来,然而这也会带来一些冲突和矛盾,进而可能引发错误. 冒险(Hazard):在流水线中我们希望当前每个时钟周期都有一条指令进入流水线可以执行.但在某些情况下,下一条指令无法按照预期开始执行,这种情况就被称为冒险. 冒险分为三种: 结构冒险:如果一条指令需要的硬件部件还在为之前的指令工作,而无法为这条指令提供服务,那就导致了结构冒险.(这里结构是指硬件当中的某个部件) 数据冒险:如

计算机组成原理 课程设计报告

        计算机组成原理 课程设计报告      成员:许恺   2014011329          胡强勇  2014011315     时间:2016.12.20                 一.简要总结计算机组成原理实验 计算机组成原理实验总共五个实验,首先我们熟悉了教学机的使用方法,后面的实验我们分为运算器.存储器.控制器,控制器分为两次实验.紧接的第二次实验我们就进行了运算器的实验,对运算器的内部构造极其原理进行了验证理解,在这里我们学习了运算器ALU的8种运算功能,以

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步. 开始之前先说说表的结构. 其实表Flow_Form与Flow_FormContent设计是有一个缺陷的.我总共是设置最高26个字段从A~Z如果超过26个字段的表单是属于硬编码的.但是我认为26个字段已经足够 因为这里我是单表模式比起表关联无限字段理论上性能会更加快,特别是当数据库申请带到千万级数据的时候(你自己可以设计更加灵活的表单管理) Flow_Form的A~Z对应的是Flow_FlowAttr表中的数据, F

计算机组成与设计硬件/软件接口 (MIPS版) a y

买了一本<计算机组成与设计硬件/软件接口(MIPS版)>,非科班出身的我,从事计算机行业已经8年了,却对计算机的基础什么也不专业.有点惭愧,因为对时间的流逝而感到遗憾!行了,但有言说,多无实义!言归正传,看书!思考! 这本书的英文名称是<Computer Organization and Design The HardWare / Software Interface> Fifth Edition Asian Edition, 可以这样翻译<计算机组成与设计--硬件/软件接口

RISC处理器设计(八)-------处理器整体架构

将粗略结构模型的数据通路划分为:取指令单元IFU.指令译码单元IDU.算术运算单元ALU.存储器访问单元MAU以及前推和数据寄存器堆FRU. 前推和数据寄存器堆FRU包括写回级.寄存器堆和数据前推逻辑.一些指令的功能涉及在多个流水线级的操作,把流水线的控制功能集中在两个模块完成. 因此分别设计流水线控制单元PCU和总线控制单元BCU,用以实现对外存储器和总线控制协议的接口. 1.取指令级IFU IFU包括程序计数器PC.跳转解码.PC逻辑.通用指令Cache MPC和条件转移目标Cache BT

web设计——表单案例

案例地址:http://wanwanweb.sinaapp.com/yglogin/ 源码在下方仅供参考,自己动手设计一款类似的版式,然后亲自动手试一下. 1 <?php 2 ?> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 7 <tit

通达OA设计表单的小总结

16px下: 2010-09-09  80px  一般 100px  占5个字符 2010年09月09日 112px 一般120px 对应计算控件30px 占7个字符 2010-09-09时分秒 144px  一般150px 对应计算控件 40px 占9个字符 姓名 100px 多行框  高度80px 100px 120px 列表控件 序号和操作 共占用50px,各占25px 下拉菜单 按钮 占用24px 日历控件 按钮 占用24px 宏控件的默认宽度是170px 字体的上下像素值为字体大小+5