C/C++教程

【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现

本文主要是介绍【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本次笔记内容:
P31 计算机组成原理(31)
P32 计算机组成原理(32)

我的计组笔记汇总:计算机组原理成笔记

视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完

幻灯片见我的 GitHub 仓库:计算机组成原理 src/slides

本节课继续由老师讲解实验;本节课后的下周周一、周四由同学们来讲解自己的进度。

本将标题为:支持指令流水的计算机系统设计与实现。

尽量做流水,实在不行做多周期。

这节课也是对计算机组成原理的综述、复习。很重要。

 

文章目录

      • 内容提要
      • 实验目的
      • 实验目标
      • 指令系统设计
      • 指令分类和指令格式
        • 流水的实现
        • 指令的分类
        • 指令格式功能描述
      • 从指令分析中能得到什么?
        • ALU需要完成哪些功能?
        • 寄存器组构成?
      • 指令功能及执行步骤
      • CPU总体设计
        • CPU的外部特性
        • CPU主要组成
        • ALU设计
        • 寄存器组设计
        • 与内存和外设的接口
        • 阶段寄存器设计
        • 流水冲突
        • 流水线CPU基本结构
      • 实验步骤
      • 时间安排

 

内容提要

  • 实验目的及目标
  • 指令系统分析
  • 指令执行骤举例
  • CPU框架设计
  • 讨论

做计算机第一件事,干什么呢?设计指令系统。老师已经给大家了。指令系统分析实际上就是需求分析。

实验目的

  • 进一步理解和掌握 Von Neumann 结构计算机各部件组成及内部工作原理
  • 进一步掌握计算机指令系统及指令功能的实现方法
  • 进一步加深对指令流水概念、实现机制和流水冲突等的理解
  • 培养硬件设计(计算机系唯一需要在硬件上动手的课,此外,CS国防生可能以后还要做很多硬件相关的东西)和调试的能力
  • 培养团队管理、合作精神及表达沟通能

实验目标

最低目标

  • 实现 THCO MIPS 指令系统,能运行已有的监控程序
    • 多周期/指令流水CPU
    • 支持I/O操作
  • 可在监控程序下运行应用程序
  • 完善监控程序等辅助软件系统

更高目标

  • 更好地解决流水线“冲突”问题
  • 中断、分时、双机通信
  • 应用程序
  • 与编译系统的结合

指令系统设计

  • 16位字长单字指令
  • 满足指令系统的基本要求
    • 完备性、规整性、高效性、兼容性
  • 容易实现指令流水
    • 指令格式简单、寻址方式简单
  • MIPS 16e 指令系统格式
  • 建议的指令系统
    • 见实验指导书

指令分类和指令格式

  • 基本可归结到寄存器型、立即数型和跳转型三类MIPS典型指令格式类型中
  • 指令格式简单,寻址方式较少,容易实现流水

状态转移图和指令各执行步骤的操作功能

上图是多周期的转移图。可以用于参考。

我们的下一条指令 PC = PC + 1 ,因为我们的指令系统是按照字进行编址的。

如果加入中断,可以在取指前,加一个中断跳转。

流水的实现


如上是一个参考,我们至少要加入“暂停”,至少能检测出冲突。

指令的分类


按照指令的操作类型可分为4种:

  • 纯数据:R型、I型
  • 控制流相关:B型、J型。

R型指令(寄存器-寄存器型)从寄存器堆中读取源操作数,结果写回寄存器堆:SLL、SRL、SRA、SLLV、SRLV、SRAV、MTSP、MOVE、ADDU、SUBU、MFPC、SLT、SLTU、CMP、NEG、AND、OR、xOR、NOT、MFIH、MTIH。

I型指令(立即数型)使用一个(4位或5位或8位或11位)立即数作为一个源操作数:SW_Rs、SW_SP、SW、LW_SP、LW、 ADDIU3、 ADDSP3、 ADDSP、ADDIU、LI、SLTI、 SLTUI、CMPI、INT。

B型指令(立即数跳转型)使用一个立即数作为跳转的目标地址:B、BEQZ、BNEZ、 BTEQZ、 BTNEZ。

J型指令(寄存器跳转型)使用寄存器的值作为跳转的目标地址:JR、JRRA、JALR

指令格式功能描述

R型指令:

具体可见参考书。

从指令分析中能得到什么?

老师希望同学们得到如下问题的答案:

  • ALU需要完成哪些功能?
  • 寄存器组构成?
  • PC增量?(刚才讨论了,在我们的指令系统中是1个字)

ALU需要完成哪些功能?

+
-
<<
>>
AND
NOT
OR
XOR

此外,还要考虑操作数的来源。

寄存器组构成?

两类: 通用寄存器 、 专用寄存器 。

通用寄存器:8个,R0到R7。

专用寄存器:

  • PC:指令寄存器;
  • SP:栈顶寄存器;
  • RA:返回值寄存器;
  • RH:中断寄存器;
  • T:标志寄存器。

指令功能及执行步骤


数据通路画好了,绘制指令流程图、指令流程表。

填完一条指令,在数据通路上走一遍看看。

CPU总体设计

CPU的外部特性

输入信号

  • CLK、INT、 Reset

输出信号

  • 对基本存储的控制信号(总线)
  • 基本存储的地址信号
  • 对扩展存储的控制信号(总线)
  • 扩展存储的地址信号

入出信号

  • 基本存储的数据
  • 扩展存储的数据

即,考虑总体的外部条件。

CPU主要组成

  • ALU:另设加法器完成地址计算
  • Register File
  • PC、SP、IH、RA
  • 步骤间寄存器组
  • 控制信号生成部件(Decoder):
    • Forwarding
    • Hazard testing
    • 动态预测

体现设计功力的地方,而实现可以分工进行。

ALU设计

功能:

  • 加、减、与、或、非、比较…

接口:

  • 输入:A、B、OpCode
  • 输出:F

寄存器组设计

功能:

  • 通用寄存器:多少个?
  • 提供数据访问:什么时候读?什么时候写?写的条件是什么?

接口:

  • A口地址、B口地址、写入寄存器地址
  • A口数据、B口数据、写入数据
  • 写入信号
  • 时钟信号

与内存和外设的接口


与串口通讯时,是一个异步操作(握手)。

阶段寄存器设计

阶段间需要传递的所有信息:

  • 中间数据
  • 参数
  • 控制信号

流水冲突

  • 结构冲突(一定要做)
  • 数据冲突(可以作为重点)
  • 控制冲突(牵扯精力较多,可不做)
  • 检测
  • 处理

流水线CPU基本结构


最后要呈现类似这种图,给老师。上面这个图画的不太好。

实验步骤

确定指令系统

  • 指令功能
  • 指令格式

确定指令的执行流程

  • 指令执行步骤划分
  • 各步骤完成的具体功能

确定硬件组成模块

  • ALU、RegisterFile、InsDecoder、PCAdder、MemInterface

确定每个模块的功能

  • 能否完成每条指令的功能要求

给出每个模块的功能描述

  • 具体实现,注意时序关系

时间安排

基本部分:

  • 指令功能分析
  • 数据通路设计、主要部件的功能及控制信号(18日)
  • 指令执行步骤划分(指令流程图)
  • 指令分步骤控制信号(指令流程表)
  • 控制器详细设计(流水冲突控制)(21日)
  • 模块结构及参数(25日)
  • 系统实现及调试

扩展部分:

  • 如果是硬件扩展,要在前面各步骤中体现

最终完成时间:

  • 12月6日(检查完成,回收上交盒子)
  • 12月13日(实验报告提交)

检查点:

  • 实验目标确定:每组给出目标和方案,准备PPT(数据通路设计、指令执行步骤、各部件主要控制信号)
  • 指令流程图和指令流程表,完整设计框图(包括控制信号):每组给出较为详细的设计,并准备PPT

 

这篇关于【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!