首页 理论教育 微型计算机原理:总线仲裁与中断控制技术

微型计算机原理:总线仲裁与中断控制技术

时间:2023-11-03 理论教育 版权反馈
【摘要】:图7-42 菊花链式总线仲裁图7-43 独立请求集中式总线仲裁在我们常见的总线中,ISA总线是没有真正意义上的总线仲裁机制的。ISA总线控制主要有中断和DMA请求两种方式,中断方式时由ISA卡发出中断请求而取得软件的控制权。为了实现这些功能,ISA总线提供了一组用于中断控制、DMA控制和总线控制权转移的控制信号。和ISA总线不同,PCI作为一种与处理器无关的通用系统总线,定义了完善的总线仲裁机制。

微型计算机原理:总线仲裁与中断控制技术

在类似ISA和PCI这样的共享总线上,由于总线争用的问题,在同一个时刻只能有一个总线主设备控制总线传输数据。而总线上存在着很多总线设备,在多个设备同时需要占用总线传输数据的时候总线应当如何处理呢?这就涉及了总线仲裁的问题。

简而言之,总线仲裁就是在出现多个总线设备争用总线的情况下依照一定的优先级算法对这种争用进行裁决,从而决定哪个总线设备占用总线传输数据的过程。总线仲裁有很多种分类方法,比如根据总线仲裁是否与总线上的数据传输在时间上重叠分为显式仲裁(总线仲裁显式地占用总线时间)和隐式仲裁(总线仲裁与总线上数据传输在时间上重叠,不占用总线时间)。一种比较常见的分类方法是根据仲裁控制机构的设置方法将总线仲裁分为集中仲裁和分散仲裁两种。顾名思义,集中仲裁(见图7-41a)即使用一个总线仲裁器对各个设备占用总线的请求进行仲裁。而分散仲裁的总线的仲裁逻辑分布在所有的总线设备之中,不需要集中的总线控制器,所以又称作分布式仲裁(见图7-41b)。

978-7-111-46342-9-Chapter07-179.jpg

图7-41 集中式和分布式总线仲裁

在使用集中式总线仲裁的总线中,每个总线主设备都通过一对总线请求与总线响应信号与总线仲裁器相连。在总线设备有占用总线传输数据的需求时,总线设备就会通过总线请求信号向总线仲裁器发出总线请求。总线仲裁器根据预先定义的优先级策略对收到的所有设备的总线请求进行仲裁,决定哪个总线设备的优先级最高,并通过总线响应信号响应该总线设备,将总线的控制权交给该总线设备。而在分布式总线仲裁系统中,由于系统中不存在集中的总线仲裁器,总线仲裁的处理逻辑分布在所有的总线设备之中,这些仲裁逻辑根据总线上各设备提交的总线请求进行仲裁,确定本设备是否应当获得总线的控制权。

在集中式仲裁中,有一种比较常用的简单链式总线仲裁方法,被称作“菊花链”式总线仲裁(见图7-42)。其基本思想是各总线设备共享同一根总线请求信号线提交总线请求,在收到总线请求后,总线控制部件产生总线授权信号,并将总线授权信号通过一个链式链路按照一定的次序在总线设备之间进行传递,在传递过程中如果某个总线设备有总线请求,则总线授权响应不再向下传递,该总线设备得到授权。

菊花链式总线仲裁结构简单,只用有限的几根信号线就能够实现按照一定优先级的总线仲裁。更重要的是,这种仲裁结构提供了足够的可扩展性,可以很轻易地将新的设备连接到总线之中。但是,菊花链式总线仲裁结构有一个不可避免的问题,总线仲裁的优先级是固定的。根据菊花链式总线仲裁的原理,总线控制部件发出的总线授权信号依次通过各总线设备,越“靠近”总线控制部件的总线设备越先获得总线授权信号,其优先级也越高,这个优先级次序是由总线上各设备的连接次序所决定的,无法通过编程等方式修改,这也给菊花链式总线仲裁的应用带来了一些限制。为此,菊花链式总线仲裁常用于一些比较简单的场合,而更多的时候使用的是独立请求方式的总线仲裁机制。

在独立请求的集中式总线仲裁中,每个总线设备都通过一组独立的总线请求和总线响应信号线与总线仲裁器相连接,每个总线设备独立地向总线仲裁部件提出总线请求,各总线设备的总线到达总线仲裁器后,总线仲裁器会根据其内设的优先级算法选出应该占用总线的总线设备,并通过该设备的总线响应信号授权该设备占用总线(见图7-43)。和前述的菊花链式总线仲裁相比,独立请求的总线仲裁机制信号线多,实现复杂,但集中式的总线仲裁器提供了更加灵活的总线仲裁机制,可以比较容易地实现不同的优先级算法(如固定优先级、循环优先级等),而且可以通过编程的方式对总线仲裁的优先级进行一些修改。

978-7-111-46342-9-Chapter07-180.jpg

图7-42 菊花链式总线仲裁

978-7-111-46342-9-Chapter07-181.jpg

图7-43 独立请求集中式总线仲裁

在我们常见的总线中,ISA总线是没有真正意义上的总线仲裁机制的。ISA总线上的各种ISA设备一般都处于从设备模式,接受CPU的控制访问。但是,ISA设备还是可以通过一组信号向CPU发出请求,引起CPU的中断或获得总线的控制权。ISA总线控制主要有中断和DMA请求两种方式,中断方式时由ISA卡发出中断请求而取得软件的控制权。DMA请求方式则在DMA控制器响应请求后,由DMA控制器代为管理总线的控制,或者与978-7-111-46342-9-Chapter07-182.jpg信号配合取得ISA总线的真正控制权。为了实现这些功能,ISA总线提供了一组用于中断控制、DMA控制和总线控制权转移的控制信号。

●IRQ15-IRQ14、IRQ12~IRQ9、IRQ7~IRQ3:ISA总线中断请求信号,高电平有效,ISA总线的中断请求实际上是PC系统中8259A中断控制器的直接引线,其中两片8259A中的一部分中断请求(IRQ13、IRQ8、IRQ2~0)已为PC主板所用,因而仅引出一部分作为中断请求线,即使现在的ISA中断请求与8259A没有直接引线关系,其引线也没有更改。当ISA设备需要得到软件控制权或紧急事务处理时,可产生IRQ信号申请,通过可编程中断控制器向CPU发出中断请求。

●DRQ7~DRQ5,DRQ3~DRQ0:ISA设备的DMA请求信号,高电平有效,DRQ与IRQ类似,它是由8237芯片直接支持,其信号定义与处理过程与第5章介绍的内容一致。(www.xing528.com)

978-7-111-46342-9-Chapter07-183.jpg~D978-7-111-46342-9-Chapter07-184.jpg978-7-111-46342-9-Chapter07-185.jpg978-7-111-46342-9-Chapter07-186.jpg0,T/C:DMA请求的响应信号,DACK对应于每个DRQ的请求,T/C是所有DMA请求通道的记数结束信号,参见第6章中DMA传送,尤其是EOP信号相关内容介绍。

978-7-111-46342-9-Chapter07-187.jpg:ISA主模块确立信号,低电平有效。ISA设备一般都处于从模块方式,接受CPU的访问,既使DMA请求取得了总线控制权,也是由DMA控制器代为管理,ISA卡仍以从模块方式响应,只有在M978-7-111-46342-9-Chapter07-188.jpgR信号与DMA控制器配合使用时,ISA设备才能真正实现主模块功能。当ISA卡的DMA请求得到响应后,ISA卡可以发出978-7-111-46342-9-Chapter07-189.jpg信号,接管DMA控制器地址、数据以及部分控制总线信号。此时ISA设备就可以主动发信号访问其他设备了。由于DMA响应期间动态存储器停止刷新,因而规定978-7-111-46342-9-Chapter07-190.jpg有效不允许超过15 μs。

和ISA总线不同,PCI作为一种与处理器无关的通用系统总线,定义了完善的总线仲裁机制。PCI使用集中仲裁机制,在PCI总线中,每个PCI主设备都有一对用于总线仲裁的信号线,即总线请求信号978-7-111-46342-9-Chapter07-191.jpg和总线允许信号978-7-111-46342-9-Chapter07-192.jpg,这些信号独立地连接到PCI总线控制器(仲裁器)。PCI总线主设备通过REQ信号向总线仲裁器发出总线请求,总线仲裁器通过总线允许信号978-7-111-46342-9-Chapter07-193.jpg来响应总线请求,授权PCI主设备占用总线。PCI总线的仲裁是“隐含的”,即一次仲裁可以在上一次PCI总线交易期间完成,这样,就使得仲裁的具体实现不必占用PCI总线周期。但是,如果总线处于空闲状态,仲裁就不一定采用隐含方式。图7-44通过两个设备对总线的占用情况来说明仲裁的基本过程。

图7-44中,在时钟1或此前,设备A发出了总线请求978-7-111-46342-9-Chapter07-194.jpg,仲裁器根据总线的使用情况,在时钟2处回以978-7-111-46342-9-Chapter07-195.jpgA信号,于是设备A的请求得到批准,可以使用总线。由于此时只有978-7-111-46342-9-Chapter07-196.jpg有效而978-7-111-46342-9-Chapter07-197.jpg978-7-111-46342-9-Chapter07-198.jpg无效(总线为空闲状态),所以,设备A可以在时钟2处启动传输。到了时钟3,978-7-111-46342-9-Chapter07-199.jpg信号有效,设备A便开始其数据的真正传送。由于总线请求978-7-111-46342-9-Chapter07-200.jpg一直未撤销,说明它还要进行传输。设备B在时钟1期间也提出了总线占用请求978-7-111-46342-9-Chapter07-201.jpg,而它的优先级比设备A高,所以仲裁器在设备A进行第一次传输期间撤销了978-7-111-46342-9-Chapter07-202.jpg而置GNT-B有效(总线的仲裁是隐含的,不占用单独的PCI总线周期),允许设备B使用总线。这样,设备A在时钟4之后就释放总线,同时978-7-111-46342-9-Chapter07-203.jpg和I978-7-111-46342-9-Chapter07-204.jpg信号也消失,从而使得所有的PCI设备都能够判断出当前数据传输已经结束。设备B在时钟5处成为总线的拥有者。另外,从图中还可看到,R978-7-111-46342-9-Chapter07-205.jpg信号在时钟6处撤销,而F978-7-111-46342-9-Chapter07-206.jpg信号有效,这表明设备B只请求进行一次数据传输,因而仲裁器便在此期间准许设备A为下一个主设备(由于978-7-111-46342-9-Chapter07-207.jpgA仍然存在)。

978-7-111-46342-9-Chapter07-208.jpg

图7-44 PCI总线仲裁时序

PCI总线仲裁的基本规则如下:

(1)若978-7-111-46342-9-Chapter07-209.jpg信号无效而978-7-111-46342-9-Chapter07-210.jpg有效时,当前的数据传输合法且能继续进行。

(2)如果总线不处在空闲状态,则一个978-7-111-46342-9-Chapter07-211.jpgT信号无效与下一个978-7-111-46342-9-Chapter07-212.jpg信号有效之间必须有一个延迟时钟,否则在AD线和PAR线上会出现时序竞争。

978-7-111-46342-9-Chapter07-213.jpg无效时,为了响应更高优先级主设备的占用请求,可以在任意时刻置978-7-111-46342-9-Chapter07-214.jpg978-7-111-46342-9-Chapter07-215.jpg无效。若总线占有者在978-7-111-46342-9-Chapter07-216.jpg978-7-111-46342-9-Chapter07-217.jpg设置后,在处于空闲状态16个PCI时钟后还没有开始数据传输,则仲裁机构可以在此后的任意时刻移去978-7-111-46342-9-Chapter07-218.jpgT信号,以便服务于一个更高优先级的设备。

在PCI总线仲裁中还用到一个被称作“停靠”的概念。所谓停靠,是指总线仲裁器在没有设备使用总线或没有设备请求使用总线的情况下,根据一定方式选定一个设备,给它发出978-7-111-46342-9-Chapter07-219.jpgT信号,从而选择一个默认的总线拥有者。一般固定某一设备或选择最后一次使用总线的设备作为停靠设备,有时也可能指定仲裁器本身为默认的总线拥有者。

除了总线仲裁之外,PCI总线同样提供了一组用于实现中断请求的信号,它们是978-7-111-46342-9-Chapter07-220.jpg978-7-111-46342-9-Chapter07-221.jpg978-7-111-46342-9-Chapter07-222.jpgC和I978-7-111-46342-9-Chapter07-223.jpg,需要请求中断服务的PCI设备可以通过这些中断请求信号向978-7-111-46342-9-Chapter07-224.jpg发出中断请求。对于单功能设备,只能使用其中一条中断请求线。对于多功能设备,可以多个功能共用一条中断请求线。或者各自占一条,或者是两种情况的组合。

和ISA、PCI总线相比,PCI Express总线采用交换型结构替代了传统的共享型结构。在PCI Express的交换型结构中,不存在被“争抢”的共享总线资源,设备之间通过PCI Ex-press总线交换部件所提供的虚通道进行连接,所以PCI Express总线的“仲裁”和传统的ISA、PCI总线仲裁完全不同,可以认为,PCI Express不再需要传统的总线仲裁。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈