自己动手写CPU——第二篇

news/2024/11/9 2:59:05/

1 ori指令说明

ori是进行逻辑 或 运算的指令,其指令格式如下所示

在这里插入图片描述
从以上的指令格式,我们可以直到,这是一个I类型指令,ori指令的指令码是 6‘b001101,所以当处理器发现正在处理的指令的高6bit 是 001101 的时候,就知道当前正在处理的是 ori指令。
指令的用法是:ori rs rt immediate,作用是将指令中的16位立即数 immediate 进行无符号扩展至32位,然后与索引为rs 的通用寄存器的值进行逻辑 或 运算,运算的结果保存到索引 rt 的通用寄存器中。

(1)无符号扩展 和 符号扩展
在MIPS指令架构中,通常会有指令需要将其中的立即数 进行符号扩展 或者 无符号扩展,一般都是将n位立即数 扩展到32位,其中 符号扩展时将 n位立即数的最高位赋值到扩展后的32位数据的 高(32-n)位,无符号扩展 则是将扩展后的32位数据的高(32-n)位都置0.以16位立即数扩展为32位为例。(自己解释就比如,符号扩展,第16位的数据依次赋值给 高 16位的数据)
在这里插入图片描述

2 流水线 简单模型

简单来说,如果寄存器的输出端和输入端 存在环路,这样的电路称为状态机。状态机的简单模型如下图所示。如果寄存器之间有连接,没有上述环路,这样的电路结构称为 流水线。
在这里插入图片描述
在流水线结构中,信号在寄存器之间传递,每传递到一级都会引起相应的组合逻辑电路变化,对这种模型进行抽象描述就是寄存器传输级(RTL)。Register Transfer level

2.1 ori 指令流水线

在这里插入图片描述
在复习一下几个阶段的工作:
1 取指:取出指令存储器中的指令,PC值递增,准备取下一条指令
2 译码:对指令进行译码,依据译码的结果,从32个通用寄存器中取出 src 操作数,有的指令要求两个src 操作数都是寄存器的值,比如 or 指令,有的指令要求其中一个src操作数是指令中立即数的扩展,比如 ori 指令。所以这里有两个复用器,用于依据指令要求,确定参与运算的操作数,最终确定的两个操作数会送到执行阶段
3 执行阶段:依据译码阶段送入的src 操作数、操作码、进行运算。对于 ori指令而言,就是进行逻辑 或 运算,运算结果传递到访存阶段
4 访存阶段: 对于ori指令,在访存阶段没有任何操作,直接将运算结果向下传递到回写阶段。
5 回写阶段:将运算结果保存到目的寄存器

在这里插入图片描述

接下来就是代码的实现啦!!!!


http://www.ppmy.cn/news/40504.html

相关文章

PyTorch LSTM单步预测

前言 LSTM 航空乘客预测单步预测的两种情况。 简单运用LSTM 模型进行预测分析。加入注意力机制的LSTM 对航空乘客预测采用了目前市面上比较流行的注意力机制,将两者进行结合预测。多层 LSTM 对航空乘客预测 简单运用多层的LSTM 模型进行预测分析。双向LSTM 对航空乘…

ETL 与 ELT的关键区别

ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 — 这些变化可能看起来很小,但会产生很大的影响! ETL 和 ELT 是数据团队引入、转换并最终向利益干系人公开数据的两种主要方式。它们是与现代云数据仓库和 ETL 工具的开发并行发展的流程。 在任…

DevEco Device Tool 3.1 Release新版本发布,新增资源管理器、SFTP、HDC

DevEco Device Tool是面向智能设备开发者提供的一站式集成开发环境,支持代码编辑、编译、烧录和调试、性能监测等功能,支持C/C语言,以插件的形式部署在Visual Studio Code(简称VSCode)上,支持Windows10 64位…

低代码(七)低代码平台后端技术选型2.0

JWT 登录token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服…

牛客网在线编程SQL篇非技术快速入门题解(二)

大家好,我是RecordLiu。 初学SQL,有哪些合适的练习网站推荐呢? 如果你有编程基础,那么我推荐你到Leetcode这样的专业算法刷题网站,如果没有,也不要紧,你也可以到像牛客网一样的编程网站去练习。 牛客网有很多面向非技…

超级解压工具:OmniZip Mac中文

OmniZip Mac是一款超级解压工具,支持解压RAR、7Z、ZIP、TAR、GZIP等100多种格式的文件,只要是压缩包,没有什么OmniZip不能解压的。欢迎需要的朋友下载使用! OmniZip Mac软件特色 - 双击压缩文件进行预览或解压缩。您可以自定义配…

leetcode 困难 —— 寻找旋转排序数组中的最小值 I,II(二分 + 特判)

先说寻找旋转排序数组中的最小值 I 题目: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次&#xff…

【MySQL】实验八 触发器与存储过程

文章目录 1. 创建商品价格修改记录表2. 创建触发器,当更改商品价格(price列)时,记录价格3. SQL触发器:插入新员工时,同步更新部门表相应人数4. SQL触发器:删除学生数据5. SQL触发器:创建成绩表插入触发器6. SQL存储过程:查询订单7. SQL存储过程:建立存储过程,查询课程…