计算机系统及其输入输出指令的发送方法

文档序号:6409253阅读:343来源:国知局
专利名称:计算机系统及其输入输出指令的发送方法
技术领域
本发明涉及计算机系统及计算机系统中的输入输出指令的发送方法,具体地说,是涉及根据一次输入输出起动指令,能向多个输入输出装置发出多个输入输出指令的计算机系统及输入输出指令的发送方法。
现说明在现有的计算机系统中对于输入输出装置(输入输出设备)的控制方法。在进行输入输出运作时,由主CPU(中央处理装置)向输入输出设备发送输入输出指令。于是输入输出设备开始进行处理。在主CPU将输入输出指令发送给输入输出设备之后,到输入输出数据的收发结束之前,主CPU还能进行其它工作。当处理结束后,输入输出设备中断操作,并将该情况通知主CPU。
当采用上述方法时,可以减轻主CPU的负载。在实际情况下,在计算机中的主CPU和输入输出设备之间还设有输入输出适配器(有的计算机中称为输入输出通道),另外,在输入输出适配器上还连接多套输入输出设备。
图39所示是文献“Harry Katzan,Jr.Computer Organi-zation and the System/370,Van Noatrand ReinholelCompany,1971”中所述的通道接口。现参照该图,说明使用输入输出通道的输入输出设备之间的输入输出结构。
主CPU发送输入输出起动指令20,开始进行输入输出的运作。输入输出起动指令20包括指令码、通道地址及设备地址。通道地址和设备地址是指定进行输入输出运作的输入输出通道和输入输出设备的地址。
CAW(Channel Address Word)(通道地址字)21是在主存储装置中所设的特定地址,其中存有起始的CCW(Channel Com-mand Word)(通道命令字)22在主存储装置中的地址。CCW22向输入输出通道提供应进行的输入输出运作的信息。CCW22由操作码、数据地址、计数及标志构成。标志包括Cd标志及CC标志。
用CCW22中的操作码指定应该进行的运作,例如输入至输出等。数据地址用来指定输入输出运作的对象、即数据23的开头地址。计数用来指定输入输出运作中所用的字节数。
Cd标志用来指定数据链。所谓数据链,是指用连续的CCW对不同的数据区域进行相同的输入输出运作。CC标志用来指定命令链。所谓命令链,是指用连续的CCW进行不同的输入输出运作。当标志的全部比特为0时,表示该CCW22是最后的CCW。
CSW(Channel Status Word)(通道状态字)24表示在接收到输入输出中断操作或输入输出起动指令后进行记录、以及输入输出设备或输入输出通道的状态(忙碌等)。
用上述的输入输出接口表示如下所列的进行输入输出运作的顺序,首先,由主CPU进行如下的运作。
①编制必要的CCW22。既可以事先准备好,也可以在执行程序过程中生成。如图39所示,有时是称为通道程序的一系列多个CCW22。
②设定CAW21(设定CCW22的起始地址)。
③装入通道地址和设备地址。
④禁止中断输入输出操作。
⑤发送输入输出起动指令20。
经过主CPU按照如上所述发送输入输出的起动指令20之后,计算机系统的输入输出通道按照下列方式运作。
①由通道读取CAW21,检查是否正确性。
②由通道读取CCW22,检查是否正确性。
③由指定的设备进行输入输出运作。
④将输入输出运作结束的信息记录到CSW24中。
⑤从输入输出通道起动中断输入输出的操作。
利用上述的输入输出接口,发送一次输入输出起动指令(设定图39所示的一系列CCW22的指令(,就能使一个输入输出设备连续进行多次输入输出运作。现在研究用这种旧有的输入输出接口,使多个输入输出设备连续进行输入输出运作的情况。
图40所示是由多个输入输出设备的输入输出接口通过输入输出适配器(输入输出通道)进行输入输出运作的顺序。特别是表示连续对设备1发送输入输出指令1,以及对另一个设备2发送输入输出指令2的情况。
首先,由CPU发送输入输出指令1。当输入输出适配器接收到该指令之后,就进行与设备1的输入输出操作。输入输出适配器在与设备1进行输入输出操作的时候,CPU还能进行其它工作。等到与设备1之间的输入输出操作结束之后,由输入输出适配器发送中断指令,中断CPU进行的处理1,于是输入输出结束。接着,由CPU发送输入输出指令2,同样进行与设备2之间的输入输出。
这样,现有的输入输出设备的输入输出运作是在对某一个输入输出设备发送输入输出指令之后,便接着处理其它工作。由于要通过中断指令,通知该输入输出设备结束运作,因此接着在对另外的输入输出设备进行输入输出时,必须再次发送输入输出指令。就是说要对每一个输入输出设备发送输入输出指令。
以下讨论将现有的方式用在本发明的应用示例中的多线路连接用通信服务计算机中时,会出现的下列问题。
近年来,随着CPU性能的提高,正在致力于存储器存取的高速化。尤其是与利用超高速缓冲存储技术等一类的方法谋求存储器存取的高速化相比较,输入输出设备的速度并不算高,因此,CPU和输入输出设备之间的速度相差很大。另外,为了与多线路相适配,必须要连接多个输入输出设备。如果将这些输入输出设备直接连接到CPU的总线上,由于上述速度差方面的原因,不能有效地利用CPU的性能。为了避免这一点,虽然可以考虑使总线分级化、也就是分成主总线和I/O总线,并用总线适配器将两者连接起来的解决方法。可是,这样做的结果,使得CPU和输入输出设备的距离拉大,因此现在为了要报告和确认在DMA输送开始时所做的初始设定或结束状态,就要通过适配器在CPU与输入输出设备之间进行输入输出命令或结束中断的运作,这样就耗用了CPU性能、I/O性能及总线性能。特别是对于多线路连接用通信服务来说,这已成为显著的问题。
在探讨产生上述问题的原因时,会发现其原因在于如图40所示,不能通过一次输入输出运作(发送输入输出指令或在旧有示例中发送输入输出起动指令20),就能够将对各输入输出设备的输入输出命令串(旧有示例中的通道程序)汇集起来一并发送,然而,由于未配备输入输出适配器,所以也就不具备将这些命令串汇总起来一并执行的功能。
本发明的第1个目的是提供能通过一次输入输出指令而使多个设备执行多个输入输出命令的装置(包括输入输出接口信息形式)、以及能够接受该指令的输入输出适配器或者输入输出通道装置的控制机构(处理逻辑)。
本发明的第2个目的是不仅仅只提供发送命令组的装置,而且还要提供能够根据输入输出适配器的状态或接受能力的大小而发送命令组的装置,换句话说,提供一种能够便于确认输入输出适配器能以接受多大量的命令组而不致处于忙碌状态的输入输出接口。
本发明的另一个目的在于提供一种在通过上述输入输出适配器进行数据输送的过程中,能够有效发送由指示输入运作的read(读出)命令构成的命令组的方法。
另外,本发明的另一个目的在于提供一种在通过上述输入输出适配器输送数据的过程中,能够有效发送与通信协议处理有关的、特别是与窗口控制或分组处理有关的命令组的方法。
本发明是一种备有多个输入输出装置、与该多个输入输出装置连接的适配装置,以及通过该适配装置将输入输出要求传输到上述输入输出装置的主处理装置的计算机系统,该计算机系统的特征为从主处理装置一次输入输出起动指令,向多个输入输出装置发送多个输入输出命令,在适配装置中,将该一次输入输出起动指令中所包含的、对多个输入输出装置的多个输入输出命令指定出是针对哪一个输入输出装置的输入输出命令,并将输入输出命令分别发送到专门指定的输入输出装置。
另外,在主处理装置中,当不能立即处理输入输出请求时,要将该输入输出请求保存在等待请求管理表中进行管理,当可以进行输入输出请求的处理时,根据该时刻保管在等待请求管理表中的输入输出请求,以每个输入输出装置为单位,将应发送给各输入输出装置的输入输出命令按序排列形成命令串,以一次输入输出起动指令的方式将这些命令串发送给适配装置。
如上所述,利用可进行输入输出请求处理的机会,将等待请求管理表中保管的多个输入输出请求进行处理,使其汇总在一次输入输出起动指令中发送即可,此外,也可以在输入输出命令的处理结束之后,利用从输入输出装置向主处理装置发出结束中断运作的机会,进行上述处理。
多个命令串要以信息组为基本单位,所说的信息组包含(例如)指定命令串的开头位置的地址信息和在特定命令串中各命令执行对象的一个输入输出装置的标识符信息。该信息组由具有多个连续结构的表进行管理。最好是设定一个标志信息,用以表示是否要从主处理装置中读取适配装置。
概略地说,主处理装置备有向输入输出装置发送输入输出请求的应用部、以及根据该输入输出请求生成输入输出命令并发送给适配装置的驱动部。特别是在驱动部中,最好是在从应用执行部接收数据输入请求之前,要以一次输入输出起动指令的方式,将对多个输入输出装置的多个输入输出命令先送给适配装置。
具体地说,其中设有第1存储装置,用来存储表示对输入输出装置的输入命令的最大发送数的第1规定数;第2存储装置,用来存储规定再次发送输入命令串的时刻用的第2规定数;以及第3存储装置,用来记录各输入输出装置尚未执行完毕的输入命令数。在驱动部经过初始化之后,将输入命令以各输入输出装置为单位进行划分,生成与第1规定数相关连的输入命令串,并发送给适配装置,将发送给各输入输出装置的输入命令数记录在第3存储装置中。以后每次从各输入输出装置收到输入命令结束报告后,便从存储在第3存储装置中的该输入输出装置的未结束的输入命令数中减去1,经过该处理后,如果该输入输出装置中的未结束的输入命令数变成第2规定数时,算出存储在第3存储装置中的未结束的输入命令数与记录在第1存储装置中的第1规定数之差,再将与该差值相当且与输入命令相关的输入命令串发送给适配装置。
如果输入输出装置是线路控制装置,由通信协议处理部将从应用执行部发送来的与数据输送请求有关的数据划分成组,并将通信协议控制信息添加到经过分组后的各组输出数据的起始部分,生成多个信息组。这时,如果上述多个信息组数小于此时由对方发送来的、经确认能连续输送的信息包数时,便由驱动部根据上述多个分组信息,生成多个输入输出命令,并将生成的多个输入输出命令作为一次输入输出起动指令发送,从而通过一次输入输出运作,就能输送上述多个分组信息中的输出数据。
另外,经过这种通信协议处理,将数据划分成多个信息组后传输时,要在经过划分的各个输出数据的开头附加一个标题(通信协议控制信息)。这时,标题和输出数据构成逻辑上相关联的一个信息包,但实际上有时存在其他的区化方式,分别按照另外的数据管理信息组进行管理。在这种情况下,要以每个数据管理信息组为单位生成命令,所以输送标题的命令和输送数据的命令要用数据链加以连结,形成多个命令。因此,在本发明中,在必要的情况下,要将标题和输出数据设定在物理连续区域内,作为一个数据管理信息组,并且由此转存在驱动部的一个位置中。因此,在驱动部中就能作为一个命令执行。
至于是否要进行转存,就要根据系统开销的大小进行判断。即,要将适配装置在处理输送通信协议控制信息命令时所需要的系统开销与将输出数据复制在通信协议控制信息连续的区中所需用的系统开销进行比较,当后者的系统开销小时,便进行转存。换句话说,要将适配装置在试图采用链接的方式(数据链)对命令进行处理所需用的时间与主处理装置复制某一长度的数据所需用的时间相等的数据长度作为数据长度判断基准值,事前作好准备,在采用链接的方式将通过通信协议处理生成的标题和用户数据部分连接成输入输出数据时,要在生成该命令之前,先判断输出数据长度,如果比基准值短,则将该用户数据复制在标题以后的区域中。就是说,要将标题和用户数据改写成一个连续的输入输出数据。
以发送一次输入输出起动指令的方式从主处理装置发送对多个输入输出装置的多个输入输出命令时,要在适配装置中,专门指定出这个一次输入输出起动指令中包含的对多个输入输出装置的多个输入输出命令是针对哪一个输入输出装置的输入输出命令,将输入输出命令分别发送给专门指定的输入输出装置,因此用一次输入输出起动指令,就能使多个输入输出装置进行输入输出运作。
在将多个命令串汇总转存到适配装置中时,要利用具有多个连续结构的数据表进行管理,在表中含有上述地址信息和专门指定的输入输出装置的标识符信息的信息组,特别是在没有表示是否从主处理装置读取适配装置的标志信息时,在主处理装置和适配装置之间所做的命令串的存取就能顺利进行。并能根据适配装置接受命令的能力,要求最大限度地汇总命令组。
由于将对于多个输入输出装置的多个输入输出命令作为一次输入输出起动指令处理,先发送给适配装置,所以能减少输入运作的系统开销。
通过通信协议处理,将数据划分成多个信息包后发送时,要生成一个系列的命令串,该命令串是由输送相当于一次所能发送的信息包数的上述信息包用的输出命令构成。通过驱动部的输入输出运作执行该命令串时,采用一次输入输出起动指令,就能将划分成多个信息包一并输送到输入输出装置的一端。
在本发明中,在必要的情况下,通过进行上述转存处理,根据指定的位置将标题转换成连续的数据后,适配装置就不用再进行采用链接方式的处理的搜索运作,直接进行输送数据的处理。因此能使包括输入输出适配处理在内的输入输出处理的系统开销达到最佳化。
图1是表示本发明的原理的时间图。
图2是实施例1中的计算机结构框图。
图3是表示实施例1中的接口信息的示意图。
图4是实施例1中的通道的主要运作流程图。
图5是表示实施例1中的进行CCW处理的流程图。
图6是实施例1中的通信管理机构框图。
图7A是表示实施例1中的等待请求管理表的框图。
图7B是表示实施例1中的结束等待管理表的框图。
图8是实施例1中的接受请求的驱动器的运作流程图。
图9是实施例1中输入输出中断受理后发送命令的运作流程图。
图10是应用实施例2的大规模联机处理系统框图。
图11是实施例2中的通信服务器的结构框图。
图12是实施例2中的通信服务器存储单元中存储的信息示意图。
图13是实施例2中IO适配器的结构框图。
图14是实施例2中的多线路控制装置的结构框图。
图15是实施例2中数据发送时的运作程序图。
图16是实施例2中数据接收时的运作程序图。
图17是实施例2中的接口信息结构示意图。
图18是实施例2中的命令结构示意图。
图19是实施例2中的命令表项目结构示意图。
图20、图21、图22是实施例2中的IO(输入输出)适配处理流程图。
图23是表示实施例2中的IO适配表之间的关系的示意图。
图24是实施例3中的先出Read(读出)命令管理表的结构示意图。
图25是实施例3中的Read命令发送处理流程图。
图26是实施例4中的信息包分组处理示意图。
图27是实施例4中以成批IO方式生成的多个信息包的相关关系示意图。
图28是实施例4中的成批IO方式处理流程图。
图29是表示实施例4中的驱动器的命令生成逻辑流程图。
图30是实施例5中的转存处理示意图。
图31是实施例5中的转存处理流程图。
图32是实施例6中作为对象的计算机系统的结构框图。
图33是实施例6中的输入输出处理流程图。
图34是实施例6中的输入输出处理示意图。
图35是实施例6中的缓冲器结构示意图。
图36是实施例6中的存储器中的数据复制方法示意图。
图37是表示实施例6中的输入输出处理时间一个示例的特性图。
图38是实施例6中的控制信息附加方法示意图。
图39是旧有的通道接口示意图。
图40是表示旧有的对多个设备进行输入输出运作的时间图。
下面利用


本发明的实施例。以下虽然是对实施例1—5共5个示例的说明,但在此之前,先要参照图1说明本发明的输入输出接口的基本处理过程。
在图1中,CPU向两个输入输出设备1、2发送一个输入输出指令,使其起动,进行输入输出运作。CPU只发送一个输入输出指令后,输入输出(IO)适配器便连续在设备1之间进行输入输出操作并且在设备2之间进行输入输出操作。等到IO适配器与设备1的输入输出操作结束后,便向CPU发送中断信号,使其进行中断处理1。在中断处理1之后,CPU不需要向设备2发送输入输出起动指令,还能进行其它工作。等到IO适配器与设备2之间的输入输出操作结束后,将中断信号发送给CPU,由CPU进行中断处理2。
实施例1本实施例是输入输出适配装置为输入输出通道装置时的实施例。
图2表示使用本发明的输入输出通道装置的计算机系统的功能结构,特别是以输入输出通道(以下用CH表示)142的功能为核心的说明图。CPU140是CISC型中央运算处理装置。MS141是主存储装置。CH142通过总线与CPU140及MS141互相连接。IOCU147是输入输出控制装置,与CH142连接。共有多个IOCU147连接在一个CH142上。同样,在一个IOCU147上又连接着多个输入输出设备(以下称为DEV)148。IOCU147控制所连接的DEV148。CH142由总线接口控制部143、数据输送控制144、CCW执行部145及IOCU控制部146构成。总线接口控制部143是用来控制输入输出起动命令的受理或对CPU的中断通知或对MS141的访问等的部件。CCW执行部145是用来分析CCW,控制数据输送的收发等的部件。IOCU控制部146是用来根据来自CCW执行部145的指示,控制与IOCU147之间的总线的部件。数据输送控制部144是用来根据CCW执行部145的指示,将MS141中的数据输送给IOCU147,或者将来自IOCU147的数据存入MS141中的功能部件。
图3是说明图2中的CH142与CPU140之间的接口规定用的图,对于和以往不同的接口部分的情况特别加以详细解释。
在图3中,输入输出起动指令200是在图39所示以往的输入输出起动指令20中增加扩充标志201构成的。在将多个IO命令发送给多个设备时,CPU140接通扩充标志201,将该输入输出起动指令200发送给与相应的通道地址相对应的CH装置(连接准备进行IO的设备DEV148的CH装置)142。这时,输入输出起动指令200中的设备地址信息无意义。扩充CAW301是将结束位302、通道地址303及设备地址304添加在过去由命令地址构成的CAW(图39中的21)上的块(以下称为命令块),并根据MS141中规定的固定地址,将多个(相当于给予命令的设备数)上述的块连续排列而成的。命令块中的命令地址,与过去的相同,用来表示CCW串的起始地址。另外,通道地址303和设备地址304是识别执行CCW串中的目标设备用的地址信息。构成CCW的各个CCW22与图39中过去的CCW22相同。命令块中的结束位302是表示该命令块是否是扩充CAW301中的最后的命令块用的信息。最后的命令块中的结束位在导通状态下为(1),除此以外,命令块中的结束位在断开状态下为(0)。
CPU140设定上述的接口信息,执行经过扩充后的输入输出起动指令200。CH142收到该指令后,根据设定,开始进行输入输出运作。
图4是CH142的主要处理逻辑程序图。CH142收到经过扩充的输入输出起动指令200后,首先将从规定的地址开始的扩充CAW301的起始命令块读入内部寄存器(步3101)。然后进行根据读入的命令块中的命令地址所示的CCW串进行处理运作(步3103)。然后对读入的命令块中的结束位302进行校验(步3105)。如果结束位导通、即其值为1时,就结束处理运作。如果不为1,则更新应读入的扩充CAW301中命令块的点(步3107),重新从步3101开始进行处理。就是说,反复进行CCW串的处理运作,直到扩充CAW301中的结束位为1时为止。
图5是上述处理步3103中执行CCW处理的程序图。虽然本处理过程中的逻辑与过去的相同,但下面仍对此加以说明。
首先,读命令块中命令地址CCW串中的起始CCW(步3201)。然后根据读入的命令块中的设备地址认定目标设备DEV148,接通通道(步3203),然后向目标设备发送命令,等待应答(步3205)。然后,使用数据输送控制部144,进行数据输送处理。另外,数据输送控制部144还进行CCW的数据链处理(步3207)。然后,检查CCW的命令标志,如果命令链标志导通,则进入步3215,否则进入步3211(步3209)。步3215是读入下一个CCW的处理步,此后,再次从步3205重复进行。步3211是形成结束状态的处理步。最后生成向CPU140发送的中断信号(步3213)。
其次,说明由CPU140向多个设备集中发送输入输出命令的处理过程。现以CPU140发送数据通信用的输入输出命令的情况为例进行说明。
图6表示CPU140为了进行数据通信所做的处理程序的详细结构以及与CH142的关系。通信管理340向多个应用程序(AP)34提供通信服务(数据发送、数据接收)。通信管理340包括对于缓冲器和计时器等计算机资源进行管理的管理程序(MGR)341,对于来自AP34的通信请求进行接收处理用的应用接口(API)342,根据通信协议、对于通信数据进行加工及控制用的通信协议处理343、以及控制与CH142接口的驱动程序345。
有关数据通信的各种输入输出请求从AP34发送给通信管理340。在通信管理340中,根据MGR341的管理,由API342受理来自AP34的输入输出请求,并由通信协议处理343对于通信数据进行加工及控制,并将输入输出请求发送给驱动程序345。驱动程序345根据受理的输入输出请求,设定在图3做过说明的各种信息,并将输入输出起动指令200发送给CH142。
图7A及图7B分别是驱动程序345发达输入输出起动指令时所参照的管理信息表。
图7A所示的排队请求管理表330是当驱动程序345不能即时处理来自主机的通信协议处理343的请求33时(CH142忙碌等),用以将其保存用的表。在来自主机的请求33中包括下一个请求的地址及请求的类型(发送/接收)、以及存有通信协议处理343所用数据(PDU)的缓冲器30的地址。排队请求管理表330为了管理这些请求33,保留一系列请求33的起始地址、其最后地址、以及一系列请求数等。
图7B所示的结束排队管理表331是结束向CH142发送命令的结束表,另外也是管理未曾收到从CH142返回命令结束应答的管理表。另外,该表331的结构和管理方式与排队请求管理表330相同。
图8是接收到来自主机通信协议处理343的请求33之后驱动程序345的处理逻辑程序图。
首先,由驱动程序345对排队请求管理表330进行检查,查明是否有请求排队、以及CH142的状态是否忙碌(步3501)。如果没有请求排队、而且CH142也不忙碌时,便进入步3503。如果有请求排队或CH142忙碌,则进入步3509,更新排队请求管理表330,使新受理的该请求33继续排队(步3509)。然后处理结束。如果步3501的判断正确,则根据该请求33,生成CCW串(步3503)。然后设定在前一步中生成的CCW串的起始地址等,生成扩充CAW301(步3505)。然后将应起动的CH142装入特定的通道地址,发送输入输出起动指令200(步3507)。
以上说明了根据来自主机通信协议处理345的请求,进行发送命令的一系列处理运作。
图9是在收到来自CH142的中断结束之后驱动程序345中的命令再发送处理逻辑程序。收到来自CH142的中断结束后,驱动程序345进行中断结束处理,而在进行该中断结束处理后,进行图9中的命令再发送处理。
首先,由驱动程序345检查排队请求管理表330,查明是否有请求排队、以及CH142的状态是否忙碌(步3601)如果有请求排队且CH142不忙碌时,进入步3603。如果没有请求排队或CH142忙碌时,便结束处理。在步3603中,检查排队请求管理表330中是否有请求排队(步3603)。如果有排队请求,使排队请求在排队请求管理表330中重新排队(步3605),经过重新排队的请求33,生成CCW串(步3607)。然后设定在前一步中生成的CCW串的起始地址等,生成扩充CAW301(步3609)。然后再次重复从步3603开始的处理运作。
这样,对于排队请求管理表330中的全部排队请求,反复进行步3603—3609的运作,生成图3中说明过的CCW串和扩充CAW301。
在步3603中,如果没有排队请求,设定扩充CAW301的结束位(步3611)。具体地说,使扩充CAW301的最后的命令块的结束位导通(1),使其以前的命令块的结束位断开(0)。然后,将应起动的CH142装入特定的通道地址,发送输入输出起动指令200(步3613)。
在步3605中,当使排队请求在排队请求管理表330中重排队时,将重排队的排队请求添加到结束排队管理表331中。然后,该输入输出处理结束时,由CH142发出中断信号,在该结束中断处理中确认输入输出结束,将该排队请求从结束排队管理表331中消除。
实施例2实施例2是将本发明应用于图10所示的大规模联机处理系统的通信服务器100—A及100—B中的实施例,以下参照图10—图23说明实施例2。
图10中,在总店中有主计算机102,管理大规模数据库。总店的主计算机102和通信服务器100—A用高速LAN(区域网络)FDDI(光纤分布式数据接口)彼此连接。总店的通信服务器100—A和多个分店的通信服务器用高速线路连接。图10中的一个分店系统结构是具有代表性的结构。多个店铺内的终端101通过电话线路连接在分店内的通信服务器100—B上,另外,远处的多个终端101通过共用网络也连接在通信服务器100—B上。
图10中的通信服务器100—A及100—B的硬件结构都与图11所示相同。为用户提供的信息显示在显示器121上。另一方面,用户可利用键盘122键入操作命令。由CPU123进行联机处理程序等一类的软件处理。上述软件中的程序、各种控制表及缓冲器都被存在MU(存储单元)124中。CPU123和MU124通过主机总线连接。
输入输出总线通过BA(总线适配器)125连接在主机总线上。将主机总线和输入输出总线分开的理由是,如果直接将CPU连接在速度慢的输入输出机器上,则总线的速度必须与速度慢的输入输出机器的速度匹配,这样就会使CPU的性能变坏。
再者,通信服务器备有DKU(磁盘装置)129或MCI(多线路控制装置)130等输入输出控制装置。这些输入输出控制装置和输入输出总线通过IOA(输入输出适配器)128连接。特别是在每个IOA128上都通过局部总线(SCSI总线)连接着多个MCI120。其理由是,能连接在一个MCI130上的线路131的条数是有限的,所以要将高速LAN的适配装置即FDDIA(FDDI适配器)126和CCU(控制台控制装置)127连接在输入输出总线上。
现根据图11中的本机器的结构,简要说明输入输出的运作情况。IOA128通过BA125接收来自CPU123的输入输出命令,开始其输入输出的运作。在发送数据时,IOA128将由MU124指定的数据输送给相应的MCI130。在接收数据时,通过BA125将数据从该MCI130输送至MU124中指定的区域。在MCI130中装有存储数据用的缓冲器。
如上所述,CPU123是一种输入输出控制装置,它具备在MCI130与MU124之间进行数据传输的权限。来自CPU123的输入输出命令包括对该IOA128的指示和对该线路131的指示。MCI130执行该输入输出命令,通过该线路进行数据通信。
图12所示是存储在MU124中的信息。它由3大部分构成。这3个部分是各种软件中的执行程序、其参考表、以及缓冲区。
所谓各种软件包括控制软件群和应用程序群。控制软件群包括进行存储管理和程序管理等用的OS内核、在显示器121和键盘122之间进行输入输出控制用的控制台、进行记录文件等的更新用的文件管理程序,以及通过线路和FDDI进行数据通信用的通信管理程序;应用程序群包括进行联机处理等用的各种软件。根据这些软件设置相应的参考表和缓冲区。
上述通信管理程序与图6中进行过说明的通信管理程序340相同。特别是通信管理程序中的驱动程序,备有如图16所示结构的接口信息,将输入输出起动指令发送给IOA128。以后说明本实施例2中的通信管理的驱动程序和通信协议时,将使用图6中所示的编号。
图13是IOA128的内部结构框图。IOA128由下述功能块构成。即总线接口LSI401,用来控制作为输入输出总线的外部总线和作为IOA128的内部总线的局部总线之间的接口;MPU402(为了和主机100的处理装置的CPU123相区别,所以此处称为MPU)是与CPU相同的处理装置;局部存储器(LM)403;以及SCSI通信协议处理机404。
由总线接口LSI401受理来自CPU123对IOA128的指示。总线接口ISI401由下述的4个功能块构成外部总线控制部,这是根据CPU的地址信号值,在控制数据总线的总线开闭的过程中、控制发送给CPU的中断信号的程序块;结构寄存器控制部,这是控制与CPU123之间的接口用的寄存器群并对其进行访问存取(输入输出信息的写入和对MPU402的中断等)的程序块;外部总线—局部总线变换部,由它来进行外部总线中的地址信号和局部总线中的地址信号的变换的程序块;局部总线控制部,它是控制局部总线的开闭用的程序块。
在局部存储器(LM)403中写入IOA控制程序(C/W目标)及控制所需的信息(注解项、命令链、跟踪、工作)。以后将对这些信息进行说明。SCSI通信协议处理机404兼作具有SCSI总线控制功能的SCSI控制部、以及具有DMA输送功能的数据输送控制部之用。
图14表示根据通过SCSI总线从IOA128送来的一系列命令,进行每条线路的数据输入输出处理的MCI130的内部结构。MCI130由以下两大部分构成。即LP510和LC520。
LP510是处理二级通信协议的处理机模块。LC520是处理物理线路之间的接口用的处理机模块,共有多个。LP510与第1实施例中的IOCU147相对应,LC520与第2实施例中的DEV148相对应。
LP510是由SCSI控制器511、存储器512、全局存储器513、MPU514以及MPU用的存储器515构成的。SCSI总线接口用于控制SCSI、存储器512供SCSI控制器使用、全局存储器513供通信数据缓冲器使用。LC520是由LC用的处理装置(即LCP521及LCP用的存储器522)构成的。
图15表示实施例2中的通信服务器输送数据时的顺序。CPU123首先生成命令505(后面说明),并将其设定在命令表目504(后面说明)中。然后访问IO命令寄存器501(后面说明),起动IOA128。然后,由业已起动的IOA128将命令表目504读入该LM403中。IOA128根据读入的命令表目信息,找出该命令,分析其内容。在连接与目标MCI130之间的总线以后,向MCI130发送命令。接着,IOA128将待发送的数据从MU124向该MCI130的全局存储器513进行DMA输送。当IOA128收到来自该MCI130的数据输送结束的通知以后,在断开与SCSI总线的连接的同时,将结束信息写入MU124。通过命令结束中断信息的转存,将命令结束通知CPU123。通过中断起动的CPU123校验结束信息。
图16表示实施例2中的通信服务器接收数据时的顺序。在发送来自IOA128的命令之前所有的顺序与图15中的数据发送时的相同,其不同之处在于所发送的命令是read command(读出命令)。read command发送后,IOA128等待来自MCI130的信号。当MCI130中还没有接收的数据时,IOA128根据来自MCI130的总线的断开请求,将总线断开。MCI130在收到数据后,将接收通知发送给IOA128。IOA128收到接收通知后,再将与MCI130的总线接通,通过DMA输送,将接收数据输送给MU124。此后的顺序与用图15说明过的发送时的情况相同。
图17是进行输入输出运作时所参考的CPU—IOA之间的接口信息关系图。在本实施例中,因为CPU123是采用RISC型处理机,因此不能用专用指令作为输入输出起动指令,所以IO方式采用了存储变换IO方式。这是一种将CPU123的存储空间的一部分分配给IOA128的IO命令寄存器501的方式。对该地址执行装入指令,就是访问IO命令寄存器501,相当于发送输入输出起动指令。
命令表目地址502是存在MU124内的固定地址的信息,IOA128是记录了读取命令表目504的地址需用的标题信息。当然,IOA128知道命令表目地址504的地址。命令接口503是将512个命令表目504连续排列形成的数据组表。之所以要将两个合并在一起是为了简化在参考IOA128命令表目进行处理运作时所用的指针。
各个命令表目504都存有命令505所用的指示字。命令505中存有传输区506的信息和对下一个命令505的指示字信息。命令505利用该对下一个命令505的指示字进行连结,构成命令串。由于由一个命令表目指示一串命令串,因此就总体而言,是由一个命令接口指示多个命令串。
传输区506是在发送时存储发送数据的区域,在接收时则是用作储存接收数据用的缓冲器,命令结束后又变成储存接收数据用的区域。
图18是用来说明命令505用的详图。下一个命令地址是构成命令串用的指示字信息,是对下一个命令505的指示字。标志eoc是表示最后的命令串用的信息。当标志eoc为0时,表示在该命令之后还有下一个命令,当标志eoc为1时,表示该命令是命令串的最后一个命令。设备ID是识别线路用的信息。
标志区由以下3个标志构成。这3个标志是dc、crep、int。
dc标志是构成数据链用的标志。所谓数据链是指该命令与下一个命令相同时而言。即当下一个命令是与该命令对另一数据区进行相同的输入输出运作的命令时,该命令的dc标志为1。在除此以外的情况下,dc标志为0。当命令不同时称为命令串。crep标志是按该命令进行的运作结束时指示生成结束信息用的信息。int标志是供在按该命令进行的运作结束时指示产生结束中断信息之用的。在本实施例中,在各命令结束后,采用通过中断信息结束接收运作的方式。
IOA命令是表示DMA起动请求的信息。输送区地址是前面所述的输送区506的地址,输送长是该地址的长度。SCSI命令是MCI130应执行的命令(read/send等)(读/发送等)。结束信息区是IOA128记录结束信息的区域。另外,命令505是由8个字构成的,以便IOA128容易参考。
图19是说明命令表目504用的详图。标志busy是表示IOA128是否将该命令表目504从MU124读入LM403的标志。即CPU123在MU124内生成命令表目504时,该标志设为1,使IOA128起动,而当IOA128读取该命令表目504时,则设为0。
命令表目504内的设备ID与命令505的设备ID相同,是指示进行输入输出的设备(在本实施例中是指线路)的识别信息。用该命令表目504中的设备ID指定一个设备作为由该命令表目504指示的一系列命令505的输入输出对象。从而也可以说即便不设图18所示的各命令505中的设备ID栏也可以使用,但有时是为了处理故障时使用而设置的。
现参照图19进行说明,将表示DMA输送的值写入命令表目504内的命令表目命令中。命令串的标题地址是命令串中开头的命令505的地址。故障信息存储地址是用于储存发生故障时的信息区的地址。故障信息存储区长是上述区域的大小。命令表目504由8个字构成,以便IOA128容易参考。
其次说明IOA128的处理逻辑。图20,图21及图22是说明图13所示的IOA128内的MPU402的处理逻辑用的程序图。图23是在上述处理逻辑中要参考的LM403中的信息结构。
在说明IOA128的处理逻辑之前,先参照图23说明LM403中的信息结构。命令表目复制管理表580是管理IOA128从MU124读入的命令表目的表。命令表目复制581是用于储存读入的命令表目的复制等的表。执行命令处理表582是处理命令时参照用的表。
为了管理方便用链连结起来的一系列命令表目复制581,命令表目复制管理表580保留开头的命令表目复制581的地址和最后的命令表目复制581的地址。命令表目复制数是由表580管理的命令表目复制581的个数。执行命令表目复制地址是执行过程中的命令表目复制581的地址。
命令表目复制581是通过读取命令表目而生成的信息,它由复制来自命令表目504的必要信息的区域、执行命令处理表582的地址和下一个命令表目复制的指示字信息构成。
执行命令处理表582是记录命令的输送处理中所必要的信息的处理表,它由表示执行过程中的命令的位置的执行命令地址、剩余命令数、以及read命令发送完毕标志构成。
下面根据用图15及图16说明过的处理顺序,说明IOA128的处理逻辑。
图22是用流程图表示命令表目读入处理的处理逻辑图。如用图15及图16所说明的那样,CPU123(及通信管理程序340中的驱动程序345)生成图18所示的命令505,并在图19所示的命令表目504中进行设定,最后在MU124内生成图17所示结构的接口信息,通过访问IO命令寄存器501,进行中断处理。
由于来自该CPU123的中断,在IOA128中,图22中的命令表目读入处理起动。在该处理过程中,IOA128内的MPU402从用命令表目地址502的值表示的命令表目504开始处理。
首先,CPU123将设定在MU124内的命令表目504中的信息复制在LM403内的命令表目复制区中(步5701)。然后,把刚才生成的命令表目复制581(图23)登记在命令表目复制管理表580中(步5703)。
这些处理是采用一种在一系列命令表目复制581的链的最后增加新的命令表目复制581的方式。即,首先在LM403内的命令表目复制区内生成新的命令表目复制581,在此复制命令表目504中的信息。然后,设定刚才新生成的命令表目复制581的地址,作为命令表目复制581中的下一个命令表目复制栏的值。然后再更新命令表目复制管理表580中最后的命令表目复制的地址,并更新命令表目复制数。
当然,开始登记时,还要设定起始命令表目复制的地址和执行命令表目复制的地址(步5703)。执行命令表目复制地址的初始值是起始命令表目复制581的地址。
然后进行执行命令处理表582的设定处理(步5707)。具体地说,重新生成执行命令处理表582,将该执行命令处理表582的地址设定在步5701中生成的命令表目复制581的执行命令处理表地址栏内。另外,将该命令表目复制581的命令串起始地址(图19)设定在该执行命令处理表582的执行命令地址栏内。然后根据该命令中的起始地址检查未用链连接起来的命令串。将构成命令串的命令链数记录在该执行命令处理表582的剩余命令数栏内。
然后进行下一个命令表目的判断处理(步5707)。即,将该命令表目504中的busy标志清除后,算出下一个命令表目504的地址,检查其busy标志。如果设立了标志,由于该命令表目504尚未取入IOA,所以从步5701返回,继续进行命令表目的读入运作。如果在步5707中未设立busy标志,使中断处理结束(步5707)。
下面用图20和图21说明IOA128中的命令处理的主要逻辑。图20是利用图15进行过说明的发送时的处理逻辑,图21是利用图16进行过说明的接收时的处理逻辑。
首先用图20说明发送时的处理。根据命令表目复制管理表580中的执行命令表目复制地址链进行搜索,找到应执行的命令的存储地址执行命令处理表582中的执行命令地址。检查该值是否为null,或者是否附有表示read发送完毕束标志(步5501)。
如果上述值为null或者已经附有上述标志,则应读出对不同设备的执行命令,更新命令表目复制管理表580中的执行命令表目复制地址更新成指示下一个命令表目复制581(步5527)、返回步5501。
在步5501中,如果发现上述情况以外的情况,则根据用命令表目复制管理表580中的执行命令表目复制地址指示的命令表目复制581的设备ID,进行搜索命令的执行对象(即目标MCI的地址)的处理运作(步5503)。然后指定在步5503中查到的地址,将连接总线的请求发送给SCSI通信协议处理机404,断开与目标MCI之间的总线(步5505)。
然后进行命令的检验。此时,用send命令或read命令将以后的处理运作分开(步5507)。有关遇到read命令时进行的接收处理留待以后说明,此处先对收到send时的处理运作进行说明。
MPU402要求SCSI通信协议处理机404将send命令送给目标MCI。于是,send命令通过原先接通的总线被输送给目标MCI(步5509)。然后,为了将发送数据从MU124传输给目标MCI的存储器,向处理机404指示执行命令,发送DMA传输开始的请求。处理机404参照执行命令,以DMA方式传输发送数据(用数据链连接的数据)(步5511)。
然后,MPU402检验执行命令的crep位(步5513)。如果该位接通,则根据来自目标MCI的结束报告,将结束报告写入命令505内的结束报告区(步5515)。如果crep位断开时(或者在步5515以后),进行int位的检验(步5517)。
如果int位接通,则操作中断信号线,对CPU123产生结束中断信号(步5519)。在int位断开的情况下或在步5517以后,进行eoc位的检验处理(步5521)。
如果eoc位接通,则对该命令表目复制581进行断路处理(步5525)。即,从表580中将命令表目复制数减去1,更新执行命令表目复制的地址(更新成指示下一个命令表目复制581)后,消除该执行命令表目复制581。如果eoc位断开,则进行执行命令处理表582中的执行命令地址的更新(更新成指示下一个命令)(步5523)。
在步5525以后,从步5501开始重复运作。在步5523以后,则从步5507开始重复运作。
下面用图21说明在接收时的处理运作。在上述的处理步5507中应执行的命令如果是read命令时,MPU402要求处理机404将read命令发送给目标MCI。于是通过原先断开的总线,输送read命令(步5601)。
然后检查对来自目标MCI的应答,检验目标MCI中有无接收数据、即是否要进行断开总线释放(步5601)。在没有接收数据时,进行总线释放,对处理机404提出总线释放请求(步5605)。然后,接通执行命令处理表582中的Read发送结束标志(步5607)。此后,从步5527开始处理不同设备的命令。
当步5603中总线尚未释放时(即有接收数据时),发送DMA开始传输请求,将接收数据从目标MCI输送给MU124(步5609)。此后从步5513进行。
其次,参考图21中下半部分的流程图,说明在步5605中将总线断开后产生接收数据时的处理运作。该处理程序是从read命令发送结束后的MCI开始的,通过再次连接与IOA128之间的总线,由所产生的中断信号进行起动。
首先,在判明产生中断信号的MCI的设备ID上认清目标MCI,检索命令表目复制581和执行命令处理表582,通过特定发送结束的命令,受理接收信息(步5611)。然后,断开该表582中的Read发送结束标志(步5613)。然后发送DMA输送请求,将接收数据从目标MCI传送给MU124(步5615)。
此后,与图20中的从步5513到步5521的处理相同,进行命令的位处理(从步5617至5625)。此时在步5621中进行的eoc位判断处理若判为接通,则进行命令表目复制的断路运作(步5627)。
以上说明了IOA128的主要处理程序。
实施例3在上述实施例1及2中,驱动程序从存在来自AP的接收请求开始,将read命令发送给CH142或IOA128。与此不同的是,本实施例3是在受理来自AP的接收要求之前,预先将read命令发送给IOA128(或CH)的实施例。将进行本处理的处理模块称为read先出处理。另外,此处是以将read先出处理功能加到上述实施例2(主要是驱动程序345)为例进行的说明,但也能适用于实施例1。
图24是read先出处理所参照的先出read命令管理表400的结构图。图25是用流程图表示read先出处理的处理逻辑的图。
现参照图24对于先出read命令管理表400进行详细说明。表400保留设备总数和最大read发送数。设备总数是由该设备可输入输出的设备总数。所谓最大read发送数,是指以先出方式将read命令发送给各设备时的read命令的最大数。换句话说,是指用命令链将多个read命令集中起来以先出方式发送给各设备时的命令数的上限值。另外,表400中还存有一对多个(相当于设备总数的)设备ID和发送完毕的read数。所谓设备ID,是指用于识别各设备用的标识符信息。所谓发送完毕的read数,是指在向与各设备ID相对应的设备发送read命令但该命令运作尚未结束的命令数。另外,各发送完的read数在初始化即被清除。
其次,参照图25说明处理逻辑。首先,最初(驱动程序初始化后开始)从步4109进行处理。这时将表400中的设备总数代入变量y,设定指示初始设备ID的指示字变量(开始时图24中的设备ID指0x00)(步4109)。然后利用变量y的值将以后的处理分为两部分。如果y>0,进入步4117,否则进入步4113(步4111)。
现从y>0的情况开始说明。参照表400,求出与上述指示字变量指示的设备ID相对应的发送完毕的read数的值,从最大read发送数减去该发送完毕的read数的值,将该减得的结果代入变量Z(步4117)。然后,将表400中的适当的发送完毕的read数的值更新为最大read发送数(步4115)。
然后生成由Z个read命令构成的命令链(步4119)。然后将命令链登记在命令表目504中(步4121)。然后将变量y减去1,更新上述指示字变量(使之指示下一个设备ID)(步4123),再返回步4111。这样对所有的设备进行步4111—4123的处理,将最大read发送数的先出read发送给各设备。
在步4111中如果y不大于0时,起动IOA128,开始输入输出(步4113)。至此,从初始化开始的一系列处理结束。
其次,说明根据read命令的结束中断信号延长起动该处理的情况。
根据结束中断信息,专门指定相应的设备ID,从表400求出由相应的设备ID发送完毕的read数(步4101)。由于该设备刚刚结束了一次输入输出的处理,所以将发送完毕的read数-1代入变量X(步4103),通过在表400中设定该发送完毕的read数的X值,进行更新(步4107)。
然后,判断是否X≤0(步4105)。如果判断值是肯定的,则由于现在的发送完毕的read数的值为0以下,所以为了发送先出read,则要从步4109开始进行处理。否则就要结束从中断开始的处理。如果采用本处理方法,则当某设备在无先出read的条件下则可将其作为触发器使用,将多个设备的read命令集中起来发送。
实施例4在上述的实施例1—3中说明了驱动程序345(图6)的处理方法,但没有说明通信协议处理343和输入输出命令的关系。在本实施例4中,考虑它们的关系,说明通过通信协议处理将数据划分成多个信息包发送时,为了将一次能够发送的信息包数的信息包如数传输出去,先生成由Write命令构成的一系列命令串,然后进行发送的例子。
此处虽然是以将上述功能增加到实施例2中为例进行的说明(特别是将后面所述的处理加到图6中的通信协议处理程序343和驱动程序345之间的接口部分的示例),但同样也能应用于其它实施例。
首先,说明通信协议处理343。在通信协议中,将称为信息包的某一定长的数据单位作为信号收发单位。信息包是将称为标题的通信协议控制信息加在原有数据的开头形成的。因此,在通信协议处理343中,当原有数据(来自AP34的数据)比上述信息包的大小大时,必须将其进行划分,生成多个信息包。并将这种处理方式称为信息包分割处理。
现参照图26说明本实施例中的信息包分割处理方式。在该图中,在横线的上方表示划分之前的原有数据和该数据的数据管理信息块(以后称为SPB)SPB0,其下方表示经过信息包分割处理后的数据及其SPB。
首先,在进行信息包的分割处理之前,先将原有数据存入缓冲器Bfo中,一个SPB0保留原有数据的地址及其数据长度,用来管理原有数据D0。SPB是表示下一个SPB地址的字段等。当原有数据存储在一个缓冲器中不加分割时,用若干SPB管理原数据。这时,若干SPB之间由下一个SPB地址结合起来(将它称为SPB数据链)。
在图26中,由于原有数据D0存储在一个缓冲器中,所以SPB0的下一个SPB地址的值为null。null值表示链的结束值。因此,此处的null表示SPB数据链结束。
在图26中,说明由原有数据D0生成两个信息包的信息包分割处理方法,信息包分割处理是在通信协议处理343中进行的。
首先,信息包分割处理的内容是分析原数据D0的数据长度,判定是否需要进行划分、以及在划分数据时数据的分割位置。表中将原有数据D0划分成数据D1和数据D2。
为了生成第1信息包,一定要确保在储存第1标题用的缓冲器BF1中生成标题。为了生成管理第1信息包的SPB,要记录第1标题的地址及其数据长,接着生成记录SPB0的地址的SPB1。然后,将SPB0的数据长度从数据D0的长度变更为数据D1的长度。然后,为了生成第2信息包,一定要确保在储存第2标题用的缓冲器Bf2中生成标题。为了生成管理第2信息包的SPB,分别生成管理标题的SPB2和管理分割数据的SPB3。SPB2的生成方法与SPB1相同。SPB3是通过记录数据D2的地址及其数据长度形成的。如上所述,在本实施例中,是采用不进行数据的移动处理的信息包分割方式。
其次,说明信息包分割处理和命令生成处理(利用驱动程序345生成图17所示的数据的处理)之间的关系。
现根据网络层的通信协议控制,说明窗口控制。所谓窗口控制是在不确认各数据信息包是否确已送到的状态下先连续发送多个(规定数)数据信息包然后再集中确认是否送到的控制方式。发送端根据从相应的对方返回的受信顺序号(Pr),设窗口尺寸为WS,在送信序号(PS)未达到WS+Pr-1之前,可以在不确认送达情况的条件下继续进行数据信息包的发送运作。即,窗口尺寸(Ws)表示在不确认来自对方的送达情况的条件下能够连续发送的数据信息包的最大极限数。
此时,当新发送完毕的信息包的发送顺序号达到PS时,将连续传输数定义为WS+Pr-1-PS。连续传输数表示现在未经确认来自对方的送达时能连续发送的数据信息包数。在本实施例中,将该连续传输数以内的信息包汇总起来生成输入输出命令,并采用其一并传输至线路控制装置的方式。采用这种方式与逐个传输信息包的方式相比,前者能提高输入输出效率。
将这种处理方式称为信息包分割整批i0处理方式。对这种处理方式进行说明。首先,记录上述连续输送数,以此作为通信控制信息。当连续输送数不为0且有滞信息包时,将处理方式从信息包分割处理改为信息包分割整批i0处理。所谓滞留信息包,是指在采用信息包分割处理方式时生成的分割信息包。从信息包分割处理改为信息包分割整批i0处理时,要将在信息包分割处理过程中生成的分割信息包的总数作为滞留信息包数提交,同时还要提交各信息包的地址。
图28是表示信息包成批i0处理的逻辑程序图。图27表示在信息包分割成批i0处理时生成的数据结构,同时也是对驱动程序的接口数据结构图。特别是图27,图26中下方的数据结构(信息包分割处理时分割的数据)表示信息包分割成批i0处理时的处理结果。
首先,在信息包分割成批i0处理时,对连续传输数(即在当时时刻在不对每个信息包的送达进行确认的状态下能够连续发送的信息包数)和滞留信息包数(在进行信息包分割处理时分割的分割信息包数)进行比较(步531)。当滞留信息包数在连续传输数以上时,用命令链将相当于连续传输数的信息包连接在滞留信息包的开头(步535)。反之,当滞留信息包数比连续输送数小时,用命令链连接全部滞留信息包(步533)。
在步533、535之后,向驱动器提出发送请求(步537)。然后,更新连续输送数(步539)。具体地说,就是从连续传输数值中减去在步533、535中连接的信息包数,作为新的连续传输数。
现以图26中的下侧部分及图27为例,补充说明用命令链连接信息包的处理方式(步533、535)。为了从图26的下侧部分所示的数据结构求出图26所示的数据结构,首先在各SPB中设定在命令链使用的指示字段(初始值为null。然后进行搜索第1信息包即SPB1和下一个SPB链,并在最后的SPB(在本例中为SPB0)的命令链所用的指示字上设定第2信息包即SPB2的地址的处理。如果以后还有需要连接的信息包,按照同样的顺序反复进行处理即可。
图29所示是根据在上述对信息包进行整批i0处理时生成的、如图26所示的数据结构,生成命令链的驱动器345的处理逻辑程序图。
首先,由驱动器345根据SPB(从开头SPB开始处理的SPB)生成命令505(图17、图18)(步541)。然后,判断该SPB的下一个SPB地址是否为null(步543)。如果该SPB的下一个SPB地址不为null,由于以后还有数据,所以为了确保下一个命令505,要设定该命令505的链字段,并设置数据链位(dc位)(步545)。然后,再次重复从生成命令(步541)开始的处理。
如果在步543中判断的结果为结果null,则判断该SPB的命令链用指示字的值是否为null(步547)。其结果如果不是null,为了确保下一个命令505,要设定该命令505的链字段,并将数据链位(dc位)清零,设置中断位(int位)(步549)。然后,再次重复从生成i0命令(步541)开始的处理。如果是null,设置该命令的结束位(eoc),结束处理。通过这种处理,生成采用通过一次i0运作发送多个信息包用的链连接的命令串。
实施例5
实施例5是提高上述实施例4的性能用的变形例。实施例5的特征是分包处理。现参照图30,说明分包处理方式。
在图30中,信息包分包处理603是采用实施例4说明过的信息包分包处理方式。图30的上段所示在不采用信息包分包处理603中的信息包分包时的发送数据结构。当不采用信息包分包方式时,生成由标题部分采用SPB即SPB1和数据部分采用SPB即SPB0两个部分构成的发送数据结构。
因此,将该发送数据直接传输至驱动器345,生成命令串,由于在驱动器345中只要出现一个SPB必然要生成一个命令,所以就形成由2个命令构成的命令串的运作。若由IOA128执行这个命令串,实际上等于处理2个命令。这两个命令虽然用命令链连接起来,但在DMA处理时要经过缓冲器切换,从而增大了系统的开销,因此数据输送处理时间也就变长,性能也有所下降。为了提高性能,就要用一个命令完成上述处理运作,这就是重分包处理601。
图30的中段所示是采用重分包处理601的制作过程,用一个SPB表示的信息包。图31是用流程图表示重分包处理601的处理逻辑的图。
首先,在重分包处理601中将采用SPB0表示的数据长度和数据长度判断信息600进行对比,判定是否要进行重分包(步611)。
先对数据长度判断信息600的值进行说明。现在将IOA处理一个命令的系统的开销定义为0(C)。设数据长度(字节)为D1,并设使数据移动一个字节的位置所需要的系统开销为0(m1),于是长度为D1的数据移动时的系统开销(设为0(md))就要用0(m1)·D表示。当设定的0(c)比0(md)大时,重分包方式有效,此时的数据长度D1要满足D1<0(c)/0(m1)的条件。因此,预先算出0(c)/0(m1),作为数据长度的判断信息600,在计算机起动时进行设定。
在步611中,对用SPB0表示的数据长和数据长度判断信息600进行比较,当判定用SPB0表示的数据长度较比数据长度判断信息600小时,则需要进行重分包,否则不要重分包。
在步611中,当判定需要重分包时,将数据用缓冲器Bf0中存储的数据移到标题用缓冲器Bf1中的标题以后的区域(步613)。然后,断开数据移动源即缓冲器Bf0(步615)。将null写入SPB1的下一个SPB地址,进行SPB链的更新(步617)。然后,断开数据移动源的SPB即SPB0(步619),于是整个处理结束。
实施例6以上所述的实施例1—5所采用的结构都是能用一次输入输出指令执行对多个设备的多个输入输出命令,从而提高了输入输出效率。在以下所述的实施例6中,是根据输送到设备即输入输出装置的用户的数据长度,调整内核空间中的输送数据的存储标题位置,从输送处理总体的角度来看,能够使处理效率最佳化,从而能提高输入输出效率。下面参照图32—图38,说明实施例6。
在现有的输送处理方式中,从用户空间到内核空间进行的数据转录处理、以及从内核空间向输入输出装置输送的处理,都是作为独立的处理程序进行的,并没有从系列处理的角度考虑最佳化的问题。因此,例如,为了使从用户空间到内核空间进行数据转录的处理达到最佳化,先要使转录源及转录目标的存储器中的数据存储起始位置的边界值一致;对于从内核空间向输入输出装置传输时的输送处理来说,如果存储器中的存储起始位置的边界值不恰当,至少是在尚未达到恰当的边界值之前,就要以小单位进行传输,特别是当数据长短不齐时,要增大系统的开销。反之,对于从内核空间向输入输出装置传输送时的传输处理来说,在将存储器中的存储起始位置的边界值设定在最佳值之后,从用户空间向内核空间进行数据转录时,转录源及转录目标的存储器中的数据存储起始位置的边界值不一定一致,于是就要以小单位进行转录,特别是当数据长度较长时,就会使系统开销增大。
因此,在本实施例中所述的是这样一种计算机系统,它在分别提供具有独立的运作空间的用户程序方式及内核程序方式这样两种程序执行方式的操作系统下运作,并且以直接存储器存取方式在中央处理装置和输入输出装置之间传输数据,在该计算机系统中备有下述三种装置一是为了将在按用户程序方式运作的程序运作空间(用户程序空间)中存在的数据输送给输入输出装置,在将上述数据暂时转录在按内核程序方式运作的空间(内核程序空间)的处理过程中,当转录的数据长度随计算机系统的不同而比预先决定的长度短时,将内核程序空间中的传输数据的存储起始位置按照向输入输出装置传输时的最佳效率值进行设定用的设定装置;而当上述转录的数据长度不比预先决定的长度短时,则该装置能将内核程序空间中的输送数据的存储起始位置按照从用户程序空间向内核程序空间转录时的最佳效率值进行设定;二是在从用户程序空间向内核程序空间进行数据转录处理时,当转录的数据长随计算机系统的不同而比预先决定的长度长时,使用户程序空间的输送数据的存储开头位置与内核程序空间的输送数据的存储开头位置一致,根据边界值,采用与最大数据型相对应的输送单位进行数据复制的装置;三是将控制输送用的控制信息附加到从用户程序空间向内核程序空间复制的数据之中,然后传输至输入输出装置,在该处理过程中,特别要按照传输数据的类别切实准备存储控制信息的区域,并且按照向输入输出装置输送时的最佳效率位置,将上述控制信息按照与上述相应的数据的相关位置进行存储的装置。
图32表示本实施例的计算机系统的结构。计算机系统首先分为软件层和硬件层,软件层又分为用户层和内核层。
用户层是计算机系统的用户编制程序的运作层,有用户程序3和系统调用库4,在用户层中,程序按照称之为具有独立的运作空间(称之为用户空间)的过程执行单位进行运作。
内核层是控制操作系统等系统总体运作的程序运作的层,它具有一个独立的运作空间(把它称为内核空间)。在内核层中,存在下述几个模块。系统调用接口5是用户程序利用内核功能用的模块。通信协议处理部6对通信线路上的信息形式和设备驱动程序进行管理和识别。设备驱动器8是控制通信线路等的输入输出装置10的运作的模块。过程控制子系统7进行过程的生成执行、调度、存储管理等。硬件控制机构9进行与硬件的通信和中断处理。
本实施例的前提是,作为程序执行单位的过程运作方式共有用户方式(对应于用户层)及内核方式(对应于内核层)两种方式。在用户方式情况下,只能存取过程单位中存在的用户空间中的数据,通过与其它过程进行时间分隔且能并行运行,不是与其它用户方式及内核方式的过程并行运作,而是系列处理,能够一直进行到结束。
其次根据图33说明用户程序将用户空间中的数据传输到通信线路的处理流程的一个示例。
(1)用户程序将请求数据输送用的系统调用发送给内核程序(①)。
(2)从用户方式切换到内核方式,访问相应的内核层的处理表目(系统调用接口)。这时,内核层的处理按照发送系统调和的用户程序的过程进行运作。
(3)系统调用接口从用户空间转录输送给输入输出装置用的数据(②)。然后为了将输送请求转送到通信协议处理部按照其适用的信息形式进行生成等处理之后(③),利用设备驱动器及硬件控制机构,使输入输出装置开始运作(④),此后,由于输送运作结束,该过程中断(Wait)(⑤)。这时,过渡到其它过程的控制。
(4)输送运作结束后,输入输出装置对软件发送中断信号。利用该中断机会,调用硬件控制机构的中断程序(⑥)。
(5)中断程序起动呼叫过程,再起动(post)(⑦)。
(6)从内核方式切换到用户方式,伴随输送结果,使控制返回用户程序(⑧)。
其次,根据图34说明将输送数据(1,2)从用户空间转录到内核空间的处理的一个示例。对于用户程序中的系统调用发送来说,当从用户层切换到内核层时,系统调用接口部按照以下顺序将传输数据从用户空间转录到内核空间。
首先,参照转录数据长度。如图35所示,将转录数据长度记录在管理缓冲器12的实体缓冲器管理表11中。当该数据长度比由计算机系统预先决定的值短时,在将内核空间中的输送数据的存储起始位置输送给输入输出装置时设定为最佳效率值。例如,输入输出装置用直接存储器存取方式(以下简称DMA)将存储器中的数据输送给输入输出装置时,用32字节单位进行的输送,就输入输出总线的输送能力来说效率最好,因此,必须将输送数据的存储起始位置设定在32字节边界上。这时,将内核空间中的输送数据的存储起始位置设定在32字节边界上。
另一方面,当上述数据长度比由计算机系统预先决定的长度值长时,将内核空间中的输送数据的存储起始位置从用户空间转录到核心空间时,设定效率最佳值。例如,计算机系统的存储器内的数据转录时,可为长度(4个字节单位)、字(2个字节单位)、字节(1个字节单位,用各种数据单位转录时,转录源的数据存储起始位置和转录目标的数据存储开头位置必须配置在上述各边界上。这时,通过设定内核空间内的输送数据的存储起始位置,使转录源的数据存储起始位置与转录目标的数据存储起始位置一致,就能实现最佳效率的数据转录处理。如图36所示,其原因是因为如果使转录源的数据存储起始位置和转录目标的数据存储起始位置一致,则除了到长字边界的半边以外,还可用长字单位转录。
其次给出作为上述数据转录处理的判断条件的“由计算机系统预先决定的值”的一个示例。首先,求出在从用户空间向内核空间进行的数据转录的过程中达到最佳化的总输送时间。设用户空间内的输送数据的存储起始位置为13个字节边界,输送数据长为x字节,进行一次数据转录或DMA输送所需的单价分别为1μs/字节、10μs/字节。并设数据转录及输送处理是按上述方式进行。这时,总输送时间值如下所列〔(X-1)/4+1〕+〔13+(X-16)/32〕×10
其次,在同样条件下,当向输入输出装置的输送达到最佳化时,求出总输送时间值如下所列。
X+〔X/32×10〕上述两值中的第1项都是从用户空间向内核空间转录数据所需要的时间,第2项都是向输入输出装置输送用的时间。图37中用曲线图表示上述关系。在此示例中可知168个字节是边界值。
在向输入输出装置输送数据时,通常多半将控制信息添加在输送数据上。例如,在对通信线路之间进行数据收发时,将通信协议标题附加到输送数据上。控制信息用内核层附加。图38示出了控制信息的附加方法的一个示例。在本示例中,在与通信线路进行数据的收发时,将通信协议标题加在输送数据上,确保其它区域的缓冲。通信协议的存储起始位置是向输入输出装置输送时的最佳效率位置。在上述例中有32个字节边界。
作为从输入输出装置输入数据的方法的一个示例,有如下方法。用户程序在用户空间准备输入缓冲器后,发送系统调用。与此相反,内核层的程序在内核空间中预先准备输入缓冲器后,向输入输出装置发送输入请求。
这时,与输出时一样,将内核空间内的输入缓冲器的输送数据的存储起始位置作为从输入装置输送时最佳效率位置。在上述示例中,有32个字节边界。另一方面,从输入输出装置输入的数据存在于内核空间,必须将其输送到用户空间。这时,通过使用为用户程序准备的缓冲器的输送数据存储位置的边界与内核空间的输送数据存储位置的边界(上述例中为长字边界)一致,就能进行高效的转录处理。
权利要求
1.一种计算机系统,它备有多个输入输出装置;与该多个输入输出装置连接的适配装置;以及通过该适配装置将输入输出请求发送至上述输入输出装置的主处理装置,该计算机系统的特征在于上述主处理装置备有将多个输入输出命令作为一次输入输出起动指令,发送给上述多个输入输出装置的装置,上述适配装置备有将上述一次输入输出起动指令中包含的对多个输入输出装置的多个输入输出命令具体指定是针对某个输入输出装置的输入输出命令的装置;以及将对上述多个输入输出装置的多个输入输出命令分别发送至上述特定的输入输出装置的装置。
2.一种计算机系统,它备有多个输入输出装置;与该多个输入输出装置连接的适配装置;以及通过该适配装置将输入输出请求发送至上述输入输出装置的主处理装置,该计算机系统的特征在于上述主处理装置备有保留并管理对上述输入输出装置的输入输出请求用的排队请求管理表;当产生对上述输入输出装置的输入输出请求后,如果不能立即处理该输入输出请求时,则将该输入输出请求保留在上述排队请求管理表中的装置;以及当输入输出请求的处理变为可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,按每个输入输出装置生成连接应发送至上述各输入输出装置的输入输出命令的串列,即命令串,并以一次输入输出起动指令,将这些命令串发送给上述适配装置的装置。上述适配装置备有将上述一次输入输出起动指令中包含的多个命令串具体指出是针对某个输入输出装置的命令串的装置;以及将上述多个命令串中的各输入输出命令分别发送至上述特定的输入输出装置的装置。
3.权利要求2所述的计算机系统,其特征在于上述输入输出装置备有在所发送的输入输出命令经过处理结束后,将结束中断信号发送至上述主处理装置的装置,上述主处理装置备有以来自上述输入输出装置的输入输出命令的结束中断信号为契机,判断输入输出请求的处理是否可能,当可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,按各输入输出装置生成连接应发送至上述各输入输出装置的输入输出命令的串列即命令串,并以一次输入输出起动指令,将这些命令串发送给上述适配装置的装置。
4.权利要求2所述的计算机系统,其特征在于上述以一次输入输出起动指令从上述主处理装置发送给上述适配装置的多个命令串,以信息组为基本单位,在该信息组中包括指定命令串的起始位置的地址信息和特定命令串中的各命令的执行对象的一个输入输出装置的标识符信息,该信息组由具有多个连续结构的表进行管理。
5.根据权利要求4所述的计算机系统,其特征在于上述表的各信息组中设有表示上述适配装置是否将与该信息组相对应的命令串读入的标志信息,当上述主处理装置发送输入输出起动指令时,将该标志信息接通发送,当上述适配装置读入该输入输出起动指令中的命令串时,将该标志信息断开。
6.一种计算机系统,它备有多个输入输出装置与该多个输入输出装置连接的适配装置;通过该适配装置,将输入输出请求发送至上述输入输出装置的主处理装置,同时该主处理装置备有执行应用程序的应用执行部和处理从该应用执行部发送的输入输出请求的驱动部,该计算机系统的特征在于上述主处理装置的驱动部备有根据从上述应用执行部发送的输入输出请求,生成输入输出命令,同时,以一次输入输出起动指令发送对多个输入输出装置的多个输入输出命令的装置,上述适配装置备有将上述一次输入输出起动命令中包含的对多个输入输出装置的多个输入输出命令具体指定是针对某个输入输出装置的输入输出命令的装置;以及将对上述多个输入输出装置的多个输入输出命令分别发送至上述特定的输入输出装置的装置。
7.一种计算机系统,它备有多个输入输出装置;与该若干输入输出装置连接的适配装置;通过该适配装置将输入输出请求送给上述输入输出装置的主处理装置,同时该主处理装置备有执行应用程序的应用执行部和处理从应用执行部发送的输入输出请求的驱动部,该计算机系统的特征在于上述主处理装置的驱动部备有保留并管理从上述应用执行部发送的输入输出请求用的排队请求管理表;当产生来自上述应用执行部的输入输出请求后,不能立即处理该输入输出请求时,将该输入输出请求保留在上述排队请求管理表的装置;以及当输入输出的处理变为可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,以每个输入输出装置为单位生成将应送给上述各输入输出装置的输入输出命令连成的串列即命令串,并以一次输入输出起动指令,将这些命令串发送给上述适配装置的装置,上述适配装置备有将上述一次输入输出起动指令中包含的多个命令串具体指定是针对某个输入输出装置的命令串的装置;以及将上述多个命令串中的各输入输出命令发送至上述特定的输入输出装置的装置。
8.权利要求6或7所述的计算机系统,其特征在于在上述主处理装置中的驱动部中还备有在从上述应用执行部接收数据的输入请求之前,将对上述多个输入输出装置的多个输入命令作为一次输入输出起动指令,先输出给上述适配装置的装置。
9.根据权利要求8所述的计算机系统,其特征在于上述使输入命令先出的装置备有存储第1规定数的第1存储装置,该第1规定数表示对上述输入输出装置的输入命令的最大发送数;存储第2规定数的第2存储装置,该第2规定数用来规定再次发送输入命令串的契机;以及用于记录对上述各输入输出装置的未结束的输入命令数的第3存储装置,上述驱动部经过初始化后,以每个输入输出装置为单位,生成将输入命令按第1规定数连起来的输入命令串,并将其发送至上述适配装置,将发送给各输入输出装置的输入命令数记录在第3存储装置中,以后每次从上述各输入输出装置接收到输入命令的结束报告后,将第3存储装置中存储的相应的输入输出装置的未结束的输入命令数中减1,通过该处理,如果该输入输出装置中的未结束的输入命令数为第2规定数,则算出第3存储装置中存储的未结束的输入命令数与第1存储装置中存储的第1规定数之差,将连接了相当于该差值的输入命令的输入命令串再发送给上述适配装置。
10.权利要求6或7所述的计算机系统,其特征在于上述输入输出装置是线路控制装置。上述主处理装置备有通信协议处理部,该通信协议处理部分割与从上述应用执行部发送的数据请求有关的数据,将通信协议控制信息加在该分割后的各输出数据的开头,生成多个分割信息包,当上述多个分割信息包数小于该时刻在未曾收到来自对方的送达确认信息的状态下而能连续输送的信息包数,即连续传输数时,上述主处理装置的驱动部根据上述多个分割信息包,生成多个输入输出命令,通过将生成的多个输入输出命令作为一次输入输出起动指令发送,利用一次输入输出运作方式传输上述多个分割信息包中的输出数据。
11.根据权利要求6或7所述的计算机系统,其特征在于上述输入输出装置是线路控制装置,上述主处理装置备有通信协议处理部和重分包处理部,该通信协议处理部对于从上述应用执行部发送来的与数据传输请求有关的数据进行分割处理,分别生成按站点划分的经过分割处理的输出数据的数据管理信息组,并在该经过分割后的输出数据的开头部分、按照通信协议的规定、附加逻辑控制信息,形成逻辑分割信息包那样的通信协议控制信息,还生成按站点划分的符合通信协议规定的控制信息的数据管理信息组,针对上述通信协议控制信息(这是由上述通信协议处理部输出的、按站点划分的、其他数据管理信息组和上述输出数据,由上述重分包处理部通过对两种系统开销(一种是针对上述适配装置输送来的上述通信协议控制信息的命令进行处理时所需的开销,另一种是将上述输出数据复制在上述通信协议控制信息中连续的区域内所需要的系统开销)进行比较,当后一种系统开销小时,即将上述通信规定控制信息和上述输出数据设定在连续的区域内,同时生成按站点划分的数据管理信息组,并转输至上述驱动部。
12.一种计算机系统中的输入输出指令的发送方法,该计算机系统备有多个输入输出装置、与该多个输入输出装置连接的适配装置、以及通过该适配装置将输入输出请求传输至上述输入输出装置的主处理装置,该输入输出指令的发送方法的特征在于它包括从上述主处理装置以一次输入输出起动指令发送对上述多个输入输出装置的多个输入输出命令的步骤;由上述适配装置将上述一次输入输出起动指令中包含的对多个输入输出装置的多个输入输出命令具体指定是针对某个输入输出装置的输入输出命令的步骤;以及由上述适配装置将对上述多个输入输出装置的多个输入输出命令分别发送至上述特定的输入输出装置的步骤。
13.一种计算机系统中的输入输出指令的发送方法,该计算机系统备有多个输入输出装置、与该多个输入输出装置连接的适配装置、以及通过该适配装置将输入输出请求发送至上述输入输出装置的主处理装置,该输入输出指令的发送方法的特征在于在上述主处理装置中,包括当在产生对上述输入输出装置的输入输出请求后,不能立即处理该输入输出请求时,则将该输入输出请求保留在排队请求管理表中,并进行管理的步骤;以及当输入输出请求成为可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,以每个输入输出装置为单位,生成将应发送至上述各输入输出装置的输入输出命令连起来的串列(即命令串),并以一次输入输出起动指令,将这些命令串发送给上述适配装置的步骤;在上述适配装置中包括将上述一次输入输出起动指令中包含的多个命令串具体指定是针对某个输入输出装置的命令串的步骤;以及将上述多个命令串中的各输入输出命令分别发送至上述特定的输入输出装置的步骤。
14.权利要求13所述的输入输出指令的发送方法,其特征在于还包括在上述输入输出装置中被发送的输入输出命令经过处理结束后,将结束中断信号发送至上述主处理装置的步骤;以及上述主处理装置以来自上述输入输出装置的输入输出命令的结束中断信号为契机,判断是否可能对输入输出请求进行处理,当可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,以输入输出装置为单位,生成将应发送至上述各输入输出装置的输入输出命令连起来的串列(即命令串),并以一次输入输出起动指令将这些命令串发送至上述适配装置的步骤。
15.一种计算机系统中的输入输出指令的发送方法,该计算机系统备有多个输入输出装置、与该若干输入输出装置连接的适配装置、通过该适配装置将输入输出请求发送至上述输入输出装置的主处理装置,同时该主处理装置备有执行应用程序的应用执行部和处理从该应用执行部发送来的输入输出请求的驱动部,该输入输出指令的发送方法的特征在于包括以一次输入输出起动指令,从上述主处理装置中的驱动部发送对上述多个输入输出装置的多个输入输出命令的步骤;由上述适配装置将上述一次输入输出起动指令中所包含的对多个输入输出装置的多个输入输出命令具体指定是针对某个输入输出装置的输入输出命令的步骤;以及将上述多个输入输出装置的多个输入输出命令分别发送至上述特定的输入输出装置的步骤。
16.一种计算机系统中的输入输出指令的发送方法,该计算机系统备有多个输入输出装置、与该多个输入输出装置连接的适配装置、以及通过该适配装置将输入输出请求发送至上述输入输出装置的主处理装置,同时,该主处理装置备有执行应用程序的应用执行部和处理从该应用执行部发送来的输入输出请求的驱动部,该输入输出指令的发送方法的特征在于包括下述步骤,即在上述主处理装置中的驱动部中,当产生来自上述应用执行部的输入输出请求后,不能立即处理该输入输出请求时,将该输入输出请求保留在排队请求管理表中,并进行管理的步骤;以及当输入输出请求的处理成为可能时,根据该时刻保留在上述排队请求管理表中的输入输出请求,以每个输入输出装置为单位,生成将应发送至上述各输入输出装置的输入输出命令连成的串列(即命令串),并以一次输入输出起动指令将这些命令串发送给上述适配装置的步骤。在上述适配装置中,将上述一次输入输出起动指令中包含的多个命令串具体指定是针对某个输入输出装置的命令串的步骤;以及将上述多个命令串中的各输入输出命令分别送给上述特定的输入输出装置的步骤。
17.权利要求15或16所述的输入输出指令的发送方法,其特征在于还包括在上述主处理装置中的驱动部中,在从上述应用执行部接收数据的输入请求之前,以一次输入输出起动指令将对上述多个输入输出装置的多个输入命令先输出至上述适配装置的步骤。
18.权利要求17所述的输入输出指令的发送方法,其特征在于上述使输入命令先出的步骤包括在上述驱动部经过初始化之后,以每个输入输出装置为单位,生成将输入命令连成规定的最大发送数的输入命令串后发送给上述适配装置的步骤;记录发送给各输入输出装置的输入命令数的步骤;以及每次从上述各输入输出装置收到输入命令的结束报告后,从上述存入的、相应的输入输出装置的未结束输入命令个数中减1,通过该处理,如果该输入输出装置中的未结束输入命令个数位于规定个数以下时,算出上述存储的未结束输入命令个数与上述最大发送个数之差,将相当于该差数的输入命令连成的输入命令串再次发送给上述适配装置的步骤。
19.权利要求15或16所述的输入输出指令的发送方法,其特征在于还包括在上述主处理装置中对于从上述应用执行部发送的与数据输送请求有关的数据进行分割处理,将通信协议控制信息加在该经过分割处理后的各输出数据的开头,从而生成多个分割信息包的通信协议处理的步骤;以及在上述主处理装置中的驱动部中,当上述多个分割信息包数小于在该时刻未曾收到来自对应的到达确认信息的状态下而能连续传输的信息包数(即连续输送数)时,根据上述多个分割信息包,生成多个输入输出命令,通过将生成的多个输入输出命令作为一次输入输出起动指令发送,用一次输入输出运作方式输送上述多个分割信息包中的输出数据的步骤。
20.根据权利要求15或16所述的输入输出指令的发送方法,其特征在于还包括在上述主处理装置中对于从上述应用执行部发送来的与数据输送请求有关的数据进行分割处理,分别生成按站点划分的输出数据的数据管理信息组,并在该经过分割处理后的输出数据的开头部分添加符合通信协议规定的控制信息(即该通信协议控制信息加输出数据),从而生成按逻辑划分构成的分割信息包那样的通信协议控制信息,并生成按站点划分、符合该通信协议规定的控制信息的数据管理信息组的通信协议处理步骤;以及根据上述通信协议控制信息(它是由上述通信协议处理步骤输出的按站点划分的其它数据管理信息)和上述输出数据,通过对两种系统开销(一种是处理由上述适配装置输送来的上述通信协议控制信息的命令所需的系统开销,另一种是将上述输出数据复制在上述通信协议控制信息中的连续的区域内所需的系统开销)进行比较,当后一种系统开销小时,将上述通信协议控制信息和上述输出数据设定在连续的区域内,同时,生成按站点划分的区域的数据管理信息组,并将其转输至上述驱动部的重分包处理步骤。
全文摘要
在备有多个输入输出装置、与它们连接的适配装置及通过适配装置将输入输出请求发送至输入输出装置的主处理装置的计算机系统中,由主处理装置以一次输入输出起动指令发送对多个输入输出装置的多个输入输出命令,用适配装置具体指定在该一次输入输出起动指令中包含的对多个输入输出装置的多个输入输出命令是针对某个输入输出装置的输入输出命令,并将输入输出命令分别发送至特定的输入输出装置。
文档编号G06F13/12GK1125868SQ9511530
公开日1996年7月3日 申请日期1995年7月25日 优先权日1994年7月26日
发明者近藤毅, 平田俊明, 松永和男, 高田治 申请人:株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1