本发明涉及计算机系统,特别是涉及(但不仅仅局限于)控制数字电话交换局中用以控制数字数据传输的计算机系统。本发明所涉及的计算机系统包括一主处理器,主处理器工作时必须访问一个或多个装有复杂微处理器线路的外围设备,且系统中,在主处理器与各个外围设备之间的I/O(输入/输出)接口上存在若干编址限制。应该理解的是,采用“主处理器”一词本身并不意味着主处理器比该或各外围设备能力强或具有更大的存储容量。因此在本说明书的范围内,“主处理器”是从处理器的功能级别意义上加以使用的。 因此,本发明的一个目的是提供上述那种在经过具有编址限制的I/O接口访问外围设备的问题上,能以较先进的方法进行处理的计算机系统。
因此本发明主要涉及一种包括下列各部分的计算机系统:一主处理器,具有一条双向并行的数据总线;一个或多个外围设备,各个外围设备具有一随机存取存储器和一个辅助处理器以及一用以控制主处理器与各个外围设备之间的访问的输入/输出控制器,该输入/输出控制器装有控制寄存器和状态寄存器,且能对从主处理器引出的输入/输出总线编址范围作出响应,该总线编址范围被划分成许多区,每一区代表与一个外围设备通信的一个软件进程,各区又进一步再划分,以便将其中一部分留给由主处理器向辅助外围设备传输信息之用,另一部分留给由该外围设备向主处理器传输信息之用。
为更易理解本发明的内容,现参照附图通过举例说明本发明地一个实施例。附图中:
图1是本发明计算机系统的方框图;
图2是表示图1系统中所采用的寻址方法的方框图;
图3是表示信息获取方法的示意图。
现在参看图1。从图中可以看到主处理器10和从主处理器10引出的I/O双向总线11。在本实施例中,该I/O总线11能并行载送16个数据位。还提供有13个地址位,因而编址范围为8k字。不言而喻,这些数字仅仅是举例而已,还可以采用其它配置方式。
I/O总线11接到一组叫做输入/输出控制器(IOC)的线路12上。IOC 12装有控制寄存器和状态寄存器,并具有从I/O总线进行输入/输出访问的定序功能。IOC电路12既可以为主处理10对13中的一个处围设备的访问排序,也可以经过IOC总线14进行自身对外围设备13的访问。这些IOC访问是为从外围设备13获取状态信息而进行的。
从主处理器10引出的总线编址范围被划分成许多等份区。各区代表其中一个需要与外围设13通信的软件进程。然后将各区进一步再分成两半,一半留给从主处理器10到外围设备13传输信息之用,另一半留给从外围设备13到主处理器10传输信息之用。
这些半区叫做“窗口”。在各窗口中配置有履行控制功能用的备用地址。这些地址可以具有或不具有有关数据字段。
在这里介绍的系统中,不言而喻,在任何方向传输信息之前,在主处理器10上运行的适当软件进程必须写入IOC12中与该窗口有关的控制寄存器上。适当的IOC控制寄存器有两个字段。这些字段如图2所示,其中主处理器仍以编号10表示,IOC电路一般以编号12表示。和前面一样,11表示总线。这样,IOC电路12中的各寄存器包括两个字段,图2中分别以编号20和21表示。字段20叫做外围码字段,该字段允许相应的外围设备对其译码,以便读/写信息。字段21叫做信息类型,此字段识别待由该外围设备的读出或写入的具体信息队列。在本实施例中,外围设备码系统为3位,信息类型字段为8位。因此,利用外围码可以从多达八个外围设备中选取一个外围设备。在实际窗口中,一个地址留作往控制寄存器上书写数据用,由地址寄存器解码22加以识别。IOC电路中适合特定窗口的控制寄存器由5位的控制寄存器选择器25选择。这就是说,在本实施例的IOC电路12中控制寄存器的数目最多可达32个。
从图2中还可看出,总线11上的8位地址取捷径直接通到外围设备13中。
因此五条控制寄存器选择地址线路26由控制寄存器选择器25予以解码,同时存储在所选择的控制寄存器中的数据被驱送到外围选择地址线路27和信息类型地址线路28上,往下进入外围设备中。
各外围设备装有一基址寄存器控制电路30,该电路则由在微处理器31上运行的固件构成,其中含有一表明外围设备RAM(随机存取存储器)32中一个地址的地址,现在就这一点加以说明。此地址叫做长基址指示器,系由与外围设备有关的固件加上8位来自主处理器10的位移组成。该长基址指示器由IOC电路12中相应选择的控制寄存器的5位字段进行选择,在各外围设备中有一组不同的基址寄存器。
如果信息类型包含有由主处理器向外围设备传输的信息,则外围设备RAM中的地址指向RAM32有关队列中的下一个空的存储位置。
另一方面,若信息类型字段包含有从外围设备至主处理器传输过程的信息,则地址指向待传输的下一个信息的第一个位置。
当开始对所选择的外围设备进行读出或写入访问时,基址寄存器控制电路通过将基址寄存器的值与从IOC12接收到的位移量相加来计算存储器地址。
这里介绍的计算机系统的另一个特点在于,所有从主处理器10出来的信息都取道所选择的外围设备的RAM中的所谓桶形队列。这是存储器的这样一个区:此区满时会朝存储器的始端绕转,然后再继续从该点填充。此程序叫卷绕(Wrap-around)。为检测出队列何时满额,需要三个指示器:可用存储空间开始指示器(SAMS)、可用存储空间终止指示器(EAMS)和下一个SAMS指示器。当从队列中除去一个信息时,EAMS指示器更新,指示出由此腾出的可供使用的存储空间。同样,当往队列中加信息块时,SAMS更新,指示出可用存储空间的变化。下一个SAMS指示器包括当前的信息通过之后的SAMS地址。此指示器可藉F/W固件处理过程加以更新,以使输出队列中含F/W信息。
为检测队列是否满,应进行试验。各传输是从零进行到绝对位移地址,其中零为第一个字地地址,“N”为最后一个字地址。留出一些位移地址供一些控制功能用。留出一个地址来表示新信息的开始。在该第一次传输中通过的数据为整个信息的长度。在第一次传输时,信息长度加到下一个SAMS上,以产生合量。比较下一步SAMS和EAMS指示器以确定哪一个值大。同样将合量与EAMS进行比较以确定哪一个大。
这些比较得出的结果与所加值的进位状态一起可用以进行“队列满检测”。若检测出队列满,则废弃整个信息直到开始访问新信息为止。若检测不出队列满,则将合量作为新的下一个SAMS存储起来,而将旧的下一个SAMS作为新SAMS存储起来。
在队列满检过程中应考虑两种情况:
情况1,这时EAMS大于SAMS。若在加法运算过程中产生进位,就可即刻检测出队列满。没有进位时,必须将含量与EAMS进行比较。若EAMS大,则检测不出队列满,若EAMS小于或等于合量,就可检测出队列满。
情况2,这时SAMS大于或等于EAMS。若没有进位,则检测不出队列满。若有进位产生,则应考虑对合量进行比较。若合量大于或等于EAMS,则可检测出队列满。若EAMS大,则检测不出队列满。若在以上任何情况下已检测出队列满,则一定不能进行访问,因为这种访问会将现有信息重写入队列中。
窗口中的第二地址留给信息块在窗口中传输结束之后使用。此只写地址是在它完成一信息块的传输之后由主处理器软件书写的。访问是对外围设备进行的,且由基址寄存器控制电路进行解码。在窗口中所传输的信息块长度加到SAMS以产生新的SAMS值。
另一书写访问是由主处理器软件对窗口中的第一存储单元进行的。此单元在信息中始终留作零,同时主处理器软件写入对应于下列其中一个状态的值:一完整信息;某一信息的第一部分;某一信息的继续部分;某一信息的最后部分。这种装置可用以传输比最大窗口大小还长的信息。外围微处理器固件会周期性扫描该单元,并检测何时有信息或部分存在。然后由固件提取该信息或部分信息。这时固件就会知道,或者是信息已由主处理器读取,或者有新信息等待处理。
为告知主处理器在外围设备的一队列中存在待传输到主处理器的信息,我们提供了一种专用的装置,其配置方式如图3所示。
各外围设备都配备有可获取输入信息的寄存器40(主处理器的外围设备)。该寄存器40含有主处理器用于访问外围设备的各个软件模块的一个位。当外围设备中的微处理器在队列中已设置输入信息、且已设置带有地址的基址寄存器后,有效信息寄存器中的数据由运行在外围设备的微处理器上固化软件来设置。
在IOC12中还提供另一组有效信息寄存器50。各IOC有效信息寄存器含有可以配备给各外围设备13的一个位。各个主处理器软件进程都设有一寄存器,且出现在各输入“窗口”中。
外围微处理器在如上所述设置输入信息和寄存信息的寄存器时,就启动一去IOC上的按制序列发生器S1的“nudge”信号。这促使序列发生器S1开始在IOC总线上访问,并读出适当可获取信息的外围寄存器40的内容。返回的数据用以控制对相应于各IOC可获取信息的寄存器中的外围设备的二进制位进行置位。
因此,在主处理器上运行的各软件就可以通过IOC的一次读出对所有外围设备状态确定输入信息的可用性。
在IOC可获取信息的寄存器及其外围设备中各二进制位的清除是在主处理器的软件模块往窗口中写备用地址、以表明信息已被成功传输时进行的。