指令系统、中断的一些概念总结

计算机组成真的好难,考试要考,看一看视频,做个简单总结,以备不时之需。看的是mooc刘宏伟老师的课课程链接

指令:CPU能够识别执行的就是指令
指令格式应该既能给出足够的信息,其长度又尽可能的与机器字长匹配,以便节省存储空间,缩短取指时间,提高机器的性能

操作码:不仅告诉机器做什么,还告诉机器对哪些数据进行操作,操作码的长度是可以是固定的也可以变化的,固定是为了更好的译码,不固定我猜是为了扩大寻址范围,且听我慢慢道来

操作码

有几个A就是第N地址
如果是固定长度的话,4位操作码,三地址指令,可以保存2^4也就是16个三地址指令,但是要-1是15个三地址指令,最后一位要保留一下因为后面也要保存二地址指令,1111这个就保留下来给二地址指令了。
在这里插入图片描述
二地址指令,8位操作码了,可以看到1111作为保存地址,1111是开头,后面还是2^4个二地址指令,一地址指令和零地址依次类推
在这里插入图片描述
注:为什么要保留一个指令,我直接使用不行嘛?我个人认为是因为A1或A2或A3是地址码里面本身也保存着01二进制,如果不用一个特殊的作为开头,译码器也不知道这是一个三地址指令还是一个二地址指令。

三地址再多保留一位,二地址指令就能多2^4个了
在这里插入图片描述

地址码

这是四地址,实际上取下一条指令是用PC来取的,每一个地址码决定了寻址的范围、访存的次数。
在这里插入图片描述
减少一个操作数地址,寻址范围就增大,下图是让PC来取下一条指令,可以看到寻址范围明显变大了

在这里插入图片描述
又减少一个地址码,寻址范围再次增大,一开始相当于int a3 = a1 + a2;现在是a1 += a2;
在这里插入图片描述
在寄存器中选一个数做操作,又可以减少一个指令,增大寻址的范围
在这里插入图片描述

指令的字长取决于

  • 操作码的长度
  • 地址码的个数
  • 地址码的长度

最后的总结
在这里插入图片描述

操作数

操作数又是个啥东西?

操作数可以是

  • 地址,无符号数(绝对地址),有符号数(相对地址)
  • 数字
  • 字符
  • 逻辑数

完成一条指令的4个周期

  • 取指周期
  • 间址周期
  • 执行周期
  • 中断周期
    并不是每条指令都有这个周期,比如非访存的指令或者不是间址寻址的方式,或者没有中断信号,可能只有2个周期。

举个例子说下执行周期,是访存指令,add操作

在这里插入图片描述

IR(指令寄存器)告诉MAR(地址寄存器)X的内存地址,CU(控制单元)发出R(读操作),就去内存中读这个,读到里面的操作数就返回给MDR(数据寄存器),ACC(累加寄存器)加上这个数再给ACC,相当于 acc += x;

微程序控制的基本概念

微操作还是以加法指令为例子,加法指令有4步(取指令、计算地址、取数、加法运算),这4步就是4个微操作,一步就是一个微操作

微指令多个微操作就是一个微指令,比如取指令和计算地址他俩假设可以合并成一个东西,我们称这个东西为微指令。相当于部分微操作的集合

微程序多个微指令集合构成的东西,我们称之为微程序

控制存储器微程序存放在专用的存储器中(一般是ROM中),主要存放控制命令与下一条执行微指令地址。

注意尽管ROM还是叫只读存储器,但是现在不只可读还可写呢,以前的ROM是叫只可读存储器,随着技术的发展,出现了PROM(可编程只读存储器),EPROM(可擦可编程只读存储器),等等…

中断

中断是由I/O设备或其他非预期的急需处理的事件引起的,它使CPU暂时中断现在正在执行的程序,而转至另一服务程序去处理这些事件。

中断源引起中断的事件,即发出的中断请求的来源,称为中断源

中断优先权多个中断,根据中断优先级来判断先响应那个。

禁止中断产生中断源后,由于某种条件的存在,CPU不能中止现行程序的执行,称为禁止中断。我的理解:比如在执行一条指令的时候,这条指令必须执行完才能再去执行下一条指令或者响应中断,这个时候就要禁止中断了。

中断屏蔽
产生中断请求后,用程序方式有选择的封锁部分中断,而允许其余部分中断仍得到响应,称为中断屏蔽

中断有优先级,中断的优先级(响应优先级)不可能改变,那如何保证优先级呢?通过处理优先级的方法来改变谁先执行,这不就相当于了屏蔽了一些中断请求嘛。

中断向量
产生了中断,要去执行产生中断源的指令,咋执行啊?要有一个入口地址吧,这个地址称为中断服务程序入口地址啊。怎么找这个入口地址呀?根据中断向量地址找到中断服务程序的入口地址

多重中断
有A B C D优先级,假设A最高D最低,优先级从左到右依次递减,D来了执行D中断,这时候A也来了,D中断中断,执行A

关中断
硬件自动实现的。因为要保护断点和现场,在保护现场中,即使有更高级的中断源申请中断,CPU也不应该响应的。不然断点和现场保存不恢复,执行完中断以后,中断之前的那个程序还咋跑啊,所以关中断是有必要的。

开中断
关完了中断,保存完断点和现场之后当然要去打开了去执行中断服务程序啦,按照中断优先级来进行服务

断点
再处理完中断服务程序之后要正确的返回中断点,要把当前的PC(已经保存的是运行程序的下一条指令了)中的内容(断点)保存起来

现场
要保存寄存器的内容、程序状态字、中断屏蔽寄存器

中断流程图,如图所示
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值