数据处理器的状态引擎的制作方法

文档序号:7587484阅读:125来源:国知局
专利名称:数据处理器的状态引擎的制作方法
技术领域
本发明涉及用于数据处理器、尤其是并行处理器中的状态引擎。
背景技术
经常出现因而必须对连续数据流执行功能的情况。如果这些功能以处理器中的软件来实现,则从数据流依次到达的每个数据报(数据包)必须被存储、处理、然后转发。这个过程将耗用一些有限量的时间来执行。随着数据包到达的速率增大,将到达单处理器不再能跟上步伐的点。那么这些功能必须分布在被安排成流水线的多个处理器之间或者并行设置的多个处理器之间-每个处理器以某种循环序列依次接收来自数据流的数据包。从并行处理器输出的数据包通常在转发之前被重新排序。
这是对于高性能数据包处理的一种充分证明了的方式,但随着处理器数量增加而在其可缩放性上受到限制。无论是对于代码还是数据,对共享存储器的访问最终成为瓶颈。对共享状态的同时R/W访问将进一步增加系统控制信令的复杂度以便解决争用。
这留下了由多个并行处理器对共享状态信息的多个项目进行高速访问的问题。随着处理器数量及其算法复杂度增加,对于到共享数据的系统总线的地址和数据带宽要求也将增加。这可能成为瓶颈。本说明稍后描述的状态元素技术通过局部化和管理对共享状态的串行化来支持并行处理系统。
切题的一个好的例子是网络路由器中通信量管理的难题。按流量的通信量处理中的一个公认的重大问题是,需要对大量队列中的每一个维护状态的大量项目。这意味着(a)需要实现相当大的共享存储器;(b)如果每个队列要求对不同(共享)状态变量进行分别访问,则需要许多存储器地址带宽;以及(c)存储器访问等待时间可能很长,因而在修改过程中导致状态阻塞,从而影响性能。
对共享状态变量的争用可通过实现稍后所述的状态元素来解决。但是,高性能系统中的状态元素概念本身不是一种解决方案。为了最大吞吐量和灵活性,大量状态元素被组合到状态引擎中。这允许对共享状态的多个并发访问。本发明旨在解决以下问题1.并行处理器可创建对状态的相同项目的高速率访问。
2.如果给定功能需要从相同地址访问多个变量,即需要访问和处理状态记录,则发生什么情况?3.如果在处理器中对单个数据报执行的多个功能各要求访问状态变量或记录的不同的独立可寻址的表,则发生什么情况?简言之,所针对的基本问题在于高速率的状态访问。这个问题必须以灵活方式来解决,使所存储的状态的数量以及状态访问的速率能够易于缩放。
发明概述在一个方面,本发明提供一种并行处理器,它包括提供对共享状态的相干并行访问的状态元素部件。
并行处理器最好是阵列处理器,例如SIMD处理器。并行处理器还可包括串行化和/或同步对所述共享状态的多个访问/更新的部件。
所述状态可包括状态的单个项目或者状态的多个项目,以及可包括在存储器中的单个存储位置或数据结构。
对所述状态的操作可作为操作的固定或硬连接集合来执行。其它部件可提供数据以更新所述状态。部件还可向所述状态发送命令和数据,因而所述操作是可编程的。
多个所述状态元素部件可组织成状态细胞部件,从而对所述状态的操作可以是流水线式的。可以有多个所述状态细胞部件,从而允许与所述状态有关的多个请求同时被处理。
状态细胞部件还可包括输入和输出互连部件,提供对所述状态细胞部件的访问或者来自所述状态细胞部件的访问;所述输入和输出互连部件的总线接口,所述总线接口与系统总线接口;以及控制单元,与所述系统总线互连,用于控制对所述状态的访问。
各所述状态元素部件最好包括本地存储器,以及数据记录的各字段存储在相应状态元素部件的相应存储器中。
各所述状态元素部件最好包括所述状态的本地存储器、适合对所述本地存储器中的所述状态执行运算的算术单元、以及控制所述运算的命令和控制逻辑。
本发明还考虑结合了如以上陈述的任一项所指定的并行处理器的计算机系统和网络处理器。
处理器可设置在单个硅片上。
附图简介现在将参照附图来描述本发明,附图中

图1是全部根据本发明、使用状态元素的状态引擎的示意图;图2是状态引擎的功能表示;图3是组成状态引擎的一部分的状态细胞的实现;图4是作为设计用于通信量处理和队列管理的复杂状态引擎的通用状态引擎的特定实现;图5与使用本发明所实施的状态元素的益处对照来说明访问共享状态的先有技术方法;图6是根据本发明的状态元素的功能概览;图7是状态元素的实现概览;以及图8和图9表示状态元素的状态和命令单元的优选实现的相应实例。
所示实施例的详细描述现在参照图5-9来描述状态元素的一个特定设计。但是,其它设计对于包含在状态引擎中是可行的。
当流水线或并行处理器共享要求对其读写访问的状态变量时出现问题。可能不允许处理器同时读取/修改/回写共享变量,因为来自第一回写的结果将被第二个盖写。需要对访问串行化。
这引起两个重要问题1.必须实现用于使处理器相互锁定的系统,使得它们可仲裁资源,然后当存在争用时对它锁定。这个控制信令可能是复杂的,并增加大量功能和性能开销。
2.当处理器已经成功地协商资源时,它应当使用那个资源,然后尽快释放它,以便限制施加到其它处理器上的延迟。如果访问等待时间对于外部存储器很长,则这可严重影响系统性能。
信标可用来互锁处理器或控制逻辑,以及高速缓存可用来拦截并发访问并将它们串行化。但是,这些操作可能是复杂的、缓慢的和/或要求结合到硬件中的大量支持。嵌入式存储器可减少封锁时间,但延迟可能仍然明显。本说明中所述的状态元素采用不同的方式,通过这种方式,可接受存在串行化点,并建立一种方法以管理它而不是创建互锁。在如稍后会变得更为清楚的广义方面,功能与本地存储器共存,该功能在存储器中而不是在软件中执行读取、修改和回写。它是一种物理解决方案而不是基于软件的解决方案。
这个解决方案的一种缺点在于,它“管束”软件。先前可编程的某个方面这时由阻塞软件的另外某个方面所取代。这两个方面是相互关联的。第一个问题是软件的串行化,但这具有以下结果如果解决方案是通过硬件,而不是在系统中具有读取/修改/回写周转时间以及复杂控制信号的数十个周期,它将减少到几个周期以内,但这时进行实际修改的实体是硬件。不但消除等待时间问题,这个解决方案还针对它引入的可能处理软件的其它问题。
本解决方案的这个方面的独创性在于靠近存储器的逻辑的重新定位与使它半可编程的组合。
状态元素是本上下文中的关键组件,它们执行到共享存储器中的访问的串行化。在其中对共享状态的同时访问是越来越可能的并行处理器的上下文中,存在可能许多的状态元素,它们全部是并行的,执行来自并行处理器的功能调用,但全部为SIMD,其中并行处理器从单指令流进行操作,状态元素并行但从各自的指令流进行操作。它们响应来自处理器的请求有效地操作。
状态元素可用于MIMD体系结构,或者实际上用于存在要解决的冲突的任何位置。但是,它特别适用于SIMD体系结构,因为MIMD更容许存储器访问中的非确定性,而SIMD更偏向一切都是确定性的。
本发明的这个方面的一个优点是系统总线上的负荷的减小。功能调用一般通过总线发出,以便指示状态元素执行功能。发出命令,该命令产生读取请求,使数据被返回,以及使已修改数据再次被回写。在状态元素中,不是具有通过系统总线的三个访问,这时只有一个。因此,可远程执行相当复杂的操作,而无需不断向处理器回送信息。
在优选实现中,命令行允许命令被发出,以访问和修改一段存储器或者在状态元素中存放微码。因此,状态元素包括基本存储器加上ALU、在其中写入微码的控制器单元以及特殊功能单元、如加法单元。设计原理的一部分是使元素能够成为申请人的工具包的一部分,其中所需功能可根据需要被“固定”。
因此存在两级灵活性。一方面,存储器中的微码可改变,使得不是通过添加被传递到命令行以进行回写的固定操作来执行例如读取/修改等操作,而是可能通过另一段软件,例如读取、添加值、保存、添加另一个值并回写。如果需要条件读取/修改/回写,则可添加条件块。如果想要历史功能,则可提供在其中保持标志集的历史块。因此,可保持控制标志,允许将来访问,其中可根据那个标志来执行两个操作中的一个或另一个。
状态元素是关键组件,它们执行到共享存储器中的访问的串行化。状态元素被组合在状态引擎中并连接到总线。状态元素可比作微型微码ALU,但重点是在存储器访问而不是在处理侧。状态元素主要包括具有灵活的、但着重进出存储器的数据的快速传递的附加功能的存储器。它对存储器执行灵活的功能。
在采用单处理器的系统、如数据包队列控制系统中,当处理器从存储器中寻找数据时没有争用。数据包队列的状态对于单处理器是可用的。单处理器可保持多达10000个这种队列。但是,与此对比,考虑多个处理器共享对存储器中的某些状态的访问的情况。在任何时刻,一个以上处理器可能需要更新同一个队列的状态。因此存在更大的争用可能。如果争用将通过复制处理器来避免,则存在更大的复杂度,尤其是在采取措施以保留处理器之间的状态相干性以及所需存储装置大小方面。因此,需要让状态保持在存储器中,它对于所有处理器是可用的,但其方式是,整个过程没有被减慢到不能接受的程度。
图5a示意说明本发明能够解决的问题的类型。该图表示包含响应来自两个处理器中的一个或另一个的请求而经由片上总线访问的传统存储器的过程的时间线。假定是处理器间串行化。例如,如果处理器1发出读取请求,则被寻址数据从存储器中被读取,以及数据通过总线传送给处理器。然后,数据在处理器中进行修改,以及结果经由总线回写到存储器。在这时,例如来自第二处理器的其它任何请求被封锁。这是必要的,因为同样的数据不能同时在不同处理器的控制下经过修改。在封锁周期结束时,存储器再次变成对下一个请求是可用的。显然,封锁周期对各个处理器执行的整个过程的速度施加了相当大的约束。
状态元素对这种已知方法提供一种备选方案,它要求一种配置,其中并行处理器从存储器中读取、修改、回写数据,并请求存储器代表它来执行修改。然而,本发明的优选实现中的状态元素定位串行化点,它不在每个处理器之内/之间,而是在具有对于其中存储了共享状态变量的存储器的本地快速访问的简单共享处理器中。
状态元素与面向对象的设计中的对象相似。它已经秘密地存储了只有经由对象的方法才可访问的数据。通过发出命令,并行处理器可被认为正进行对于对象的方法调用。
状态元素的优选实施例包括与简单算术和逻辑单元结合的、具有单周期读/写访问时间的小块嵌入式存储器60,如图6中一般所示。算术单元61(从处理器)接收包含地址、数据和命令代码的命令。地址标识将被访问的状态变量,数据提供简单计算机用来修改变量的操作数,以及命令62选择已编程微码63的本地存储线程,它能够在极少数量的系统时钟周期内读取、修改和回写状态变量。结果可返回到发出该命令的处理器。
实施例的详细情况状态元素包括嵌入式存储器和附加功能。该功能可以是硬布线的(有限状态机)或者是可编程的微码电路。后一种方式更通用和复杂。组件模块及其互连的系统的更完整图形如图7所示。注意特殊功能和条件块的存在。这些极大地扩展了元素的工作能力。
状态元素设计中的重点在于快速存储器访问速度而不是处理能力。嵌入式存储器块足够小,使得单周期访问时间是可实现的。可配置的读取/修改/回写(R/M/W)在两个周期时段内是可能的,因为能够对读取的结果执行简单算术运算,并在第二周期内让它回转以便回写。命令通常可在3到5个时钟周期内完全被处理。
图8说明算术单元的简单性以及命令行与存储器之间的路径如何具有最小延迟。图9表示一个更复杂的变体,其中,状态的多个项目保存在存储器中。对命令行周转(以及微码存储大小)的影响很显著。但是,这并不是说,图9的电路不可用于适当的情况中。例如,在具有更复杂的状态集的较低性能的系统中,它可能是优选方法。
状态引擎的总体概述状态引擎可采用状态元素作为原子部分以结构化及明确定义的方式来构建。正如简单细胞组合成简单有机物、分子可以是简单细胞的构造块、原子是分子的组成部分那样,状态元素可组合成状态细胞,它们成倍增加为状态阵列,状态阵列又可以组合在一起以形成状态引擎。虽然特定状态元素设计稍后在此上下文中描述,但本发明包括利用其它状态元素的状态引擎。
这种分级设计构架如图1所示。所示组成部分为状态记录-这是概念实体,由具有给定基地址的一个或多个状态变量的组构成。
命令行-由处理器发送到状态引擎的消息。命令行中的字段包含命令代码、地址和数据。处理器有效地请求对给定地址中的状态记录执行由命令代码索引到的功能。参数可在通用数据字段中提供以及返回。
状态元素-状态元素是保密的小存储器,它包含只有经由状态元素的控制逻辑所执行的功能才可访问的状态变量。这些功能通常读取状态变量,执行某种修改,以及回写新的值。结果也可记录在命令行的数据字段中。状态元素的主要作用是通过以最大速度对存储器执行简单功能来管理状态访问串行化点。状态元素的特定实现已经在本说明中进行了描述。
状态细胞-如果记录中有一个以上状态变量,则可允许整个记录作为一个条目被存储在单个状态元素中。但是,当记录中的每个字段将需要被依次处理时,这将把可用带宽限制到此状态。在状态细胞中,记录的每个字段作为单个状态变量存储在其本身的状态元素中。这些状态元素则共同链接成流水线。命令行从一个元素传递到下一个元素,相同的地址和控制字在每一级用于从公共记录中拣选不同的字段,并对它执行某种功能。状态细胞逻辑提供有效地构成面向存储器的流水线处理系统的它的组成元素之间的同步。
因此,状态细胞的主要作用是提供构造允许高速处理更复杂的状态记录的简单流水线处理器的方法。
状态阵列-用于状态细胞的状态元素的嵌入式存储器的体积必须较小,以便快速(理想地为单周期)访问。这对于可存储在单状态细胞中的状态记录的示例数量设置了限制。为了增加状态的数量,给定类型的状态细胞可以平铺以形成大的状态阵列。在设备布局过程中的缩放通过状态阵列互连来简化。互连框架的分段以及平铺阵列中利用明确定义的接口的相邻细胞的耦合如图2所示。互连保留对相同状态细胞的访问之间的顺序。由于不要求访问不同状态细胞的命令行之间的顺序保留,因此不需要对阵列中的不同细胞的命令行访问的等待时间被平衡。阵列是以简单方式可缩放的,并且是布局友好的。
通过成倍增加状态细胞来增加总状态存储容量还可增加整体状态访问带宽,因为各个状态细胞的吞吐量可能略低于互连的吞吐量。如果状态细胞的数量增加到互连成为限制因素的点,则合计吞吐量可通过提供多个互连信道来进一步增加,其中每个信道访问阵列(即表)的不同部分。这与设计具有多个独立可寻址信道以增加随机访问带宽的存储器系统相似。
状态阵列的主要作用是提供可缩放容量。它还提供用于缩放地址和数据带宽的方式。
状态引擎-状态引擎把状态阵列与所有附加胶合逻辑以及构造可经由系统总线配置及访问的块所要求的设施相结合。组件包括●总线接口逻辑●系统控制逻辑-状态引擎控制器可向状态阵列发出(保密)系统命令。这些命令由外部块通过经由实用总线接口对控制器的访问来调用。只有(公开)状态命令可经由主数据流接口到达。系统命令配置阵列或者提取诊断信息。
●旁路逻辑-旁路模式使命令能够跳过它们不要求访问的阵列。这将节省功率和带宽。所需提取和插入点也可由系统控制器使用。
●阵列间交换连接器-这包括用于路由各表格之间的访问的(Banyan)交换技术的新应用。它可能仅当存在通过各状态阵列的一个以上独立路由时才被要求。
状态引擎行为包括●消息广播-系统命令可在整个存储器阵列上广播,用于检索状态或传递配置和控制消息。这个方法还用于把微码加载到状态阵列中。
●多个访问-如果多个阵列连接到管道中,则显然每个命令行必须包含各阵列的不同地址和命令信息。因此,从处理器发出的单个命令产生多个状态访问。
●命令行“变形”-当命令行逐个阵列地传播时,它们被使用并且有时因各个状态元素访问而被更新。由一个阵列中的状态元素插入到命令中的数据可由下一个阵列中的状态元素使用。数据、也许甚至地址可被修改。
实施例的详细情况把状态元素共同“缝合”到流水线中的状态细胞如图3所示。构成状态细胞的状态元素的流水线存储一组状态记录的成分变量。访问这些状态记录的命令到达第一状态元素。控制字段用来确定对状态记录的第一成分进行的更新,在本例中是经由微码控制器进行。然后,命令行被传递到下一个状态元素,以便更新状态记录的下一个成分。这对于状态细胞中的流水线长度重复进行。来自流水线的最后级的结果返回给请求处理器。
状态阵列的体系结构以及状态引擎组件的互连如图4所示。这使用标准/已知的路由选择和负荷平衡技术把输入命令行分配给适当的状态细胞。
附加特征负荷平衡-状态记录可根据需要动态分配(以及还可重新分配)是可能的。如果存在通过给定阵列的多个路径,则希望所存储状态在可用状态元素/细胞之间均匀分布。这种系统中的状态条目的可用性可由控制器通过下列方式来通知确保记录从各元素依次被分配,从而平衡负荷。
因此,本质上,本发明的优选实现提供以下特征,其中针对与并行处理器的高速数据查找关联的所有指定问题●形式框架,用于创建采用智能存储器(通常为状态元素)的并行协处理器。
●单个访问,多个查找-单个访问对状态引擎内的多个独立状态表起作用,即,由于来自总线的单个请求而到不同存储器所保存的不同表中的多个查找。
●流水线体系结构-到不同表中的查找不是从点源向不同存储器中发出的。而是,访问本身(以命令行的形式)以串行方式从一个表格路由到另一个表格。它是通过状态引擎传播的对象。
●命令行“变形”-当命令行沿管道逐个表格地传播时,它们被使用并且有时因每个表访问而被更新。由一个表插入到命令中的数据可由下一个中的状态元素使用。
●状态细胞概念-高吞吐量流水线处理(可缩放处理能力)●状态阵列概念-用于缩放状态数量、带宽和负荷平衡的“布局友好”方案●状态引擎概念-来自单个命令的多个正交查找利用多通道状态引擎体系结构的交换技术。控制器为数据和指令广播提供系统命令。
●状态元素可交互。
本发明所针对的问题特别适合对于通信量处理应用中访问共享状态的阵列处理器的应用。状态引擎被认为是以针对高速状态访问的附加问题的方式来设置状态元素(管理状态争用所需的)的一种方式。
但是,状态引擎还可从相同或相似的状态元素来构造,以便满足其它应用的需求-例如通信量调节的相关领域中的计量表管理。因此,状态引擎可用于把状态元素技术传递给其中并行(或者甚至流水线)处理器以高速率访问共享状态的其它任何应用。
附加可选特征系统线程-后台,系统线程可编程为当没有为来自处理器的命令提供服务时对状态存储器中的数据进行操作。例如,能够用于标识空闲的状态条目。
查找空闲队列算法-“查找_空闲_队列”系统功能。这是后台线程,它实现重新分配用来表示/管理转为空闲(即空)的队列的状态条目的“两击输出(Two strikes and out)”算法。
特殊功能单元-“标志单元”和“地址单元”是设计用于支持查找空闲队列算法的特殊功能单元。它们提供的特征被认为是通用值的,并且可由其它算法(例如维护状态元素中的计量表所需的)使用调度算法-自同步公平排队算法所要求的信息无法直接映射到状态元素中。它以使访问和操作更健壮和有效的形式来表示。
因此,可以理解,构成本发明的组成部分的状态元素可提供以下特征●智能存储器-状态元素在存储器端而不是处理器端局部化并行数据访问的串行化。这极大地减小了一般与状态的阻塞关联的等待时间。
●功能多用性-状态元素提供大量(已配置/)已编程远程功能,它们可对存储数据执行-功能将包括少量数据读取、写入、算术运算和条件访问。
●灵活性-这些功能可以(但不一定需要)以微码来表示,使得状态元素仍然可编程,并且没有使处理器中运行的软件“依靠”硬连接到状态元素中的功能。
●系统效率-读取/回写出现在ALU与状态元素内部的存储器之间。只有命令才通过系统总线传播。这与传统方法相比,减小了系统总线上的负荷。
●系统简单性-读取/修改/写入被封装在状态元素内,以及通过状态元素逻辑固有地实施串行化。处理器无需首先相互协商便可同时发出使某个功能对状态的同一个项目起作用的命令。
●不需要在返回时对结果归类-存在到请求处理器的自动返回。
应当认识到,争用不是通信量处理独有的一个问题,因此状态元素还可用作任何应用中支持并行处理器的通用工具。当实时(数据流处理)系统中的任何两个处理器要求对共享状态变量的R/M/W访问时,可能出现争用。因此,状态元素可与处理器的任何并行或流水线配置结合使用。
权利要求
1.一种并行处理器,包括提供对共享状态的相干并行访问的状态元素部件。
2.如权利要求1所述的并行处理器,其特征在于,所述并行处理器是阵列处理器。
3.如权利要求2所述的并行处理器,其特征在于,所述阵列处理器是SIMD处理器。
4.如以上权利要求中的任一项所述的并行处理器,其特征在于还包括使对所述共享状态的多个访问/更新串行化和/或同步的部件。
5.如以上权利要求中的任一项所述的并行处理器,其特征在于,所述状态包括状态的单个项目。
6.如权利要求1至4中的任一项所述的并行处理器,其特征在于,所述状态包括状态的多个项目。
7.如权利要求1至4中的任一项所述的并行处理器,其特征在于,所述状态包括存储器中的单个存储位置或者数据结构。
8.如权利要求1所述的并行处理器,其特征在于,对所述状态的操作是作为固定的或硬连接的操作集来执行的。
9.如权利要求8所述的并行处理器,其特征在于还包括提供数据以更新所述状态的部件。
10.如权利要求8所述的并行处理器,其特征在于还包括向所述状态发送命令和数据的部件,从而所述操作是可编程的。
11.如权利要求1所述的并行处理器,其特征在于还包括多个所述状态元素部件,它们组织成状态细胞部件,从而对所述状态的操作可以是流水线式的。
12.如权利要求11所述的并行处理器,其特征在于还包括多个所述状态细胞部件,从而允许与所述状态有关的多个请求同时被处理。
13.如权利要求12所述的并行处理器,其特征在于还包括输入和输出互连部件,它们提供对所述状态细胞部件的访问和来自所述状态细胞部件的访问;用于所述输入和输出互连部件的总线接口,所述总线接口与系统总线相接口;以及控制单元,与所述系统总线互连,用于控制对所述状态的访问。
14.如权利要求11至13中的任一项所述的并行处理器,其特征在于,各个所述状态元素部件包括本地存储器,以及数据记录的各个字段存储在相应状态元素部件的相应存储器中。
15.如以上权利要求中的任一项所述的并行处理器,其特征在于,各个所述状态元素部件包括所述状态的本地存储器、适合对所述本地存储器中的所述状态执行运算的算术单元、以及控制所述运算的命令和控制逻辑。
16.一种计算机系统,包括如以上权利要求中的任一项所述的并行处理器。
17.一种网络处理器,包括如以上权利要求中的任一项所述的并行处理器。
18.在单硅片上实现的、如以上权利要求中的任一项所述的并行处理器。
全文摘要
对并行处理器、如SIMD阵列处理器共享的状态的相干访问和更新通过具有存储状态并允许访问串行化的本地存储器的状态元素的使用而成为可能。对状态的单个或多个项目的操作通过固定/硬接线的操作集来执行,但通过发送命令和数据来控制操作,它们是可编程的。各状态元素包括本地存储器、算术单元以及命令和控制逻辑。多个状态元素在状态细胞中是流水线式的,状态细胞又被组织成实现对共享状态访问的完全控制的状态阵列和状态引擎。读取/修改/写入操作可以仅在两个周期中执行,以及完整的命令仅在三到五个周期中执行。
文档编号H04L12/54GK1735878SQ200380108223
公开日2006年2月15日 申请日期2003年11月11日 优先权日2002年11月11日
发明者A·斯潘塞 申请人:克利尔斯皮德科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1