计算机组成原理

  • 指令周期:先理解这个概念,什么是指令周期呢,指令周期就是说一条指令从取到到执行完的时间。指令周期又可以分为若干个机器周期(cpu周期),机器周期又可以分为若干个时钟周期。每个指令周期的机器周期数量可以不一样,但并不是说一定不一样,为了方便,大部分时候都是一样的,每个机器周期的时钟周也可以不一样,但是大部分也是一样的,也是为了方便流水线。指令周期一般分为四个阶段:取址周期,间址周期,执行周期,中断周期,cpu依靠什么判断处于哪个阶段呢,有四个对应的寄存器,相应的寄存器为1就表示对应的周期。

    • 取址周期

      • 什么是取址呢?取址就是根据PC中的地址取出指令放入IR中,并将PC内容递增。这段话一定要好好体会,我以前一直没有好好体会,这个东西是很重要的,首先要理解PC中存的是什么,PC中存储的是要执行指令的地址,这意味着什么呢?你要想找到执行指令的位置,就绕不开PC,同时根据PC中的地址取出对应地址的指令到IR中后,PC的内容就会改变,此时PC中存的就是下一条要执行指令的地址。IR又是什么呢?IR顾名思义:instructor register,这个就是用来存储指令的。综上所述,取址周期是做什么的呢:根据PC中的内容,这个内容是要执行指令的地址,也就是根据对应的地址找到相应的要执行的指令把这个指令存放到IR中,之后PC的内容改变,这就是取址周期的全部最简单易懂的解释。

      • 这里用来理解取址周期的指令流(等我完成了四个阶段的费曼学习法解释再来去完成这个),接下来来详解取值周期的指令流:首先什么是取址呢,就是根据pc寄存器的值去取对应的指令放到IR中,但是直接去做办不到,应该借助其他的几个寄存器,首先把PC里面的值放到MAR中,这是地址存储寄存器,然后CU发出读的信号也就是置为1,这时根据MAR的地址到相应存储器的地址中取出指令放到MDR中,也就是数据存储寄存器,这时候再借助MDR放到IR中,此时取址周期就完成了。

        image-20240602144621235

    • 间址周期

      • 什么是间址周期呢?间址就是取出操作数的有效地址,将指令地址码送到MAR并送到地址总线,CU想存储器发出读命令,将有效地址放到MDR中。因为根据取出的内容中的地址并不一定是真实地址,还需要根据一定的变换才能够得到真实的地址,这个将虚假地址转化为真实地址的过程就称为间址周期。

      • 关于这个知识点我需要学会什么呢?我需要知道它的指令流的过程,然后熟练cpu内部的走线,才能够很好的掌握这个知识点。接下来继续这个话题,间址是什么呢,就是取出操作数的有效地址。一条指令是分为操作码和地址码的,以前我一直不理解为什么要叫地址码,现在应该理解了,操作码里隐含了对地址码的解码方式,地址吗有可能不需要解码直接就是可以操作的数,但也有可能是操作数的地址,甚至是地址的地址,这一切都需要根据操作码中的寻址特征去判断,因此所谓的地址码更像是一个笼统的说法,所以什么是间址呢,间址就是把地址码字段通过各种方法变成操作数的有效地址,这就是间址周期,像立即寻址这种就根本没有间址周期,他的执行逻辑也和其他指令不同,他的地址码就直接是操作数了,而其他指令的间址是把地址码变成操作数的有效地址。我想应该可以讲清楚间址的指令流了:把IR中的地址码部分传到MAR中,CU发出读命令,根据相应的地址找到内容放到MDR中,此时有效地址就取出来了,

        image-20240602150038069

    • 执行周期

      • 什么是执行周期呢?执行周期就是取出操作数并执行指令,不同的指令有不同的执行周期,我需要学会几个重要指令的执行周期以此来推断其他指令的执行周期。

    • 中断周期

      • cpu在每条指令执行执行结束前,都要发出中断查询信号,若有中断请求则cpu进入中断响应阶段,在中断周期里,cpu要把程序断点存入内存的堆栈中并进入中断服务程序。(这整个过程其实我并不是很了解)

      • 我需要知道什么呢?这个所谓的执行结束前,指的是执行周期结束前吗?还是什么,感觉有点模糊,这个要好好搞清楚,中断响应阶段的具体过程也要好好搞清楚。把这两个搞清楚,这个中断周期就明白了。

      • 第一个问题:中断周期的中断信号是在执行周期的过程中发出的,如果有中断,那么执行周期结束后会开始中断周期,如果没有,就不会

      • 第二个问题:中断周期的过程,首先要明确中断周期是什么,中断周期就是暂时不处理这个程序去进行其他的程序,其他程序处理完后,再来处理这个程序,所以第一步要干嘛,保存当前程序的信息,PC,PSW,通用寄存器的值,压到堆栈里,把这些保存好就够了,保存好了当前程序的信息,那接下来要干嘛,就要关闭中断,再之后,就是去跳转到中断程序了,那问题就变成了如何跳到中断程序。根据中断类型和中断请求号,从中断向量表中获得中断向量(中断向量是中断程序的起始地址),也就是说此时得到了中断程序的起始地址了,这是把PC的值设置为中断程序的起始地址,这时就跳转到中断程序了。然后就是中断程序执行了,和其他程序没有区别,执行完之后,就要打开中断了,再之后就要恢复现场了,就要恢复原先程序的环境,PC,PSW,通用寄存器的值通通出栈,然后就可以返回主程序了。这是

      • 多重中断:这个有相当复杂的内容,我在gpt中已经问的比较清楚了,但是还是没有归纳出来,这个还得好好归纳。

  • 指令执行方案

    • 单指令周期

      • 就是说在这种体系下,所有的指令都是在一个时钟周期完成,取址,译码,执行,访存等操作都在一个时钟周期内。

    • 多指令周期

      • 在多指令周期中,每条指令的执行时间不是固定的,而是分为多个阶段,每个指令都可以有不同的时钟周期

    • 流水线方案

      • 把每条指令划分为多个阶段,流水执行。

      上述三种方案虽然好像我都懂,但其实我内心是没有真正理解的,想要掌握这三种方案就要理解它们和它们之间的不同,有了这一层才算是掌握了。现在算是懂了,感觉有时候把思绪写出来,很多东西就好多了。

  • 常见的执行周期

    • 这个要等上面的知识点彻底理解后,再来把这个拓展完成,否则也是空中楼阁,我现在需要把这些东西都解构了,才方便我之后的学习。上面的知识已经理解了,这个其实是在后面那个最多的一节会详细讲。

  • 数据通路的功能和基本结构(这个很重要,要用费曼彻底理解)这个怎么说呢?后面做题慢慢巩固吧,内容很好理解,但是可能需要通过做题来理解的更加精准。

    • 概念

      • 首先要知道什么是数据通路。数据在功能部件之间传送的路径称为数据通路,cpu中含有运算器和一些寄存器,运算器和这些寄存器之间的传送路径是cpu内部数据通路

    • 功能

      • 实现CPU内部的运算器和寄存器,以及寄存器之间的数据交换。

    • 基本结构

      • CPU内部单总线方式

        • 将所有寄存器的输入端和输出端都连接到一条公共道路上,结构简单,但是容易发生数据冲突

      • CPU内部三总线方式

        • 将所有寄存器的输入端和输出端都连接到多条公共线路上,数据的传递可以同时进行。

      • 专用数据通路方式

        • 根据指令执行过程的数据和地址的流动方向安排线路,避免使用共享的总线,这种方式性能较高,但是硬件量很大。

  • CPU的数据传送

    • 寄存器之间的数据传送

      • 需要理解这个流程

    • 主存与CPU之间的数据传送

      • 需要理解这个流程

    • 执行算术或逻辑运算

      • 需要理解这个流程

  • 控制器的功能和工作原理

    • 这一节需要把前面的知识都好好理解,不要急,费曼学习法慢慢的一定可以啃下来,没什么学不会的,慢慢来。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值