学习笔记:计算机组成原理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还是关联物理地址,但是指令地址的管理器位于地址上
- 直接加载中断设备提供的第一条指令
下面分别介绍:

第一种,在内存上,把指令分成块,每一块都设置一个和IH相连接的地址,可以无条件到IH
就像某些单机游戏每隔几分钟保存存档一样,执行这样的操作
第二种:在内存上腾出来固定的一片区域放与IH相连接的地址。
第三种,CU向中断的设备发布指令,让他发送之前中断的指令
在I/O接口中,值得注意的是,Sy和IH都有连接,所以不必一直polling,没了化就是中断了可以直接用IH中断控制。
但是IH控制的I/O还是太慢了,于是出现了DMAC,它用于在内存和I/O之间传数据,并带有自己的IH部分,下面看一下DMAC的结构:

传输之前,CPU执行的程序通过将源地址,目标地址和要传输的字节数加载到DMAC中来准备传输。接口的Sy位连接到DMAC的传输控制。 只要Sy状态指示接口的可用性,DMAC就会传输下一个字节。 传输完指定块的所有字节后,DMAC将通过引起中断来通知请求程序。 因此,可以说,DMAC将中断数除以传输数据的块大小。
由于DMAC可以传输字节,因此它必须对地址和数据总线具有权限。 为了在每次传输之前获取此权限,DMAC会通过总线向CPU请求权限。 然后,后者结束当前的存储周期,将总线传输到DMAC,并拒绝使用总线,直到DMAC完成字节的传输为止。
他们说,DMAC会从CPU窃取内存周期,因此会稍微减慢程序执行速度。