zoukankan      html  css  js  c++  java
  • 程序查询方式的接口及程序中断

    2019-05-08       20:01:04

    接口:总线与外部设备之间的一个逻辑部件

    程序查询方式:

    适用于慢速或中速的外围设备。
    数据在CPU和外围设备之间的传送完全靠计算机程序控制。
    优点是CPU的操作和外围设备的操作能够同步,硬件结构比较简单。

    缺点是程序进入查询循环时将白白浪费掉CPU很多时间。即使CPU采用定期地由主程序转向查询设备状态的子程序,进行扫描轮询的办法,CPU宝贵资源的浪费也是可观的。

    结论:CPU主动查询,外设被动。类似于上门零售。
     

    一:程序查询方式的接口分为以下部分:

    1.设备选择器 :判别总线上呼叫的设备是不是本设备。,实际上是设备地址的译码器。

    2.数据缓冲寄存器:输入操作时,用来存放从外部设备读出的数据,然后送往CPU;输出操作时,存放CPU送来的数据,以便于送给外部设备输出。

    3.设备状态标志:接口中的触发器,如:“BUSY”,“READE”,“ERROR”等,用来标志设备的工作状态,以便于借口对外设动作进行监视。

    二:程序查询输入/输出方式,动作如下:

    1.先向I/O设备发出命令字,请求进行数据传送;

    2.从I/O接口中读入状态字(READY=0,BUSY=1时可以进行数据传输)

    3.查看数据交换是否可以进行。

    4.假如没有准备就绪,则2.3步骤重复进行,一直到设备准备好为止,即READY=1.

    5.CPU从I/O接口的数据缓存器输入数据,或者将CPU输出至接口的数据缓存器中,同时,READY=0.(注意:一定要先取走数据,READY才能复位)。

    CPU先把指令中的设备地址通过设备地址送到地址总线上,然后启动命令,向设备发出命令字,请求进行数据传输,从接口中读入状态字,若READY为0,BUSY为1,则启动设备,同时输入数据到DBR(数据缓冲寄存器)中,则取走数据工作结束。使READY为1,BUSY为0,准备就绪后,使DBR中的数据由数据总线输出。

    查询需要的硬件:cpu,接口,外设

                     软件:输入/输出状态程序(输入输出程序)

    三:程序中断方式

    中断:外围设备“主动”通知CPU,准备送出输入数据或接收输出数据的一种方法。

    通常,当一个中断发生时,CPU暂停它的现行程序,而转向中断处理程序,从而可以输入或输出一个数据。
    当中断处理完毕后,CPU又返回到它原来的任务,并从它停止的地方开始执行程序。(如:接电话)

    结论:CPU被动,外设主动。效率大为提高。类似于开店零售。

    中断的硬件 :CPU中设置中断机构   接口中设置中断逻辑。

    中断的软件 :设置中断源对应的中断服务子程序。

    中断处理中需要注意的问题:

    1.CPU只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求。

    2.为了在中断服务程序执行完毕以后,能够正确地返回到主程序被中断的断点(PC内容)位置,要将PC和PSW内容压栈保护。

    3.CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求,在CPU必须有一个“中断屏蔽”触发器。

    4.中断处理过程是由硬件和软件结合来完成的。

    CPU有决定是否受理中断请求的机构。

    主要是:

    中断请求IR=INTERRUPT  REQUEST     IR=1,表示设备发出了中断请求。
    中断屏蔽IM=INTERRUPT  MASK            IM=0,CPU可以受理外界的中断请求。

    接口方面有决定是否向CPU发出中断请求的机构。

    主要是: 

    准备就绪标志RD=READY

    RD=1,数据放入DBR中

    RD=0,DBR中无数据

    允许中断触发器EI=ENABLE INTERRPUT:

    EI=1,接口可以向CPU发出中断请求

    EI=0,不能向CPU发出中断请求

    工作原理:

    1、由程序启动外设,使得RD=0,BS=1
    2、接口向外设发启动命令
    3、外设把数据放到DBR中
    4、置1 READY
    5、若EI=1,发中断请求
    6、将中断请求打入IR
    7、若IM=0,发中断响应
    8、取得中断向量
    9、转中断服务,输入数据
    10、将RD和BS复位。
    <完>

    小结:第一次写关于计算机组成原理的blog,今天写的内容主要是老师上课所讲的内容,关于程序查询以及程序中断的相关知识。不久前关注了一个公众号(码农翻身),其中涉及到相当多的计算机行业的内容,看了一些CPU相关知识后,对这部分产生了浓厚的兴趣,结合课本与老师PPT,对这部分内容有了更深的理解,在写的过程中也受益匪浅,与以前的知识相结合,逐渐进步,希望以后更加努力,c语言系列持续更新!

  • 相关阅读:
    我的浏览器和常用扩展
    Win10安装.Net Framework4.7及更高版本
    压缩和解压工具bandizip
    Oracle trunc()函数的用法
    Oracle 中 decode 函数用法
    Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
    String literal is not properly closed by a double-quote eclipse
    linux 启动 Oracle 实例
    查询当前Oracle数据库的实例
    sqlplus 执行 sql 文件
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/10834824.html
Copyright © 2011-2022 走看看