队 列240。冲,其用于指示存在于虚拟通道的其他队列中的信息的排序。此外,命令队列240。1 也可W与投送和非投送事务相关联。
[0020] 仍然参照图2,跟踪器225用于维持对于所有未完成的请求的跟踪。如所见到的, 跟踪器225向选择逻辑220提供信号。此外,外发写入请求队列230禪合在跟踪器225与选 择逻辑220之间并且在外发写入请求已经被提交时提供指示。当条目到达队列的头部时, 其被提供给选择逻辑220,该选择逻辑220接着向数据缓冲器215发送控制信号,W使与将 要被传输的特定外发写入请求相关联的数据从数据缓冲器215输出,W存储在有序域内的 合适队列中。
[0021] 在操作中,来自缓存代理(例如,CPU模块210)的MMI0写入请求首先被加载到请 求跟踪器220中。接着,MMI0写入数据被从CPU模块210发送到数据缓冲器215。跟踪器 220还探听所有的缓存代理W确保MMI0数据的相关性(coherency)。探听可W发生在写入 数据已经从CPU模块210被发送之前或之后。接下来,将请求投送至VC0投送队列240。1 (跨 有序域)。此时,CPU模块210被通知;该请求现在被排序;并且加载访问匪10写入数据 的请求也被加载到提交的外发写入请求队列230中。当请求到达队列的头部时,系统代理 对来自数据缓冲器215的读取进行调度并且将MMI0写入数据传送到VC0投送的数据队列 240。2 中。
[0022] 仍然参照图2,外发限制逻辑235可W存在并且可W用于控制外发投送请求和外 发读取完成的传输,W便因而能够在诸如存储器映射lO(MMIO)写入事务的投送写入事务 W及外发读取完成被引入到有序域270之前,控制它们的带宽分配。如将在W下实施例中 进一步描述的,根据本发明的实施例,多状态有限状态机可W存在于限制逻辑235内,W便 在该些外发写入事务和读取完成事务之间可控地共享带宽。
[0023] 现在参照图3,示出了根据本发明实施例用于控制具有不同类型的信息流的外发 通道的带宽的方法的流程图。注意到,图3中描述的操作是关于在多个信息类型之间共享 的单个通道。在本文描述的具体实施例中,该可W是虚拟通道零(VCO),其包括多个输出队 列,用于存储进入通信通道的各种信息类型。作为示例,该些队列可W包括投送/非投送命 令队列、写入完成队列、投送/非投送数据队列和顺序队列,如上面讨论的。当然,多个通道 中的每一个可W根据方法300更新,或者多个通道可W具有按照该一方式分配的它们的带 宽。
[0024] 如图3所示,方法300可W例如通过系统代理或者其他结构的外发限制逻辑执行。 如所见到的,方法300开始于将配置值存储在某些配置存储装置中。具体地说,读取配置权 重存储装置和写入请求权重存储装置可W存在于该逻辑内并且可W例如通过寄存器来实 现,该寄存器存储该些可W由BIOS配置并且存储在该些存储装置中的权重值。在实施例 中,该些权重值可W对应于给定类型的事务的最大数量,在使得另一类型的信息流能够进 入外发有序域之前,可W例如将该一给定类型的事务在外发方向上连续发送到外发有序域 中。
[0025] 仍然参照图3,下一个控制进行到方框320,其中使能外发限制(方框310)。例如, 可W响应于通过BIOS、固件或者配置限制器用于在正常操作期间活动的驱动程序的控制, 在重置时使能限制器。在其他实施例中,限制器的该一使能可W在动态基础上进行,其例如 基于工作量和/或用户控制而受到控制。在实施例中,外发限制器逻辑可W包括配置存储 装置,该配置存储装置具有使能字段W指示该逻辑是被使能还是被禁用。控制接下来进行 到方框330,其中各种计数器被清零。该些计数器包括读取完成计数器和写入请求计数器。 在实施例中,该些计数器可W被配置为在每次相对应的事务处理类型的阔值量的信息被设 定在外发有序域中时递增的递增计数器。
[0026] 此时,外发限制逻辑准备好用于正常操作。如所见到的,控制进行到菱形框340,其 中可W确定读取完成数据是否已经被发送到外发有序域中。如果为是,则控制返回到方框 350,其中能够每所传输的阔值数据长度来更新读取完成计数器。作为示例,对于被发送到 外发有序域中的每64字节炬)数据块,计数器可W递增一。当然应理解,本发明的范围不 限于此,并且在其他实施例中,数据的不同可配置量使计数器递增。
[0027] 如果相反在菱形框340处确定完成数据没有被发送到外发有序域中,则控制接下 来进行到菱形框360,其中能够确定写入请求是否已经被发送到外发有序域中。如果为是, 则控制进行到方框370,其中写入请求计数器基于写入请求的大小而被更新。目P,如果写入 请求小于第一长度,则发生第一量的更新,并且如果写入请求大于该一长度,则发生第二量 的更新。
[002引从W上任一路径,控制进行到菱形框380,其中可W确定两个计数器是否都处于它 们的配置值处。目P,两个计数器可W被配置为饱和计数器,使得在达到配置值时,该计数器 不会重置或翻转,其简单地保持在饱和值处。因而当两个计数器都处于它们的饱和值时,控 制进行到方框330,其中该些计数器可W被重置并且操作继续。如果两个计数器均未处于它 们的配置值处,则控制返回到菱形框340用于进一步操作。虽然在图3的实施例中在该一 高级别处进行论述,但是应理解,本发明的范围不限于此。
[0029] 现在参照图4,示出了根据本发明实施例用于执行外发带宽限制的状态机的方框 图。如图4中所示,状态机400包括第一状态410,即限制写入请求状态,W及第二状态450, 即限制读取完成状态。随着系统的操作进行,基于某些状况,状态从一个转变到另一个。 [0030] 关于第一状态机410,其操作开始于方框420,其中防止写入请求被发送到外发有 序域中。尽管本发明的范围不限于此,但是在实施例中,能够将限制信号从外发限制器逻辑 发送到跟踪器,该跟踪器控制写入请求到外发有序域的输出。接下来,控制进行到菱形框 425,其中可W确定是否存在投送写入请求可用于发送。虽然本发明的范围不限于此,但是 该一确定可W基于跟踪器中的信息,例如跟踪器的每一个条目的消息类型字段的分析。 [003U如果确定存在投送写入可用于发送,则控制接下来进行到菱形框430,其中可W确 定读取完成计数器值是否大于针对该计数器的配置值。换句话说,可W确定读取完成计数 器是否已经饱和。如果为否,则控制接下来进行到菱形框435,其中能够确定是否不存在准 备好返回到外发有序域的读取完成。如果不存在可用的该样的读取完成,则控制进行到方 框440,其中状态机可W转变到另一状态,即限制读取完成状态。注意到,如果读取完成计数 器值大于读取完成配置值,则控制也进行到方框440。
[0032] 关于第二状态机450,其操作开始于方框460,其中防止读取完成被发送到外发有 序域中。虽然本发明的范围不限于此,但是在实施例中,可W将限制信号从外发限制器逻辑 发送到选择逻辑,该选择逻辑转而控制读取完成从共享数据缓冲器输出到外发有序域中。 接下来,控制进行到菱形框465,其中能够确定是否存在读取完成可用于发送。虽然本发明 的范围不限于此,但是该一确定可W基于共享数据缓冲器中的信息,例如缓冲器的每一个 条目的有效字段的分析。
[0033] 如果确定存在读取完成可用于发送,则控制接下来进行到菱形框470,其中能够确 定写入请求计数器值是否大于针对该计数器的配置值。换句话说,可W确定写入请求计数 器是否已经饱和。如果为否,则控制接下来进行到菱形框475,其中能够确定在请求跟踪器 中是否不存在准备好被发送到外发有序域中的写入请求。如果没有可用的该样的写入请 求,则控制进行到方框480,其中状态机可W转变为另一状态,即限制写入请求状态。注意 至IJ,如果写入请求计数器值大于写入请求配置值,则控制也进行到方框480。
[0034] 现在参照图5,示出了根据本发明实施例的外发限制逻辑500的方框图。如图5所 示,外发状态机510可W被实现为微代码、可编程逻辑、硬编码逻辑、控制逻辑、处理器抽象 层等等。其可W通常执行针对图4中论述的不同状态而描述的操作。为了控制带宽分配, BIOS配置3个状态,在实施例中,该=个状态可W被存储在配置寄存器中,即,使能外发限 制器存储装置532 ;外发VC0读取完成权重存储装置530,其值指示在限制VC0读取完成之 前允许的64