CN1667602A - 大规模分布共享系统中的输入输出分组节流方法 - Google Patents
大规模分布共享系统中的输入输出分组节流方法 Download PDFInfo
- Publication number
- CN1667602A CN1667602A CNA2005100314495A CN200510031449A CN1667602A CN 1667602 A CN1667602 A CN 1667602A CN A2005100314495 A CNA2005100314495 A CN A2005100314495A CN 200510031449 A CN200510031449 A CN 200510031449A CN 1667602 A CN1667602 A CN 1667602A
- Authority
- CN
- China
- Prior art keywords
- pio
- affairs
- retry
- logic
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
Abstract
一种大规模分布共享系统中的输入输出分组节流方法,目的是解决由于I/O设备速度不均衡及突发I/O事务流造成系统拥塞的问题。技术方案是设计大规模并行分布系统中输入输出的分组节流控制逻辑,分组节流控制逻辑1位于NC中的处理器接口PI内部,包括PIO事务发送控制逻辑、PIO事务FIFO缓冲和PIO事务重试状态机;分组节流控制逻辑2位于IOC,由PIO事务处理逻辑、PIO事务发送逻辑、PIO事务响应接收逻辑、PIO事务响应生成逻辑、多个控制状态机、PIO事务缓冲以及多个信用计数器组成;节流控制逻辑1和节流控制逻辑2协同工作,共同完成PIO事务流的分组节流控制。本发明解决了大规模分布共享I/O系统中由于慢速I/O设备或突发I/O事务流造成的系统拥塞,大大提高系统性能。
Description
技术领域
本发明涉及计算机领域中的输入/输出(I/O)方法,尤其是大规模分布共享并行处理系统中的并行I/O事务流的处理方法。
背景技术
由于处理器技术和I/O技术间发展不平衡,I/O目前仍然是大规模并行计算机系统的主要瓶颈之一,通过设计高性能I/O系统,提供高带宽、低延时、高可靠的I/O访问,实现系统的计算、通讯和I/O性能的均衡扩展,是改善大规模并行系统性能的关键方法之一。另一方面,由于I/O速度的不均衡性,而系统中快速、慢速I/O设备通常并存,如何在大规模分布共享并行系统中充分发挥I/O性能,避免由于系统拥塞而导致系统性能下降,已经成为大规模并行系统中迫切需要解决的问题之一。
目前大规模并行系统中多采用共享I/O结构,即I/O资源被所有的计算结点所共享,由硬件完成对I/O资源的访问和控制。共享I/O结构又分为两种:集中共享式和分布共享式。集中共享式I/O是指I/O资源不附属于任何一个计算结点,而是通过高速互联网与计算结点相连,并由所有计算结点共享。分布共享式I/O是指I/O资源分别附属于不同的计算结点,对其它计算结点附属I/O资源的访问必须通过本地计算结点进行转发,并要求IO资源所在的远程计算结点参与。由本地计算结点发起的I/O事务称为本地I/O事务,由远程计算结点发起的I/O事务称为远程I/O事务。对于分布共享式结构,每一个结点主要有NC(Node Controller,结点控制器)、IOC(IO Controller,IO控制器)和系统互联网组成,NC实现处理器接口、访存控制以及互联网接口,IOC完成对IO设备的管理和IO访问的控制。IO事务分为PIO事务(Process I/O,处理器发起I/O事务)和DMA事务(DirectMemory Access,直接存储器访问事务)。PIO事务是由CPU发起的对I/O设备进行访问和控制的操作;DMA操作是由I/O设备发起的对系统存储器进行读写的操作。
通常IOC对PIO事务流的控制通过PIO信用管理方法,即CPU每发送一个PIO事务,PIO信用减1,IO设备每完成一个PIO事务,PIO信用加1,一旦PIO信用耗尽(即PIO信用计数器为0),则不能发送新的PIO事务,只有当PIO信用计数器大于0时才可以发起PIO事务。对于大规模分布共享系统,由于慢速I/O设备I/O事务处理速度比较慢,当慢速I/O设备的PIO事务迟迟不能完成,或者某段时间突发大量PIO事务,造成PIO信用耗尽,IOC不能再向I/O设备流出新的PIO事务,后续流出的PIO事务将会堵塞NC的IOC接口,也可能造成NC的互联网接口堵塞,导致那些不需要I/O的操作也无法完成,从而造成系统性能大大下降。
发明内容
本发明所要解决的技术问题是针对上述大规模分布共享并行系统中,由于I/O设备速度不均衡及突发I/O事务流造成系统拥塞,从而大大降低系统性能的情况,提出一种大规模分布共享系统输入输出分组节流方法(Distributed Shared Input Output GroupingThrottling,DSIOGT),有效解决系统拥塞问题,一方面使得分布共享I/O结构下I/O性能充分发挥,实现I/O资源的均衡可扩展;一方面使得系统性能不会受I/O资源配置情况或PIO事务流的变化而降低。
本发明的技术方案是设计大规模并行分布系统中输入输出的分组节流控制逻辑,该控制逻辑分为两部分分别在NC和IOC中实现。NC中的分组节流控制逻辑叫分组节流控制逻辑1,位于NC中的处理器接口PI内部,包括PIO事务发送控制逻辑、PIO事务FIFO缓冲和PIO事务重试状态机。PIO事务发送控制逻辑与PIO重试状态机连接,由PIO事务重试状态机控制PIO事务发送控制逻辑;同时,PIO事务发送控制逻辑与一个用于存放来自CPU的PIO事务的FIFO缓冲区相连,控制PIO事务的顺序流出。PIO事务经过FIFO,通过NC中的报文发送逻辑发送给IOC;来自IOC的PIO响应报文通过NC中的报文接收逻辑返回给NC。
PIO事务重试状态机包含两个状态:空闲状态(Idle)和重试状态(Retry)。该状态机初始状态即系统加电复位时的状态为空闲状态,状态机根据报文接收逻辑收到的PIO事务响应类型进行状态转换,如果收到的是一个NACK应答响应,则状态机进入重试状态,如果收到的是ACK应答响应,则保持空闲状态。当状态机进入重试状态后,只有等到PIO事务发送控制逻辑将FIFO中需要重试的PIO事务全部完成后,才再次进入空闲状态。当状态机处于重试状态时,失效系统总线上的WRRDY信号,阻止CPU继续流出PIO请求;当状态机处于空闲态时,有效WRRDY信号,允许CPU流出新的PIO事务。在状态机处于重试状态,失效WRRDY信号之前,CPU可能已经流出了几个PIO事务,这时PIO事务保存在FIFO缓冲区中,这些事务都是需要重试的事务。所有需要重试的PIO事务按照先进先出的顺序进入该FIFO,在重试请求得到真正响应之前,任何后续请求均不能完成,并按顺序重试这些请求。为了保持这些PIO事务之间的有序性,PIO事务发送控制逻辑将第一个收到NACK响应的PIO事务打上头标记,以区别于后续收到NACK响应的PIO事务,当带头标记的请求被重试时,发送给IOC的命令为retry head命令(最早流出PIO事务重试命令),而后续的请求被重试时,发送给IOC的命令为简单的重试命令。从而IOC能够断定哪个是最早的PIO事务,当PIO信用可用时,最先处理该请求,并返回一个ACK-HEAD响应(acknowledge-HEAD最早流出PIO事务完成响应)通知PI第一个重试的事务已被处理。然后,PI给紧跟的下一个重试事务打上头标记以保证所有PIO事务按序完成。当所有重试的PIO事务都完成后,状态机返回空闲状态。
IOC中分组节流控制逻辑叫分组节流控制逻辑2,它由PIO事务处理逻辑、PIO事务发送逻辑、PIO事务响应接收逻辑、PIO事务响应生成逻辑、多个控制状态机、PIO事务缓冲以及多个信用计数器组成。PIO事务处理逻辑、PIO事务响应生成逻辑、信用计数器都与控制状态机相连。PIO事务处理逻辑与PIO事务发送逻辑、PIO事务缓冲及信用计数器相连,也与NC的报文发送逻辑相连。PIO事务响应接收逻辑既与PIO事务缓冲和信用计数器相连,又与PIO事务响应生成逻辑相连,负责接收来自IO设备返回的PIO响应消息。控制状态机的个数和信用计数器的个数相同,由系统支持的IO设备种类决定,一类IO设备(挂接在同一个IO桥上)对应一个状态机和一个信用计数器,因此根据IO设备类型,挂接在不同IO桥下的IO设备分成了不同的组,通过为这些组分配对应的PIO事务信用(对应相应数量的PIO事务缓冲),每个组的设备只能使用该组占用的PIO事务缓冲,不能占用其它组的PIO事务缓冲,从而实现对到不同I/O设备的PIO事务流的分组控制。分组时采取慢速I/O设备占用少一些PIO事务缓冲,快速设备占用多一些PIO事务缓冲的策略,由于慢速I/O设备只占用分配给自己的PIO事务缓冲,当慢速设备的PIO事务缓冲被耗尽时,不占用快速I/O设备的PIO事务缓冲,快速设备的PIO事务流不受影响,因而不会导致整个系统的堵塞。每个信用计数器由一个PIO信用计数器、一个NACKA计数器、一个NACKB计数器组成。PIO信用计数器指明它所对应的IO桥设备有多少PIO事务缓冲可用,当某个设备的PIO信用计数器为0时,对任何后续的PIO事务请求,IOC都返回NACK响应,当NC中的报文接收逻辑收到该NACK响应后,PIO事务重试状态机进入重试状态,同时失效系统总线上的WRRDY信号,阻止CPU继续流出PIO请求,实现对PIO事务的节流控制;当PIO信用计数器都不为0时,每发一个对某个I/O设备的PIO请求,与之相对应的PIO信用计数器减1,每接收一个来自该设备的响应,对应的PIO信用计数器加1;NACKA计数器记录IOC中的分组节流控制逻辑2处于正常工作状态收到PIO事务返回的NACK响应个数;NACKB计数器记录IOC中的分组节流控制逻辑2处于节流工作模式状态收到PIO事务返回的NACK响应个数。
控制状态机根据PIO事务处理逻辑收到的PIO事务类型和PIO事务响应接收逻辑收到的PIO事务响应进行状态转换,同时更新相应信用计数器的当前值,一共有四种工作模式状态:Normal模式状态、Collect-A模式状态、Service-A模式状态和Service-B模式状态,Normal模式为正常工作状态,其它3种模式为节流工作模式状态:
1、设T1为由于没有信用,WRRDY信号被失效的时刻,此时所有未完成的PIO请求为A阶段请求,IOC进入Collect-A工作模式;
2、设T2为当有信用,重试的PIO头请求被服务且NACKA计数器为0,WRRDY信号被有效的时刻;设T3为发现还有未服务的A阶段请求而重新失效WRRDY信号的时刻;T2到T3时刻间CPU发出的新的PIO事务为B阶段事务。T2时刻,如果NACKA不为0,IOC的PIO事务处理逻辑进入Service-A工作模式,如果NACKA为0则进入Normal工作模式;
3、设T4为当A阶段请求全部处理完,WRRDY再次被有效的时刻。T5为发现还有未完成的B阶段请求而再次失效WRRDY信号的时刻。T6为当B阶段请求全部完成后,WRRDY信号被重新有效的时刻。T4到T5时刻间CPU发出的新的PIO请求为A阶段请求。T4时刻,如果NACKB计数器不为0,IOC中PIO事务处理逻辑进入Service-B工作模式,如果NACKB计数器为0则进入Normal工作模式。T6时刻,如果NACKA计数器不为0,IOC中PIO事务处理逻辑进入Service-A工作模式,如果NACKA计数器为0则进入Normal工作模式。
NC和IOC中节流控制逻辑1和节流控制逻辑2协同工作,共同完成PIO事务流的分组节流控制,具体过程如下:
1、CPU检查系统总线WRRDY信号,如果WRRDY信号有效,则CPU流出PIO事务;如果WRRDY信号无效,CPU不能流出PIO事务。
2、从CPU流出的PIO事务由NC中PI部件的FIFO缓冲,PIO事务发送控制逻辑检查PIO事务重试状态机,如果状态机为空闲状态,则通过报文发送逻辑将PIO事务发送给IOC;如果PIO事务重试状态机为重试状态,则将FIFO中第一个PIO事务打上头标志,发送给IOC,并失效WRRDY信号。当FIFO中所有重试事务完成、状态机再次变为空闲状态后,有效WRRDY信号。这样,通过限制一段时间内CPU连续流出过多的PIO事务,实现了在突发IO事务时对PIO事务流的节流控制,减少了对系统性能的影响。
3、IOC中的PIO事务处理逻辑接收到PIO事务,分析PIO事务类型及其目标IO设备,检查相应设备对应的控制状态机。如果状态机处于正常工作状态,则为该PIO事务分配相应的PIO事务缓冲,记录必要的PIO事务信息,通过PIO事务发送逻辑将PIO事务发送给目标IO设备,同时IO设备对应的PIO计数减1,状态机进行相应的状态转换;如果状态机处于节流工作模式状态,则不为该PIO事务分配PIO事务缓冲,通过PIO事务响应生成逻辑生成NACK报文或ACK-HEAD报文返回给NC,同时IO设备对应的NACKA或NACKB(根据状态机状态控制)计数加1,状态机进行相应的状态转换。
4、IO设备通过IO总线接收PIO事务,处理完PIO事务后,将响应结果再通过IO总线返回给IOC中的PIO事务响应接收逻辑。PIO事务响应接收逻辑检查分析该响应,并与PIO事务缓冲中记录的PIO事务信息进行匹配,然后PIO事务响应生成逻辑生成对应的响应报文,返回给NC;同时,释放相应的PIO事务缓冲,PIO信用计数加1,控制状态机进行相应的状态转换。
5、NC接收到响应后,PIO重试状态机进行必要的状态转换,控制WRRDY信号,并将响应结果返回给CPU。从而完成该次PIO事务的处理。
控制状态机状态转换流程是:
1、当所有PIO事务均能有效完成,且PIO信用均大于0,PIO事务处理为Normal工作模式,对所有PIO事务返回ACK。
2、当有I/O桥对应的PIO信用等于0,进入Collect-A工作模式,IOC对新的PIO事务返回NACK,NC的PIO事务发送控制逻辑对未完成的PIO事务进行顺序重试。
3、在Collect-A工作模式下,当只剩头重试请求且还有信用时,处理完成后进入Normal状态;处理器接口可以发送新的PIO事务。
4、在Collect-A工作模式下,如果不满足3的条件,IOC的分组节流控制逻辑工作状态维持在Collect-A工作模式不变,对重试的PIO事务返回NACKA,NC的PI接口失效WRRDY,不允许处理器流出新的PIO事务,对来不及失效WRRDY流出的PIO事务返回NACKB。
5、在Collect-A工作模式下,当有新的信用时,对头重试操作进行处理,如果此时还有A阶段PIO事务进入Service-A状态,仍然不允许CPU流出新的PIO事务。
6、在Service-A工作模式下,对新来的PIO事务和重试的PIO请求返回NACK;当有信用时且还有A阶段PIO事务继续处于Service-A模式。
7、在Service-A工作模式下,当只剩A头重试请求且有信用时,进入Normal状态;处理器接口可以发送新的PIO事务。
8、在Service-A工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段(是指当有信用、重试的PIO头请求被服务且NACKA计数器为0,WRRDY信号被有效的时刻,到发现还有未服务的A阶段请求而重新失效WRRDY信号的时刻,)PIO请求则进入Service-B状态。若WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务。
9、在Service-B工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段PIO请求则进入Service-A状态。NC中节流控制逻辑仍然禁止CPU流出新的PIO事务。
10、在Service-B工作模式下,对新来的PIO事务和重试的PIO事务返回NACK;当有信用且还有A阶段PIO请求继续处于Service-B模式。当WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务。
11、在Service-B工作模式下,当只剩A头重试请求且有Credit时,正常处理后进入Normal模式,处理器接口可以发送新的PIO事务。
采用本发明可以达到以下的技术效果:
1、由于分组使用PIO事务缓冲,解决了大规模分布共享I/O系统中由于慢速I/O设备造成系统堵塞,影响系统性能问题。
2、由于对PIO事务流进行节流控制,解决了大规模分布共享I/O系统中由于突发I/O事务流造成系统堵塞,降低系统性能问题。
3、由于很好地解决了上述问题,因此可以实现系统中多种性能不同I/O资源的灵活配置,以及I/O系统的均衡可扩展。
附图说明
图1是现有大规模分布共享I/O体系结构图;
图2是本发明的分组节流控制逻辑框图;
图3是本发明IOC节流控制逻辑四种工作模式时间分布图。
具体实施方式
图1是现有分布共享I/O体系结构图。所有结点通过NC的互联网接口连到系统互联网上。IO控制器IOC附属于结点控制器NC。IOC下挂接多种I/O桥如PCI-X桥、InfiniBand桥、传统I/O桥等,实现多种I/O设备的配置。处理器CPU通过PIO事务访问和控制系统中所有I/O设备,I/O设备通过DMA事务对全局存储器进行访问。系统互联网实现系统中所有结点的互联。
本发明设计了分组节流控制逻辑,分为两部分分别在NC和IOC中实现,NC中的叫分组节流控制逻辑1,IOC中的叫分组节流控制逻辑2,由它们配合对输入输出进行控制。
图2是本发明分组节流控制逻辑框图。NC中的分组节流控制逻辑1位于NC中的处理器接口PI内部,它包括PIO事务发送控制逻辑、PIO事务重试状态机和PIO事务FIFO缓冲。PIO事务发送控制逻辑一方面与PIO事务重试状态机相连,由PIO事务重试状态机控制PIO事务发送控制逻辑;PIO事务发送控制逻辑另一方面与存放来自CPU的PIO事务的FIFO缓冲区相连,控制FIFO缓冲区中PIO事务按序流出。PIO事务通过系统总线转发到FIFO缓冲,然后通过NC中的报文发送逻辑发送给IOC;来自IOC的PIO响应报文通过NC中的报文接收逻辑返回给NC。
PIO事务重试状态机包含两个状态:空闲状态(Idle)和重试状态(Retry)。该状态机初始状态为空闲状态,状态机根据报文接收逻辑收到的PIO事务响应类型来进行状态转换,如果收到的是一个NACK应答响应,则状态机进入重试状态,如果是ACK应答响应,则保持空闲状态。当状态机进入重试状态后,只有等到PIO事务发送控制逻辑将FIFO中需要重试的PIO事务全部完成后,才再次空闲状态。当状态机处于重试状态时,失效系统总线上的WRRDY信号,阻止CPU继续流出PIO事务到FIFO;当状态机处于空闲状态时,有效WRRDY信号,允许CPU流出新的PIO事务。在状态机处于重试状态时,失效WRRDY信号之前,CPU可能已经流出了几个PIO事务,这时PIO事务保存在FIFO缓冲区中,这些事务都是需要重试的事务。所有需要重试的PIO事务按照先进先出的顺序进入该FIFO,在重试的请求得到真正的响应之前,任何后续请求均不能完成,并按顺序重试这些请求。为了保持这些PIO事务之间的有序性,PIO事务发送控制逻辑将第一个收到NACK响应的PIO事务打上头标记,以区别于后续收到NACK响应的PIO事务,当带头标记的请求被重试时,发送给IOC的命令为retry head命令(最早流出PIO事务重试命令),而后续的请求被重试时,发送给IOC的命令为简单的重试命令。从而IOC能够断定哪个是最早的PIO事务,当PIO信用可用时,最先处理该请求,并返回一个ACK-HEAD响应(acknowledge-HEAD最早流出PIO事务完成响应)通知PIO事务发送控制逻辑第一个重试的事务已被处理。然后,PIO事务发送控制逻辑给紧跟的下一个重试事务打上头标记以保证所有PIO事务按序完成。当所有重试的PIO事务都完成后,状态机返回空闲状态。
IOC中分组节流控制逻辑2由PIO事务处理逻辑、PIO事务发送逻辑、PIO事务响应接收逻辑、PIO事务响应生成逻辑、一组控制状态机、PIO事务缓冲以及一组信用计数器组成。PIO事务处理逻辑、PIO事务响应生成逻辑、信用计数器都与控制状态机相连。每一个IO桥设备都设计有一个对应的控制状态机。PIO事务处理逻辑与PIO事务发送逻辑、PIO事务缓冲及信用计数器相连。PIO事务响应接收逻辑与PIO响应生成逻辑相连,它负责接收来自IO设备返回的PIO响应消息。IOC对其下每一个I/O桥设备维护一个PIO信用计数器,指明该设备有多少PIO事务缓冲可用,当某个PIO信用计数器为0时,对任何后续的PIO事务请求,IOC都返回NACK响应,从而实现PIO事务的节流控制;当PIO信用计数器都不为0时,每发一个对某个I/O设备的PIO请求,与之相对应的信用计数器减1,每接收一个来自该设备的响应,对应的信用计数器加1;针对不同的IO桥设备分别设计一个独立的信用计数器,从而实现对到不同I/O设备的PIO事务的分组控制。每个IO桥设备信用计数器由3个计数器组成:PIO信用计数器、NACKA(IOC节流控制处于正常工作状态收到PIO事务返回的NACK响应)计数器和NACKB(IOC节流控制逻辑处于节流模式状态收到PIO事务返回的NACK响应)计数器。控制状态机根据各个信用计数器当前值进入不同的状态,一共有四种工作模式状态:Normal模式状态、Collect-A模式状态、Service-A模式状态和Service-B模式状态,Normal模式为正常工作模式,其它3种模式为节流工作模式。PIO事务发送逻辑根据控制状态机的状态决定PIO事务是否发往目的I/O设备:如果PIO事务发送逻辑对于某个设备的PIO信用计数器为0,则不再对该设备发送任何请求,对任何新PIO事务均响应NACK,接收到NACK响应的任何PIO请求均由流出该请求的NC的分组节流控制逻辑1进行重试。一旦PIO信用计数器大于0,重试的PIO请求将被送往对应的I/O设备。PIO事务响应生成逻辑根据控制状态机的状态以及PIO事务缓冲的内容对收到的PIO事务返回响应,当控制状态机工作在正常模式下返回ACK(acknowledge,请求完成响应),当控制状态机工作在其它3种模式时,对retry head请求返回NACK HEAD,其它请求返回NACK,对于来自处理器的PIO写请求,写数据跟随NACK一起返回。
IOC节流控制逻辑中控制状态机的状态转换过程如下:
1、当所有PIO事务均能有效完成,且PIO信用均大于0,PIO事务处理为正常工作模式,对所有PIO事务返回ACK。
2、当有I/O桥对应的PIO信用等于0,进入Collect-A工作模式,IOC对新的PIO事务返回NACK,NC的节流控制逻辑对未完成的PIO事务进行顺序重试。
3、在Collect-A工作模式下,当只剩头重试请求且还有信用时,处理完成后进入Normal状态;处理器接口可以发送新的PIO事务。
4、在Collect-A工作模式下,如果不满足3的条件,IOC的节流控制逻辑工作状态不变,对重试的PIO事务返回NACKA,NC的节流控制逻辑失效WRRDY,不允许处理器流出新的PIO事务,对来不及失效WRRDY流出的PIO事务返回NACKB。
5、在Collect-A工作模式下,当有新的信用时,对头重试操作进行处理,如果此时还有A阶段(由于没有信用,WRRDY信号被失效的时刻)PIO事务进入Service-A状态,仍然不允许CPU流出新的PIO事务。
6、在Service-A工作模式下,对新来的PIO事务和重试的PIO请求返回NACK;当有信用时且还有A阶段PIO事务继续处于Service-A模式。
7、在Service-A工作模式下,当只剩A头重试请求且有信用时,进入Normal状态;处理器接口可以发送新的PIO事务。
8、在Service-A工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段(是指当有信用、重试的PIO头请求被服务且NACKA计数器为0,WRRDY信号被有效的时刻,到发现还有未服务的A阶段请求而重新失效WRRDY信号的时刻),PIO请求则进入Service-B状态。若WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务。
9、在Service-B工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段PIO请求则进入Service-A状态。NC中节流控制逻辑仍然禁止CPU流出新的PIO事务。
10、在Service-B工作模式下,对新来的PIO事务和重试的PIO事务返回NACK;当有信用且还有A阶段PIO请求继续处于Service-B模式。当WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务。
11、在Service-B工作模式下,当只剩A头重试请求且有信用时,正常处理后进入Normal模式,处理器接口可以发送新的PIO事务。
图3是本发明IOC节流控制逻辑四种工作模式时间分布图。标明了WRRDY的有效和失效时机。
1、T1是指由于没有信用,WRRDY信号被失效的时刻。此时所有未完成的PIO请求为A阶段请求,IOC进入Collect-A工作模式。
2、T2是指当有信用,重试的PIO头请求被服务且NACKA计数器为0,WRRDY信号被有效的时刻。T3是指发现还有未服务的A阶段请求而重新失效WRRDY信号的时刻。T2到T3时刻间CPU发出的新的PIO事务为B阶段事务。T2时刻,如果NACKA不为0,IOC的PIO事务处理逻辑进入Service-A工作模式,如果NACKA为0则进入Normal工作模式。
3、T4是指当A阶段请求全部处理完,WRRDY再次被有效的时刻。T5是指发现还有未完成的B阶段请求而再次失效WRRDY信号的时刻。T6是指当B阶段请求全部完成后,WRRDY信号被重新有效的时刻。T4到T5时刻间CPU发出的新的PIO请求为A阶段请求。T4时刻,如果NACKB计数器不为0,IOC中PIO事务处理逻辑进入Service-B工作模式,如果NACKB计数器为0则进入Normal工作模式。T6时刻,如果NACKA计数器不为0,IOC中PIO事务处理逻辑进入Service-A工作模式,如果NACKA计数器为0则进入Normal工作模式。
本发明针对大规模分布共享I/O系统中由于I/O设备速度的不均衡性及I/O事务的突发性导致系统性能降低的问题,采用分组节流方法,对不同I/O桥的事务进行分组控制,很好地解决了可能造成的系统拥塞,保证了系统I/O性能的充分发挥,并实现了I/O资源的灵活配置。本发明已实现于国防科大自行研制的高性能计算机上,经过评测,本发明在大规模分布共享并行I/O系统中很好地实现了PIO事务控制,取得了预期效果。
Claims (7)
1、一种大规模分布共享系统中的输入输出分组节流方法,NC实现处理器接口、访存控制以及互联网接口,IOC完成对IO设备的管理和IO访问的控制,IOC通过PIO信用管理方法实现对PIO事务流的控制,其特征在于设计大规模并行分布系统中输入输出的分组节流控制逻辑,该控制逻辑分为两部分分别在NC和IOC中实现:
1.1、NC中的分组节流控制逻辑叫分组节流控制逻辑1,位于NC中的处理器接口PI内部,包括PIO事务发送控制逻辑、PIO事务FIFO缓冲和PIO事务重试状态机;PIO事务发送控制逻辑与PIO重试状态机连接,由PIO重试状态机控制PIO事务发送控制逻辑;同时,PIO事务发送控制逻辑与一个存放来自CPU的PIO事务的FIFO缓冲区相连,控制PIO事务的顺序流出;PIO事务经过FIFO,通过NC中的报文发送逻辑发送给IOC;来自IOC的PIO响应报文通过NC中的报文接收逻辑返回给NC;
1.2、IOC中分组节流控制逻辑叫分组节流控制逻辑2,它由PIO事务处理逻辑、PIO事务发送逻辑、PIO事务响应接收逻辑、PIO事务响应生成逻辑、多个控制状态机、PIO事务缓冲以及多个信用计数器组成;PIO事务处理逻辑、PIO事务响应生成逻辑、信用计数器都与控制状态机相连;PIO事务处理逻辑与PIO事务发送逻辑、PIO事务缓冲及信用计数器相连,也与NC的报文发送逻辑相连;PIO事务响应接收逻辑既与PIO事务缓冲和信用计数器相连,又与PIO事务响应生成逻辑相连,负责接收来自IO设备返回的PIO响应消息;控制状态机的个数和信用计数器的个数相同,由系统支持的IO设备种类决定,一类IO桥设备对应一个状态机和一个信用计数器,因此根据IO设备类型,挂接在不同IO桥下的IO设备分成了不同的组,通过为这些组分配对应的PIO事务信用,每个组的设备只能使用该组占用的PIO事务缓冲,不能占用其它组的PIO事务缓冲,从而实现对到不同I/O设备的PIO事务流的分组控制;
1.3、流控制逻辑1和节流控制逻辑2协同工作,共同完成PIO事务流的分组节流控制。
2、如权利要求1所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于所述PIO事务重试状态机包含两个状态;空闲状态IdIe和重试状态Retry,该状态机初始状态即系统加电复位时的状态为空闲状态,状态机根据报文接收逻辑收到的PIO事务响应类型进行状态转换,如果收到的是一个NACK应答响应,则状态机进入重试状态,如果收到的是ACK应答响应,则保持空闲状态;当状态机进入重试状态后,只有等到PIO事务发送控制逻辑将FIFO中需要重试的PIO事务全部完成后,才再次进入空闲状态;当状态机处于重试状态时,失效系统总线上的WRRDY信号,阻止CPU继续流出PIO请求;当状态机处于空闲态时,有效WRRDY信号,允许CPU流出新的PIO事务;在状态机处于重试状态,失效WRRDY信号之前,CPU可能已经流出了几个PIO事务,这时PIO事务保存在FIFO缓冲区中,这些事务都是需要重试的事务,所有需要重试的PIO事务按照先进先出的顺序进入该FIFO,在重试请求得到真正响应之前,任何后续请求均不能完成,并按顺序重试这些请求;为了保持这些PIO事务之间的有序性,PIO事务发送控制逻辑将第一个收到NACK响应的PIO事务打上头标记,以区别于后续收到NACK响应的PIO事务,当带头标记的请求被重试时,发送给IOC的命令为retry head命令即最早流出PIO事务重试命令,而后续的请求被重试时,发送给IOC的命令为简单的重试命令,从而IOC能够断定哪个是最早的PIO事务,当PIO信用可用时,最先处理该请求,并返回一个ACK-HEAD响应通知PI第一个重试的事务已被处理;然后,PI给紧跟的下一个重试事务打上头标记以保证所有PIO事务按序完成;当所有重试的PIO事务都完成后,状态机返回空闲状态。
3、如权利要求1所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于对IO设备分组时采取慢速I/O设备占用少一些PIO事务缓冲,快速设备占用多一些PIO事务缓冲的策略,由于慢速I/O设备只占用分配给自己的PIO事务缓冲,当慢速设备的PIO事务缓冲被耗尽时,不占用快速I/O设备的PIO事务缓冲,快速设备的PIO事务流不受影响,因而不会导致整个系统的堵塞。
4、如权利要求1所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于每个信用计数器由一个PIO信用计数器、一个NACKA计数器、一个NACKB计数器组成,PIO信用计数器指明它所对应的IO桥设备有多少PIO事务缓冲可用,当某个设备的PIO信用计数器为0时,对任何后续的PIO事务请求,IOC都返回NACK响应,当NC中的报文接收逻辑收到该NACK响应后,PIO事务重试状态机进入重试状态,同时失效系统总线上的WRRDY信号,阻止CPU继续流出PIO请求,实现对PIO事务的节流控制;当PIO信用计数器都不为0时,每发一个对某个I/O设备的PIO请求,与之相对应的PIO信用计数器减1,每接收一个来自该设备的响应,对应的PIO信用计数器加1;NACKA计数器记录IOC中的分组节流控制逻辑2处于正常工作状态收到PIO事务返回的NACK响应个数;NACKB计数器记录IOC中的分组节流控制逻辑2处于节流工作模式状态收到PIO事务返回的NACK响应个数。
5、如权利要求1所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于控制状态机根据PIO事务处理逻辑收到的PIO事务类型和PIO事务响应接收逻辑收到的PIO事务响应进行状态转换,同时更新相应信用计数器的当前值,一共有Normal模式状态、Collect-A模式状态、Service-A模式状态和Service-B模式状态四种工作模式状态,Normal模式为正常工作状态,其它3种模式为节流工作模式状态:
5.1、设T1为由于没有信用,WRRDY信号被失效的时刻,此时所有未完成的PIO请求为A阶段请求,IOC进入Collect-A工作模式;
5.2、设T2为当有信用,重试的PIO头请求被服务且NACKA计数器为0,WRRDY信号被有效的时刻;设T3为发现还有未服务的A阶段请求而重新失效WRRDY信号的时刻;T2到T3时刻间CPU发出的新的PIO事务为B阶段事务;T2时刻,如果NACKA不为0,IOC的PIO事务处理逻辑进入Service-A工作模式,如果NACKA为0则进入Normal工作模式;
5.3、设T4为当A阶段请求全部处理完,WRRDY再次被有效的时刻,T5为发现还有未完成的B阶段请求而再次失效WRRDY信号的时刻,T6为当B阶段请求全部完成后,WRRDY信号被重新有效的时刻;T4到T5时刻间CPU发出的新的PIO请求为A阶段请求;T4时刻,如果NACKB计数器不为0,IOC中PIO事务处理逻辑进入Service-B工作模式,如果NACKB计数器为0则进入Normal工作模式;T6时刻,如果NACKA计数器不为0,IOC中PIO事务处理逻辑进入Service-A工作模式,如果NACKA计数器为0则进入Normal工作模式。
6、如权利要求1所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于节流控制逻辑1和节流控制逻辑2对PIO事务进行分组节流控制的过程是:
6.1、CPU检查系统总线WRRDY信号,如果WRRDY信号有效,则CPU流出PIO事务;如果WRRDY信号无效,CPU不能流出PIO事务;
6.2、从CPU流出的PIO事务由NC中PI部件的FIFO缓冲,PIO事务发送控制逻辑检查PIO事务重试状态机,如果状态机为空闲状态,则通过报文发送逻辑将PIO事务发送给IOC;如果PIO事务重试状态机为重试状态,则将FIFO中第一个PIO事务打上头标志,发送给IOC,并失效WRRDY信号;当FIFO中所有重试事务完成、状态机再次变为空闲状态后,有效WRRDY信号;这样,通过限制一段时间内CPU连续流出过多的PIO事务,实现了在突发IO事务时对PIO事务流的节流控制,减少了对系统性能的影响;
6.3、IOC中的PIO事务处理逻辑接收到PIO事务,分析PIO事务类型及其目标IO设备,检查相应设备对应的控制状态机;如果状态机处于正常工作状态,则为该PIO事务分配相应的PIO事务缓冲,记录必要的PIO事务信息,通过PIO事务发送逻辑将PIO事务发送给目标IO设备,同时IO设备对应的PIO计数减1,状态机进行相应的状态转换;如果状态机处于节流工作模式状态,则不为该PIO事务分配PIO事务缓冲,通过PIO事务响应生成逻辑生成NACK报文或ACK-HEAD报文返回给NC,同时IO设备对应的NACKA或NACKB计数加1,状态机进行相应的状态转换;
6.4、IO设备通过IO总线接收PIO事务,处理完PIO事务后,将响应结果再通过IO总线返回给IOC中的PIO事务响应接收逻辑;PIO事务响应接收逻辑检查分析该响应,并与PIO事务缓冲中记录的PIO事务信息进行匹配,然后PIO事务响应生成逻辑生成对应的响应报文,返回给NC;同时,释放相应的PIO事务缓冲,PIO信用计数加1,控制状态机进行相应的状态转换;
6.5、NC接收到响应后,PIO重试状态机进行必要的状态转换,控制WRRDY信号,并将响应结果返回给CPU,完成该次PIO事务的处理。
7.如权利要求1或5所述的大规模分布共享系统中的输入输出分组节流方法,其特征在于所述控制状态机状态转换流程是:
7.1、当所有PIO事务均能有效完成,且PIO信用均大于0,PIO事务处理为Normal工作模式,对所有PIO事务返回ACK;
7.2、当有I/O桥对应的PIO信用等于0,进入Collect-A工作模式,IOC对新的PIO事务返回NACK,NC的PIO事务发送控制逻辑对未完成的PIO事务进行顺序重试;
7.3、在Collect-A工作模式下,当只剩头重试请求且还有信用时,处理完成后进入Normal状态;处理器接口可以发送新的PIO事务;
7.4、在Collect-A工作模式下,如果不满足3的条件,IOC的分组节流控制逻辑工作状态维持在Collect-A工作模式不变,对重试的PIO事务返回NACKA,NC的PI接口失效WRRDY,不允许处理器流出新的PIO事务,对来不及失效WRRDY流出的PIO事务返回NACKB;
7.5、在Collect-A工作模式下,当有新的信用时,对头重试操作进行处理,如果此时还有A阶段PIO事务进入Service-A状态,仍然不允许CPU流出新的PIO事务;
7.6、在Service-A工作模式下,对新来的PIO事务和重试的PIO请求返回NACK;当有信用时且还有A阶段PIO事务继续处于Service-A模式;
7.7、在Service-A工作模式下,当只剩A头重试请求且有信用时,进入Normal状态;处理器接口可以发送新的PIO事务;
7.8、在Service-A工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段,PIO请求则进入Service-B状态;若WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务;
7.9、在Service-B工作模式下,当有信用时,对头重试操作进行处理,如果此时只有B阶段PIO请求则进入Service-A状态,NC中节流控制逻辑仍然禁止CPU流出新的PIO事务;
7.10、在Service-B工作模式下,对新来的PIO事务和重试的PIO事务返回NACK;当有信用且还有A阶段PIO请求继续处于Service-B模式,当WRRDY有效,则允许CPU流出新的PIO事务,否则禁止CPU流出新的PIO事务;
7.11、在Service-B工作模式下,当只剩A头重试请求且有Credit时,正常处理后进入Normal模式,处理器接口可以发送新的PIO事务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100314495A CN100375080C (zh) | 2005-04-15 | 2005-04-15 | 大规模分布共享系统中的输入输出分组节流方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100314495A CN100375080C (zh) | 2005-04-15 | 2005-04-15 | 大规模分布共享系统中的输入输出分组节流方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1667602A true CN1667602A (zh) | 2005-09-14 |
CN100375080C CN100375080C (zh) | 2008-03-12 |
Family
ID=35038704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100314495A Expired - Fee Related CN100375080C (zh) | 2005-04-15 | 2005-04-15 | 大规模分布共享系统中的输入输出分组节流方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100375080C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105009100A (zh) * | 2013-11-28 | 2015-10-28 | 株式会社日立制作所 | 计算机系统及计算机系统的控制方法 |
CN106415513A (zh) * | 2014-06-26 | 2017-02-15 | 英特尔公司 | 用于分组发送的优化的信用返回机制 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434636B1 (en) * | 1999-10-31 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for performing high bandwidth low latency programmed I/O writes by passing tokens |
US6862634B2 (en) * | 2001-06-29 | 2005-03-01 | Fujitsu Limited | Mechanism to improve performance in a multi-node computer system |
JP4180863B2 (ja) * | 2002-09-10 | 2008-11-12 | 東芝三菱電機産業システム株式会社 | プラント制御装置 |
US7280482B2 (en) * | 2002-11-01 | 2007-10-09 | Nokia Corporation | Dynamic load distribution using local state information |
JP2005004394A (ja) * | 2003-06-11 | 2005-01-06 | Mitsubishi Electric Corp | 分散pioシステム |
CN100429629C (zh) * | 2003-12-04 | 2008-10-29 | 中国科学院计算技术研究所 | 一种构造大规模高可用机群操作系统的方法 |
-
2005
- 2005-04-15 CN CNB2005100314495A patent/CN100375080C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105009100A (zh) * | 2013-11-28 | 2015-10-28 | 株式会社日立制作所 | 计算机系统及计算机系统的控制方法 |
CN106415513A (zh) * | 2014-06-26 | 2017-02-15 | 英特尔公司 | 用于分组发送的优化的信用返回机制 |
CN106415513B (zh) * | 2014-06-26 | 2019-06-04 | 英特尔公司 | 用于分组发送的优化的信用返回机制 |
Also Published As
Publication number | Publication date |
---|---|
CN100375080C (zh) | 2008-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8249072B2 (en) | Scalable interface for connecting multiple computer systems which performs parallel MPI header matching | |
CN100524252C (zh) | 一种嵌入式系统芯片及数据读写处理方法 | |
CN101878475B (zh) | 向星形拓扑串行总线接口委托网络处理器操作 | |
US8085801B2 (en) | Resource arbitration | |
US6424621B1 (en) | Software interface between switching module and operating system of a data packet switching and load balancing system | |
CN1608256A (zh) | 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型 | |
US6490630B1 (en) | System and method for avoiding deadlock in multi-node network | |
WO2008052181A2 (en) | A network interface card for use in parallel computing systems | |
CN1608255A (zh) | 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型 | |
CN100583819C (zh) | 用于分组交换控制的集成电路和方法 | |
CN1149223A (zh) | 具有可指定的多种分组丢失概率的Tbit/s级分组交换机 | |
US20100183028A1 (en) | System And Method For Establishing Sufficient Virtual Channel Performance In A Parallel Computing Network | |
CN101266557A (zh) | 在客户机-服务器或主机环境中计算作业的多目标分配 | |
Bogatyrev et al. | Multipath Redundant Transmission with Packet Segmentation | |
CN101814060A (zh) | 在背靠背非透明桥中进行系统间协议交换的方法和装置 | |
CN1149222A (zh) | 具有多信道广播带外控制的atm分组交换机 | |
CN1271540C (zh) | 用于在对称多处理器系统中发送分组的方法和装置 | |
CN102916905A (zh) | 一种基于hash算法的万兆网卡多路分流方法及其系统 | |
CN100531129C (zh) | 用于在网络处理器中记帐的装置和方法 | |
CN104536921A (zh) | 一种edma控制器分离式并行数据通道的设计方法 | |
CN100380326C (zh) | 用于共享计算机资源的系统和方法 | |
US20060265541A1 (en) | Method and apparatus for generating traffic in an electronic bridge via a local controller | |
CN1324499C (zh) | 处理不期望的完成分组和具有非成功完成状态的完成分组的方法 | |
TWI536772B (zh) | 直接提供資料訊息至協定層之技術 | |
CN1464415A (zh) | 一种多处理器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080312 Termination date: 20150415 |
|
EXPY | Termination of patent right or utility model |