《计算机组成原理实验》 单周期CPU

2023-10-29

《计算机组成原理实验》 单周期CPU

前言

这是中山大学2018年计算机组成原理实验中单周期CPU的实验报告,仿真与写板的内容暂略,所有源代码(包括写板)已经上传至我的github当中,欢迎大家访问。
github个人主页: https://starashzero.github.io
项目地址: https://github.com/StarashZero/Co-homework

一. 实验目的

  1. 掌握单周期CPU数据通路图的构成、原理及其设计方法;
  2. 掌握单周期CPU的实现方法,代码实现方法;
  3. 认识和掌握指令与CPU的关系;
  4. 掌握测试单周期CPU的方法。

二. 实验内容实验的具体内容与要求。
设计一个单周期 CPU,该 CPU 至少能实现以下指令功能操作。指令与格式如下:
==> 算术运算指令

  1. add rd , rs, rt
000000 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs + rt。reserved 为预留部分,即未用,一般填“0”。
2. sub rd , rs , rt

000001 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs - rt。
3. addiu rt , rs ,immediate

000010 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs + (sign-extend)immediate;immediate 符号扩展再参加“加”运算。

==> 逻辑运算指令
4. andi rt , rs ,immediate

010000 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs & (zero-extend)immediate;immediate 做“0”扩展再参加“与”运算。
5. and rd , rs , rt

010001 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs & rt;逻辑与运算。
6. ori rt , rs ,immediate

010010 rs(5 位) rt(5 位) immediate(16 位)
功能:rt←rs | (zero-extend)immediate;immediate 做“0”扩展再参加“或”运算。
7. or rd , rs , rt

010011 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs | rt;逻辑或运算。

==>移位指令
8. sll rd, rt,sa

011000 未用 rt(5 位) rd(5 位) sa(5 位) reserved

功能:rd<-rt<<(zero-extend)sa,左移 sa 位 ,(zero-extend)sa。

==>比较指令
9. slti rt, rs,immediate 带符号数

011100 rs(5 位) rt(5 位) immediate(16 位)

功能:if (rs< (sign-extend)immediate) rt =1 else rt=0, 具体请看表 2 ALU 运算功能表,带符号。

==> 存储器读/写指令
10. sw rt ,immediate(rs) 写存储器

100110 rs(5 位) rt(5 位) immediate(16 位)

功能:memory[rs+ (sign-extend)immediate]←rt;immediate 符号扩展再相加。即将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。
11. lw rt , immediate(rs) 读存储器

100111 rs(5 位) rt(5 位) immediate(16 位)

功能:rt ← memory[rs + (sign-extend)immediate];immediate 符号扩展再相加。
即读取 rs 寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后
保存到 rt 寄存器中。

==> 分支指令
12. beq rs,rt,immediate

110000 rs(5 位) rt(5 位) immediate(16 位)

功能:if(rs=rt) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4
特别说明:immediate 是从 PC+4 地址开始和转移到的指令之间指令条数。immediate 符号扩展之后左移 2 位再相加。为什么要左移 2 位?由于跳转到的指令地址肯定是 4 的倍数(每条指令占 4 个字节),最低两位是“00”,因此将 immediate 放进指令码中的时候,是右移了 2 位的,也就是以上说的“指令之间指令条数”。
13. bne rs,rt,immediate

110001 rs(5 位) rt(5 位) immediate(16 位)

功能:if(rs!=rt) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4
特别说明:与 beq 不同点是,不等时转移,相等时顺序执行。
14. bltz rs,immediate

110010 rs(5 位) 00000 immediate(16 位)

功能:if(rs<$zero) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4。

==>跳转指令
(15)j addr

111000 addr[27:2]

功能:pc <-{(pc+4)[31:28],addr[27:2],2’b00},无条件跳转。
说明:由于 MIPS32 的指令代码长度占 4 个字节,所以指令地址二进制数最低 2 位均为 0,将指令地址放进指令代码中时,可省掉!这样,除了最高 6 位操作码外,还有 26 位可用于存放地址,事实上,可存放 28 位地址,剩下最高 4 位由 pc+4 最高 4 位拼接上。

==> 停机指令
(16)halt

111111 00000000000000000000000000(26 位)

功能:停机;不改变 PC 的值,PC 保持不变。

三. 实验原理

简述实验原理和方法,必须有数据通路图及相关图。
单周期 CPU 指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(如果晶振的输出没有经过分频就直接作为 CPU 的工作时钟,则时钟周期就等于振荡周期。若振荡周期经二分频后形成
时钟脉冲信号作为 CPU 的工作时钟,这样,时钟周期就是振荡周期的两倍。)

CPU 在处理指令时,一般需要经过以下几个步骤:

  1. 取指令(IF):根据程序计数器 PC 中的指令地址,从存储器中取出一条指令,同时,
    PC 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入 PC,当然得到的“地址”需要
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《计算机组成原理实验》 单周期CPU 的相关文章

  • 2021-07-31

    2周目总结 7 19 7 25 无事 打牌 7 26 8 1 河南加油 无事打牌 我似乎忘了什么 哦 还有作业没弄 作业qaq 正在补习ing
  • 补码除法运算(加减交替法)

    x 补 00 1000 除数y 补 11 0101 两个数是异号 因此使用x 补 y 补 11 1101 11 1101继续与y 补 对比 发现是同号 商上1 余数11 1101向左移动一位 再加上 y 补 结果为00 0101 余数00
  • 药品的泡罩包装技术介绍

    导读 药品的泡罩包装是通过真空吸泡 吹泡 或模压成型的泡罩内充填好药品后 使用铝箔等覆盖材料 并通过压力 在一定温度和时间条件下与成泡基材热合密封而成 药品的泡罩包装又称为水泡眼包装 简称为PTP Press through Packagi
  • Expect 编程教程

    http expect nist gov expect home 目录 1 摘要 2 关键字 3 简介 4 Expect综述 5 callback 6 passwd 和一致性检查 7 rogue 和伪终端 8 ftp 9 fsck 10 多
  • 计算机的性能公式

    cpu执行时间 简称CPU时间 表示执行某一任务在CPU上所花费的时间 不包括等待I O或运行其他程序的时间 程序的cpu执行时间 cpu时钟周期数 时钟周期时间 cpu时钟周期数 主频 要想缩短cpu执行时间 最简单的方法就是缩短cpu的
  • 1. 存储器分类

    存储器的分类 存储器有很多的分类依据 按存储介质 读写功能 存取方式 在计算机中的作用等 按存储介质分类 磁性介质 磁盘 磁带 光介质 光盘 半导体介质 内存 固态硬盘 内存是易失性存储器 掉电后无信息保存 固态硬盘是非易失性存储器 掉电信
  • 变量那些事

    什么是变量 变数或变量 是指没有固定的值 可以改变的数 变量以非数字的符号来表达 一般用拉丁字母 变量是常数的相反 变量的用处在于能一般化描述指令的方式 结果只能使用真实的值 指令只能应用于某些情况下 变量能够作为某特定种类的值中任何一个的
  • windows操作系统蓝屏错误对照表

    windows操作系统蓝屏错误对照表
  • 计算机组成原理慕课测试-第四单元

    计算机字长32位 主存容量为128MB 按字编址 其寻址范围为 0 32M 1 1 B 8b 1 kB 1024 B kB kilobajt 千 1 MB 1024 kB MB megabajt 兆 1 MB 1024 kB MB mega
  • 计算机组成原理--基于Logisim的4位并行加法器实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的4位并行加法器实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Log
  • 《计算机组成原理实验》 多周期CPU

    计算机组成原理实验 多周期CPU 前言 这是中山大学2018年计算机组成原理实验中多周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara
  • 【计算机组成原理】实验4:存储器读写实验

    实验内容 一 实验原理 存储器是计算机的存储部件 用于存放程序和数据 存储器是计算机信息存储的核心 是计算机必不可少的部件之一 计算机就是按存放在存储器中的程序自动有序不间断地进行工作 本系统从提高存储器存储信息效率的角度设计数据通路 按现
  • Hadoop命令大全

    Hadoop命令大全 1 列出所有Hadoop Shell支持的命令 bin hadoop fs help 2 显示关于某个命令的详细信息 bin hadoop fs help command name 3 用户可使用以下命令在指定路径下查
  • 整型有哪几种形式?各种形式有什么区别?

    整型有哪几种形式 C 中提供的整数类型有三种 int long short 每种类型又分为有符号和无符号两种类型 有符号整数既可以表示非负整数 又可以表示负整数 但是 无符号整数不能表示负数 只能表示非负整数 一 无符号整数 在内存中 in
  • 面向对象编程是什么意思呢?汇总

    https blog csdn net qq 32381815 article details 79119996 面向对象思想 谈谈你对面向对象的理解 https blog csdn net qsbbl article details 71
  • 全相联映射、直接映射、组相连映射

    目录 1 主存中的块放到cache 高速缓冲存储器 中哪个位置 2 标记位 有效位 命中是什么 2 1 标记位 2 2 有效位 2 3 命中 3 全相联映射 4 直接映射 4 1优化标记位 5 组相连映射 6 课后习题 1 主存中的块放到c
  • 服务计算:简单的web程序

    CloudGo 框架选择 看了go的一些框架如beego和iris觉得挺好的 本来想用 但是虚拟机出了点问题装不成 windows上装成了没ab指令 所以使用官方的net http库做简单的实验 看完beego和iris的特性我还是比较想用
  • 贪吃蛇实验报告

    贪吃蛇实验报告 第一次写博客 这是中山大学软件工程导论的项目之一 对初学者可能有点难度 分享出来做参考 使用的C语言 如果你喜欢的话可以使用 就这样 直接上代码 智能蛇部分也发上来 include
  • 计算机组成原理综合1

    1 完整的 计算机系统 应包括 D A 运算器 存储器和控制器 B 外部设备和主机 C 主机和实用程序 D 配套的硬件设备和软件系统 2 计算机系统中的存储器系统是指 D A RAM存储器 B ROM存储器 C 主存储器 D 主存储器和外存
  • 5.1 中央寄存器的原理和组成

    思维导图 中央处理器 CPU 核心原理与组成 引言 中央处理器 CPU 作为计算机的 大脑 在现代计算机硬件中扮演着至关重要的角色 本文旨在深入探讨CPU的基本原理和组成部分 为读者提供一个全面的理解 CPU的基本原理 1 信息处理 CPU

随机推荐

  • 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java动物爱心救助平台s9dza

    如果你自己基础不好或者是小白的情况下那就建议你选择网站 系统类的去做 但是还得问问你们导师 如果你们导师没问题就可以 因为有的导师是不愿意你们选择做网站 系统的 毕竟做的人比较多 重复率调高 选择这种题目都是要创新功能 所以会比较棘手 以下
  • RT-Thread动态和静态创建线程

    上一篇 RT Thread线程管理教程 http t csdn cn phnwQ 目录 一 静态创建线程和动态创建线程的区别 二 创建线程的常用函数 三 动态创建线程 四 静态创建线程 五 动态和静态创建线程结合 线程调度hook函数使用
  • 计算机科学与技术专业课程有哪些,计算机科学与技术专业课程有哪些

    计算机科学与技术专业简介 计算机科学与技术类专业毕业生的职业发展路线基本上有两条路线 一是纯技术路线 二是由技术转型为管理的路线 计算机科学与技术专业课程 电路原理 模拟电子技术 数字逻辑 数字分析 计算机原理 微型计算机技术 计算机系统结
  • Python——模拟退火在背包问题上的运用(详细代码)

    一 模拟退火简介 二 详细代码 import math import random import matplotlib pyplot as plt def init population n 生成一个种群 个体为全排列的随机排列 popul
  • [每日两题系列]刷算法题咯~~

    今日题目 反转链表 环形链表II 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒绝摆烂
  • 测试用例(边界值法)

    1 什么是边界值法 有效数据和无效数据的分界点 往往作为程序员编写程序的判断点 是程序员容易犯错的地方 也是测试人员重点测试的内容 我们把这些分界点的值找到 并进行测试的方法 称为边界值法 2 边界值法应用的场合 1 有数据输入的地方 一般
  • 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

    目录 一 简介 二 设计原理 三 系统设计 四 注意点 五 困难 一 简介 耗时五个月 终于完成了毕业设计和毕业答辩 在这里记录一下学习与实现过程 题目是导师给的 这是主要任务和工作内容 利用M5Stack UnitV2的目标检测功能 用摄
  • Java中final 关键字

    final在Java中并不常用 然而它却为我们提供了诸如在C语言中定义常量的功能 不仅如此 final还可以让你控制你的成员 方法或者是一个类是否可被覆写或继承等功能 这些特点使final在Java中拥有了一个不可或缺的地位 也是学习Jav
  • python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决?

    coding utf 8 import requests from bs4 import BeautifulSoup import os import sys reload sys sys setdefaultencoding utf8 爬
  • Unknown column 'rownum' in 'where clause'解决方案

    Unknown column rownum in where clause 当在嵌套的查询语句里面用到rownum的时候会遇到这个问题 比如 SELECT FROM select t id t name from USER INFO t w
  • 矩阵的等价,相似,合同

    转自http blog csdn net abraham li article details 50058123 矩阵等价 定义 对同型矩阵A B 存在可逆阵P和Q 使得B PAQ 充要条件 A和B的秩相等 两个矩阵对应着两个不同的线性变换
  • [大话设计模式C++版] 第8章 雷锋依然在人间 —— 工厂方法模式

    源码可以在这里找到 大话设计模式C 版 模拟大学生学雷锋 main cpp class LeiFeng public void Sweep cout lt lt 扫地 lt lt endl void Wash cout lt lt 洗衣 l
  • Redis高可用方案--sentinel(哨兵模式)和集群

    redis高可用方案 sentinel 哨兵模式 和集群 一 redis高可用方案 sentinel 哨兵模式 哨兵模式简介 sentinel工作过程 关于sentinel的三个定时任务 sentinel网络 sentinel网络故障修复原
  • 坐得越久 死得越快 还是站着编程吧

    导读 一项对超过 20 万个澳大利亚人的研究结果给这样一个事实又增加了一份活体证明 坐得越久的人死得越快 研究同时还发现 锻炼不能改变这种趋势 尽管它能有效降低这种风险 老话题了 研究显示 久坐对你的健康是真的 真的 真的非常有害 请买一个
  • STM32 最简单的边沿触发脉冲计数程序

    include led h include delay h include key h include sys h include usart h include timer h include lcd h extern u8 sign e
  • 2.JVM自动内存管理

    2 自动内存管理 2 1 概述 Java与C 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 墙外面的人想进去 墙里面的人却想出来 C 需要对构建的每个对象的生命周期进行管理和维护 Java把对象的生命周期 内存管理 交给了JVM 简化
  • 重磅来袭!怎么用java编写app软件

    前言 本人是底层 211 本科 刚毕业 科研经历 但是有些项 经历 在国内监控行业某头部企业做过一段时间的实习 想着投下字节 可以积累 下 试经验和为金九银十面招做准备 投了简历之后 过了一段时 间 HR 就打电话跟我约时间 说明一下 我投
  • nodejs解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目 数据库尝试使用了mongodb sqlite和mysql 分享一下关于mysql的连接池用法 项目部署于appfog 项目中我使用连接池链接数据库 本地测试一切正常 上线以后 经过几次请求两个数据接口总是报503 一直
  • 详解Linux手动释放缓存的方法

    详解Linux手动释放缓存的方法 Linux释放内存的命令 sync echo 1 gt proc sys vm drop caches 0 不释放 系统默认值 1 释放页缓存 2 释放dentries和inodes 3 释放所有缓存 释放
  • 《计算机组成原理实验》 单周期CPU

    计算机组成原理实验 单周期CPU 前言 这是中山大学2018年计算机组成原理实验中单周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara