【计算机系统设计】学习笔记(1)03,04

  • 疑问:sw和lw指令,获取的地址==不是4的整倍数(字节不对齐)==的时候,应该如何处理?

东南大学MOCC 计算机系统综合设计 03

03-1 寄存器

介绍了MIPS寄存器,32个寄存器的基本功能和使用,注意

  • 子程序调用寄存器t不保护与s的保护
  • $31寄存器在子程序嵌套调用下如何使用?
  • $0只能为0,写入其他值将会被忽略,但是允许写入,只是写完也没用

03-2 寻址方式

PC相对寻址

PC = (PC + 4) + ((sign-extend)imm << 2)

为什么要扩展后左移两位?因为32位指令进行字节对齐后,一定是4的倍数,因此最低两位一定是00,所以就没必要存储上再占空间,而计算的时候,则要还原它。

字节寻址而不是字寻址
在这里插入图片描述所有跳转指令的目标地址,编译存储的时候,都会➗4,实际运行的时候,都是乘以4还原

04 典型指令讲解

  1. MinSysy-1不处理异常

  2. addaddu的区别,前者溢出后进行异常处理,后者不进行,因此后者常用来进行地址计算(如果偏移量为负值,必然溢出,但实际上只是地址往上跳转而已)

  3. 由于暂时无异常处理,所以add和addu,addi和addiu实际一样。

  4. subsubu也一样, u 代表的含义是,溢出之后有没有异常处理。

  5. 对于立即数运算,逻辑运算imm是零扩展(例如andi),算术运算imm是符号扩展(例如addi),这很好理解,逻辑运算没有有无符号数的概念。(具体指令具体分析

  6. 在这里插入图片描述注意写操作rsrt的反着的,源是rt,目标地址是rs + 偏移量

  • 疑问:sw和lw指令,获取的地址==不是4的整倍数(字节不对齐)==的时候,应该如何处理?(比如直接忽略不对齐的部分,或者报异常)

对于字读取,如果不是4的倍数,那么最低两位不是00,但是存储的时候,也一样>> 2,又会给抹掉了。
在这里插入图片描述把16位立即数,赋值给32位寄存器的高16位。

对于beqbne指令,判断相等不相等,直接用减法(-)判断就行了。

  • 小于则赋值,条件赋值指令
    在这里插入图片描述
    在这里插入图片描述比大小,自然应该是算术运算,有符号数。

因此自然有无符号比较的小于置位

在这里插入图片描述在这里插入图片描述显然是逻辑上的,因此是零扩展

就类似于函数调用,调用完之后,要返回$31值对应的地址。

在这里插入图片描述
jal和jr配合,就实现了过程调用和返回

注意,有的是硬件设计相关,有的则是软件设计相关。

小结

把握指令集功能的内在联系,而不是堆砌它们。

  1. 零扩展还是符号扩展?
    1. 一般来说,算数运算是符号扩展
    2. 逻辑运算是零扩展
  2. 溢出检测还是不检测?(溢出:针对有符号数,正数 + 正数 = 负数、正数 - 负数 = 负数……)
    1. 算数运算,检测溢出
    2. 逻辑运算、地址运算,没必要检测
  3. 等于不等于的判断?直接复用减法就好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【期末考试】计算机网络、网络及其计算 考试重点

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 计算机网络及其计算 期末考点 &#x1f680;数…

【计算机系统设计】学习笔记(2)

5.1 对于CPU与外界的读写&#xff0c;只有load和store指令能够做&#xff0c;所以很多情况下&#xff0c;直接通过bypass跳过去了&#xff0c;或者闲置&#xff0c;尤其对于流水线&#xff0c;更应该直接跳过而不是闲置&#xff08;如何设计?&#xff09;。 另一方面&#xf…

【计算机系统设计】重点 · 学习笔记(1)(资源消耗)

这一点先浅显理解&#xff0c;就好比我要造一个楼 我是用现成的材料造节省?还是需要用XX材料&#xff0c;但是XX材料还需要现成材料造呢&#xff1f; 这也不一定&#xff0c;但是基本来说&#xff0c;如果使用现有资源&#xff0c;能够直接用&#xff0c;那其实是最好不过的…

【计算机系统设计】重点 · 学习笔记(0)(数据通路设计思想)

重点1&#xff1a;05.1 设计思想 设计思想至关重要&#xff0c;这决定了你能不能自己根据ISA设计出来CPU架构&#xff0c;而不是只是抄别人的&#xff0c;也决定你能不能完成自己的设计更优化的架构。 描述方式约定 6 数据通路 ≠ Verilog代码 我们构建的数据通路&#…

【计算机系统设计】实践笔记(1)数据通路构建:取指部件分析

0 核心思想 根据指令功能&#xff0c;分析出需求&#xff0c;从而得出需要的部件、控制信号以及其他设计。 1. 针对的指令 取指阶段&#xff0c;针对所有指令&#xff0c;任何指令都需要进行取指。 2 功能&#xff08;需求&#xff09;分析 CPU的内部采用的是字节编址&…

【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(1)

0 回顾 上一次实践笔记&#xff08;0&#xff09;我们实现了一个最简单的&#xff0c;能够每个上升沿4的PC。 我们最需要关注的就是器件功能的独立性&#xff0c;避免内外功能混杂&#xff0c;同时一定要注意脑中有电路&#xff08;RTL级描述的抽象电路而不是实际的门级电路&…

接口的抽象与实现(概述)

概述 我们先建立一个整体的接口格局观&#xff0c;建立知识地图&#xff0c;了解接口的大概面貌。 整体来说&#xff0c;就这点事儿&#xff0c;4个箭头代表了所有&#xff01; 三个器件4个箭头 把这几个都想明白&#xff0c;就完事儿了。 第一层&#xff08;顶层&#xf…

从功能层次,阐述CPU、接口和外设之间的交互

我们从功能抽象层次&#xff0c;阐述一下CPU、接口芯片和外设之间的交互情况&#xff1a; 三个器件4个箭头 我们依次将其描述清楚。 数据 箭头①和③ CPU给接口可以发送数据&#xff0c;然后接口暂存数据&#xff0c;之后再发给外设&#xff0c;这就是数据缓冲。 发送的数…

Vivado工程文件分类

只需要在创建的时候&#xff0c;选择自定义路径即可&#xff0c;最好在原有的new文件夹下新建文件夹。 至于路径的匹配&#xff0c;可以自己试试&#xff0c;在原有默认new下创建文件夹&#xff0c;选中新的文件夹后&#xff0c;内部的Verilog文件可以访问外部new文件夹的文件&…

【微机原理与接口技术】具体芯片(1)并行接口8255A(1):全局观

并行接口8255A 首先&#xff0c;它是传输并行数据的&#xff0c;与CPU一样&#xff0c;然后&#xff0c;它是可编程的&#xff0c;也是多功能的&#xff0c;CPU可以对其进行一些控制。 管脚 先从最宏观层面分类 一部分引脚与外设相连一部分引脚与CPU相连GND和Vcc 注意&…

【算法】【殊途同归】搜索算法之(深度优先 || 广度优先) (约束条件 || 限界函数)

对于所谓的分支限界法和回溯法&#xff0c;我们完全可以更加灵活&#xff0c;请看表格。 深度优先广度优先约束条件限界函数算法策略√√回溯法局部判定√√√分支限界法局部判定√√√加限界的回溯法局部判定√枚举法全局判定√枚举法全局判定 前两种是我们常见的&#xff0c…

【算法】学习笔记(0):算法初探(逻辑抽象 + 示例 + 代码实现)

什么是算法? 人生皆算法&#xff0c;算法的本质&#xff0c;是解决问题的方法&#xff0c;遇到问题&#xff0c;寻找答案&#xff0c;解决问题&#xff0c;是作为一个人&#xff0c;一生都在做的事情。 算法是人类思维的产物&#xff0c;是解决问题的方案&#xff0c;并且&a…

【Verilog】数据流建模传输问题:赋值传输有方向

这次&#xff0c;我们说明的是&#xff0c;assign语句实现的数据流建模&#xff0c;包含的是两个层面 建立联系传输方向 assign A B的本质含义是 A与B建立关联B的值传给A 这个传输方向至关重要&#xff0c;实际情况是什么&#xff0c;就必须按照顺序进行&#xff0c;不是单…

【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(2)

待办事项 时钟频率高&#xff0c;取指周期长&#xff0c;远大于执行周期&#xff0c;如何处理&#xff1f; 不可综合逻辑的处理 接上一篇 【计算机系统设计】实践笔记&#xff08;2&#xff09;数据通路构建&#xff1a;第一类R型指令分析&#xff08;1&#xff09; 8.2 ALU运…

【计算机系统设计】实践笔记(2)插叙:综合与实现

接上一篇文章的第10节 之前完成了功能仿真&#xff0c;下面我们进行综合实现。 10.1.1 综合 综合成功。 实现试试 这真是令人悲伤……找Bug吧。 我们看看综合后的门级网表。 发现综合后的并不是我们想要的……看了看可能是综合的目录错误&#xff0c;我们再试试。 不是这…

【电路原理】学习笔记(1):电路模型的基本变量

上一讲说到了电路模型&#xff0c;这一电路的抽象&#xff0c;现在我们看看它的基本组成。 1 电流 1.1 概念 对于一根管道&#xff0c;它能够流通电荷&#xff0c;定向移动就形成了电流。 单位时间t内&#xff0c;&#xff0c;某一横截面&#xff0c;穿过电荷量是q&#xf…

【电路原理】学习笔记(0):电路与电路模型

东北大学电路原理MOOC 电路原理的核心点&#xff1a;研究电路模型 我们实际看见的&#xff0c;是真实电路 我们高中学的&#xff0c;是电原理图 现在&#xff0c;我们要研究的是电路模型&#xff0c;它是实际电路的抽象模型&#xff0c;并且是理想化的。 对于电路模型&#…

【计算机系统设计】实践笔记(3)改进数据通路:移位R型指令分析

0 回顾 前面的内容中&#xff0c;第一类R型指令分析&#xff0c;我们完成了一类R型指令的设计&#xff0c;完成了其数据通路&#xff0c;构建了相应的部件&#xff0c;并且完成了从ROM中取指&#xff0c;成功进行了基本的功能仿真&#xff0c;进行了综合和实现&#xff0c;但是…

【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现

1 jr指令分析 instructionoprsrtrdshamtfuncjr000000rs000000000000000001000 举例&#xff1a;jr $31 功能&#xff1a;PC <- &#xff08;$31&#xff09; 这是个跳转指令&#xff0c;将指定寄存器的值&#xff0c;放入PC中&#xff0c;是无条件跳转。 我们需要 更新P…