本发明涉及一具有DMA(存储器直接存取)的计算机系统,其DMA通道对与之相联的无论是否有无自己判优电路的外设均有效。 目前的许多计算机系统采用DMA通道与外设交换数据,主要是对主存的读写,而不通过CPU(中央处理单元)。绕过CPU无疑具有增加数据传送率,改进整个系统效率的优点,因为在数据传送期间,可空出CPU去作其它工作。
迄今最常见的作法是为每一个可被DMA访问的外设提供一个物理上的DMA通道。IBM-PC就是这样一例计算机系统。
然而,用户可接到其计算机系统上的外设一直在不断增加,且预期将持续下去。例如新近可购得的光盘阅读器,额外通讯设备、硬盘、辅助存贮设备等,都可利用DMA发挥作用。
另一方面,增加物理上的DMA通道要以昂贵的系统硬件为代价,包括集成电路个数、插件板空间、总线空间。此外还考虑到在外设之间共享DMA通道会受到操作期间相互排斥的限制。例如,在IBM/XT和IBM/AT计算机系统中即采用了DMA通道共享,但要对操作系统进行大量修改,需要有附加的子程序以防止与每一个DMA通道相联的外设同时操作。而且,若当文件控制器不是足够的“智能”来进行重叠“寻找”时,也产生相当大的工作负担。在某些情况下,问题是混合性的,例如当LAN局部网络中地某一设备和一文件控制器共有同级DMA,且“LAN文件服务器”程序必须在两设备之间来回交流时。
为解决这些问题,申请号为:(IBM备案号为BC9-86-010)的另一共同未决申请中公布了给每一外设装备判优电路的计算机系统,判优电路间相互联接并通过判优总线与中央判优电路相联。当某一外设要求访问DMA通道时它将其通道优先号置到判优总线上,如果它的通道优先号具有最高优先级,则此外设分配到一有效的DMA通道。通过这种办法,可把外设加到系统上,而无需增加DMA通道和DMA通道请求线。
可是,有时在这样的计算机系统中希望使用现有的不具备判优电路的外设,由于无法请求访问DMA通道,这样的外设不能直接加到这样的计算机系统上。
本发明的目的在于提供这样一种类型的计算机系统,在此系统中外设通过使用判优总线请求DMA访问,除此之外本系统能接纳自身无判优电路的外设。
Bardotti等人的专利(美国专利号为3925766)公布了这样一种计算机系统,其中,外设被指定优先级,并按此优先级来选择向存贮器的请求,优先级分配可根据所产请求信号的产生原因或是中央处理器的特定的装载条件而改变,不过其没有采用DMA方式。
SUZUKI等人的专利(美国专利号为4400771)给出一种多处理器系统,其中每一处理器均能访问一单一存贮器,由一可编程寄存器来存贮为每一处理器分配存贮器访问级的优先权信息。这种优先权信息可通过外部电路或至少通过处理器中的一个而人为地改变。SUZUKI等人的专利没有采用DMA从多个外设访问内存。
下列美国专利是有关来用DMA控制器的计算机系统的背景参考资料:DinWiddie,Jr等人的专利,专利号为4371932;Larson的专利,专利号为4419728;Peterson的专利,专利号为4538224;BreWer等人的专利,专利号为4556962;Hallberg的专利,专利号为4584703。
按本发明,自身有或没有判优电路的外设都接到同一总线上。自身有判优电路的外设可自行判优与一有效的DMA通道连接。而自身无判优电路的外设是通过设在其外的软请求判优器进行判优。本发明作为一种诊断工具,在上电测试期间,检测DMA通道的工作亦很有用。
图1为采用本发明的计算机系统的框图。
图2为图1所示计算机系统中采用软请求判优设备的逻辑图。
图3为图2所示软请求判优设备中的软判优器电路的逻辑图。
图4为图3所示电路中信号波形图,用于解释图3所示电路的工作。
图5为CPU启动软请求判优的工作流程图。
图6为本发明用作诊断工具的诊断流程图。
图7为按本发明的另一实施例的软请求判优设备的逻辑图。
参见图1,那里给出了应用本发明的计算机系统的框图。
CPU10通过系统总线26与主存贮器15及一可选的算术协处理器进行通讯,其它各设备可按要求接到系统总线26上,各种外围设备(有时我们说外设或附件)都接到总线族27上。总线族27与系统总线26通过总线控制器耦合,至此,我们作描述的系统是众所周知的,IBM/AT计算机就是一个例子。
总线族27上可接多种外设,例如,图1所示的辅助存贮器17,通讯设备18,硬盘20,光盘21及两个软盘22,23。总线族27还被接到DMA控制器12及中央判优电路11上,如图1下部所示,总线族包括:数据总线27-1,地址总线27-2,控制总线27-3,判优总线27-4。
在本发明的计算机系统中,某些外设一般地由DMA从设25代表,有其自己的判优电路2。这方面的内容在上文简单的提述过,并在以上所参考的另一专利申请中作了详细说明。当有自己判优电路28的外设要求利用DMA通道时,外设把其优先分配给判优总线27-4,当确定的判优期结束时,在判优总线上的值就是在当前申请DMA通路的外设中优先级最高的那一外设的优先分配权,然后中央判优控制电路11通知DMA控制器哪一DMA通道被分配给获胜外设。
按本发明,自身无判优电路的外设(由DMA从设24表示)也能请求并被允许使用DMA通道,现在我们详细地说明这一问题解决的方法。
为允许DMA访问无判优电路28的外设,提供了一“软请求”判优单元29,其目的是根据来自CPU的指令,代表自身无判优电路28的外设进行判优。通过这种办法,现有外设能和自身有判优电路28的外设混用在同一总线上。
图2给出了软请求判优电路29及其与DMA控制器12和中央判优控制电路11联接的详细情况,软判优器31和两个寄存器32,33的输入由数据总线27-1提供,软判优器还同判优总线27-4相联,某些来自控制总线27-3的控制信号也加给软判优器31。两个比较器34,35,均各有一输入端口与判优总线相连接,它们的第二个输入端口分别用来接收寄存器32,33,的输出。比较器的输出端连到相应触发器38,39的D输入口,其时钟输入端口接收由软判优器31提供的-SOFTPREEMPT信号,(“-”号表示低电平有效信号,即信号的活动状态逻辑为“O”)。触发器38 39的输出端与DMA控制器IC50的DMA通道输入请求端口DREQ1和DREQ0相连。触发器38,39分别由回答信号-DACK1和-DACK0清零。DMA控制器IC50产生一TC(TermTnal Count)信号,表明在任一通道上最后的数据传送操作何时完成。当在两个通道上的请求的数据传送操作次数均完成时,由比较器34,35的输出选通-TC信号,用或非(NOR)门36和或门37产生信号-TCC,使软判优器31复位,因此,当在与软判优器相连的两通道中任何一个上有活动DMA请求时,在-TC脉冲出现的情况下,-TCC成为活动信号。
假定DMA控制器集成电路采用INTEL公司的8237可编程DMA控制器,在此情况下,CPU可以是Intel公司的iAP×86微处理器系列中的任何一种,如8088,8086或80286。有关DMA控制器IC和CPU之间联接的详细情况,可参考1985Intel微系统元件手册,2-57到2-71页。
通过非门,-DASKO和-DACK1信号,加到两与门42,43的输入端,与门42,43的其它输入端接收来自DMA控制器IC50的-IOR(输入输出读)和-IOW(输入输出写)信号。两个与门的输出端分别接到启动寄存器45,46的输入端,来自CPU的定时信号STROBE加到寄存器45和46的时钟输入端寄存器45,46的输入端口与数据总线27-1联接,输出端口与地址总线相联接。
下面参考流程图5详细说明软判优单元29的操作。
CPU等待来自某一外设的中断信号,表明请求使用DMA通道,如果这种请求来自自身有判优电路28的外设,判优与DMA通道的获得按着另一申请中所描述的方式实现,另一方面,如果请求是来自自身无判优电路28的外设,即发出请求的外设是“软请求”外设中的一个,通道优先分配权被送到软判优器31,在功能上它与自身有判优电路外设的通道优先权分配一样。相同的通道优先权分配值被写入到寄存器32和33中的一个,至于是哪一个,则取决于被分配给外设的DMA通道,如果此外设在众多外设中赢得相继的判优的话。
在我们给出的例子中,两个寄存器32和33,两个触发器38和39,两个寄存器45,46等,是用来:(1)允许在两个无判优电路的不同外设之间同时进行判优(当然,在这种情况下,上述步骤对第二个外设是重复进行的);(2)允许软请求外设在不同的DMA通道(通道1和通道0)之间的选择DMA通道分配,(在DMA控制器IC50上相应于DREQ1和DREQO的通道)。当然,其它设备依赖于当前接纳的软请求外设的数目及对软请求外设有效的DMA通道数。
接着把软请求外设的端口地址,相应于所选择的DMA通道(分别为通道1和0),写入寄存器45,46中的一个,然后,把判优控制总线上的+ARB/-GRANT信号发送给软判优器31,(这一点下面将参考图3和图4详细解释),之后无论有无判优电路,外设间的判优都在判优总线27-4上进行。
经过足够的时间,判优过程完成以后,来自软判优器31的信号-SOFTPREEMPT置“1”,如果软请求外设没在判优中取胜,则比较器34,35中某一个的输出态为“1”,它为触发器38和39提供时钟信号,这就激活了DMA控制器IC50上的DMA通道请求线DREQO或DREQ1。通过DMA控制器IC50,把两个请求回答线DACKO和DACK1中相应的一个置“0”,这时请求被回答,当信号-IOR和-IOW都处在“1”态时,说明目前DMA输入/输出允许。寄存器45和47中相应的一个把外设的端口地址交给地址总线27-2然后,DMA数据传送开始按熟知的方式进行。
图3是软判优器31逻辑图。
当解码逻辑电路61检测到相应的地址时,通道优先分配权写入寄存器92,此操作用一普通的端口编址电路完成,由于寄存器92寄存了通道优先分配权,当CPU把指令送给即将进行软请求判优循环的解码逻辑电路61时,解码逻辑电路61产生一SET信号,为触发器62室时,结果使信号+SOFTREQUEST置为活动态(见图4)。当触发器63接到相继的判优周期脉冲信号+ARB/-GRANT时,触发器63被定时,发出信号-SOFTPREEMPT。然后,触发器64也被室时为高电平态,启通信号APRIO,使总线判优器80把通道优先分配权交给判优总线。
当信号+ARB/-GRANT为活动信号时,对判优总线的判优开始进行。判优周期结束时,信号+ARB/-GRNNT回到低态。若判优总线取胜,在总线判优器80中的与非门85输出为低电位,使触发器63复位,(通过或门70和与门71),从而,信号-SOFTPREEMT转为非活动(高)态,这一转换为触发器38和39定时,把请求信号送给DMA控制器集成电路50。由于与门72的两个输入端都是高电位,使信号APRIO保持高态,(为了保持在判优总线上的通道优先分配权),从而触发器64有一高电位的输入,接着,外设把其地址依已经描述过的方式置到地址总线27-2上。当数据传送被完成,一TC信号出现,使一TCC脉冲产生,然后,触发器62被复位,(通过非门67,或门62和或非门66),使信号+SOFTREQUEST置为非活动态。
在判优总线27-4上真正完成判优操作的总线判优器80是一种在美国电力电子工程学会1983年6月13日发表的ANSI/IEEES td96-1983中作了详细讨论的电路,一般地,联接在判优电路中的每一设备都有这种电路,并且这些电路通过判优总线联在一起,我们例子中的判优总线给出了4条数据线TMAO-TMA3,允许有16种不同的判优级,当然此数目是可变的。在指定的判优期间,所有希望获得总线控制权的设备把它们的判优级交给判优总线,这一操作在信号APRIO的状态变为“1”时发生,即在现在的例子中,在寄存器92中的值(通道优先分配权值,也就是设备的判优级)通过与门91导通给总线判优器80,进而交给判优总线TMAO-TMA3,在判优期结束后,在TMAO-TMA3线上的值即为具有最高判优级设备的判优级值。
本发明除了用于接纳自身无判优电路外设的计算机系统外,作为诊断工具也很有用的,根据本发明的这一方面,在上电期间完成这一诊断过程。例如,按顺序检测每一个DMA通道,上面所述的软请求DMA过程对每一个通道顺序完成。
下面参照图6将详细解释采用本发明的诊断过程。
为顺序测试所有DMA通道,首先将通道数置0,即然通道数小于系统的总通道数,故通道地址、数目、状态与主寄存器被写入,下一步,把通道数写入判优值寄存器(图3中所示的寄存器92)。计时器清零并把控制信号送软判优器31中的解码逻辑电路61,使信号+SOFTREQUEST转为“1”态,从而触发软请求判优循环,如果时间计数没有超过最大时间Tmax,则从DMA控制器集成电路上状态寄存器读出当前态。当判优循环结束时,通道地址、计数值、状态和主寄存器被读出,如果这些值正确,就可肯定此通道操作正常,如果所读之值不正确,将显示错误信息,当时间计数在读取各寄存器正确信息前已超过Tmax也显示错误信息。
参考图7,下面对本发明的另一实施例作一描述。
不同的外设,其最大交换接收和传送数据的速率有所不同。如果外设的最大传送速率慢于DMA通道的传递速率,会发生联于软请求判优设备的外设输入数据超量的问题,为防止这种情况的发生按图7所示的具体作法,控制软请求判优周期之间的间隔,以确保外设不发生数据过量的问题。
在图7所描述的实施例中,上述作法是通过控制-SOFTPREEMPT信号,使DMA请求只能以一预定的最大速率产生来实现。为此,根据所需的最大DMA请求速率所对应的间隔产生中断信号INT。触发器51接到INT信号时被定时。通过或门52,其输出通断-SOFTPREEMPT信号,在完成一软请求判优循环后,由确认信号-DACKO和-DACK1之一通过与门53使触发器51复位。中断信号再次出现之前,其它软请求周期被禁止。
应当注意,尽管对本发明可象前面所述的那样进行修改,这种修改其思想和范围仍在本发明之内。因此像权利要求中所指出的那样,仍属于本发明。