每个代理队列较浅的非阻塞地址开关的制作方法

文档序号:6569197阅读:153来源:国知局
专利名称:每个代理队列较浅的非阻塞地址开关的制作方法
技术领域
本发明涉及集成电路的领域,更具体地说,涉及集成电路内和/ 或集成电路之间的互连的仲裁机构。
背景技术
系统中的集成电路,或者集成电路内的各种电路一般需要相互通 信。许多情况下,系统/集成电路中的通信器可通过存储器映射中的各 个地址通信。即,各个通信器被分配存储器映射中的地址,对所述地 址的读取/写入被用于通信。 一般来说,这样的通信器使用在通信器之 间的互连上传送的读取/写入事务。例如,常见的是具有一条地址总线, 在所述地址总线上,传送地址、命令和其它事务信息以发起事务。另 外,可使用数据总线来传送与事务对应的数据(如果有的话)。如果为 事务实现高速緩存一致性,那么可以提供一个响应接口以便按照由通 信器实现的一致性方案,保持一致状态。在互连或其一部分在通信器之间被共享的条件下,需要关于互连 的使用在通信器之间进行仲裁的某种机制。过去,使用的是集中式和 分布式仲裁机制。在集中式仲裁机制中,所有通信器向中央仲裁器传 送请求信号,中央仲裁器确定哪个通信器被准许使用互连("仲裁获胜 者")。中央仲裁器向获得批准的通信器返回许可信号,获得批准的通 信器随后在互连上驱动其事务。分布式仲裁方案中,每个通信器实 现一个本地仲裁器(或者附近包括一个本地仲裁器)。每个通信器向所 有本地仲裁器宣称其请求信号。本地仲裁器用于独立地确定相同的仲 裁获胜者。获得批准的通信器的本地仲裁器通知该获得批准的通信 器,该获得批准的通信器把其事务驱动到互连上。与分布式仲裁机制相比,集中式仲裁机制 一般实现起来较简单。但是,集中式仲裁机制一般来说也是一种等待时间较长的机制。集中 式仲裁机制包括可能较长距离的请求信号传输,随后是同样距离的许 可信号传输,接下来是得到批准的通信器驱动其事务。另一方面,更 复杂的分布式仲裁机制只涉及一次长距离传输(对每个本地仲裁器的 请求信号传输)。分布式仲裁机制中的复杂性一般包括关于特定通信器的许可的更复杂"停车(parking)",控制通信器的流程的复杂性,以及 以每个源通信器为基础的目标通信器中的緩沖器的分配。发明内容在一个实施例中,开关(swtich)被配置成与互连耦接。所述开 关包括多个存储位置和与所述多个存储位置耦接的仲裁器控制电路。 所述多个存储位置被配置成保存由多个代理传送的多个请求。仲裁器 控制电路被配置成在保存于所述多个存储位置中的多个请求之间进 行仲裁。选择的请求是仲裁的获胜者,开关被配置成把选择的请求从 所述多个存储位置之一传送到所述互连上。在另一实施例中,系统包 括多个代理, 一个互连,和与所述多个代理及互连耦接的开关。在另 一实施例中,方法包括使来自多个代理的请求在多个存储位 置中排队;在所述多个存储位置中的请求之间进行仲裁,以选择所述 多个请求中的一个请求;并在互连上传送选择的请求。


下面的说明参考了附图,现在简要说明这些附图。 图l是集成电路的一个实施例的方框图。 图2是图1中所示的仲裁器/地址开关的一个实施例的方框图。 图3是图解说明图2中所示的在请求之间进行仲裁的仲裁器控制 单元的一个实施例的操作的流程图。图4是图解说明一个实施例的排序规则的表。图5是在地址互连上传递请求的方法的高级流程图。尽管本发明容许各种修改和备选形式,不过附图中举例表示了本发明的具体实施例,并且这里将详细说明所述具体实施例。但是,附 图及其详细说明显然并不意图把本发明局限于公开的特定形式,相 反,本发明将包括落入由附加权利要求限定的本发明的精神和范围内 的所有修改、等同物和替换物。
具体实施例方式
现在参见图1,图中表示了系统10的一个实施例的方框图。在 图解说明的实施例中,系统10包括多个代理,比如代理12A-12D。 系统还包括地址开关14,地址互连16和响应/数据互连18。代理 12A-12B与地址开关14耦接(在图解说明的实施例中,代理12B通过 触发器(flop)20A被耦接)。地址开关14还与地址互连16耦接,地址 互连16与代理12A-12D耦接(在图解说明的实施例中,通过触发器 20B-20I),按照另一种方式来看,触发器20B-20I可以是地址互连16 的一部分。代理12A-12D还与响应/数据互连18耦接。在一个实施例 中,系统10可被集成到单一的集成电路芯片上。在其它实施例中, 系统10的各个组件可在独立的集成电路上实现。在各个实施例中, 可以使用任意级别的集成。
代理12A-12B被配置成把将在地址互连16上传送的请求传送给 地址开关14。每个请求可包括事务的地址和命令(所述命令识别待执 行的事务)。可以支持各种命令,例如相关(coherent)读取和写入命令, 非相关读取和写入命令,相关所有权命令,探测命令,同步命令,高 速緩存管理命令等等。在各个实施例中,请求还包括其它信息。例如, 在下面更详细说明的一个实施例中,请求可包括请求的优先级(供仲裁 之用),和该请求的数据是否将被复制到2级高速緩存的指示。
代理12A-12B可被称为源代理,因为它们可通过传送对地址互 连16的请求,在系统中发起事务。例证的源代理可包括处理器,外 部回写式高速緩存(它向已被改变成内存的写入收回(write evicted)高 速緩存块发起(source)写入事务),和输入/输出(1/0)桥接器(它代表它 们耦接的外围设备发起事务)。如图1中的省略号所示,各个实施例中可包括两个以上的源代理(或者下面说明的源/目标代理)。其它代理可
能不发起(source)事务,但是可以是事务的目标(即,接收事务并且对 事务的数据负责的代理)。这样的代理被称为目标代理。对于读取事务 来说,目标代理提供数据,除非另一代理具有数据的最新(修改的)高 速緩存副本。对于写入事务来说,目标代理接收源代理供给的写入数
据。例如,目标代理可包括存储器控制器和i/o桥接器。 一些代理可
以既是某些事务的源代理,又是其它事务的目标代理。例证的源/目标
代理可包括上面提及的i/o桥接器或者外部高速緩存。 一般来说,代
理可包含被配置成借助地址互连16和响应/数据互连18上的事务进行 通信的任何电路。
每个源代理12A-12B(或者源/目标代理,不过在本说明中为了简 洁起见,将使用源代理)可使用请求信号来指示源代理12A-12B正在 传送请求。地址开关14还可向指定的源代理12A-12B断言许可信号, 以指示源代理12A-12B传送的对地址互连16的请求已被准许。
地址开关14可包括多个存储位置,所述存储位置被配置成保存 源代理传送的请求,直到对地址互连16的请求被准许为止。在一个 实施例中,存储位置可包含多个队列。每个队列可对应于特定的源代 理,并且可专用于保存由该源代理传送的请求。即,在队列和源代理 之间存在一一对应。指定源代理的队列可保存由该指定源代理传给地 址开关14的多个请求。每个源代理可以知道与该源代理对应的队列 中的队列项的数目,不能传送比队列项更多的请求。
地址开关14还可被配置成在队列中的请求之间进行仲裁,以选 择在地址互连16上进行传输的请求。可以采用任何仲裁方案。例如, 在一些实施例中,每个请求可具有分配给它的优先级,仲裁方案可以 是具有饥俄预防机制的严格优先级方案(选择优先级最高的请求),以 避免使优先级较低的请求俄死。地址开关14可在地址互连16上驱动 选择的请求。
从而,地址开关14可对地址互连16采用集中式仲裁。但是,由 于请求被传给地址开关14,并由地址开关14驱动到地址互连16上,因此在一些实施例中,与向选择的在仲裁中获胜的源代理返回许可(和
源代理响应所述许可,驱动地址互连16)关联的等待时间可被缩短。 地址开关14可并行于把选择的请求驱动到地址互连16上,向源代理 返回许可。另外,在一些实施例中,地址开关14中的仲裁电路具有 和请求有关的更多信息,因为请求本身在地址开关14中排队(例如, 与一般在常规的集中式仲裁器中实现的请求/许可结构相比)。
当源代理从地址开关14收到许可时,源代理被告知某一队列项 可用于保存另一请求。在一个实施例中,可按照传送顺序准许来自指 定源代理的请求。从而,收到许可的源代理可使所述许可与对应的请 求联系起来。在其它实施例中,地址开关14可被配置成在一些情况 下对请求重新排序(在较早从源代理接收的请求之前传送稍后从相同 源代理接收的请求)。在这样的实施例中,源代理可与地址互连16耦 接,并且可接收传紧接着传送的请求,以确定哪个请求被准许。例如, 在一些实施例中,源代理可用源标记标识每个请求,源代理可从地址 互连16接收源标记,以确定哪个请求被准许。
在各个实施例中,地址互16可包括任何通信介质,例如,地址 互连16可包括分组接口,其中在地址互连16上在一个或多个时钟周 期内以分组的形式传送请求。特别地,在一个实施例中,可在地址互 连16上在一个时钟周期内传送地址分组。这样的实施例可使地址开 关14多少与事务的地址阶段的协议隔离。其它实施例可被地址互连 16实现成总线,地址连同各种控制信号一起被传送,以指示在地址阶 段内传送的命令和其它控制信息。
请求被广播给地址互连16上的代理12A-12D。在一些实施例中, 在地址互连16上到达最远的代理12A-12D(就物理距离来说)的飞行时 间可能超过与地址互连16关联的时钟的一个时钟周期。包括在地址 开关14和指定代理12A-12B之间的触发器(Flop)20B-201的数目可以 到最远的代理的飞行时间(以用于地址互连16的时钟信号的时钟周期 的数目表示)为基础。在图解说明的实施例中,飞行时间超过两个时钟 周期,从而使用两个触发器。其它实施例可以包括零个触发器(如果飞行时间小于一个时钟周期), 一个触发器(如果飞行时间超过一个时钟 周期,但是小于两个时钟周期),或者两个以上的触发器(取决于飞行 时间)。为了确保指定的请求逻辑上在相同的时钟周期被每个代理
12A-12D接收,即使某些代理物理上离地址开关14更近,请求能够 在更短的飞行时间内到达所述更近的代理,仍然在地址开关14和每 个代理12A-12D之间设置相同数目的触发器20B-20L到更远的代理 的触发器可沿地址开关14和所述更远的代理之间的距离物理分布。 为了简化附图,图1并不试解说明触发器20B-20I的物理分布。
由于每个代理12A-12D逻辑上在相同的时钟周期接收在地址互 连16上传送的请求,在一些实施例中,地址互连16可以是相关 (coherent)事务的空间相关点。即,在地址互连16上成功传送的请求 的顺序可为了相关性的目的定义事务的顺序。
类似地,在一些实施例中,请求从源代理12A-12B到地址开关 14的飞行时间可能超过一个时钟周期。在一些实施例中,地址开关 14可被物理布置成最接近预期具有最高的请求带宽的源代理(例如, 处理器代理一般具有比高速緩存代理和I/O代理更高的请求带宽)。在 图1中的实施例中,来自源代理12B的请求的飞行时间可超过一个时 钟周期,从而触发器20A可被用于捕获所述请求,并继续所述请求对 地址开关14的传送。类似地,地址开关14返回的许可信号可被触发 器20A捕捉,并在下一时钟周期传送。
在本实施例中,由于地址互连16是相关事务的相关点(也可整体 定义请求的顺序),因此在从不同的代理传给地址开关14的请求之中 不存在任何排序。因此,如果诸如触发器20A之类的触发器被用于自 一个源代理的飞行时间,那么对于其请求的飞行时间小于一个时钟周 期的其它代理来说,不需要插入触发器。
如上所迷,在一些实施例中,源代理可在地址互连16上接收请 求,以确定实际向地址互连16批准停留在地址开关14中的来自指定 代理的多个请求中的哪个请求。另外,在一些实施例中,也可高速緩 存数据(从而可以参与相关事务)的源代理也可出于相关性的目的在地址互连16上探听其它源代理的请求。诸如代理12C-12D的目标代理 与地址互连16耦接,以便接收以它们为目标的请求。
在一个实施例中,地址开关14也可被配置成管理对各个目标代 理12C-12D的流控制。例如,地址开关14可被配置成确定每个请求 寻址哪个目标代理(例如,借助请求地址的粗粒(coarsegrain)解码,并 根据所述解码把请求地址映射到目标代理)。地址开关14可以知道在 目标代理中排队的请求的数目(在从地址互(16)收到请求之后),并且可 以确保目标代理的输入队列不会由于请求而溢出。如果给定请求以其 输入队列已满的指定目标代理为目标,那么地址开关14可确保该给 定请求不会被选作仲裁的获胜者,直到在给定的目标代理中, 一个输 入队列项可用为止。在这种情况下,地址开关14可以不阻塞其它请 求。即,即使由于目标代理不能接收请求,较早的请求或较高优先级 的请求没有资格赢得仲裁,地址开关14仍然能够选择以另一目标代 理为目标的另一请求。在一些实施例中,地址开关14也可努力在源 代理之中实现对目标代理的公平或优化访问。
代理12A-12D也可与响应/数据互18耦接,以便传递在地址互连 16上借助请求发起的事务的响应阶段和数据阶段。在各个实施例中, 一些事务可能不包括数据阶段。响应阶段可包括来自高速緩存代理的 对相关事务的响应。所述响应可提供在与事务对应的数据的接收器 中,应建立哪种相关状态。亊务的数据阶段涉及对源代理的数据传输 (用于读取)或者对目标代理的数据传输(用于写入)。在各个实施例中, 响应/数据互连18可包括一个通信介质。
尽管在上面的一些实施例中,地址开关14中的存储位置被描述 成每个代理的队列,不过其它实施例可按照其它方式实现存储位置。 例如,存储位置可以是源代理把请求保存于其中的单一队列。队列项 可由地址开关14灵活地分配给源代理,存在指示每个源代理可用的 队列项的数目的其它信令(例如,从地址开关14到每个代理的指示队 列项的数目的信令,或者至少一个另外的队列项可供该代理之用的信 令等等)。代理可被分组,并且可以共用队列,或者可根据每个请求的目标分配队列。
注意尽管在图1的实施例中图解说明了触发器20A-201,不过任 何定时存储装置可被用作所述装置20A-201。例如,可以使用寄存器、 锁存器等等。定时存储装置可以包括配置成响应时钟信号,捕捉供存 储的数值的任何存储装置。在本实施例中,触发器20A-20I的时钟信 号输入可以是用于地址互连16的时钟。 一些代理在内部可以时钟的 倍数工作。也可用任何定时存储装置实现这里描述的其它触发器。一 般来说,每个触发器20A-201具有与其输入的宽度相等的位宽。例如, 触发器20A可以是与地址开关14的请求/准许接口的宽度,触发器 20B-20I的宽度可以是地址互连6的宽度。
虽然上面严格优先级仲裁方案被用作一个例子,不过其它实施例 可以实现其它仲裁方案。例如,其它仲裁方案可以包括循环法、优先 级加权循环法、循环方案和优先级的组合等等。
虽然上面的讨论涉及的是接收对地址互连16的请求,并在所述 请求之中进行仲裁,以确定将在地址互连16上传送的仲裁获胜者的 地址开关,不过其它实施例可以实现用于数据互连的类似开关。对数 据开关的请求可以接收自数据源。请求可包括事务的数据,以及识别 数据所对应的地址请求的标记。请求可包括优先级,在各个实施例中, 所述优先级可以是和地址请求相同的优先级,或者是不同的优先级。 数据开关可在排队的数据请求中进行仲裁,以选择在数据互连上驱动 的仲裁获胜者。
现在参见图2,图中表示了地址开关14的一个实施例的方框图。 在图解说明的实施例中,地址开关14包括队列,比如分别对应于代 理12A和12B的队列30A和30B 。地址开关14还包括多路复用器32, 输出触发器34和仲裁器控制电路36。队列30A和30B被耦接,以便 从它们各自的代理12A-12B接收请求。另外,在图解说明的实施例中, 仲裁器控制电路36和多路复用器32被耦接,以接收所述请求。队列 30A和30B还与仲裁器控制电路36和多路复用器32耦接。在包括另 外的源代理的实施例中,多路复用器32还可被耦接成接收所述请求和地址开关14中的对应队列的输出。仲裁器控制电路36被耦接成接 收来自代理12A-12B的请求信号,并向代理12A-12B提供许可信号。 仲裁器控制电路36还被耦接成提供对多路复用器32的选择控制。多 路复用器32的输出端与输出触发器34耦接,输出触发器34再与地 址互连16耦接。仲裁器控制电路36还被耦接成接收来自代理 12C-12D(在一些实施例中,其它目标代理或源/目标代理)的信用指示 (credit indication )。
在图解说明的实施例中,每个请求包括地址(Addr),命令(Cmd), 优先级(Pr),事务ID(TId)和ReorderOK位(ROK)。队列30A-30B可 被配置成保存所述请求。即,每个队列项可包括足以保存请求的存储 空间。在图解说明的实施例中,每个队列30A-30B包括两项。在其它 实施例中,在每个队列30A-30B中可以包括更多的项。地址是存储器 映射中受所述请求影响,并且识别目标代理的地址。命令识别正在发 起的事务。优先级指示请求的优先级。在一个实施例中,使用三个优 先级。当请求的等待时间至关重要时,使用最高优先级。例如,在一 个实施例中,当与分组接口,比如以太网接口耦接的一些1/0桥接器 或者驱动分组接口的电路中的緩沖器不断减少时,所述i/o桥接器可 以使用最高优先级来读取描述符或者分组数据。中等优先级可由I/O 桥接器用于处理器读取和直接存储器访问(DMA)描述符读取。如果源 代理的写緩冲器正在接近于充满,那么中等优先级也可被用于写入。 低优先级可被用于所有其它请求(例如,处理器写入,诸如DAM读取 和写入之类的高带宽读取和写入等等)。其它实施例可以使用更多或更 少的优先级。reorderOK位可被用于指示该请求是否可被重新安排在 来自相同代理的某一在先请求之前,如果所述在先请求仍然在代理的 队列30A-30B中(即,所述在先请求还未被准许到地址互连16上)。源 代理可以按照由代理实现的一组排序规则产生reorderOK位。图4 中图解说明了一个例子,并在下面更详细地讨论。
当向地址开关14传送请求时,代理12A-12B可宣称对应的请求 信号。好,宣称的请求信号可以充当请求的有效位,用于写入与代理12A-12B对应的队列30A-30B,以及用于向仲裁器控制电路36指示 该请求。仲裁器控制电路36还可产生许可信号(每个源代理12A-12B 一个许可信号)。仲裁器控制电路36可向指定的源代理12A-12B宣称 许可信号,以指示来自源代理12A-12B的请求已被准许,并将在地址 互连16上被驱动。宣称的许可信号可向代理12A-12B指示代理的队 列30A-30B中的一个队列项正在释放以接受另一请求。
每个代理12A-12B可被配置成传送数目与其队列30A-30B中的 队列项的数目(在图解说明的实施例中,两个)相同的请求。在一个实 施例中,每个代理12A-12B可把停留在队列30A-30B中的请求的数 目限制为项数。即,代理可传送两个请求,随后禁止传送另外的请求, 直到宣称的许可信号指示一个队列项正在被释放为止。在另一实施例 中,每个代理12A-12B可填充其队列30A-30B,并传送又一个请求, 代理12A-12B可继续传送所述又一个请求,直到前一请求被准许,从 而宣称的请求被写入队列项中为止。
仲裁器控制电路36可仲裁队列30A-30B中的请求,并选择将在 地址互连16上传送的请求。仲裁器控制电路36可产生对多路复用器 32的选择控制,以选择请求,并把选择的请求提供给输出触发器34。 输出触发器34把请求驱动到地址互连16上。可提供输出触发器34, 以保证在时钟周期开始时,请求被驱动到地址互连16上。在其它实 施例中,可以除去输出触发器34,可依据通过多路复用器32的选择 驱动请求。选择的请求同样从其队列30A-30B中被删除,仲裁器控制 电路36向对应的源代理12A-12B宣称许可信号。
仲裁器控制电路36可实现任意仲裁方案在请求中进行选择。例 如,如上所述,仲裁器控制电路36可实现具有饥饿预防机制的严格 优先级选择。在这种方案中,最高优先级请求通常被选为仲裁的获胜 者。但是,如果众多的较高优先级请求导致较低优先级请求长时间停 留在队列30A-30B中(即,使较低优先级请求"饥俄"),那么可以选择 较低优先级请求。可按照各种方式实现饥饿预防机制。例如,每个请 求可具有与之相关的计时器或者时间戳记,所述计时器或者时间戳记指示该请求在队列30A-30B中的时间有多长。如果该请求在队列 30A-30B中的时间超过时间阈值(所述时间阈值可以是固定的或者可 编程的),那么可以选择该请求。实际上,请求的优先级可因其在队列 30A-30B中的时间而增大。在另一例子中,如果连续选择规定数目的 较高优先级请求(这里所述数目可以是固定的或者可编程的),那么可 自动选择一个较低优先级请求。如果对于指定仲裁,在队列30A-30B 中, 一个以上的请求具有最高优先级,那么可以使用任何机制在请求 中进行选择(例如,源代理之间的固定优先级,源代理之间的循环法, 可以选择最老的请求等)。其它实施例可以实现其它仲裁方案(例如, 无优先级的循环法,基于优先级的加权循环法等等)。
如果在队列30A-30中,高优先级请求在另一请求之后,那么如 果该高优先级请求的RrorderOK位未被设置成指示允许把该请求重 新安排在前一请求之前,那么该高优先级请求没有仲裁资格。即,如 果RrorderOK位不指示允许重新排序,那么仲裁器控制电路36不会 在相同队列中的前一较低优先级请求之前选择该高优先级请求。如果 如RrorderOK位所示,允许在在先请求之前的重排,那么当较高优 先级请求在队列中的较低优先级请求之后时,可选择高优先级请求。 即,在传送高优先级请求之前,较低优先级请求可能已由代理传给地 址开关。
在一些实施例中,仲裁器控制电路36还可实现对每个目标代理 (例如,在图l的实施例中,代理12C-12D)的流量控制。仲裁器控制 电路36可确定每个请求的目标代理(例如,在本实施例中利用地址). 就地址到目标代理的映射来说,仲裁器控制电路36是可编程的。例 如, 一个或多个寄存器38可被编程,以把地址空间映射到目标代理。 根据地址映射,地址控制电路36可执行某些最高有效位的粗粒解码, 以确定目标代理。在本实施例中,所述解码是粗粒的,因为预期将对 相同的目标代理规划较大的连续地址范围,其它实施例可以使用细粒 解码。此外,尽管在本实施例中,解码是可编程的,不过其它实施例 可以具有固定的地址映射,仲裁器控制电路36可按照固定的地址映射解码地址。
每个目标代理具有接受高达一定数目的事务的能力(例如,与在 目标代理中实现的緩冲器的数目一致)。在一些实施例中,事务可依据 事务类型分组,可关于每个目标代理规定每组事务的数目。例如,在 一个实施例中,事务可被分组成相关读取,相关写入,非公告
(non-posted)非相关命令,和公告的非相关命令。对于上述各组事务 中的每一组,每个目标代理可以实现一定数目的緩沖器。
仲裁器控制电路36可被配置成实现对目标代理的流量控制,以 保证目标代理的緩冲器不会溢出。例如,可以使用基于信用量的系统, 其中每个緩冲器由对应事务类型的信用量表示。仲裁器控制电路36 可跟踪可用的信用量(例如,使用图2中的一个或多个寄存器40)。如 果仲裁器控制电路36选择指定类型的以指定目标代理为目标的请求, 那么仲裁器控制电路36可把对应的信用计数减1 。当緩沖器空闲时, 目标代理也可传达信用量的恢复(图2中表示成信用量)。从而,在任 意指定时刻,仲裁器控制电路36知道对于每种事务类型,每个目标 代理中的緩冲器可用性。如果某一请求会消耗的信用量不存在,那么 仲裁器控制电路36会防止选择该请求。改为选择另 一请求(甚至较低 优先级的请求),如果所述另一请求的对应信用量可用的话。
在一些实施例中,仲裁器控制电路36可努力保证源代理对指定 目标代理的访问的公平性。仲裁器控制电路36可跟踪每个目标代理 的各种信用量的总体使用,以及每个源代理对信用量的使用。如果目 标代理的信用量的总体使用较高(表示目标代理忙于事务),并且特定 的源代理正在以较高的速率与目标代理通信(由该目标代理的信用量 的使用指示),那么仲裁器控制电路36可限止该对源/目标代理对信用 量的使用,以允许其它源代理更好地访问该目标代理,
如图2的实施例中所示,多路复用器32和仲裁器控制电路36 被耦接,以接收代理12A-12B当前传给地址开关14的请求。仲裁器 控制电路36可被配置成关于指定的请求绕过队列30A-30B,并通过 多路复用器32选择该请求,如果当传送该请求时队列30A-30B为空(并且目标代理的对应信用量可供消耗)。这种情况下能够避免通过队 列的等待时间。在其它实施例中,只对一个源代理,或者源代理的子 集提供旁路(例如,处理器可具有旁路,其它代理不具有旁路)。在其
它实施例中,可不实现旁路,输入的位流与多路复用器32和仲裁器 控制电路36的连接可被除去。
注意尽管本实施例使用ReorderOK位来指示指定的请求是否可 以重排在先前从相同代理传送的请求之前,不过其它实施例可以使用 其它指示。例如,如果在队列30A-30B中实现两个以上的队列项,那 么存在对应于队列中的每一项的ReorderOK位。每个ReorderOK位 可指示该请求是否可相对于对应队列项听请求重排。另一方面,仲裁 器控制电路36可实现当确定指定请求是否可被重排在先前传送的请 求之前时,应用于代理的一组排序规则。
图3是图解说明仲裁控制电路36的一个实施例的操作的流程图。 尽管为了易于理解,按照特定的顺序表示各个方框,不过可以使用任 何顺序。此外,仲裁控制电路36中的组合逻辑电路可以并行实现各 个方框。根据需要,其它方框,方框的组合,或者整个流程图可在多 个时钟周期内被流水线化。
如果对于当前仲裁周期启动了饥饿控制(判定方框50),那么仲裁 控制电路36可超越"正常,,(例如,基于优先级的)仲裁。如上所述,如 果指定的较低优先级的请求已长时间留在队列中,那么可启动々几俄控 制。另一方面,如果在许多连续仲裁内都选择高优先级的请求,那么 可启动饥俄控制。如果启动了饥俄控制(判定方框50, "yes"支路),那 么仲裁控制电路36可把年老的请求(或者较低优先级的请求)选为仲 裁获胜者(方框52)。
如果未启动饥饿控制(判定方框50, "no,,支路),那么仲裁器控制 电路36可掩蔽没有资格仲裁的各个请求,并在未被掩蔽的请求之中 进行仲裁。例如,如果队列中的某个请求使其ReorderOK位指示不 允许重排,并且在同一队列中存在在先请求,那么该请求可被掩蔽, 以避免在所述在先请求之前选择该请求(例如,如果该请求的优先级高于所述在先请求)(方框54)。另外,如果请求的目标是不可得到用于该 请求的任何适当类型的信用量的目标代理,那么该请求可被掩蔽(方框 56)。如果仲裁控制电路36限制可被与某一请求对应的源代理消耗的 信用量,并且已达到该限度,那么即使存在可供消耗的信用量,该请 求也可被掩蔽(方框56)。仲裁控制电路可把未被掩蔽的优先级最高的 请求选为仲裁获胜者(方框58)。
仲裁控制电路36可通过多路复用器32把仲裁获胜者选到地址互 连16上。另外,仲裁控制电路36可向发起所选请求的源代理宣称许 可信号,并从队列30A-30B中删除选择的请求。
图4是在各个实施例中,可由源代理,或者仲裁控制电路36, 或者这两者实现的一组排序规则的一个实施例的方框图。事务类型示 于表的上部和表的左侧。行列的交点处是关于该行中的那种事务是否 被允许重排在该列中的那种在先事务之前的规则。
因此,相关读取和写入请求可被自由重排,只有不存在地址匹配。 在这个意义上,在保持相关性的粒度上检测地址匹配(例如,高速緩存 块)。相关读取请求可被重排在非相关公告(posted)请求和非相关完成 (completion)之前,但是不可重排在非相关非公告请求(相关读取行和 非相关公告,非相关非公告以及非相关完成列)之前。但是,在一些情 况下,请求是否可被重排取决于请求的具体实例(包括a)和b)答案的 交叉点)。下面在图5中的表中定义了关于a)和b)的请求的类型。Y/N 意味重排是允许的,但是并不需要被许可。从而,如果图4指示yes 或Y/N,那么请求可被重排。
下面参见图5,图中表示了在地址互连上传递请求的方法的高级 流程图。来自源代理的请求在地址开关中排队(方框70)。地址开关在 排队的请求中进行仲裁,以选择某一请求(方框72)。选择的请求在地 址互连上传送(方框74)。
一旦充分理解上述公开内容,对本领域的技术人员来说,众多的 变化和修改将是显而易见的。下面的权利要求意图包含所有这样的变 化和修改。
权利要求
1、一种配置成与互连耦接的开关,所述开关包括多个存储位置,其中所述多个存储位置被配置成保存由多个代理传送的多个请求;和与所述多个存储位置耦接的仲裁器控制电路,其中所述仲裁器控制电路被配置成在保存于所述多个存储位置中的多个请求之间进行仲裁,其中开关被配置成把选择的请求从所述多个存储位置之一传送到所述互连上,其中选择的请求是仲裁的获胜者。
2、 按照权利要求1所述的开关,其中所述多个存储位置包括多 个队列,其中所述多个队列中的每个队列对应于所述多个代理中的一 个相应代理,并被配置成保存由所述相应代理传送的请求,其中所述 多个队列中的每个队列包括所述多个存储位置中的至少两个。
3、 按照权利要求1所述的开关,其中仲裁器控制电路被配置成 在选择笫二请求之前,把由所述多个代理中的第一代理传送的第一请 求选为选择的请求,其中第二请求由第 一代理在第一请求之前传送。
4、 按照权利要求3所述的开关,其中每个请求具有对应的优先 级,其中仲裁器控制电路被配置成如果第一请求的优先级高于第二请 求的话,则在选择第二请求之前选择第一请求。
5、 按照权利要求3所迷的开关,其中仲裁器控制电路被配置成 如果第一和第二请求可按照一组排序规则重新排序,那么在选择第二 请求之前选择第一请求,其中仲裁器控制电路被配置成如果即使第一 请求的优先级高于第二请求,第一和第二请求也不能按照所述一组排 序规则重新排序,那么不在第二请求之前选择第一请求。
6、 按照权利要求5所述的开关,其中第一代理被配置成随同笫 一请求传送表示第一请求是否可与第二请求重新排序的指示,其中仲 裁器控制电路被配置成如果所述指示表示第一请求可与第二请求重 新排序,那么在选择第二请求之前选择第一请求。
7、 按照权利要求1所述的开关,其中仲裁控制电路被配置成确定所述多个请求中的每个请求的目标代理,并且其中如果根据所述多 个请求的一个请求的目标代理、所述请求被阻塞,那么仲裁器控制电 路被配置成把给另 一 目标代理的另 一请求选为所选请求。
8、 按照权利要求6所述的开关,其中仲裁器控制电路被配置成 对所述多个请求中的每个请求的地址的一部分解码,以确定每个请求 的目标代理。
9、 按照权利要求l所述的开关,其中所述互连是地址互连。
10、 按照权利要求l所述的开关,其中所述互连是数据互连。
11、 一种系统,包括 多个代理; 一个互连;和与所述多个代理及互连耦接的开关,其中所述开关包括多个存储 位置,其中所述多个存储位置被配置成保存由所述多个代理传给所述 开关的多个请求,其中所述开关被配置成在保存于所述多个存储位置 中的多个请求之间进行仲裁,其中所述开关被配置成在所述互连上传 送选择的请求,其中选择的请求是仲裁的获胜者。
12、 按照权利要求11所述的系统,其中所述多个存储位置包括 多个队列,其中所述多个队列中的每个队列对应于所述多个代理中的 一个相应代理,并被配置成保存由所述相应代理传送的请求,其中所 述多个队列中的每个队列包括所述多个存储位置中的至少两个。
13、 按照权利要求11所述的系统,其中所述开关被配置成在选 择第二请求之前,把由所述多个代理中的第一代理传送的第一请求选为选择的请求,其中第二请求由第一代理在第一请求之前传送。
14、 按照权利要求13所述的系统,其中每个请求具有对应的优 先级,其中所述开关被配置成如果第一请求的优先级高于第二请求的 话,则在选择第二请求之前选择第一请求。
15、 按照权利要求13所述的系统,其中所述开关被配置成如果 第一和第二请求可按照一组排序规则重新排序,那么在选择第二请求 之前选择第一请求,其中所述开关被配置成如果即使笫一请求的优先级高于第二请求,第一和第二请求也不能按照所述一组排序规则重新 排序,那么不在第二请求之前选择第一请求。
16、 按照权利要求15所述的系统,其中第一代理被配置成随同 第 一请求传送表示第 一请求是否可与第二请求重新排序的指示,其中 所述开关被配置成如果所述指示表示第一请求可与第二请求重新排 序,那么在选择第二请求之前选择第一请求。
17、 按照权利要求11所述的系统,其中所述开关被配置成确定 所述多个请求中的每个请求的多个代理的目标代理,其中如果根据所 述多个请求的一个请求的目标代理、所述请求被阻塞,那么所述开关 被配置成把给另 一 目标代理的另 一请求选为所选请求。
18、 按照权利要求17所述的系统,其中所述开关被配置成对所 述多个请求中的每个请求的地址的一部分解码,以确定每个请求的目 标代理。
19、 按照权利要求11所述的系统,其中所述互连包括耦接在所 述开关和在所述互连上接收请求的多个代理中的每一个之间的一个 或多个定时存储装置。
20、 按照权利要求19所述的系统,其中一个或多个触发器的数 目以请求到离所述开关最远的接收代理的飞行时间为基础。
21、 按照权利要求ll所述的系统,其中所述互连是地址互连。
22、 按照权利要求ll所述的系统,其中所述互连是数据互连。
23、 一种方法,包括使来自多个代理的请求在多个存储位置中排队; 在所述多个存储位置中的请求之间进行仲裁,以选择所述多个请 求中的一个所选的请求;和 在互连上传送所选的请求。
24、 按照权利要求23所述的方法,其中所述多个存储位置包括 多个队列,其中所述多个队列中的每个队列对应于所述多个代理中的 一个对应代理,其中每个队列被配置成保存由所述相应代理产生的供 在所迷互连上传输的多个请求。
25、 按照权利要求24所述的方法,还包括在从所述多个队列中 的第 一 队列中选择第二请求之前,从所述第 一 队列中选择笫 一请求, 其中所述第二请求由所述第 一代理在传送所述第 一请求之前传送。
26、 按照权利要求25所述的方法,其中响应第一请求的优先级 高于第二请求,执行选择第一请求的步骤。
27、 按照权利要求25所述的方法,其中响应所述笫一请求可和 所述第二请求按照一组排序规则重新排序,执行选择第一请求的步 骤。
28、 按照权利要求23所述的方法,其中所述互连是地址互连。
29、 按照权利要求23所述的方法,其中所述互连是数据互连。
全文摘要
在一个实施例中,开关被配置成与互连耦接。所述开关包括多个存储位置和与所述多个存储位置耦接的仲裁器控制电路。所述多个存储位置被配置成保存由多个代理传送的多个请求。所述仲裁器控制电路被配置成在保存于所述多个存储位置中的多个请求之间进行仲裁。选择的请求是仲裁的获胜者,所述开关被配置成把选择的请求从所述多个存储位置之一传送到所述互连上。在另一实施例中,系统包括多个代理,一个互连和与所述多个代理和互连耦接的开关。在另一实施例中,设想了一种方法。
文档编号G06F13/362GK101305354SQ200680037568
公开日2008年11月12日 申请日期2006年8月11日 优先权日2005年8月11日
发明者乔治·孔·游, 吕奇·沃德万, 西达·P.·苏布拉马尼昂, 詹姆斯·B.·凯勒, 雷米希·冈纳 申请人:P.A.Semi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1