计算机的核心是CPU,用来处理各类数据,但是计算机中的数据都存放在硬盘之类的外部设备中。计算机处理数据时,需要先将数据从I/O设备中读取至内存中,此后CPU才能对该数据进行处理。计算机处理数据的过程简单说来就是先读取,再计算。
近年来,CPU的处理速度得到了飞速的提升,而从I/OS设备中读取数据的熟读却发展很慢,导致了一个很尴尬的场面——“存储墙”,即CPU往往早已完成了数据的计算,但是I/O设备还在拼命地运作以将数据读入内存。有种在饭店里吃饭,上一道菜就消灭一道,饥肠辘辘地期盼下一道菜上来的感觉。为此好多计算机科学家针对I/O设备与主机交换信息的方式进行了研究,希望能够进一步的加大计算机的效率。
目前I/O设备与主机交换信息的方式主要有三种:
顾名思义,拿读入数据为例,CPU发出读取I/O设备中数据的命令,并选用不停查询的方式等待数据准备完成,然后将数据存入内存中。也就是说CPU从发出需要数据的请求开始,会一直等待数据传输完毕,然后再做接下来的工作,期间属于“踏步”状态什么都不做。而这种方式由于CPU等待的时间太过于长,致使计算效率不高。
程序中断方式是程序查询方式的改进版,程序查询方式中CPU等待的时间太过于长,而CPU本身很繁忙有太多的事情要做,计算机科学家认为这样的方式根本不科学,应当解除CPU必须等待的限制。在需要用到数据的时候,向I/O设备发出读取数据的指令,让I/O设备自己把数据准备好后再通知CPU。CPU不用等待,将任务中断,接着就处理下一条指令了,直到I/O设备将数据准备完毕,发消息给CPU说:“大哥,您要的数据准备好啦。”CPU在完成手头的指令后,就可以接着处理刚刚被挂起的任务,将准备的数据写入内存中。这样的方式使得CPU的计算资源没有浪费,相对于程序查询方式,有了很大的提升。不过这样做的前提是I/O设备有一定的智能,能够在没有CPU的指导下也能够处理数据了。但是将任务中断本身就需要一定的计算资源,接受I/O回馈消极需要一定的计算资源,回到刚刚工作的地方也需要一定的计算资源,如果中断的次数太过频繁,也会给CPU带来不少计算上的负担。
有些极端的科学家觉得就算采用程序中断方式,效率还是不够高,如果能够继续让I/O设备智能化,绕过CPU直接将数据存入内存之中,就可以省下更多CPU的计算资源了。结果这样的方式还真的被研究出来了。DMA方式又叫直接存储式访问,借用I/O接口实现了I/O设备的智能化。当CPU发出一个读数指令时,I/O接口接到指令,将数据从I/O设备直接存入到内存之中,不用再次麻烦CPU大哥了,只需要在完成之后告诉CPU:“读取操作已经完成。”所以CPU拥有了一个更加聪明的手下I/O接口,只需要吩咐工作,不再需要亲手过问了。但是事物都用两面性,在交给I/O接口读取数据的任务时,自然也得交给它相应的资源,其中就包括了用于传输数据的总线了。这也就意味着,CPU虽然在发出读数命令后能够直接进行下一步工作,不再过问,但是这个期间不能再进行其他的需要用到总线的工作(包括数据的存取,以及指令的存取),只能进行一些缓存中的指令。当然计算机的整体计算效率又提升了好多。
这三种就是I/O设备与主机交换信息的控制方式,可以看出,为了提升计算机的计算效率,I/O设备越发的智能化,省去了更多CPU的计算资源。
温馨提示:答案为网友推荐,仅供参考