学习笔记:计算机组成原理Ch6.I/O接口和中断

前面光讲CPU的原理了,但是如果最后计算出来的东西只存在于电脑内部,不对外输出也不行,于是就要探讨有关输入输出的问题:

一般来说,cpu会和内存和I/o都有连接,只需要控制单元控制就可以分别进行控制了

Polled I/O:

其实就是输出输入设备的state,就像饭店的传菜响铃一样,你来了一个菜,按一下响铃,拿到菜了,响铃结束,厨师就知道要上下一个菜了

这里就出现了一个Sy:synchronization bit

当true时,外接设备可以进行工作

当false时,计算机来拿东西

于是,I/O部分就结束了,下面是令人头疼的中断控制:

试想这样一个情景,你在学习,但是点了个外卖,你不想错过外卖,于是就一段时间看一下手机(polling),看看外卖还来没来,但是你一直看,这个时候,学习的内容就会出现中断,你如何能把这一些中断的学习再拼成知识网络呢?

就是中断控制啦,计算机的CU中都有一个interupt termimal,当控制器完成指令后中断,这个terminal就抓取中断时候的指令地址,之后可以再召唤子流程(subroutine),然后下一条就可以接着上面中断的地址和数据继续工作了

现在又出现了问题,中断控制需要程序呀!这个中断控制程序应该放在哪呀?

有三种策略:

  • terminal和物理地址关联,在这个地址中,中断程序的第一条指令,就是这个地址
  • terminal还是关联物理地址,但是指令地址的管理器位于地址上
  • 直接加载中断设备提供的第一条指令

下面分别介绍:

042_001.jpg

第一种,在内存上,把指令分成块,每一块都设置一个和IH相连接的地址,可以无条件到IH

就像某些单机游戏每隔几分钟保存存档一样,执行这样的操作

第二种:在内存上腾出来固定的一片区域放与IH相连接的地址。

第三种,CU向中断的设备发布指令,让他发送之前中断的指令

在I/O接口中,值得注意的是,Sy和IH都有连接,所以不必一直polling,没了化就是中断了可以直接用IH中断控制。

但是IH控制的I/O还是太慢了,于是出现了DMAC,它用于在内存和I/O之间传数据,并带有自己的IH部分,下面看一下DMAC的结构:

042_002.jpg

传输之前,CPU执行的程序通过将源地址,目标地址和要传输的字节数加载到DMAC中来准备传输。接口的Sy位连接到DMAC的传输控制。 只要Sy状态指示接口的可用性,DMAC就会传输下一个字节。 传输完指定块的所有字节后,DMAC将通过引起中断来通知请求程序。 因此,可以说,DMAC将中断数除以传输数据的块大小。

由于DMAC可以传输字节,因此它必须对地址和数据总线具有权限。 为了在每次传输之前获取此权限,DMAC会通过总线向CPU请求权限。 然后,后者结束当前的存储周期,将总线传输到DMAC,并拒绝使用总线,直到DMAC完成字节的传输为止。

他们说,DMAC会从CPU窃取内存周期,因此会稍微减慢程序执行速度。


学习笔记:计算机组成原理Ch6.I/O接口和中断
https://yiyuwang.be/2021/01/08/2021-01-08-342907719/
作者
StevenWong
发布于
2021年1月8日
许可协议