I/O设备在整个计算机系统中所占的比重也越来越大。一台计算机系统花在I/O设备上的费用已经占到全部的80%。
从数据交换的角度考虑,我们主要关心的是I/O设备的速度能否和CPU相匹配。事实上,I/O设备的数据传输率相差甚大,从几字节每秒到几兆字节每秒都有。以输入设备为例,普通键盘每秒钟可以输入若干个字符,我们说数据传输率的量级为B/s;若用软盘作为输入设备,其数据传输率的量级为千字节每秒;更快的输入设备如硬盘,其数据传输率的量级可达兆字节每秒。而主机的速度很快,如系统总线的带宽可达1GB/s,CPU的主频可达1GHz以上。因此,I/O设备必须通过I/O接口进行速度缓冲以后,即I/O设备先在数据缓冲寄存器中准备好数据,才能与主机进行数据交换。其过程大致如下所述。
输入过程:①CPU选择、启动I/O设备;②I/O设备输入数据到I/O接口中的数据缓冲寄存器;③CPU从I/O接口中的数据缓冲寄存器取走数据。
输出过程:①CPU选择、启动I/O设备;②CPU输出数据到I/O接口中的数据缓冲寄存器;③I/O设备从I/O接口中的数据缓冲寄存器取走数据。
我们关心的问题包括以下几个方面。
①何时数据缓冲寄存器满(可以通知CPU取走数据了)?
②何时CPU取完数据(可以通知I/O设备输入下一个要交换的数据了)?
③何时数据缓冲寄存器空(可以通知CPU输出数据了)?
④何时CPU输出数据完毕(可以通知I/O设备取走数据了)?
上述问题就是所谓的CPU和I/O设备之间的联络问题(也称为定时问题),I/O设备与主机之间必须了解彼此当时所处的状态,如相互是否可以传送,传送是否已经结束等,即输入/输出过程中的每一步什么时候做,不能早也不能迟(或者说要保证主机与I/O设备在时间上同步)。按照I/O设备速度的不同,常用的联络方法有三种。
(1)无条件传送方式
无条件传送方式适用于速度极慢或简单的外围设备。如机械开关、显示二极管等。CPU不必关心何时数据缓冲寄存器满,何时数据缓冲寄存器空,CPU只管输入/输出数据就行了。对机械开关来讲,CPU可以认为输入的数据一直有效,数据缓冲寄存器始终是满的。对显示二极管来讲,CPU可以认为输出一定准备就绪,数据缓冲寄存器始终是空的,只要给出数据,显示二极管就能进行显示。
(2)异步方式
异步方式适用于慢速或中速的外围设备。大多数I/O设备的速度与CPU相比较慢,和CPU不在一个数量级上,有的I/O设备的速度还不固定,或快或慢(比如键盘)。这类I/O设备一般用异步方式。这种方式在交换信息前,I/O设备和CPU各自完成自身的任务,一旦需要交换信息时,就用联络信号进行联系,彼此才交换信息。图7-1示出了数据传送的异步方式。
图7-1中,CPU将数据传送到I/O接口的数据缓冲寄存器后,I/O接口立即向I/O设备发一个“READY”信号,告诉I/O设备可以从接口内取数据。I/O设备收到“READY”信号后,立即从接口中取出数据,取完后向接口回发一个“STROBE”信号,让接口转告CPU数据已被取走,CPU可继续传送下一个数据。同理,I/O设备将数据传送到I/O接口的数据缓冲寄存器后,I/O设备立即向接口发“STROBE”信号,接口收到“STROBE”信号后,立即通知CPU来取走数据,一旦CPU取走数据,I/O接口向I/O设备回发一个“READY”信号,告诉I/O设备数据已被取走,I/O设备可继续传送下一个数据。通常,把这种“READY”信号和“STROBE”信号叫作应答信号(也叫握手信号)。
图7-1 异步定时方式
(3)同步方式(www.xing528.com)
同步方式适用于高速的外围设备。同步方式要求I/O设备与CPU的工作速度完全同步。例如,在数据采集过程中,若数据采集设备采集的数据以1MB/s速率传送到接口,则CPU也必须以1MB/s的速率接收。一般地I/O接口有一个统一的时钟,双方按时钟频率进行数据传送。
I/O设备通过I/O接口与主机交换信息时,其控制方式一般有:查询方式、中断方式、DMA方式和其他方式(包括通道方式、外围处理机方式和网络方式)等,概述如下。
(1)查询方式
查询方式是早期计算机中使用的一种方式,现在除单片机外,很少使用查询方式。查询方式是由CPU通过程序不断查询I/O设备是否做好准备,从而控制I/O设备与主机交换信息。因此查询方式又称为程序查询方式。采用这种方式实现I/O设备与主机交换信息,要求I/O接口内设置一个能反映设备是否准备就绪的状态标志,即对应于状态寄存器中的某一位,CPU通过对这位是1(表示准备好)还是0(表示没有准备好)的检测,可得知设备的准备情况。例如,输入时,CPU首先测试状态寄存器中对应数据缓冲寄存器“满”的标志位是1还是0,若是0,CPU继续测试,直到是1。相应的程序中是一条循环指令,此时CPU处于踏步等待状态;若是1,CPU执行一条输入指令,接收数据,并把该标志位置0,通知I/O设备可以输入下一个数据了。同样,输出时,CPU首先测试状态寄存器中对应数据缓冲寄存器“空”的标志位是1还是0。若是0,CPU继续测试,直到是1。相应的程序中也是一条循环指令,此时CPU处于踏步等待状态;若是1,CPU执行一条输出指令,输出数据,并把该标志位置0,通知I/O设备可以接走数据了。
查询方式的优点是硬件结构简单,缺点是速度慢。进入查询循环时将白白浪费掉CPU很多时间。
(2)中断方式
倘若CPU在启动I/O设备后,对设备是否已准备就绪不加过问,继续执行自身程序,只是当I/O设备准备就绪,并向CPU发出要求服务的中断请求信号后才予理睬,CPU暂停(或者说中断)自身程序而转向执行中断服务程序,结束后再返回到自身程序继续执行下去,这就是中断方式。例如,输入时,通常在CPU运行的程序中安排一条启动I/O设备的指令,启动I/O设备向I/O接口中的数据缓冲寄存器放入数据,当数据缓冲寄存器“满”时,I/O设备向CPU发中断请求信号,CPU接到中断请求信号后要做出决策,响应吗?若条件允许响应,则中断正在运行的程序,转去执行中断服务程序,其主要工作是执行一条输入指令,完成数据的输入工作(即把数据缓冲寄存器中的数据移动到CPU的寄存器中),结束后CPU返回到原来的程序继续执行下去。输出时,I/O设备不断地从数据缓冲寄存器中取数据,当数据缓冲寄存器“空”时,I/O设备向CPU发中断请求信号,CPU接到中断请求信号后要做出决策,响应吗?若条件允许响应,则中断正在运行的程序,转去执行中断服务程序,其主要工作是执行一条输出指令,完成数据的输出工作(即把CPU寄存器中的数据移动到数据缓冲寄存器中),结束后CPU返回到原来的程序继续执行下去。
在中断方式中,当I/O设备进行准备时,CPU不必时刻查询I/O设备的准备情况,不会出现踏步等待现象,即CPU执行程序与I/O设备进行准备是同时并行进行的,其CPU的效率当然比查询方式高,如图7-2所示。当然,采用中断方式,CPU和I/O接口不仅在硬件方面需要增加相应的复杂性,而且在软件方面还要编制中断服务程序。
(3)DMA方式
从提高CPU的利用率来看,中断方式消除了查询方式的“踏步等待”现象,CPU的效率提高了。但是,CPU每传送一个数据,要执行一次中断服务程序,中断服务程序至少也有十来条指令,而实质上只有一条输入或输出指令是在传送数据。CPU能不能不执行中断服务程序,直接执行这一条输入或输出指令;或者更进一步,整个数据传送过程不要CPU参与,连这一条关键的指令也不要CPU来执行了,采用DMA方式就可以实现。DMA方式特别适用于内存和高速I/O设备之间进行成批数据交换。
DMA方式的基本思想是在I/O设备和内存之间开辟直接的数据传送通路。在正常工作时,CPU执行自己的程序。只有当I/O设备要和内存交换数据时,向CPU发DMA请求信号(不是中断请求,而是使用总线请求),通知CPU暂停片刻(一个或几个存储周期就够了),让I/O设备与内存交换数据,结束后,CPU又继续执行原程序。如图7-2(c)所示。如此重复,直到整个数据块的传送完毕。
图7-2 同步方式的三种控制方式
(4)其他方式
如果说DMA方式还有不足之处的话,在于每当I/O设备要与内存交换数据时,CPU都要暂停片刻(一个或几个存储周期)。这个不足之处在大型机中就显得严重了。因为和大型机相连的I/O设备很多,特别是大容量的外存的使用,使内存和外存之间的数据流量大幅度增加,甚至可能要求多个DMA方式同时使用,引起内存使用上的冲突。因此大型机要有比DMA控制器更复杂的硬件来专门管理和控制I/O设备,如通道和外围处理机等,相应的就有通道方式和外围处理机方式。
综上所述,I/O设备与CPU之间的数据交换的控制方式主要有查询方式,中断方式、DMA方式、通道方式、外围处理机方式和网络方式等。其中查询方式主要用在单片机应用开发上,中断方式和DMA方式被普遍应用在几乎所有的计算机中,通道方式和外围处理机方式主要应用在大型机中。比较起来,网络方式是一种最简单、最方便实用的数据交换方式。不管是什么计算机,大型机还是微机,只要能上网就可以下载、上传,或者发一个E-mail等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。