利用门管理器维护实体顺序的制作方法

文档序号:7605963阅读:185来源:国知局
专利名称:利用门管理器维护实体顺序的制作方法
技术领域
本发明涉及计算机联网,更具体地说,本发明涉及在包含多个实体的系统中维护实体顺序。
背景技术
计算机体系结构一般定义计算机的各硬件单元之间的功能操作,包括信息和控制流。这种硬件单元之一是处理器或处理引擎,其包含组织为一组数据路径的算术和逻辑处理电路。在某些实现中,数据路径电路可配置为具有由一组指令定义的操作的中央处理单元(CPU)。这些指令一般存储在指令存储器中,并且规定在CPU上可用的一组硬件功能。
可以使用多个CPU或处理器来实现高性能计算机,以并行执行某些任务。对于纯并行多处理器体系结构,每个处理器可以共享或独占访问资源,例如耦合到处理器的外部存储器。对外部存储器的访问一般由存储控制器处理,其接受来自各处理器的请求以访问外部存储器,并且以一般由存储控制器控制的顺序来处理这些请求。某些复杂的多处理器系统可以使用多个存储控制器,其中每个控制器被附接到独立的外部存储器子系统。
应用并行多处理器体系结构有利的场合包括数据通信领域,具体地说,用于诸如路由器或交换机之类的中间网络站或节点的转发引擎。中间节点通过一系列端口互连通信链路和计算机网络的子网,使得能够在在诸如端节点之类的硬件平台上执行的两个或多个软件实体之间交换数据。这些节点一般通过根据预定义的协议交换离散的数据分组或帧进行通信,预定义的协议例如是传输控制协议/因特网协议(TCP/IP)或者互连网络分组交换(IPX)协议。转发引擎常由中间节点用来根据各种预定义的协议处理在各端口上获得的分组。这种处理可包括在分组存储器中放置分组,其中转发引擎可访问与该分组相关联的数据,并且针对该数据执行各种功能,例如修改该分组的内容。
在某些中间节点中,多处理器转发引擎被组织为包括“m”行“n”列实体例如处理器或线程的脉动阵列(systolic array)。在这里,每行的实体可配置为以流水线方式处理分组,其中行中每列实体充当流水线中的一级,并且对分组执行特定的功能。例如,8×2的处理器脉动阵列包括16个处理器,它们被组织为8行,每行包含2列,其中每行的列处理器包括2级流水线。
通常,脉动阵列以这样的方式处理分组其中分组被指派给特定的实体行,并且列中的每个实体配置为以上述方式对分组执行功能。例如,在上述8×2阵列中,中间节点获得分组,然后将分组指派给阵列中的特定处理器行。该行的第一列中的处理器可配置为将在分组中包含的目的地地址应用到查找表来确定该分组的目的地。第二列中的处理器可配置为将该分组放置到与该目的地相关联的输出队列中。
在一般的脉动阵列配置中,特定列中的每个实体配置为在固定的时间量内执行相同的代码,但是具有不同的相位。在获得分组时,它们被放置在共享的资源中,例如外部存储器,并且如上所述被指派给下一可用的实体行。在这种配置中,分组趋向于基于先进先出而被中间节点处理,以使得在后到的分组之前到达的分组在这些后到的分组之前离开转发引擎。但是,由于与访问共享资源相关联的各种事件所致的实体顺序失序,后到的分组也可能在早到的分组之前离开。
例如,在包括处理器的脉动阵列配置中,由于与共享资源相关联的各种存储器事件,例如存储器刷新周期或访问加锁的存储器位置被拒绝,处理先获得的分组的特定行中的处理器可能延迟。这样,处理早到的分组所花费的时间可能比由不同行的处理器处理后获得的分组所花费的时间长,因此,后获得的分组可能在早获得的分组之前结束并离开转发引擎。
维护实体顺序从而维护分组处理顺序的一种方法是应用同步机制,在脉动阵列中的实体的分组处理期间的某些点处对脉动阵列中的实体进行同步。可使用的现有同步机制包括所谓“边界同步”(BSYNC)指令的专用指令。BSYNC指令使特定列中的实体等待(延迟),直到列中的所有处理器都已执行了该指令。在典型的布置中,由该列实体执行的代码在该代码的各个关键点处包含BSYNC指令。当诸如处理器之类的实体执行BSYNC指令时,处理器的硬件使该处理器延迟,直到同一列中的所有其他处理器都已执行了它们的BSYNC指令,此刻,所有的处理器才继续执行它们的下一条指令。BSYNC指令用来在某些代码边界处同步这些实体,并且可用来防止处理后获得的分组的实体“赶到”处理先获得的分组的实体之前。
尽管在确保维护实体和分组处理顺序方面上述技术是有效的,但是,该技术也有其缺点。例如,每个实体必须执行指令以便同步并维护顺序。这浪费了可更好地用来处理分组的宝贵时间。此外,在等待较慢的实体执行同步指令时实体被延迟。这也浪费了宝贵的时间,并且可能进一步降低实体的处理分组的能力。

发明内容
本发明涉及用于维护中间网络节点的多个实体之间的顺序的有效技术,这是通过确保顺序访问由这些实体共享的资源实现的。根据该技术,实体生成请求来访问资源。该请求被放置到与该实体相关联的队列中。每个队列还与说明性地代表关联到该队列的实体的ID相关联。该请求最终到达队列的头部。注意,门管理器(gate manager)被提供来维护对共享资源的顺序访问。就此而言,门管理器生成说明性地代表允许访问资源的实体的ID。门管理器生成的ID被与关联到队列的ID相比较来确定它们是否匹配。如果匹配,则请求被传送到资源,资源处理该请求。从资源获得的结果(如果有的话)被传送到实体。
在说明性实施例中,诸如处理器或执行的线程之类的实体利用资源控制器(例如,耦合到处理器和外部存储器的存储控制器)访问例如外部存储器之类的资源。存储控制器包含门管理器,用来维护对存储器的顺序访问。处理器通过生成请求并将该请求传送到耦合到存储器的存储控制器来访问存储器。该请求被放置到与所述处理器相关联的请求队列。请求队列被关联到代表该处理器的ID。由处理器指定的门管理器ID被包含在请求中,指定在存储控制器中包含的门管理器。当请求到达队列的头部时,存储控制器的仲裁器确定由指定的门管理器生成的ID是否与关联到该队列的ID相同(匹配)。如果相同,则存储控制器从队列移除该请求,并且向存储器发出该请求。存储器处理请求,并且向存储控制器返回结果(如果有的话),存储控制器将这些结果传送到处理器。
本发明的技术对现有技术的改进在于在不要求干涉这些实体的部分的情况下,可以维护包含多个实体的系统中的实体顺序。


通过结合附图参考下面的描述,可以更好地理解本发明的上述和其他优点,在附图中,相似的标号指示相同的和功能上类似的元素图1是适于与本发明一起使用的计算机网络的示意性框图,该网络包括附接到多个节点的互连的通信介质的集合;图2是适于与本发明一起使用的中间节点的高层示意性框图;图3是适于与本发明一起使用的阵列化处理引擎的部分示意性框图,该阵列化处理引擎包括配置为多维脉动阵列的对称多处理器系统;图4是适于与本发明一起使用的阵列化处理引擎的处理器集群的示意性框图;图5是适于与本发明一起使用的耦合到多个存储控制器的处理器集群的示意性框图;图6是适于与本发明一起使用的门管理器选择寄存器的示意性框图;图7是适于与本发明一起使用的请求的示意性框图;图8是适于与本发明一起使用的门管理器的高层示意性框图;图9是适于与本发明一起使用的处理器位掩码的示意性框图;图10是根据本发明适于用来选择并配置门管理器的步骤序列的流程图;图11是根据本发明适于用来处理请求的步骤序列的流程图。
具体实施例方式
图1是适于与本发明一起使用的计算机网络100的示意性框图。计算机网络100包括连接到多个节点例如端节点110和中间网络节点200的通信链路和段的集合。网络链路和段可以包括由中间网络节点200互连为形成计算机节点互连网络的局域网(LAN)120、广域网(WAN)例如因特网170以及WAN链路130。这些互连的节点通过根据预定义的协议组交换数据分组来进行通信,预定义的协议组例如是传输控制协议/因特网协议(TCP/IP)和互连网络分组交换(IPX)协议。
图2是中间节点200的高层示意性框图,说明性的中间节点是路由器。适于与本发明一起使用的路由器的示例是可从San Jose,CA的CiscoSystems公司获得的Cisco 10000系列因特网路由器。节点200包括多个互连的组件,这些组件包括转发引擎300、各种存储器、队列逻辑210和网络接口卡(线路卡)240。这些组件的操作优选由时钟模块270同步控制,尽管转发引擎300的阵列化的元件可操作配置为异步工作。在说明性实施例中,时钟模块270生成例如200MHz(即,5ns时钟周期)频率的时钟信号,并且通过时钟线路将它们全局分发到中间节点200的组件。
存储器一般包括可由转发引擎300寻址的随机访问存储器(RAM)存储位置,以及用于存储由组件和包括可实现本发明各个方面的程序的软件程序访问的数据结构的逻辑。操作系统一般部分驻留在存储器中,并由转发引擎300执行,除了其他以外,操作系统通过调用支持在节点200上执行的软件进程的网络操作来在功能上组织节点。本领域的技术人员应当清楚,包括各种计算机可读介质在内的其他存储器装置也可以用来存储并执行属于这里所述的创造性技术和机制的程序指令。
缓冲和队列单元(BQU)210被连接到分组存储器220和队列存储器230,其中分组存储器220配置为存储分组,而队列存储器230配置为在诸如链表之类的组织为队列的数据结构中存储分组的网络和链路层头部。BQU 210还包括接口电路,用于利用具有仲裁器255的选择器电路250将转发引擎300互连到多个线路卡240。线路卡240例如可以包括异步传输模式(ATM)、快速以太网(FE)和G比特以太网(GE)端口,这些端口中的每个都包括可以具有信号、电和机械特性的传统接口电路,以及交换电路,这些电路是用接口连接物理介质和在该介质上运行的协议所需要的。
路由选择处理器260执行用于与转发引擎300直接通信的传统路由选择协议。路由选择协议一般包括在中间节点之间交换来基于例如目的地IP地址确定通过网络的优选路径的拓扑信息。这些协议提供由处理器260用来创建并维护转发表的信息。这些表被加载到外部存储器340作为转发信息基础(FIB)表,由引擎300用来执行例如第2层(L2)和第3层(L3)转发操作。当根据IP路由选择来对与分组相关联的头部进行处理时,例如引擎300通过使用包含在该头部中的目的地IP地址索引该FIB,从而确定出向何处发送该分组。执行转发操作可能导致头部的目的地媒体访问控制(MAC)地址被转发引擎300重写来标识分组的输出端口。
转发引擎300可以包括具有多个处理元件或处理器的对称多处理器系统。图3是包括组织为多维脉动阵列的多个处理器(TMC)450的转发引擎300的部分示意性框图。每个处理器450优选是流水线化的处理器,除了其他以外,其包括多个算术逻辑单元(ALU)和寄存器文件,寄存器文件具有多个存储由ALU处理的中间结果信息的通用寄存器。处理器450可以被阵列化为多行多列。在说明性实施例中,处理器被阵列化为8×2阵列化配置的8行和2列,该配置被嵌入在输入缓冲器360和输出缓冲器380之间。但是,应当注意,例如4×4、4×8或8×1阵列化配置之类的其他布置也适用于本发明。如这里所述,例如包含单个处理器的支持多线程执行的系统也可以利用本发明的优点。
转发引擎300经由关联的外部存储控制器375耦合到多个外部存储器资源340。例如,外部存储器340a经由它的关联存储控制器375a耦合到转发引擎300。外部存储器340优选组织为一个或多个存储器条(bank),并且使用削减等待时间动态随机访问存储器(RLDRAM)器件实现,尽管也可以使用其他器件,例如快周期随机访问存储器(FCRAM)器件。外部存储器340存储非瞬逝数据(例如,转发表、队列),这些数据组织为一系列数据结构,在处理瞬逝数据(例如,分组)时使用。每个存储控制器375包含使得能够对其关联外部存储器340中包含的存储器位置进行访问的逻辑。
特定列的处理器450耦合到特定的外部存储控制器375,使得处理器450能够共享并访问包含在耦合到控制器375的外部存储器340中的数据。例如,包括列TMC0(即,处理器450a~450h)的处理器450耦合到外部存储控制器375a,其使得这些处理器中的每个都能够共享并访问在外部存储器340a中包含的数据。
某行中的处理器450,例如处理器450a和450i,组织为包含上下文存储器430的集群400,其中上下文存储器430配置为保持由处理器450处理的上下文信息(例如,分组头部)。图4是集群400的示意性框图。集群的每个处理器450耦合到指令存储器(IRAM)420、控制寄存器单元410和上下文存储器430,指令存储器420配置为存储处理器450执行的指令。控制寄存器单元410包括各种通用寄存器和控制寄存器,分别用于存储和控制TMC 450的操作。每个处理器450包含MMU 460,其将处理器450耦合到存储控制器375,并且使处理器450能够访问耦合到控制器375的外部存储器340。
每个集群400的处理器450对通过输入缓冲器360载入到上下文存储器430中的瞬逝数据执行操作,而每列的处理器并行操作来以不同的相位对瞬逝数据执行基本相同的操作。通过由耦合到处理器450的数据移动器电路470提供的数据通路440,瞬逝(上下文)数据在引擎300的输入和输出缓冲器之间传递。流过集群400的上下文数据与其他数据和指针一起被存储在上下文存储器430中,其中指针引用在例如外部存储器340中存储的由处理器450使用的数据和各种数据结构(例如,表)。数据移动器470包括使数据能够从上下文存储器430被传送到输出缓冲器380的逻辑。
本发明涉及用于维护实体例如处理器450之间的顺序的有效技术,这是通过确保顺序访问由实体共享的资源实现的,例如存储器340。根据该技术,生成请求来访问资源。该请求被放置到与实体相关联的队列中。每个队列还与说明性地代表关联到该队列的实体的ID相关联。该请求最终到达队列的头部。注意,门管理器被提供来维护对共享资源的顺序访问。就此而言,门管理器生成说明性地代表允许访问资源的实体的ID。门管理器生成的ID被与关联到队列的ID相比较来确定它们是否匹配。如果匹配,则请求被传送到资源,资源处理该请求。从资源获得的结果(如果有的话)被传送到实体。
图5是耦合到多个外部存储控制器375的集群400的示意性框图。每个存储控制器375包含耦合到仲裁器550的多个请求队列560。每个说明性的请求队列560是先进先出(FIFO)队列,其与处理器450相关联,并且配置为保持从处理器450传送来的请求。此外,每个请求队列560被关联到说明性地代表与队列560相关联的处理器450的标识符(ID)。仲裁器550包含实现传统仲裁策略的传统逻辑,用于选择队列560并对在所选队列560的头部的请求进行处理。仲裁器550包含门管理器800,其配置为生成标识符(ID),由仲裁器550用来根据本发明的技术对在队列560头部处的请求进行处理。
每个处理器450(图4)说明性地包含门管理器(MGR)选择寄存器600,其被处理器450配置为指定(选择)与处理器450相关联的一个或多个门管理器800。图6是适于与本发明一起使用的门管理器选择寄存器600的示意性框图。寄存器600包含门管理器字段620a~620c,说明性的门管理器字段中的每个是与特定门管理器800相关联的1位字段,并且保持将该门管理器关联到处理器的值。例如,字段620a~620c分别保持将处理器450关联到门管理器A~C的值。通过说明性地将其在字段620中的对应位断言为例如1,从而门管理器800被关联到处理器450。例如,断言在字段620a和620c中包含的位指定门管理器A和C被关联到处理器450。门管理器选择寄存器600的内容经由总线530被传送到耦合到处理器450的存储控制器375。因此,例如在处理器450a~450h中包含的门管理器选择寄存器600的内容经由总线530a被传送到外部存储控制器375a。
处理器450通过生成请求并将该请求传送到与存储器相关联的存储控制器375来访问外部存储器340。图7是适于与本发明一起使用的请求700的示意性框图。请求700包含存储器操作字段710、门管理器标识符(ID)字段720和地址字段730。存储器操作字段710和地址字段730分别保持代表要被执行来访问存储器的存储器操作(例如,读或写)的值和其中该操作要被执行的存储器地址。门管理器ID字段720除了其他以外保持代表要用来处理请求的门管理器800的值。作为说明,字段720是2位的字段,其保持0到3之间的值,其中0指示没有门管理器要被使用,并且非0值(例如,1到3)指定(选择)特定的门管理器800。例如,在门管理器ID字段720中包含值1的请求700指示门管理器A要被用来处理请求700。类似地,在字段720中包含值0的请求700指示没有门管理器要被用来处理请求700。
图8是适于与本发明一起使用的门管理器800的示意性框图。门管理器800包含入口计数逻辑820、处理器位掩码900和处理器标识符(ID)生成器逻辑850。入口计数逻辑820包括入口计数822和滚动计数器(rollover counter)824。入口计数822保持作为在下述特定列中的处理器数目的计数的值,在该列中,已在它们的门管理器选择寄存器600指定(选择)了门管理器800。滚动计数器824是传统的滚动计数器,其说明性地生成从1到由入口计数822所代表的处理器的数目的值。
说明性的处理器位掩码900是8位位掩码,其指示列中的特定处理器是否已在该处理器的门管理器选择寄存器600中指定(选择)了门管理器。图9是适于与本发明一起使用的处理器位掩码900的示意性框图。每个处理器450由指示该处理器是否已指定了门管理器800的1位字段920说明性地代表。例如,在门管理器800a中包含的位掩码900的字段P0920a、P1 920b、P2 920c和P7 920h分别代表(对应于)处理器450a、450b、450c和450h,并且指示那些处理器是否已在它们的门管理器选择寄存器600中指定了门管理器800a。作为说明,字段920中的值1指示该处理器450已指定了门管理器800,而值0则指示处理器450尚未指定门管理器800。
处理器ID生成器逻辑850将从滚动计数器824生成的值与处理器位掩码900组合来生成代表处理器450的标识符(ID)。具体地说,逻辑850获得滚动计数器824生成的值,将所生成的值应用到处理器位掩码900来确定与所生成的值相关联的处理器450,并且生成代表处理器450的ID。所生成的ID被传送到仲裁器550。
例如,假设处理器450a、450b和450h在它们的门管理器选择寄存器600中指定门管理器800a,并且每个处理器的门管理器选择寄存器600的内容被传送到存储控制器375a。门管理器800a获得所传送的内容,并且将其入口计数逻辑820配置为生成对应于处理器450a、450b和450h的计数值1、2和3。另外,门管理器800a配置其处理器位掩码900,通过说明性地将其处理器位掩码900中的位P0 920a、P1 920b和P7 920h设置为1来代表这些处理器。现在假设滚动计数器824生成代表处理器450h的值3。处理器ID生成器逻辑850将该值应用到处理器位掩码900,并且确定出计数器824生成的值对应于处理器450h。即,处理器ID生成器逻辑850通过检查处理器位掩码900,说明性地确定出处理器450h是从已在其门管理器选择寄存器600中选择了门管理器800a的位P0 920a起的第三个处理器。然后,逻辑850生成代表处理器450h的ID,该ID被传送到仲裁器550。
如上所述,处理器450利用请求700访问存储器340。具体地说,处理器450通过生成请求700,并且将请求700传送到耦合到存储器340的适当的外部存储控制器375,从而访问存储器340。存储控制器375将请求700放置在与处理器450相关联的队列560的结束处(尾部)。
最终,请求700到达队列560的顶部(头部),然后仲裁器550处理该请求。具体地说,仲裁器550实现了以例如循环赛(round robin)方式“选举”队列560的传统选举算法,选择出包含该请求的队列560,并且确定该请求700在所选出的队列560的头部。然后,仲裁器550处理请求700,包括检查该请求的门管理器ID字段720的内容,并且确定是否已指定了门管理器800。如果没有指定,则从队列移除请求,并且将其传送到耦合到存储控制器375的外部存储器340。否则,仲裁器550确定由指定的门管理器800生成的ID是否与关联到队列560的ID相同。如果相同,则仲裁器550从队列560移除请求700,并且将其传送到耦合到存储控制器375的外部存储器340。否则,仍将请求700留在队列560的头部。
当仲裁器550从队列560向存储器340传送请求700时,它向入口计数逻辑820发送信号来更新滚动计数器824。然后,逻辑850基于更新的计数器的值生成ID,如上所述。例如,假设滚动计数器824中的针对门管理器800a的值为1,并且包含与门管理器800a相关联的门管理器ID的请求在队列560a的头部。此外,假设门管理器800a生成与关联到队列560a的ID相同的ID。仲裁器550(i)选举队列560a,(ii)确定出门管理器800a生成的ID与关联到队列560a的ID相同,(iii)从队列560a移除请求,(iv)将请求700传送到存储器340a,并且(v)通知入口计数逻辑820将滚动计数器的值更新为例如值2。然后,门管理器800基于更新后的滚动计数器值生成ID,例如生成与关联到处理器450b的队列560的ID相同的ID。
如上所述,处理器450通过在其门管理器选择寄存器600中放置适当的值,从而选择门管理器800中的一个或多个。该寄存器的内容被传送到耦合到处理器的存储控制器375,其中所选择出的门管理器800获得该内容,并且如上所述配置入口计数逻辑820和处理器位掩码900。图10是根据本发明的技术可用来配置入口计数逻辑820和处理器位掩码900的步骤序列的流程图。该序列从步骤1005开始,然后前进到步骤1020,在该步骤中,诸如处理器450之类的实体通过如上所述在门管理器选择寄存器600中放置适当的值来选择一个或多个门管理器800。例如,通过说明性地在其门管理器选择寄存器600中放置值5,处理器450a选择门管理器800a和800c。在步骤1030中,门管理器选择寄存器600的内容被传送到耦合到处理器450的外部存储控制器375,该控制器然后将该寄存器600的内容传送到门管理器800。这样,在上述示例中,处理器450a的门管理器选择寄存器600的内容例如5被传送到外部存储控制器375a,该控制器将该内容传送到门管理器800a、800b和800c。在步骤1040中,每个门管理器800基于所传送来的门管理器选择寄存器600的内容更新它们的入口计数822和处理器位掩码900。这样,在上面的示例中,通过例如将它们的入口计数822增1,并且将它们的为掩码中的字段P0 920a设置为1,门管理器800a和800c更新了它们的入口计数822和处理器位掩码900,以反映出处理器450a的门管理器选择寄存器600的内容。在步骤1050中,每个门管理器800如上所述使用处理器位掩码900和入口计数逻辑820来生成ID。该序列在步骤1095处结束。
图11是根据本发明的技术可用来处理请求700的步骤序列的流程图。该序列开始于步骤1105,并且前进到步骤1110,其中与实体例如处理器450相关联的请求700被生成来访问资源,例如存储器340。所生成的请求700从实体被传送到与资源相关联的资源控制器,例如耦合到存储器340的存储控制器375(步骤1112)。在步骤1115中,资源控制器将请求700放置到与实体相关联的请求队列560中。在步骤1120中,请求到达队列560的头部。仲裁器550以上述方式选举队列560,选择出包含请求700的队列560,并且检查该请求700的门管理器字段720来确定该请求700是否指定了门管理器(步骤1122~1130)。如果未指定,则该序列前进到步骤1140。否则,该序列前进到步骤1135,在该步骤中,仲裁器550确定在请求700中指定的门管理器生成的标识符(ID)是否与关联到队列560的ID相同。如果不相同,则仲裁器以上述方式选择下一个队列560,然后返回步骤1125。
否则,序列前进到步骤1140,在该步骤中,资源控制器从队列560移除请求700,并且将请求700传送到资源。在步骤1142中,资源控制器通知门管理器请求已被传送到资源,并且门管理器以上述方式生成下一个ID。资源处理请求700,并且如果有结果的话用该结果向资源控制器作出响应(步骤1145)。例如,如果请求的存储器操作字段710指定了读操作,则存储器340处理该请求,包括用从下述位置读取的(返回)数据作出响应,所述位置是在该请求的地址字段730中表示出的。此外,如果该请求的存储器操作是写操作,则存储器340处理该请求但不响应。在步骤1150中,如果存在从资源获得的结果的话,则资源控制器将这些结果传送给实体。该序列结束于步骤1195。
尽管本发明的上述实施例将本发明描述为用在包含多个门管理器的系统中,但是这不是要限制本发明。相反,使用单个门管理器的系统也能利用本发明的技术。此外,本发明的上述实施例将本发明描述为用在包含一个或多个作为资源的存储器的系统中。但是,这也不是要限制本发明。相反,本发明的技术可以被应用到由多个实体共享的其他类型的资源,例如输入和/或输出设备。
如上所述,支持多线程执行的系统可以利用本发明的技术。在这里,本发明可以整个或部分实现在包括在计算机可读介质(例如,闪存RAM或盘文件)中存储的计算机可执行代码的软件中。例如,在本发明的一个实施例中,执行线程来生成被传送到资源控制器(例如,存储控制器375)的请求700,其中资源控制器被实现为处理上述请求的软件例程。
在本发明的其他实施例中,在处理请求时实体被“阻塞”执行。例如,在本发明的实施例中,实体是执行来生成请求并将该请求传送到资源控制器的线程。在处理请求时,线程执行被阻塞,不进一步执行。如果请求包含不从资源返回结果的操作(例如,写操作),则在该请求被传送到该资源(例如,存储器)时,资源控制器通知在系统中包含的调度器。如果请求包含从资源返回结果的操作(例如,读操作),则资源控制器将结果传送到线程,并通知调度器。当调度器接收到通知时,它就不再阻塞线程,并且重调度该线程以执行。
前面的描述已集中描述了本发明的特定实施例。但是,将会清楚,可以对所述实施例作出其他改变和修改,同时还保留它们的某些或全部优点。因此,所附权利要求的目的是覆盖所有这种变化和修改,只要它们在本发明的真实精神和范围内。
权利要求
1.一种用于在中间节点中维护所述中间节点中包含的多个实体之间的顺序的方法,所述方法包括下面的步骤生成请求来访问由所述实体共享的资源;将所述请求放置到与实体相关联的队列中;确定由门管理器生成的标识符是否匹配与所述队列相关联的标识符;和如果匹配则向所述资源传送所述请求。
2.如权利要求1所述的方法,其中所述实体是处理器。
3.如权利要求1所述的方法,其中所述实体是执行的线程。
4.如权利要求1所述的方法,其中所述资源是存储器。
5.如权利要求1所述的方法,其中所述中间节点包括多个门管理器,并且所述门管理器是所述多个门管理器中的门管理器中的一个。
6.如权利要求5所述的方法,其中所述请求包括门管理器标识符,其保持指定所述多个门管理器中的门管理器的值。
7.如权利要求6所述的方法,包括下面的步骤检查所述门管理器标识符来确定其是否指定了门管理器;和如果未指定则向所述资源传送所述请求。
8.如权利要求6所述的方法,包括下面的步骤检查所述门管理器标识符来确定是否指定了门管理器;如果指定了门管理器,则确定所述由所指定的门管理器生成的标识符是否匹配所述与所述队列相关联的标识符实体;和如果匹配则向所述资源传送所述请求。
9.如权利要求5所述的方法,其中所述中间节点包括门管理器选择寄存器,其配置为将所述多个门管理器中的一个或多个门管理器关联到所述实体。
10.如权利要求9所述的方法,包括下面的步骤通过在所述门管理器选择寄存器中选择所述门管理器来将所述门管理器关联到所述实体;和向所述门管理器传送所述门管理器选择寄存器的内容。
11.如权利要求1所述的方法,包括下面的步骤从所述资源获得结果;和向所述实体传送所述结果。
12.如权利要求11所述的方法,包括下面的步骤阻塞所述实体进一步执行;和在所述结果被传送到所述资源后不再阻塞所述实体进一步执行。
13.一种装置,包括共享资源;多个实体,配置为生成请求来访问所述共享资源;多个队列,其中每个队列被关联到特定的实体,并且配置为保持由所关联的实体生成的请求;门管理器,配置为生成代表所述多个实体中的实体的标识符(ID);和资源控制器,配置为从所述多个队列中选择队列,确定与所述队列相关联的ID是否匹配由所述门管理器生成的ID,并且如果匹配则向所述共享资源传送在所选队列头部的请求。
14.如权利要求13所述的装置,其中所述实体是处理器。
15.如权利要求13所述的装置,其中所述资源是存储器。
16.如权利要求13所述的装置,其中所述资源控制器还配置为从所述资源获取结果,并向所述实体传送所述结果。
17.一种中间节点,包括用于生成请求来访问由多个实体共享的资源的装置;用于将所述请求放置到与所述多个实体中的实体相关联的队列中的装置;用于确定由门管理器生成的标识符(ID)是否匹配与所述队列相关联的ID的装置;和用于如果由所述由门管理器生成的ID匹配与所述队列相关联的ID则向所述资源传送所述请求的装置。
18.如权利要求17所述的中间节点,包括用于从所述资源获得结果的装置;和用于向所述实体传送所述结果的装置。
19.如权利要求18所述的中间节点,包括用于阻塞所述实体进一步执行的装置;和用于在所述结果被传送到所述资源后不再阻塞所述实体进一步执行的装置。
20.一种包括用于在处理器中执行的计算机可读指令的计算机可读介质,所述计算机可读指令用于执行下面的步骤生成请求来访问由多个实体共享的资源;将所述请求放置到与实体相关联的队列中;确定由门管理器生成的标识符所代表的实体是否匹配与所述队列相关联的实体;和如果匹配则向所述资源传送所述请求。
全文摘要
本发明公开了一种技术,用于维护包含在中间节点中的多个实体之间的顺序,这是通过确保顺序访问由这些实体共享的资源实现的。请求被生成来访问资源。该请求被放置到与实体相关联的队列中。该请求最终到达队列的头部。门管理器生成的标识符被与关联到该队列的标识符相比较来确定它们是否匹配。如果匹配,则请求被传送到资源,资源处理该请求。从资源获得的结果(如果有的话)被传送到实体。
文档编号H04L12/56GK1781079SQ200480011303
公开日2006年5月31日 申请日期2004年6月10日 优先权日2003年6月11日
发明者罗伯特·E·J·杰特, 约翰·A·察纳克 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1