作为对这部分说明的介绍,本发明的系统和方法实施:合作执行的任务的中央化调度,时间确定事件的运行,以及有效实时同步化和网络上的多台计算机(也称作“成员节点”)上相应的振荡器的校准。在这一点上,这个时间确定的网络包含基于时间的而不是基于某种事件(例如一个信号的接收或检测到一条特定总线可用)的在分离的计算单元之间的通信。合作执行的任务的中央化调度,时间确定事件的运行,以及有效实时同步化和网络上多台计算机上相应的振荡器的校准需要计算机对实时的一个真实时刻的数据逻辑表象共用一个精确相同的表观。举例来说并对这个例子假定(这并不限制本发明的范围),全系统范围需要百万分之一秒的精度,这意味着,该系统中的两台不同的计算机必须知道,当被本网络权威的时间源定义的实时时刻为08:00:0000000小时时,两台计算机中的第一台具有实时的该时刻的数据逻辑表象在07:59:9999995到08:00:0000005之间,而两台计算机中的第二台具有实时的该时刻的数据逻辑表象也在07:59:9999995到08:00:0000005之间;正如可以断定的那样,两台计算机对实时的该时刻的数据逻辑表象的差别不大于百万分之一秒。
当一个散布的网络中的计算机对实时的一个真实时刻的数据逻辑表象共用一个精确相同的表观时,它们就可以被编程根据时间来执行特定的任务。涉及多台计算机的任务可以实现中央调度,并且为在地理上散布的计算机中以确定的方法引起时间相关的活动奠定了基础。从这个意义上说,在预定的实时时刻发生一个预定事件的特征是实时操作的确定性。
在计算机之间的通信中使用这样的时间协同也使动态冗余的使用容易起来。在动态冗余中,有两台或更多的计算机各自执行完全相同的逻辑,交换这些操作的结果,可选地裁定这些独立得到的结果以为进一步使用取得共同理解的联合结论,并运行以共同影响该结果。当被各计算机接收到的数据在结果仲裁之前被其它执行同样逻辑的计算机共用时,就能最有效地进行这个过程,所以必须存在这样一些机制,靠它们来共同确定仲裁处理开始的时间。在本发明中,提供冗余计算机之间时间同步并调度关于一个通信示例的任务的机制是(1)在计算机中提供一个完全相同的一个实时时刻的数据逻辑表象;(2)当在计算机中将发生通信示例时,使用一种调度方法来确定该计算机的时刻;以及(3)然后在这个为通信示例定义的时刻发生的通信示例所涉及到的各系统中实施合适的发送、接收和连接任务。以这种方式,将要执行上面提及的仲裁任务的时刻是在调度好通信任务之后就预先确定了的(与在实际执行了通信任务之后再等待确定仲裁任务的起始时间的方法相反)。
本调度方法是靠执行调度逻辑来实施的。逻辑的概念与软件(计算机程序)有关,它的目的是由一个可执行该软件的电子电路系统(通常以术语“计算机”称之)在执行该软件的过程中达到的。被用于通信调度的调度逻辑是基于对已调度的资源(例如指定的计算机、各计算机中的数据空间、各计算机的执行时间、各计算机中的指定电路)的命令所做的分析。这个调度逻辑被用于网络通信的调度,但它还可以应用于任意一个与另一个之间需要交互作用的资源的调度,而且它特别适合于实时的应用。调度逻辑还被设计成能够负责相应资源的调度和可从输入(这是网络中任意两个计算机之间连接要求的集合)预计要产生它的输出,即一个调度表,所需要的时间的量。为完成这个任务,调度逻辑调度对生成调度表具有最多时间要求的可用资源。这个说明中描述的特定的调度逻辑在这里也被称作表观关键资源或ACR调度逻辑,它反映了该操作的以下特性(1)估计在调度表的各点具有最高要求的资源和(2)赋予具有最高要求的资源优先权。本说明书中特别描述的调度逻辑被称为ACR调度逻辑。在这一点上,在优选实施例中,一旦一个特定的任务被调度了,它不被移出调度表以在调度表中寻求它的替代者,调度逻辑在这个意义上说是不重复的。正是这个品质使得调度逻辑的优先ACR调度逻辑类型非常适合于实时应用。
在调度逻辑的网络通信调度应用中,考虑到了发射资源和接收资源的存在。每次调度网络通信,一个发射资源总是与一个接收资源相连。
在这个网络通信调度中,主调度器和成员节点各有其责。
图1表示了一般单元和在散布的网络中的不同的一般单元之间的关联数据流的数据流示意图130,并且显示了一个消息载体100,第一个成员节点107和第二个成员节点108,一个用来经由数据信道101和数据信道102协调成员节点107,108之间的通信的主调度器106,用于获得成员节点107,108之间的同步的时钟选择(如时钟109,和备选时钟110)(经由数据信道104,数据信道105,数据信道101,和数据信道102),以及初始数据表和在这个散布的计算环境中有效交互作用所需的交换(经由经由数据信道118,数据信道117,数据信道119,数据信道120,和数据信道121)。
时钟109被通过消息载体从主调度器分配给成员节点(或者,消息载体100也能将备选时钟110分配给成员节点107,108和主调度器106)。这就允许所有连在消息载体上的成员节点共有一个共同的时间表观。在这一点上,时钟109代表了一个环绕物理的地球(如在北美,在欧洲,以及在亚洲)使用的全局的时钟,而备选时钟110则代表为网络设计的仅被消息载体100应用的时钟,另一方面,由一台计算机担任消息载体100的情况为散布的网络中与之相连的计算机任意地定义时间。时钟109或时钟110对应地经由连结104或105周期性地输出公共时钟信号。
各成员节点107,108负责接收公共时钟信号;有效地与该公共时钟信号“同步”(用相应的公共时钟信号的时间定义将节点的时间定义校准到一个很小的公差内,用以根据与已建立的时钟频率和固定点同步的操作创造系统时间);从主调度器106接收适当的当地事件表114,116;根据接收到的当地事件表116,114和任何在当地事件表114,116种没有描述的附加任务制定相应的任务执行表;执行任务执行表;产生通信请求表113,115;并且向主调度器106发送该任务执行表。各成员节点107,108根据需要节点107,108的任务产生连接请求表113,115,并且在前述时间通过消息载体100将这些请求传递给主调度器106。主调度器106将从成员节点来的连接请求表113,115结合起来放进综合请求表111,它被用来产生总事件表112所代表的通信调度表。然后这个总事件表112被分成能应用于各成员节点107,108的片段并通过消息载体100(也在前述时间)传送给成员节点107,108以存储进当地事件表114,116。当地事件表114,116被成员节点用于对合适的时间相关任务,包括与其它成员节点的通信,的时间控制。
图2描述了散布的计算单元网络220,它们分布在全世界物理上不同的位置上,它显示了图1的数据流图130所提出的情况的一个例子。这个图包括计算机201-214和两个时间源构成的网络,这两个时间源是代表相应于时间流图的时钟109,110的时钟203和时钟204;在这一点上,图2显示了时钟203作为北美和欧亚的所有系统时间定义的基准,而时钟214则为小于全球分布的位于非洲的计算机206,207,208,209和214的主机确定一个时间定义基准。这里要注意时钟203“图示”了图1的数据流图流程中的时钟109,而时钟214“图示”了图1的数据流图流程中的时钟110。在图2里描绘了散布的计算环境的两种可能形式(有助于联合的消息载体100,主调度器106和时钟104,105)。散布的计算环境可能被局限于一个地理上有限的区域,或者散布于全世界。当散布于大的地理区域时,时钟203可能是一个卫星时间分配系统,如全球定位系统。
图3表示了一个总线结构330的网络示意图。图3显示了图1中的基本部分,只不过消息载体100是一个将成员节点107,108与主调度器106相连的总线300。
图4显示了一个分散的计算环境,其中网络被布置成环形布局430。图4显示了图1中的基本部分,只不过消息载体100是由有效地将成员节点107,108与主调度器106连接起来的弧402,403,405和401构成的环形。
图5表示了转换星形布局530的网络示意图,它是优先的网络体系结构实施例。图5也显示了图1中的基本部分,只不过消息载体100明显地是一个布置成星形布局的转换网络,这种布局将成员节点107,108与主调度器106连接起来,并且主调度器106是包含在网络交换器501内部的。这个示意图显示了优先的实施例,因为它能通过可能在地理上分散布置的大量输入/输出处理装置和计算平台被用于大型制造过程(用于在一个设备中完成物质制造的制造过程,这个设备的可移动部件用来自一个计算机控制系统的控制信号实现实时变更,这个系统执行从设备读取量度数据和输出控制信号的逻辑)。这个星形布局网络530能够为实施制造过程而通过I/O(输入信号/输出信号)接口510,I/O接口522,I/O接口519,I/O接口512,I/O接口513,I/0接口520,I/O接口521对相应的设备读取测量数据和输出控制信号。I/O接口510,I/O接口511,I/O接口512,和I/O接口513都经环引出口508和环引出口509通过局域网515与控制计算机504和记录计算机505相连。以类似的方式,I/O接口522,I/O接口519,I/O接口520,和I/O接口521都经环引出口518和环引出口517通过局域网514与控制计算机506和记录计算机507相连。I/O接口510,I/O接口511,I/O接口512,I/O接口513,环引出口508,环引出口509,控制计算机504,记录计算机505和局域网515以局域逻辑的整体性和高度的实时数据逻辑的内聚性运行。以类似的方式,I/O接口522,I/O接口519,I/O接口520,和I/O接口521,环引出口518,环引出口517,控制计算机506,记录计算机507和局域网514以局域逻辑的整体性和高度的实时数据逻辑的内聚性运行。网络交换器501使得
(a)I/O接口510,I/O接口511,I/O接口512,I/O
接口513,环引出口508,环引出口509,控制计算机
504,记录计算机505和局域网515
和
(b)I/O接口522,I/O接口519,I/O接口520,和
I/O接口521,环引出口518,环引出口517,控制计算机
506,记录计算机507和局域网514之间的内聚性能够发送,这个网络交换器实施(1)给计算机中提供实时中的一个时刻的完全一致的数据逻辑表象的通信;(2)在计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503中任意两各之间经使用网络交换器501的各次通信示例发生的时间内,为控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502,和网络交换器501确定各个时刻的主调度器106的程序;(3)在为通信示例确定的时间对该通信示例所涉及的部件适时地发送、接收和链接任务。作为单一的信息源,网络支持502确定星形布局530中可接受的通信伙伴,也累计并向星形布局530中的诊断信号提供访问,它被作为一个节点与转换星形布局530协同。网络交换器501参考网络支持502列出星形布局530中可接受的通信伙伴并确认那些在确定发送接收和链接任务时有悖于该列表的通信示例需要。
在一个实施例中,I/O接口522,I/O接口519,I/O接口520,和I/O接口521很容易由一个如美国专利第5,555,424(24Sederlund等)所描述的进程控制系统来实现。这个于1996年9月10日授权的专利授予Sederlund,Edward R.;Lindesmith,RobertJ.;Root,Larry A.;Dupree,Wayne P.;和Thomas,Lowell V.的“具有可编址增量的扩展的哈佛体系结构计算机存储系统”。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
在一个更优先的实施例中,I/O接口522,I/O接口519,I/O接口520,和I/O接口521很容易经由在一个使用两台进程控制计算机(如24Sederlund等所描述的进程控制计算机)的一般的进程控制系统中的一个冗余进程控制计算机系统,如美国专利第5,583,757(Baca,Jr.等)所描述的系统来实现,这个于1996年12月10日授权的专利授予Baca,Jr.Eloy;Dupree,Wayne P.;Grinwis,DonaldJ.;Kanse,Johannes C.;Pelletier,Douglas P.;和Schlze,Oscar E.的“用于动态冗余进程控制计算机的输入信号分辨方法”。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
于1996年10月22日授权的美国专利5,568,615(15Sederlund等)授予了Sederlund,Edward R.;Thomas,NadeneT.;Lindesmith,Robert J.;和Cowles,Russel W.的“用于进程控制计算机的Stealth接口”,其中描述了一个用于24Sederlund等所描述的进程控制计算机获得数据访问的一个实施例。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
于1995年6月27日授权的美国专利5,428,769(69Glaser等)授予Glaser,Robert S.;Hoy,Robert S.;Fernandez,G.Paul;和Grai,和Timothy J.的“有三重冗余远场单元的进程控制接口系统”,其中描述了一个与24Sederlund等所描述的进程控制计算机一起使用的提供远场单元的系统的一个实施例。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
于1992年9月29日授权的美国专利5,151,866(66Glaser等)授予Glaser,R.Steven和Bade,Jeffrey M.的“高速功率分析”,其中描述了一个与69Glaser等所描述的远场单元一起使用的提供用来读取功率分配系统中电流的接口的系统的一个实施例。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
在以下美国专利中
(a)于1996年5月21日授权的授予Allbery,Jr.,
James D.;Troisi,Peter.,A.;Johnson,Susan J.;Cullen,
James H.;Butler,Richard L.;Ferreira,James P.;Ellison,
Joseph;Patel,Chiman L.;Uban,James E.;和Schultz,Dale
H.的“能对相应数据系列进行的时间校准的智能进程控制
通信系统和方法”的美国专利5,519,603(Allbery,Jr.
等);
(b)于1995年6月27日授权的授予Bruijn,Ronny
P.;Verboven,Marc L.K.;van Weele,Leonardus A.;
Vermeire,Roger R.;Schultz,Oscar E.;Schultz,Dale H.;和
Bell,Brian G.的“使用新随机数的用于在通信时间期限结
束之前重新建立第一台和第二台计算机之间限时通信的安
全通信系统”的美国专利5,428,745(45de Bruijn,
等);和
(c)于1996年10月1日授权的授予de Bruijn,
Ronney P.;van Weele,Leonardus A.;Verboven,Marc L.K.;
Vermeire,Roger R.;Schultz,Oscar E.;Bell,Brian G.和
Schultz,Dale H.的“靠检查与命令中可变的标识符相联系
的允许指示器的状态来决定是否发出命令来控制计算机的
系统与方法”的美国专利5,561,770(70de Bruijn,
等);描述了一个与冗余进程控制计算机系统一起使用的提供高速路由的系统的实施例。
在这里特地将这些专利引用合并于本应用中以显示获得和使用本发明的方法。
于1997年5月20日授权的美国专利5,631,825(van Weele等)授予van Weele,Leonardus A.;de Bruijn,Ronney P.;Vermeire,Roger R.;Zemiering,Christo;和Lenting,Ben的“用于制造进程控制系统的操作站”,其中描述了一个与冗余进程控制计算机系统和上述专利中描述的接口一起使用的提供面向人类的接口的系统的实施例。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。尽管这个面向人类的接口可以被I/O接口522,I/O接口519,I/O接口520,和I/O接口521中的每个或任意一个作为用户接口使用,还是应该注意到在转换星形布局530的特例中,用户接口503是优先为经网络交换器501到整套系统的接口设计的。
(a)于1996年2月13日授权的授予Pressnall,Dana W.;Polishak,Jeffery T.;Felix,Bradley K.;Durisin,Michael J.;和Ellison,Joseph的“用于动态冗余计算机化进程控制的信息显示系统”的美国专利5,491,625(Pressnall等)和(b)于1995年4月18日授权的授予Van de Lavior,Ronny;Follon,Marinus(Neerpelt,BE);和Ravenscroft,Ian的“用于动态冗余计算机化进程控制的信息显示系统”的美国专利5,408,603(Van de Lavior等)中描述了一个对在上述系统中执行的应用程序代码提供实时解释的系统的实施例。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
一个提供面对人类的接口的大型图形总览系统与操作站一起被应用于这个优选实施例中。于1998年3月10日授权的授予John L.Clement的美国专利5,726,668(Clement)中描述了这个大型图形总览系统。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的方法。
在一个概念化的最优先的实施例中,用一个由Wayne Dupree,Jeffery Lucas,Larry Root,Gerrit Verniers,和Stephen Churchill于1997年2月12日存档的名为“一个专用流程循环(Context-Cycling)的计算机”的08/797,967号美国专利申请中描述的专用流程循环计算机,I/O接口510,I/O接口511,I/O接口522,I/O接口519,I/O接口512,I/O接口513,I/O接口520,I/O接口521,环引出口508,环引出口509,控制计算机504,记录计算机505,环引出口518,环引出口517,控制计算机506,记录计算机507,I/O接口522,I/O接口519,I/O接口520,I/O接口52l,环引出口518,环引出口517,控制计算机506,网络支持502,网络交换器501,记录计算机507相继被使用。这个专用流程循环计算机带有提供与场检测仪的接口的69Glaser等的系统。在这里特地将此专利应用引用合并于本应用中以显示获得和使用本发明的方法。
这个流程循环处理器向大量和不同的输入输出回路提供指定回路,各指定回路至少拥有一个专用记录器以在另一个流程处于当前状态时保持与回路或功能相关的有关资源、属性、或外观的进程和配置状态;还提供指定回路和根据一个流程建立电路系统的专用记录器的组合。流程也包括特定用于电路系统的相关逻辑。多个流程在CPU中共享公共资源。
于1997年8月5日授权的美国专利5,655,133(Dupree等)授予Dupree,Wayne P.;Churchill,Stephen G.;Gallant Jeffery R.;Root,Larry A.;Bressette,William J.;Orr,Ⅲ,Robert A.;Ramaswamy,Srikala;Lucas,Jeffery A.;和Bleck,James的“大规模超纯量哈佛体系结构的计算机”,其中描述了与组织程序循环计算机共同使用的需要的协处理器。在这里特地将此专利引用合并于本应用中以显示获得和使用本发明的优先期望的方法。网络交换器501也优先使用能实施至少99个平行或连续通信链接的纵横接线器(Xbar)516。
在网络交换器501中使用主调度器106来提供公共时钟信号(即时钟109的取数或时钟110的显示),并且还负责时钟信号分配;从各成员节点107,108(在网络530的这个特例中,控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501都是图1中数据流流程中的成员节点107和108的例子)收集请求;为各成员节点107,108调度通信任务;向各成员节点107,108发送调度表;以及实施成员节点107,108之间的连接。
分配一个共用时钟信号的目的是使网络530上的各节点108,107具有对时间的相同理解。具有对时间的相同理解在本发明是至关重要的,因为任务的调度是基于时间进行的。因此,共用时钟信号用来有效地将所有节点108,107同步到共用时间。在预定周期的基础上,网络交换器501中的主调度器106发送一个消息给节点108,107中的每一个以确定时间周期的开始。
每个调度周期从各成员节点107,108(控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501中的任意一个)收集一次连接请求。各调度周期网络交换器501中的主调度器106都留出时间来接收来自各成员节点107,108(控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501中的任意一个)的连接请求。通信请求来自于需要被请求的通信的成员节点107,108。网络交换器501中的主调度器106接收每个请求并在其调度逻辑中考虑这些请求。每个请求都包含通信的源、目标和长度方面的信息。另外,各请求还可能包含优先级指示符和向在目标节点上执行的特定应用发送其信息所需的信息。当从所有的成员节点107,108收集连接请求的任务完成以后,其结果被收集进一个综合请求表111。注意在综合请求表111入口可能在网络交换器501中的主调度器106内部初始化其本身;特定的连接请求也可能具有重复特性,例如由单一信号在未来一系列时间周期里引起多次连接。
然后网络交换器501中的主调度器106调度未来将发生的通信。虽然在本说明中讨论的表观关键资源是优先的方法,但在时间确定网络的功能中为执行通信调度所使用的方法并不是决定性的。逻辑给需要的通信分配时间。可以用以下三种方式决定在调度周期中何时停止调度过程:第一,所有可被调度的通信请求都已经被调度,因此不存在剩余的调度任务;第二,没有剩余的执行调度的时间(处理器必须停止调度过程以继续它的下一个任务);第三,存在多于在可用的调度窗口里所能调度的所需连接(带宽耗尽),在这种情况下过剩的请求被保持在队列中等待下次调度尝试。
发生的调度被存进总事件表112。这个总事件表112除了包含与综合请求表111中同样的信息之外,还包含已调度的通信的起始时间621。注意,可能总事件表112中预先装载了一定的任务以绕过调度过程,正如增强任务的特时间确定间调度需求所需要的那样。
然后网络交换器501中的主调度器106向各相应的成员节点传递当地事件表114,116(调度表的一部分,它适合于特定的成员节点107,108)。出现在总事件表112中的以成员节点107,108作为源或目标的各个事件都在当地事件表114,116存在入口。任何一个涉及任意通信的成员节点107,108(控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501中的任意一个)接收它的当地事件表114,116。
然后网络交换器501中的主调度器106根据出现在总事件表112中的被分配的时间实施连接。当使用无阻塞转换的优选实施例时,这些连接的过程导致可能出现多个连接同时被实施的情况。
位于网络交换器501中的主调度器106中的综合请求表111可能包含没有临时改变地实施连续的重复连接,或者动态需要的连接(当需要时才实施,通常由网络上的一个节点提出需要)。这个连接请求表至少包含一个源指示符、一个目标指示符和一个时长指示符(见显示记录细节600的图6)。另外的与调度相关的参数选择性地包括如优先级指示符617这样的指示符。
图6显示了用于调度和任务协调过程的原始表和信息的组合600。连接请求表115在成员节点107,108中和当网络交换器501中的主调度器106中在结合成综合请求表111时,均具有源614,目标615,长度616和可能的优先级617的区域610。在主调度器106中的调度器逻辑611使用这些区域610中的数据以带有区域612的总事件表112的形式来为个次连接的源618,目标619,长度620和起始时间621构造调度表。注意调度器逻辑611从连接请求表111中提取源614,目标615和长度616,尽管起始时间621是调度过程本身的产物。
当地事件表114,116只是总事件表112的简单的子系,总事件表112被分成那些可应用于相应的成员节点107,108(控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501中的任意一个)的部分-不需要对区域613做任何操作。虚拟通道601,602,603,606,607和608显示了从连接请求表区域610到当地事件表区域613的信息流。虚拟通道604显示了调度表的优先级617的输入;虚拟通道609显示了从调度器逻辑611传递来的起始时间621,625。
然后调度器逻辑611用这些数据得出调度表以提供需要的连接。调度器逻辑611的调度过程的结果被记录在总事件表112中,总事件表又转而被进行句法分进入相应的当地事件表116中以分配给网络节点(见图1)。这些事件表包括源622,目标623,时长624和起始时间625的区域613。
在网络节点中,当地事件表114,116与当地任务表合并在一起并且执行逻辑以确保能完成所有要做的工作和所有对应于(或与之无冲突)被调度器逻辑611指定的时间调度。
图7概述了一般的调度过程710。在预定的请求接收周期内收集连接请求。经过预定的时间周期后,必须处理大量的连接请求。更多的连接不被禁止,但必须建立一个截断点。图7显示了在网络交换器501中的主调度器106中的调度连接请求所需要的基本步骤。前三步701-703为所有节点提供校准的时间定义。在步骤704中,从所有成员节点107,108(这些节点在它们的当地任务调度表预定的时刻从优先的操作发送它们的请求作为一次通信)接收连接请求。在步骤705中,当调度过程应用于那些在表示结束的特殊的时间段窗口中从成员节点107,108收集到的那些请求时,连接请求过程停止以便能为未来确定调度表。一旦请求已被收集(详见图8),调度连接请求的步骤706就可以开始。步骤707中,一旦完成了该调度,就从总事件表112中抽取适当的部分创建当地事件表114,116,然后在步骤708中传递给节点107,108以备在步骤709中实施。
一般对于散布的计算环境,节点107,108之间可能在任何时刻需要连接,这意味着连接请求可能开始于任何时刻,并且必须允许一些处理这些连接的服务时间。存在四个过程,并在网络530中以与想要的响应一致的速度重复执行:收集连接请求,调度连接请求,向网络节点分配产生的调度表,通过网络530经已建立的所需连接通信(见表1)。
表2显示了这四个过程的时间关系,如声明的那样,这四个过程一直在进行。
表2-调度流程
请求连接 | | | |
请求连接 |
调度连接 | | |
请求连接 |
调度连接 |
传递调度A | |
请求连接 |
调度连接 |
传递调度B |
通信A |
请求连接 |
调度连接 |
传递调度C |
通信B |
请求连接 |
调度连接 |
传递调度D |
通信C |
请求连接 |
调度连接 |
传递调度E |
通信D |
请求连接 |
调度连接 |
传递调度F |
通信E |
注意在表2最右侧的列中通信总是发生在为通信建立基础的最初几次重复之后。对在一个时间段窗口中的任意一个特定的通信,都要在其前面的时间段窗口中传递被实施的通信调度表,而请求在调度表传递之前的时间段窗口中被调度,并且还要提出在调度之前这些请求。在这个流程中可以存在时间调度上的变化,但个流程这与优选实施例中的流程相似。
当前优选实施例中使用的逻辑的设计带有两个目的:必须得到有效的调度表,以及产生这个调度表所需的循环数必须被限制在合理的水平。有效调度涉及一个基于以下前提的简单过程,即综合调度表的效率首先是一个有效率的功能使得在该调度表中资源被尽可能地利用。这意味着在调度过程中要一直确保具有最高待执行要求的资源得到优先调度。为在可接受的时间里得到调度表,逻辑被设计成每个请求被调度一次并只被调度一次(尝试和错误逻辑被认为不可接受),并对每个连接请求有有限的处理要求。
如图8所示,调度806中的基本过程如下:
1)确定衡量资源要求的判据;
2)根据关键性将资源分类;
3)按资源关键性的顺序提供在本步骤中所能提供的连
接;
4)进一步完成前面已经被处理的任务因而腾出可用的
资源;
5)重复步骤2-4直至所有请求都被处理过或直至没有机
会处理更多请求为止。
在这个调度过程中,任何不能被处理的请求可以在下一个调度过程中再次被提出。
图8的流程图概括了在一个表观关键资源的调度逻辑中使用的过程。第一步是确定衡量资源使用量的判据800,对于本优选实施例,发送和接收通道就是已调度的资源,而各资源的使用时长就被选为判据。
一旦确定了资源的使用量,就被按使用量801分类。这允许使用最多的资源在步骤802中被首先调度。当所有能被调度的资源都已被调度时(现有请求的连接可能不需要或不允许所有资源的同时使用),在步骤803中调度的时间段窗口前移直至所有可利用的资源全部可用为止。如果还有更多需要处理的连接请求并且在调度表中还有处理这些请求的时间,在步骤804决定了对应于对是否需要一次从步骤801到803的重复这个问题之后,就回重复这个过程。根据调度示例已完成的步骤804的决定,调度器逻辑的子过程806进行到步骤805退出。
图9表示了表观关键资源(ACR)的优选实施例的调度逻辑的子过程950的更详细的概貌。作为图8所示过程的优先的实施,这个简图围绕这图8中提到的步骤并增加了一些条件运算和例外处理所需的动作。步骤901代表优先的ACR过程的起始点。在步骤902中,建立ACR表,在步骤903中,根据ACR表中的SAV值(如果该值指示在ACR表中没有请求,就立即执行步骤918退出)确定未调度请求的存在。如果存在请求,ACR子过程950进行步骤904计算窗口大小,步骤905搜寻指定的请求,和步骤906检查指定的请求和通信双方的存在。如果该请求和通信双方存在,该过程就在进行步骤914中下一个请求之前进行步骤912将该事件加入事件表中并在步骤913中调整ACR路径。如果步骤915中的高值为零,ACR中(未来)时间的确定就在步骤916前移,步骤917检查带宽以确认在这个调度运行中有足够的时间进行进一步调度,然后为下一个请求过程返回步骤914。如果在步骤906中,通信的接收者不存在,就在步骤907中定义替代接收者并在步骤908中给予评价。如果步骤908没有定义替代接收者,就在步骤919中选择一个替代发送者并在步骤920中给予评价;如果可接受(步骤920),步骤921选择选择具有最高ACR值的接收者并且过程返回908;如果不可接受(步骤920),过程进入步骤916。当步骤908中定义了替代者时,过程经由步骤909,910和911到912进行调度。考虑一个对应于表3显示的一个包含五个节点的假设网络的通信请求的例子,通过这个例子可以很好地描述按上述步骤执行的虚拟数据逻辑过程。
表3:初始请求表
源 |
目标 |
长度 |
优先级 |
1 |
2 |
15 |
1 |
1 |
4 |
23 |
1 |
1 |
5 |
2 |
1 |
2 |
1 |
24 |
1 |
3 |
1 |
16 |
1 |
3 |
1 |
12 |
1 |
3 |
2 |
20 |
1 |
3 |
3 |
8 |
1 |
3 |
4 |
19 |
1 |
3 |
4 |
16 |
1 |
3 |
5 |
4 |
1 |
3 |
5 |
9 |
1 |
4 |
1 |
13 |
1 |
4 |
5 |
9 |
1 |
5 |
1 |
21 |
1 |
5 |
1 |
8 |
1 |
5 |
2 |
8 |
1 |
5 |
3 |
1 |
1 |
5 |
4 |
18 |
1 |
| | | |
总计 | |
246 | |
假定长度是以任意时间单位测量的,可能是毫秒,并且有n个不同的优先水平,从1到n,其中1是最紧急的而n是最后的。
首先,注意广播型网(其中所有交互行为都需要共享带宽,例如具有命中探测的载波检测多址或CSMA/CD网络)完成上述请求所需的服务时间在理论上最少需要246时间单位。
无阻塞交换器的引入允许五个发射资源和五个接收资源同时运行。为分析应用无阻塞交换器的好处,本例的调度器逻辑首先建立一个表评估各资源上的要求,如表4:
表4:初始汇总访问值
X/R | |
1 |
2 |
3 |
4 |
5 | |
SAV |
| | | | | | | | |
1 | |
- |
15 |
- |
23 |
2 | |
40 |
2 | |
24 |
- |
- |
- |
- | |
24 |
3 | |
28 |
20 |
8 |
35 |
13 | |
104 |
4 | |
13 |
- |
- |
- |
9 | |
22 |
5 | |
29 |
8 |
1 |
18 |
- | |
56 |
| | | | | | | | |
SAV | |
94 |
43 |
9 |
76 |
24 | |
246 |
总计的访问值,或SAV,就简单地是发送者(X-表的行)和接收者(R-表的列)的交互作用次数的行或列的总和,并反映了在特殊资源上的以任意时间单位量度的要求的总和。注意选用无阻塞交换器后处理请求所需的理论最小时间从246时间单位降到了104时间单位。由于发送者3具有最高的SAV,而当发送者3被处理时,其它发送者通常也可以被处理,所以这些请求的最小服务时间受发送者3制约。当理论下限可能为104时间单位时,实际最小服务时间可能会较长并且甚至可能依赖于连接被处理的次序。但是,下个目标是确定最佳调度方法以使现有网络的能力最大化(最小化所需的服务时间)。
对这个特殊的例子假设,合成的调度表应用于未来时间的时间段窗口,不论请求的组成和数量,该窗口都具有150时间单位时长。这个例子开始于为这个150单位的调度表查看在时间=0时所进行的连接。第一个目标,由SAV判断,是调度那些与发送者3和接收者1相关的请求。参照前面的初始请求表,本例的调度器逻辑找到一个具有16个时间单位时长的与发送者3和接收者1相关的请求。由于本例的调度器逻辑正在调度时间=0时的连接,并且本例的调度器逻辑具有150单位时长,本例的调度器逻辑将16字请求放进时间段调度窗口,并且将交互作用记录进事件表表5。
表5:中间事件表
源 |
目标 |
长度 |
优先级 |
起始时间 |
3 |
1 |
16 |
1 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
表5可以优先地表示成图10中的图1001。已调度的发送者3单元1002和已调度的接收者3单元1003表示出已调度的任务。
然后请求表一定以某种方式反映最后一个请求已被处理的事实。这个调整过的请求表可能类似于表6。
表6:中间请求表
源 |
目标 |
长度 |
优先级 |
起始时间 |
1 |
2 |
15 |
1 |
- |
1 |
4 |
23 |
1 |
- |
1 |
5 |
2 |
1 |
- |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
- |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
- |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
- |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
- |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
- |
| | | | |
总计 | |
246 | | |
由于发送者3和接收者1现在在时间=0时被占用,它们的状态一定要指出这一点,所以更新的SAV表随之有一些改变,现在可能类似于表7。
表7:中间汇总访问值
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
40 |
78 |
2 |
24 |
43 |
3 |
88 |
9 |
4 |
22 |
76 |
5 |
56 |
24 |
注意发送者3和接收者1的SAV已经被调整以反映已处理的请求。这是因为调度器逻辑继续给予调度表中命中最高的资源调度优先权。这个过程的发生是已其它资源的需要为代价的,并且在某些情况下被置入具有低SAV的资源的低效率可以导致这些资源在调度表的剩余部分具有比在起始时命中最高的的那些资源还要高的命中。由于这个原因,这个协定被称为表观关键资源调度(调度优先权总是给那些在所考虑的时刻出现在关键路径上的资源),或ACR调度。
明显地,本例的调度器逻辑应该试图调度从发送者5到接收者4的请求,既下面两个的剩下的可调度的与命中的调度有关的并行资源。由于存在这样一个请求,所以本例的调度器逻辑的执行使得那些表现在类似于表8,9和10。
表8:中间请求表
源 |
目标 |
长度 |
优先级 |
起始时间 |
1 |
2 |
15 |
1 |
- |
1 |
4 |
23 |
1 |
- |
1 |
5 |
2 |
1 |
- |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
- |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
- |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
- |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
- |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
0 |
| | | | |
总计 | |
246 | | |
表9:中间事件表
源 |
目标 |
长度 |
优先级 |
起始时间 |
3 |
1 |
16 |
1 |
0 |
5 |
4 |
18 |
1 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
表10:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
40 |
78 |
2 |
24 |
43 |
3 |
88 |
9 |
4 |
22 |
58 |
5 |
38 |
24 |
注意这个事件表显然是从请求表而来的已调度的请求的(按时间顺序)分类表。由于这个原因,各调度步骤的中间阶段未被显示出来。
重复前面的过程,本例的调度器逻辑调度一个1到2的通信示例请求(即从发送者1到接收者2的连接),并且这些表被调整为如下的表11和12:
表11:中间请求表
源 | 目标 | 长度 | 优先级 | 起始时间 |
1 |
2 |
15 |
1 |
0 |
1 |
4 |
23 |
1 |
- |
1 |
5 |
2 |
1 |
- |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
- |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
- |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
- |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
- |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
0 |
| | | | |
总计 | |
246 | | |
表12:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
25 |
78 |
2 |
24 |
28 |
3 |
88 |
9 |
4 |
22 |
58 |
5 |
38 |
24 |
本例的调度器逻辑接下来搜寻2到5的通信示例请求,但没有作出这样的请求。在确定下面被尝试的组合中存在几个选择,但最佳方案是根据带宽效率和处理费用之间的权衡选出的。(具有最小带宽命中,多个简单的法则可以被选择,对本优选实施例,在这个特殊的发送者被忽略并且下一个发送者被选择之后,为现有的发送者选择替代接收者直到所有接收者的选择被耗尽,并且命中最高的接收者被重新考虑为止-见图9。)
用这个逻辑,搜寻2到3的通信示例请求但没有找到,然后4到5的通信示例请求被搜寻、被找到并被选择。SAV表被更新,并确定在时间=0时没有其它可进行的连接。事件表现在被显示为表13。
表13:中间事件表
源 |
目标 |
长度 |
优先级 |
起始时间 |
3 |
1 |
16 |
1 |
0 |
5 |
4 |
18 |
1 |
0 |
1 |
2 |
15 |
1 |
0 |
4 |
5 |
9 |
1 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
这四个连接也可以被图11中的调度图1101形象地表示。图10中的已调度的发送者单元1002和已调度的接收者单元1003被相应地表示为已调度的单元1102和1103,并且还加入了已调度的单元1104和1105(4到5的连接),1106和1107(1到2的连接)以及1108和1109(4到5的连接)。
涉及前移时间的逻辑等于按时间顺序前移到下个结束。在这里4到5的通信示例请求就是按时间顺序的下个结束,所以本例前移时间到时间=9时,在这一时刻发送者4和接收者5就又可以使用了。现在请求表和SAV表被显示在表14和15中。
表14:中间请求表
源 |
目标 |
长度 |
优先级 |
起始时间 |
1 |
2 |
15 |
1 |
0 |
1 |
4 |
23 |
1 |
- |
1 |
5 |
2 |
1 |
- |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
- |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
0 |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
- |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
- |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
0 |
| | | | |
总计 | |
246 | | |
表15:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
25 |
78 |
2 |
24 |
28 |
3 |
88 |
9 |
4 |
13 |
58 |
5 |
38 |
15 |
在搜寻2到5的通信示例请求,2到3的通信示例请求,4到5的通信示例,请求4到3的通信示例请求和4到3的通信示例请求之后,本例的调度器逻辑判定本例必须再次前移时间-在时间=9的时候实际上没有任何请求能被调度。现在下一次结束是在时间=15时,在这个时刻1到2的通信示例连接结束并且SAV表为表16。
表16:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
25 |
78 |
2 |
24 |
28 |
3 |
88 |
9 |
4 |
13 |
58 |
5 |
38 |
15 |
本例的调度器逻辑现在搜寻1到2的通信示例请求,但1到2的通信示例已经被调度了,所以本例搜寻1到5的通信示例请求,本例发现了并调度这个请求。新的SAV表就是表17了。
表17:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
23 |
78 |
2 |
24 |
28 |
3 |
88 |
9 |
4 |
13 |
58 |
5 |
38 |
13 |
本例的调度器逻辑然后在决定再次前移时间之前搜寻2到2的通信示例请求,2到3的通信示例请求,4到2的通信示例请求和4到3的通信示例请求。本例前移时间从15到16,在这个时刻SAV表看起来如表18。
表18:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
23 |
78 |
2 |
24 |
28 |
3 |
88 |
9 |
4 |
13 |
58 |
5 |
38 |
13 |
本例的调度器逻辑然后调度3到1的通信示例请求,它被证明是在时间=16时唯一一个可以被调度的请求。在本例的调度器逻辑操前移时间至时间=17后,这些表看起来如表19,20和21。
表19:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
23 |
66 |
2 |
24 |
28 |
3 |
76 |
9 |
4 |
13 |
58 |
5 |
38 |
13 |
表20:中间请求表
源 |
目标 |
长度 |
优先级 |
起始时间 |
1 |
2 |
15 |
1 |
0 |
1 |
4 |
23 |
1 |
- |
1 |
5 |
2 |
1 |
15 |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
16 |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
- |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
0 |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
- |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
0 |
| | | | |
总计 | |
246 | | |
在时间=17时没有能被被调度的请求,所以本例前移时间至时间=18,此刻5到4的通信示例请求结束。
表21:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
23 |
66 |
2 |
24 |
28 |
3 |
76 |
9 |
4 |
13 |
58 |
5 |
38 |
13 |
在对5到4的通信示例请求的搜寻不成功后,发现了5到2的通信示例请求和1到4的通信示例请求,并且这些表看起来如表22和23:
表22:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
66 |
2 |
24 |
20 |
3 |
76 |
9 |
4 |
13 |
35 |
5 |
30 |
13 |
表23:中间请求表
源 |
目标 |
长度 |
优先级 |
起始时间 |
1 |
2 |
15 |
1 |
0 |
1 |
4 |
23 |
1 |
18 |
1 |
5 |
2 |
1 |
15 |
2 |
1 |
24 |
1 |
- |
3 |
1 |
16 |
1 |
0 |
3 |
1 |
12 |
1 |
16 |
3 |
2 |
20 |
1 |
- |
3 |
3 |
8 |
1 |
- |
3 |
4 |
19 |
1 |
- |
3 |
4 |
16 |
1 |
- |
3 |
5 |
4 |
1 |
- |
3 |
5 |
9 |
1 |
- |
4 |
1 |
13 |
1 |
- |
4 |
5 |
9 |
1 |
0 |
5 |
1 |
21 |
1 |
- |
5 |
1 |
8 |
1 |
- |
5 |
2 |
8 |
1 |
18 |
5 |
3 |
1 |
1 |
- |
5 |
4 |
18 |
1 |
0 |
| | | | |
总计 | |
246 | | |
本例的调度器逻辑操前移时间至时间=26,此时本例的调度器逻辑操定义表24:
表24:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
66 |
2 |
24 |
20 |
3 |
76 |
9 |
4 |
13 |
35 |
5 |
30 |
13 |
本例的调度器逻辑现在调度5到3的通信示例请求,它是在这一时刻能被调度的所有请求。然后时间被前移至时间=27,然后28,并且SAV表看起来如表25。
表25:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
66 |
2 |
24 |
20 |
3 |
76 |
8 |
4 |
13 |
35 |
5 |
29 |
13 |
由于没有3到1的通信示例请求,本例的调度器逻辑调度3到2的通信示例请求和5到1的通信示例请求,并前移时间至31,然后至48,此刻SAV表变成表26。
表26:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
45 |
2 |
24 |
- |
3 |
37 |
8 |
4 |
13 |
16 |
5 |
8 |
13 |
本例的调度器逻辑调度3到4的通信示例请求,并前移时间至49,结果给出表27。
表27:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
45 |
2 |
24 |
- |
3 |
37 |
8 |
4 |
13 |
16 |
5 |
8 |
13 |
本例的调度器逻辑预定2到1的通信示例请求,并前移时间至67,给出表28。
表28:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
21 |
2 |
- | |
3 |
29 |
8 |
4 | 13 | 16 |
5 |
8 |
13 |
本例的调度器逻辑现在调度3到3的通信示例请求和5到1的通信示例请求,并前移时间至73,如表29所示。
表29:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
21 |
2 |
- |
- |
3 |
29 |
- |
4 |
13 |
16 |
5 |
8 |
13 |
本例的调度器逻辑然后调度4到1的通信示例请求,并前移时间至75,导致表30。
表30:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
8 |
2 |
- |
- |
3 |
29 |
- |
4 |
- |
16 |
5 |
8 |
13 |
这允许本例的调度器逻辑调度剩余的3到4的通信示例请求,在此之后本例的调度器逻辑前移时间至时间=86,导致表31的数据。
表31:中间汇总访问值表
通道 |
发送者SAV |
接收者SAV |
| | |
1 |
- |
8 |
2 |
- |
- |
3 |
13 |
- |
4 |
- |
- |
5 |
8 |
13 |
本例的调度器逻辑现在调度5到1的通信示例请求,前移时间至91,调度第一个3到5的通信示例请求,前移时间至94,然后至95,和调度最后一个请求,另一个3到5的通信示例请求。结果事件表看起来如表32。
表32:最终事件表
源 |
目标 |
长度 |
优先级 |
起始时间 |
3 |
1 |
16 |
1 |
0 |
5 |
4 |
18 |
1 |
0 |
1 |
2 |
15 |
1 |
0 |
4 |
5 |
9 |
1 |
0 |
1 |
5 |
2 |
1 |
15 |
3 |
1 |
12 |
1 |
16 |
5 |
2 |
8 |
1 |
18 |
1 |
4 |
23 |
1 |
18 |
5 |
3 |
1 |
1 |
26 |
3 |
2 |
20 |
1 |
28 |
5 |
1 |
21 |
1 |
28 |
3 |
4 |
19 |
1 |
48 |
2 |
1 |
24 |
1 |
49 |
3 |
3 |
8 |
1 |
67 |
4 |
1 |
13 |
1 |
73 |
3 |
4 |
16 |
1 |
75 |
5 |
1 |
8 |
1 |
86 |
3 |
5 |
4 |
1 |
91 |
3 |
5 |
9 |
1 |
95 |
注意整个请求表在104个时间单位后完成-这是处理这些特定请求理论上所需的最小时间量。
最终调度表被以图形方式显示为图12中的调度图1201。图10中的已调度的发送者单元1002和已调度的接收者单元1003被相应地表示为已调度的单元1202和1203;图11中的已调度的单元1104和1105,1106和1107以及1108和1109被相应地表示为已调度的单元1204,1205,1206,1207,1208和1209;并且还显示了新单元对应1到4的通信示例的1216-1217,对应5到2的通信示例的1214-1215,对应3到1的通信示例的1212-1213,对应3到2的通信示例的1220-1221,对应5到1的通信示例的1222-1223,对应2到1的通信示例的1226-1227,对应3到4的通信示例的1224-1225,对应3到3的通信示例的1228-1229,对应4到1的通信示例的1230-1231,对应3到4的通信示例的1232-1233,对应5到1的通信示例的1234-1235,和对应3到5的通信示例的1238-1239。其中显示出的三个交互作用上出没有画出单元指示符(时长为2的1到5的通信,时长为1的5到3的通信,和时长为4的3到5的通信)。
注意关键资源发送者3一直被预定满直至时间=104,即为达到理论上的最小调度时间所必须达到的判别值。还应注意接收者1,次关键资源,被预定满直至时间=94。尽管这个逻辑并不总产生理论上的最佳调度表,但它被设计成对具有最高要求的资源是有效的。
如果调度过程被应用于一个100单位的时间段窗口而不是一个150单位的时间段窗口,在这个时间段窗口中最后的请求就会被从已调度的请求中卡掉,但会被置于队列中直至对下一个时间段窗口的调度过程重新开始。
上面的例子显示了一个所有请求的优先级都是1的请求表。在一个实施例中,支持四个不同的优先级。根据逻辑,所有最高级别的请求在任何其它优先级别的请求被考虑调度之前被调度。
一旦所有被保证的请求都被调度了,就在已存在于调度表中的被保证的请求的周围调度其它三个优先级。当调度表中已经存在连接时,计算时间段窗口大小的过程就比较复杂了,但逻辑是完全一样的。虽然ACR值(或SAV)在决定什么时间调度什么时仍然时主导因素,但同样的两个并行的资源之间的连接请求被根据优先级选择。这意味着ACR逻辑可能决定在调度一个中优先级的4到2的通信示例请求之前调度一个低优先级的4到5的通信示例请求,但绝不会在调度一个中优先级的4到5的通信示例请求之前调度它。
由于确定的连接需求可能发生在特定的时刻而不是简单地在某个时间段窗口内,就能够做出调整使这些请求绕开调度。这些固时间确定间的连接在调度开始之前进入事件表并且那些被调度的连接必须被调度在固定连接的周围。这些固时间确定间的连接明显地具有所有请求中最高的优先级。
在上述例子中,前移时间就是这样一件事,即简单地找出已经调度的连接的按时间顺序的下个结束。但是这个前移时间的过程用掉了很多循环,而这些循环最好用来执行其它功能。本优选实施例的网络调度器使用256单位的最小时间段(本例具有一个25,000时间单位的调度时间段窗口而不是前面所述的150时间单位的窗口)以减低处理的需求。尽管这对调度效率有明显的负面影响,但也存在不那么明显的正面影响。由于在时间段之间处理完较多的事件,平均地在各时间段中就有较多可供调度的资源。随着更多资源同时竞争,那些具有较高关键命中值的资源似乎不大可能被一些其它早已结束的资源所替代。这个折中的最后结果是计算循环被保存,而带宽效率并未明显受影响。
在上述例子中,所有请求被整体调度-不需要中断请求。如果任何一个请求具有比定义的时间段窗口(在上述例子中为150时间单位)长,为了能被调度,它无论如何将被分成至少两部分。如果设计中不能避免长信息,在这种情况下长的低优先级信息不大可能靠分解这个信息和使用较低的优先级指示抵挡住较高优先级的信息对同一资源的竞争。
在本优选实施例中,大于1023时间单位的请求被分解为1000时间单位的“满”块和一个可选的直至1023单位长的“部分”的块。
在本优选实施例中,因为路线(用来传递调度表的特殊信息)的变化和可能的大容量,它们是自我调度的信息。但是时间表(用来收集连接请求的信息)很小并被作为固时间确定间的连接处理(它们不被逐一调度)。用于本优选实施例的调度流程包括在第一时间段窗口中时间表的收集和线路的调度,其中第二、第三和第四时间段窗口(相应地用于信息的调度,传递调度表以及连接的实施)被按照描述的那样使用。
现在参见图13,它更详细地描述了对应于成员节点107,108的部件的代表。虽然图13沿用了图1和图5的单元编号,但它还显示了允许对应于其它节点的信息的并行发送和接收。在这种情况下,显示了主调度器106的发送逻辑1301和接收逻辑1302,与在成员节点107上的伴随发送逻辑1319和接收逻辑1320,以及在成员节点108上的另一个伴随发送逻辑1321和接收逻辑1322。路径1311,1305和1306显示了从消息载体100(带纵横接线器516)向外的向量化的信息路径。使用如前面讨论过流程循环计算机就能得到这种使特定的节点107,108,106忙于高度交叉的信息发送和接收的通信方法。节点107被更详细图示为当地调度器1307,振荡器1308,CPU1309和VCXO(晶体振荡器控制的电压)1309,并与前面描述过的当地任务表1303和已经被一般地讨论过的当地任务调度表1304一起显示出来。
现在参见聚焦在三种技术上的图14,结合它,摘要地说明了关于散布的网络,实时计算机的思考的唯一且有价值的特性,以进一步全面看清到本发明的特性。从这一点看,关键技术与计算机间的紧密同步化;时间确定的操作,包括网络通信;以及对散布的任务,特别是那些涉及网络通信的任务的中央化调度。这个简图显示了本优选实施例中实施的各种技术之间的相互关系1400,其中强调了那些被认为对于实施是关键的技术。这些基本的技术相结合就提供了一个体系结构,它能负责在散布的计算环境中的实时计算。这些技术是(1)时间确定的事件控制1422;(2)系统间的紧密同步化1423;和(3)散布的计算环境中实时系统操作的关键的任务的中央化调度1421。
这些技术间的关系被箭头显示出来,其中箭头从允许实现技术指向被允许实现技术,其中术语“允许实现”在这里被广义地地使用以描述在技术效用方面或在该技术应用的简单化方面的改进。注意许多技术是相互有益的,在这里用双向箭头指出。
下表解释了实施特性之间的关系,如图14的在紧密同步1423,优先化1424,时间确定的事件控制1422,安全1426,极限查验1425,中央化控制1421,可靠度1428,动态冗余1427和低成本1435之间的虚拟链接。
表33关键技术特征的相互作用
图中的连接 |
作用 |
1401 |
中央化调度确保所有网络交互作用发生在规时间确定间。在这个描述中,时间确定的第一个需求是使网络上的节点紧密同步。没有一个网络节点能知道整个网络的需要,所以在没有中央调度器的情况下,替代者或者消除所有的动态,或者实施一个可容纳这个变化的方案。靠中央化连接调度,优先化和极限查验的共同作用,(高优先级的)时间敏感的相互连接可以是时间确定的,虽然(低优先级的)高容量的相互连接可能通过变化容纳的设计而存在。 |
1402 |
在散布的计算环境中,用紧密同步化的系统,或靠提供在最坏的校准和带宽要求情况下实现适时递送的足够富裕的带宽能够获得确定性的络连接。因为这样的最坏情况的形式分析是很困难的,还因为提供富裕的带宽可能很昂贵,同步化对于时间确定就是允许实现技术。另外,在获得所需水平的同步时的困难通常与通信不确定的程度成比例。 |
1403 |
动态冗余主要允许关于失败复原的时间确定。在没有冗余时管理可能的失败局面是困难的,然而在一个有正冗余的时间确定的系统中进行失败的复原也是困难的。时间确定允许使用动态冗余,其中对动 |
|
态冗余最大的挑战之一就在于确保各方同一地运行。进而,以一个时间确定的环境,当系统的一个冗余的单元发生功能障碍时就能够被简单地靠注意到在一定的时间未发生相应的动作来诊断。该时间确定的网络包括基于时间的在分离的计算单元之间的通信。通信被基于时间来调度的事实允许动态冗余的使用。在动态冗余中,有两个或更多的计算机各自经由自己的程序指令顺序执行同一逻辑,交换这一执行的结果,然后进行裁定以给出结果。由于各计算机接收到的数据在进行裁定之前必须与其它执行同样逻辑的计算机共享这个事实,必须有某种机制来决定裁定过程开始的时间。这个机制被选定为提供在在冗余计算机之间提供同步并根据时间调度关于通信的任务。以这种方式得知裁定任务可以开始的时间。 |
1404 |
实施动态冗余的一个最难的挑战是处理各方之间的不同。在确定的检查点必须期待冗余系统的各方相互一致,并且为了保留这个值,不一致必须被消除。所有各方必须知道何时到达检查点,并且必须制定规则允许消除不同。采用中央控制,连接请求中无论是在内容上还是在时间进程上的不同都能够被减少甚至于消除,因而增加所有各方保持运行的等同的可能性。另一方面,中央化调度极大地依赖于调度单元的可用性。在存在冗余时中央化调度变得更加切实可行。 |
1405 |
中央调度需要将所有的连接请求集合在一起分析。 |
|
这允许极限查验来证明(1)某个不想要的节点到节点的组合被禁止和(2)在某个节点组合之间(可能在特定的优先级)的通信量水平不超过预定水平。 |
1406 |
靠确保不突破某个限制,极限查验增强了散布的计算系统的安全性。这些极限查验在某系统不应被允许与其它系统交互作用时帮助抵抗恶意的攻击,并抵抗意外纠纷,如合法低优先级数据对系统的过载或高优先级数据的偶然过载。 |
1407 |
信息的优先化增加了极限查验的应用。不仅能在不过分限制低优先级数据的情况下使高优先级数据成为时间确定的,而且能按信息优先级将其安置好。 |
1408 |
靠防止安全风险和靠保持时间确定,极限查验改进了系统的全面可靠性。如果没有极限查验,某个网络错误,如一个节点偶然被请求在高优先级水平的超通信量,可能损坏网络。 |
1409 |
在极限查验的实施过程中查验最高优先级通信量是否违反了通量阈值以确保没有在通道上阻碍发生在任意无错误节点间的最高优先级通信的错误。 |
1410 |
无阻塞网络体系结构允许网络实现比网络中任一特定节点的可能的通量还要高的通量。这意味着在任何特定的可与阻断网络体系结构相比的代价下有较高的带宽。 |
1411 |
当可以委托一个中央化的安全代理管理安全政策时,安全性就较容易被实现。特别在本优选实施例中,给中央调度器一个安全表,并且交互连接系统能将安全任务委托给中央管理器,只允许在一个地方而不是两个地方进行该管理。还有,同一个安全政策不必在星形图中存在的每个环境中都重复执行。 |
1412 |
靠引入中央调度器,能实施调度逻辑以便增强已接收连接请求的优先化。 |
1413 |
优先化简化了实施时间确定的任务。这是因为如程序载入这样大而非经常的任务能够被设置成在低优先级下运行,在较简单但更为关键的同级到同级通信任务上可能排除高命中操作的分析。 |
1415 |
在使用广播协议的网络上,所有网络节点都有机会看见到其它所有节点去的数据(虽然加密可能使这种观察无效)。在广播协议中不是永远实施阻断协议,除非无阻塞协议杜绝了广播的可能性,因此避免了明显的安全风险。 |
1416 |
获得可靠性的明显的方法之一是冗余的引入。 |
1417 |
通过优先化的引入,高通量这一高带宽的首要目的以两种方式受到正面影响。第一,对那些具有最大体积的数据的高通量的感知被优先化的调用以更及时的方式传递。第二,当已知那些常常必须被及时传递的高优先级的数据不会由于允许大体积低优先级的通信请求而受影响时,可允许较大体积的数据。 |
1418 |
动态冗余需要失败的单元能够从故障时间中恢复。这常常涉及到从无故障的单元交换记录的数据。为使这一交换的命中最小化,可以引入优先化以确保要恢复的单元能够恢复并且是以对健康单元的命中没有实际影响的方式恢复。 |
1419 |
某些体系结构和布局先天具有在系统停机网络停机的风险。使用无阻塞体系结构和物理电路转换虽然不是获得较高可靠性的唯一方法,但它提供了隔绝网络错误的水平。 |
1420 |
对于无阻塞的,比如那些应用了某种纵横接线器的 |
|
网络体系结构的可用带宽的有效利用,中央调度是一个允许实现技术。如果没有调度,就必须实行固定的连接模式,因此实际上减少了这些节点的通量。 |
1431 |
由于几个原因,物理电路转换技术实用起来可能是困难的,这包括与确定在任意指定的时刻应调度什么电路合适有关的挑战。如果事先知道需要,就可以事先确定电路交换器的连接模式并按照需要实施这一模式。 |
1432 |
网络中各系统有一个单独的电路或一对电路就可以实施被调度成树形布局的系统的电路转换。无阻塞体系结构的许可就允许各通道拥有它自己的通信路径。 |
1433 |
因为物理电路转换能减少对动态电路的需要,高的线路速度常常导致高网络带宽。 |
1436 |
与物理电路转换相联系的电路简化允许以较低的成本实现给定的性能。 |
现在参见图15,讨论了对应于各成员节点108,107(控制计算机506,记录计算机507,控制计算机504,记录计算机505,用户接口503,网络支持502和网络交换器501中的任意一个)中的调度被执行的一般处理1500。各成员节点108,107负责接收公共时钟信号;与公共时钟信号的同步;从网络交换器501中的主调度器106接收当地事件表114,116;根据接收到的当地事件表114,116形成任务执行表并且将任何未在当地事件表114,116中描述的附加任务并入此表;执行任务执行表;产生通信请求表并向网络交换器501中的主调度器106发送该通信请求表。
步骤1501和1502-由于网络如此高度依赖于一个全局的时间基准,在成员节点108,107上的第一步1501就是接收公共时钟信号。公共时钟信号被作为一个信息从网络交换器501中的主调度器106传送给各成员节点108,107。成员节点108,107在步骤1501中接收这个时钟信号,附上实际接收的时间,确认这个信息整体有效。被确认的信息被用作同步化过程的输入,并且在步骤1502中,时间信息的预期接收时间和实际接收时间之间的差别被可选地确定(时间信息的性质可选地是一个脉冲而不是载有日期的信息)。
步骤1503和1504-各成员节点108,107现在必须与公共时钟信号同步化。这个同步化的执行过程可以被分解为两个单独的任务:第一,在步骤1503中,电压控制的振荡器(1308)调整至与公共时钟信号源相匹配的频率;第二,在步骤1504中,时间校准至被公共时钟信号定义的各时间周期的起点在成员节点108,107和在网络交换器501中的主调度器106中发生在同一时间。
步骤1505-一旦完成了成员节点108,107到网络交换器501中的主调度器106的同步化,成员节点108,107必须从网络交换器501中的主调度器106接收当地事件表114,116。当地事件表114,116包含着涉及这个成员节点的通信的调度表。注意当地事件表114,116的接收本身是被网络交换器501中的主调度器106调度的。因此,第一次接收当地事件表114,116的节点必须在任何可能接收当地事件表114,116的时间都是可用的,以接收这个信息。
步骤1506-对成员节点108,107下一步是形成任务执行表。这个任务执行表是由当地事件表114,116和成员节点108,107必须执行的但当地事件表114,116没有描述的附加任务形成的。从网络交换器501中的主调度器106传来的当地事件表114,116提供了与发送和接收任务相关的时间调度。为了形成任务执行表,必须进行下列子步骤:
子步骤1506A:调整从网络交换器501中的主调度器106接收到的起始时间以计入传播延迟。从网络交换器501中的主调度器106接收到的时间调度是关于网络交换器501中的主调度器106的。虽然成员节点108,107与网络交换器501中的主调度器106同步化了,但在通过通信媒体的传播中仍然存在本征延迟。要么网络交换器501中的主调度器106必须计入这个延迟,要么通信时间段窗口必须足够大以至能将这个本征延迟作为拨给这次连接的时间的额外开销包括在内。在本优选实施例中,这个延迟被成员节点计入。
子步骤1506B:调度那些依赖于通信任务的任务。有些任务必须在发送前调度(例如从存储器中发出的数据的传送);还有些任务必须在接收后调度(例如冗余计算环境下多个不同的源之间的数据裁定以及向存储器传送数据)。成员节点108,107负责调度这些任务。
子步骤1506C:调度那些既未当地事件表114,116描述,也不依赖于通信的任务。这些是在与通信相关的任务之外成员节点108,107必须完成的任务。这些任务可能是为了其它I/O操作、局域化显示等。
步骤1507-对成员节点108,107下一步是执行任务执行表。表中的各任务包含着将被执行的任务,任务的起始时间和任何成功地完成该任务所必需的参数。
步骤1508-对成员节点108,107现在形成通信请求表,它是成员节点108,107想要与之通信的成员节点108,107的表。该通信请求表包含的信息是源节点指示符,目标节点指示符和通信总长度。
步骤1509-通信请求表被传送给网络交换器501中的主调度器106以便在其调度中考虑它。这时,成员节点108,107已经完成了在这个特定的时间周期内所有必需的作用。下一步1510是确定是否到了接收下一个参考时刻信息的时间。如果是,那么整个过程就从最早的第一步1501开始重复它本身。如果还未到接收下一个参考时刻信息的时间,那么成员节点的逻辑可能进入步骤1505。
作为一个深思熟虑的实施例,图16以数据流简图1600表示了图1的一般的数据流简图130,其中以射频的方式完成通信,并且经射频发送器和接收器完成发送1601,1602和1603。
通过使用被认为是专用的计算机的的设备使本发明得以实施,在一个实施例中这些计算机是将计算机与指向进程控制的专项功能的计算机程序代码(换言之,例如,软件或逻辑,这里逻辑指的是被许可电路系统或给许可电路系统执行的软件)结合起来创建的,以便当它与一个电源连接时,就被通电并被激活以执行它的计算机程序代码(软件),该专用计算机在计算机程序代码引导下执行关于本发明的专项功能。该计算机包括一个被称为中央处理单元的电活性部件,至少一个与中央处理单元相连的物理存储器,一个可选的与中央处理单元相连的输入键盘,一个可选的与中央处理单元相连的输出显示(它可包括但不限于打印机、其输出为打印出的纸张的打印终端,阴极射线管显示器,和/或平板显示器),一个计算机时钟脉冲发生器和一个为计算机的所有电活性部件供应能量的电源连线。进而中央处理器有一个控制总线和为暂时容纳数据(例如注册器或叠加器)或为执行基本数据处理操作(例如加法电路)的专用计算机电路;该专用计算机电路在通信中通过闩锁电路与控制总线相连,这个闩锁电路可以独立地处于传导(通信)状态或非传导(非通信)状态;在特时间确定刻所有闩锁电路状态的集合决定了中央处理器的特定状态;并且当计算机程序代码的单独的指令被中央处理单元连续访问以及时钟脉冲发生器的输出指向这些闩锁电路时,中央处理器的状态被相应地调整和改变。该计算机还可选地有商用操作系统的形式的计算机程序代码,这个操作系统作为计算机程序代码的操作平台起作用,使指向本发明的专项功能的专用计算机程序代码能够被执行。概括地说,在这个实施例中的本发明用和通过多台计算机被应用于优选实施例中,在执行指定的使用目的和上述系统的实际应用之前这些计算机已经被编程以提供给技术;各计算机作为实现功能的媒体起作用,而这个功能是由计算机程序代码的功能所提供的。在某些实施例中,在某些扩展形式的专用计算机中可能用电、光或射频信号通信接口和通信媒体实施通信链接,这些接口和媒体共同使用用电能的发送器和接收器,它们直接或间接地与至少一个中央处理单元相连。
驻留在计算机中的计算机程序代码提供了这种设备的至少一个部件。计算机程序代码可能是交互连接模块、例程和子例程、程序对象、和/或安装的交互作用过程的形式,但不限于这些形式。在一些现有的计算机设计中,现代的专用集成电路(ASIC)计算机程序代码可能至少被与传统的不需时钟脉冲执行简化逻辑方案的硬布线门装置相似的硬布线电路部分地表达。这个描述的图显示了在计算机程序代码中的关键模块和部件之间的大量结构关系和使本发明的设备的功能能够实现的本发明的其它方面;在这一点上,在硬件和软件的结合之外构造了系统中的计算单元。
以上以图示的方式描述了本发明。这一点上,对那些熟悉本技术的人来说是明显的,一旦给出了前面公开的好处,现在就可能对在这里描述的特定实施例作出修改而不背离本发明的精神。这样的修改被认为是包含在本发明的范围之内的,这个范围仅仅被附录的权利要求的范围和精神所限制。