CN101763247B - 利用可编程转移表快速转移的系统和方法 - Google Patents

利用可编程转移表快速转移的系统和方法 Download PDF

Info

Publication number
CN101763247B
CN101763247B CN200910179807.5A CN200910179807A CN101763247B CN 101763247 B CN101763247 B CN 101763247B CN 200910179807 A CN200910179807 A CN 200910179807A CN 101763247 B CN101763247 B CN 101763247B
Authority
CN
China
Prior art keywords
instruction
transfer
code
described transfer
transfer function
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.)
Expired - Fee Related
Application number
CN200910179807.5A
Other languages
English (en)
Other versions
CN101763247A (zh
Inventor
阿努拉·P·古普塔
约翰·基恩
杰弗里·G·利比
让-马克·弗拉伊朗
阿瓦尼德拉·戈德博尔
莎拉达·叶卢瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Jungle Network
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jungle Network filed Critical Jungle Network
Publication of CN101763247A publication Critical patent/CN101763247A/zh
Application granted granted Critical
Publication of CN101763247B publication Critical patent/CN101763247B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

与本发明一致的方法和系统提供了允许软件定义多个转移函数的可编程表,每一个均将条件代码向量映射到转移偏移。使用可以由编程员指定的条件转移输出表,该技术允许灵活的多路转移功能。任何指令可以指定任意条件表达的评估来计算用于条件代码的值,并且可以选择特定的转移函数。当处理器执行指令时,处理器的算术/逻辑功能单元评估条件表达并且之后处理器根据特定的转移函数执行转移操作。

Description

利用可编程转移表快速转移的系统和方法
技术领域
本发明大体上涉及处理器执行期间的转移,更具体地,涉及用于自动评估多条件表达并跳到多个可能目标指令之一的可编程转移表。
背景技术
程序由具有单一入口点(第一条指令)和单一出口点(最后一条指令)的顺序指令的块或串构成。在任意特定块之后可以从多个指令块选择要执行的指令块。当存在多于一个的可能块时,必须使用一个或多个条件来确定选择哪个块。多个块之间的链接模型被称为程序的控制或流表。
这些指令的块在存储器中被一起封装。当对随后的块(块B)没有选择时,在第一块(块A)之后其通常被立即替换。这意味着不需要控制的任何清楚改变来从块A得到块B。一些块选择后续的块。仅清楚多个后续之一,例如块B,可以在之后被顺序地替换。其他的块,块C,在块A中被清楚地指出。条件机制被用来确定选择哪个块。如果条件满足,则被选择的后续块是块C。如果条件不满足,则被选择的后续是块B。这些是条件转移。
转移被本领域中已知并且对于计算机系统执行任何程序来说是本质的。已知的计算机系统典型地包含专用寄存器,程序计数器寄存器,程序计数器寄存器提供执行的下一个指令的地址的指示。该寄存器通常在执行一个指令后自动增加,使得其当前指示下一个顺序指令的地址。转移指令被用来改变该行为。这些转移指令指出用于下一个可执行指令的可替换地址(目标位置)。条件转移指令还指出使用可替换地址必须满足的条件,否则程序计数器如正常情况增加。因此这些转移指令定义指令块的结束。
典型的程序必须在如其执行的称为转移点的多个地方执行转移操作。每个转移点具有与其相关联的特定转移函数,其不同于大多数其他转移点处的转移函数。可以根据M个条件表达的向量和最多2M个可能目标地址的集合来定义转移函数。无论何时程序执行达到应用转移函数的转移点,处理器评估这些条件表达,并且因此生成M布尔值的向量。转移函数将该向量的2M个可能值的每一个映射到程序指令存储器中的一些目标地址。程序员希望写入执行尽可能少指令的代码来评估转移函数并且之后在每个转移点处执行转移。两个目标是最小化可执行代码的大小并且最大化执行性能,同时保持灵活性。
大多数通用微处理器提供多种简单的双路条件转移指令,其中依据一个特定条件表达为真或为假来采用或不采用转移。如果转移点要求评估多于一个的条件表达,并且可以使执行跳到多于两个的可能目标的一个,则程序必须执行多个简单双路条件转移指令。其中程序必须评估多个条件表达并且从代码中的一个特定位置跳到多个可能目标之一的复杂转移模式在多种计算情形中是自然发生的。在执行这种复杂转移决定时,程序员典型地希望写入要求尽可能少的指令并且尽可能快的执行的代码。
发明内容
与本发明一致的系统和方法提供了比现有转移处理方案更有效且灵活的转移处理。根据与本发明一致的系统和方法,处理器允许一个指令根据之前存储在可编程转移表中的某些任意转移函数,指出任意数量的不同条件表达的评估并且之后跳到多个可能目标之一。通过将这种复杂转移计算压缩到一个指令中,减小了可执行代码的大小(如由存储在存储器中的指令测量的)并且增加了性能(如由动态取出并执行的指令测量的)。该技术还通过允许软件定义多个不同的转移函数并将转移函数放置在转移表中而提供灵活性。
在一个实施例中,在包括处理器和程序计数器的数据处理系统的处理器中执行一个方法,该方法包括以下步骤:执行包括多个微码指令的计算机程序,其中多个微码指令中的一个是具有多个条件的转移指令;评估转移指令;基于转移指令的多个评估条件的结果跳到下一个指令;以及执行下一个指令。
在第二实施例中,计算机可读介质存储用于执行评估多条件转移指令的方法的计算机可执行指令,该方法包括以下步骤:执行包括多个微码指令的计算机程序;评估包括多个条件的转移指令;基于多个评估条件的结果跳到下一个指令;以及执行下一个指令。
在第三实施例中,用于执行包括至少一个转移指令的数据处理装置包括存储程序的存储器,其中至少一个转移指令包括包含转移代码的字段;以及转移表数据结构,将至少一个转移代码映射到具有至少两个条件表达的至少一个转移函数,其中基于两个或更多条件表达的转移函数的可能输出存储在转移表数据结构中;以及处理器,执行程序并使用转移表数据结构来执行至少一个转移指令。
一旦研究了下列附图和详细描述,与本发明一致的其他系统、方法、特征和优点将对本领域技术人员显而易见。这些附加的系统、方法特征和优点将被包括在本说明书和本发明的范围中。
附图说明
结合并构成本说明书的一部分的附图示出了与本发明一致的装置和方法的实现方式,并与说明书一起,解释了与本发明一致的优点和原理。在附图中:
图1是示出了根据一个实施例的示例性网络环境的框图;
图2是示出了根据一个实施例的示例性路由器的框图;
图3是示出了根据一个实施例的查找单元的框图;
图4是示出了根据一个实施例的包处理引擎的框图;
图5是示出了根据一个实施例的用于地址计算的技术的逻辑图;
图6示出了根据一个实施例的转移表的实例;以及
图7是示出了根据一个实施例的用于反复取出并执行任意数量的微指令的技术的流程图。
具体实施方式
与本发明一致的方法和系统提供了程序执行期间灵活且有效的转移。通过为处理器提供转移表,处理器可以自动地评估存在两个以上可能输出的转移函数。转移函数将条件代码的M-位向量映射到指出2N个可能转移目标中的一个的N位值。存在将每个M位向量值映射到N位转移目标值的
Figure G2009101798075D00041
个可能函数。因此,可以在单一指令中评估多个条件,并且可以基于这些条件的结果选择多个目标中的任意一个。因此,可以比现有处理环境中更有效地执行传统存储的程序代码和微码。此外,在编译时定义转移表,为编程器提供了处理转移指令中的增加的灵活性。
现在将详细参照附图中所示的与本发明一致的实现方式。
处理器遇到从多个条件转移指令中受益的情况的一个领域是网络设备中的包处理。诸如路由器103的网络设备典型地具有查找单元(LU)101,来处理包头部并确定每个包的目的地或下一跳,如下所述。在一些实施例中,替代LU,一个或多个其它组件执行这个功能。虽然下面根据路由器103描述了实施例,但是仅通过实例和说明给出路由器103,并且其他类型的处理装置和系统也可以采用本文揭露的多条件转移指令。
图1示出了根据一个实施例的示例性网络。路由器103接收来自诸如路由器105的其他网络装置的数据包。LU 101处理这些数据包并确定每个数据包的下一跳。一旦确定了下一跳,则每个数据包被转发到那个装置,例如,计算机107。在进行该确定的过程中,包处理引擎(PPE)或其他路由器组件(图1中未示出)执行可以受益于多条件转移指令的程序。
图2是根据一个实施例的示例性数据处理装置200的框图。装置200可以包括输入块210、输出块220、处理块230、包存储器240、和控制存储器250。
输入块210可包括可以在进入链接上接收包且对包执行初始处理的一个或多个输入单元(例如,输入线卡)。在一个实施例中,初始处理可以包括分析包以识别其控制信息和其包数据(例如有效载荷)。控制信息可以包括来自包头部的信息,并且包数据可以包括来自包的有效载荷的信息。在一个实施例中,控制信息可以包括来自包头部的源地址和/或目的地址。在另一个实施例中,控制信息可以包括源地址、目的地址、优先权信息、和/或来自包头部的其他信息。输出块220可包括可以接收来自处理块230和/或包存储器240的包信息、根据包信息构造包、并且在外出链接上输出这些包的一个或多个输出单元(例如输出线卡)。
处理块230可包括可以执行路由函数并处理在输入块210和输出块220之间传递的包的处理逻辑。处理块230可以接收来自输入块210的控制信息并基于存储在控制存储器250中的数据结构来处理该控制信息。当处理控制信息时,处理块230可以向控制存储器250进行某些请求以读和/或写数据。
包存储器240可以包括存储装置,诸如动态随机访问存储器(DRAM)。包存储器240可以存储与通过输入块210接收的包相关联的包数据。在一个实现方式中,包存储器240可以将包数据存储为可变长度数据单元。在另一个实现方式中,包存储器240可以将包数据存储为固定长度数据单元。在这种情况中,包数据可以被分为一个或多个固定长度的数据单元并被存储在包存储器240中的相邻或非相邻位置。如果存储在非连续位置,诸如链接的列表的数据结构可以用来识别与特定包相关联的数据单元。
控制存储器250可以包括存储器装置,诸如DRAM或延迟缩减DRAM(RLDRAM)。控制存储器250可以存储数据结构以帮助包处理。在一个实现方式中,数据结构可以包括路由表、转发表、统计数据、和/或管理数据(例如,服务质量(QoS)参数)。
在一个实施例中,处理块230包括查找单元(LU)260。在一个实施例中,LU 260可以被实现为专用集成电路(ASIC)。LU 260包含负责利用多条件转移指令执行指令的元件,如下所述。
图3是根据一个实施例的LU 260的高水平简化框图。省略了与本发明无关的LU 260的一些部件,并且LU 260的元件的数量、结构、和排列不旨在表示任意实施例的数量、结构、或物理布局,只是为了附图清楚而简化。例如,在一个实施例中,LU 260可以具有16个PPE和四个纵横开关,以及与存储器单元和LU 260外部的其他单元交互的元件。此外,虽然在图3中示出为查找单元,本发明的技术可以以多种其他类型的单元实现,并且查找单元仅是这种单元的示例和说明。
LU 260执行与包头部处理有关的函数,包括输入处理、路由查找、分类、过滤、修正、计数、封装、和统计。输入块210向LU 260发送包头部并且LU向输出块220发送完全处理的新头部。如下所述,通过相同的多线程包处理引擎(PPE)315的集合来完成头部处理。利用PPE号识别每个PPE 315。头部经由分派块313进入LU260,并且通过纵横块317发送到PPE 315。分派块313为每个头部挑选最轻加载的引擎。一旦分配了PPE 315,头部移动到该PPE并停留在该PPE中直到完成在头部上的处理。每个PPE 315具有其自身的本地存储器(LMem)319来在处理期间维持包头部和需要的其它状态。如下所述每个PPE 315支持多路转移。图3中的PPE的数量仅是示例性和说明性的,并且可以使用期望的其他数量的PPE来提供充足的处理能力以服务LU 260要求处理的最高通信量。
在一些实施例中,PPE 315使用的数据结构被保存在与PPE共享的称为DMem(在LU 260外部且未在图3中示出)的单一大平滑地址空间中。(在不同的PPE 315中执行的,或者在相同PPE 315中不同的上下文中执行的)单独线程之间的DMem访问不是同步的;代替地,提供了单独的锁块333用于同步线程的机制。多线程可以通过从锁块333获取锁、在数据结构上工作、并且释放锁来共享公共数据结构。PPE 315还可以与实现特定功能的多个其他块交互,诸如用于更新包和字节计数器的计数器块337、以及用于获取哈希值的哈希块335。
当PPE 315完成处理头部时,其通知记录器块321。记录器块321负责维持属于同一流的头部的次序,并且在一个头部关于其记录器流处于队列的最前面时从PPE 315推出该头部。
图4示出了根据一个实施例的示例性PPE 315的简化构架。为了图清楚省略或重新排列了PPE 315的某些元件。PPE 315使用具有四个32位算数逻辑单元(ALU)(CALU 401a-d)(总地,CALU401)的超长指令字(VLIW)构架用于条件转移和操作数调节。与本申请无关的其他ALU可以出现并且为了图的清楚被省略。PPE315中的每个线程均访问32个64位通用寄存器(GPR)405,和8KB的本地存储器LMem 407(每线程1KB私有)。典型的微指令允许4GPR读、2GPR写、2LMem访问(读或写)和两个64位常数。可以提取6个任意位字段的总和并将其反馈至每个CALU 401。在一个实施例中开关盒412被用来连接PPE 315的多个元件。其他实施例可以使用其他互连接技术,诸如一个或多个总线。用于PPE 315的上述内部构架仅是示例性和说明性的,并且可以如所期望的使用包括其他数量、结构、和排列的元件的其他内部构架。
转向图5,根据本发明的一个实施例描述了示出地址计算技术的视图。在该实施例中,图4中的PPE 315执行的下一个指令的地址不依赖于当前指令的地址,但是依赖于当前指令的CC 572和NEXTPC 570字段指出的计算。用于6位CC字段572的大部分编码指出了PPE 315应该根据PPE 315条件转移输出(CBO)表510中的特定转移函数来执行转移。CC字段572的特定值用作索引来指出CBO表510中的特定入口。用于CC字段572的小数量编码指出用于计算下一个指令地址的特定硬线方法。然而,这些硬线方法不涉及CBO表510。
CBO表510中的每个入口的大小是N*2M位。PPE 315截取每个入口的值作为2M个元件的向量,其中每个元件具有N位大小。当PPE 315执行其CC字段指出CBO表入口的指令时,PPE 315使用由M CALU计算的条件代码位来从由CBO表入口表示的向量选择一个元件。之后PPE 315将选择的元件的N位值添加到当前指令的NEXTPC 570值来确定取出并执行的下一个指令的地址。在图5所示的实例中,M值是4并且N值是3。因此,该实例中CBO表中的每个入口的大小是3*24,其等于3*16或48位。
在操作中,从微码存储器(UMem)590获取的微指令595包含6位CC字段572,其在6位组合器代码(CC)信号线500上发送,以对CBO转移表存储器单元510寻址,索引并选择相对于6位CC值的56个48位CBO 510表入口中的一个。之后在48位信号线520上向多路复用器530输出该48位CBO表510入口,在16个3位元件线u0到u15上分割该48位表入口。每个CALU 401生成由在微指令595中编码的CALU 401操作确定的1位条件代码值和输入到CALU 401中的数据操作数。将这四个条件代码位表示为C0、C1、C2、和C3。4位信号550组合条件代码C3、C2、C1、和C0的值,并且在信号线540上被发送,以通过多路复用器530将所选的48位表入口的十六个3位元件中的一个选择到3位输出线555上。之后,由加法器560将3位元件值加到微指令595的NEXTPC字段570的15位值上,得出15位地址值,之后该15位地址值被传送到程序计数器580上作为UMem 590中下一个指令或微指令的位置用于PPE 315执行。图5中位宽和元件、存储器单元、表入口、信号线、字段等的排列,以及条件代码的数量仅是示例性和说明性的,并且可以如所期望的使用任意大小的元件、存储器单元、表入口、信号线、和寄存器。
图6示处了用于评估转移函数的示例性转移表510。在称为组合器代码(CC)601的6位微指令字段中编码转移指令。这提供了64种可能的顺序动作。大多数CC用作转移表510中入口的索引,定义用于具有8个或更少输出的条件转移的顺序动作。转移表510不必需具有用于每个可能CC的入口。在一个实施例中,使用56个元件转移表。被称为条件转移输出(CBO)入口605的每个转移入口包括CC 601和将4个条件代码位C0到C3映射到一个3位输出代码或元件的对应的转移函数。因此,转移表510中CBO入口605中的每个转移函数描述为被分为16个3位元件的48位入口。该4个条件代码位C0到C3用来形成一个4位索引{C3、C2、C1、C0},该4位索引被映射到CBO表入口605中以选择3位元件。由PPE采取的顺序动作是将元件值加到NEXTPC。
例如,让我们假设我们希望分配CC 001001来表示条件转移:
if(c0 & c1)<A0>elseif(c2)<A1>elseif(c3)<A2>else<A3>
其中,A0、A1、A2、A3表示四个可能条件输出的偏移。偏移A0、A1、A2、和A3必须是以0开始的顺序次序并且还以连续次序来生成下一个指令的地址。将条件代码位映射到期望偏移的CBO表入口在下面的表1中示出:
表1:索引001001(二进制)处的实例CBO表入口
Figure G2009101798075D00101
之后对应的48位CBO入口将为:(3,3,3,0,1,1,1,0,2,2,2,0,1,1,1,0)作为二进制中的16个3位元件值(011.011.011.000.001.001.001.000.010.010.010.000.001.001.001.000)(分离该3位元件的点仅用于易读目的并且不在CBO入口中出现)。因此,例如,如果转移指令具有CC=001001和NEXTPC=100,以及条件代码位向量是{C3,C2,C1,C0}={0,0,1,0},该条件代码位向量将从左边映射第三个CBO元件,其为011。因此,转移输出将是NEXTPC+3,或103,并PPE将跳到UMem地址103处的指令。
存在少于4个可能的转移目标。例如转移函数:
if(c0 & c1)<A0>elseif(c2|c3)<A1>else<A2>
仅具有三个可能转移目标:A0、A1、和A2。
下面示出了将条件代码位映射到期望偏移的表:
表2:用于三路转移的实例CBO表入口
Figure G2009101798075D00111
对应的48位CBO入口将为:{2,2,2,0,1,1,1,0,1,1,1,0,1,1,1,0}作为二进制中的16个3位元件值(010.010.010.000.001.001.001.000.001.001.001.000.001.001.001.000)(分离该3位元件的点仅用于易读目的并且不在CBO入口中出现)。
CBO表允许本领域技术人员定义56个不同转移函数的任意集合。将4位条件代码值映射到3位UMem地址偏移的任意转移函数可以在CBO表入口中编码,导致多至八种(8)可能目标指令。在该实例中,转移表510使用16元件入口。转移表510的内容由编译器定义用于给定微码加载并且在路由器被初始化时和在任意PPE开始之前被加载。可选地,转移表510可以在运行时被动态地定义。在该情况中,路由器可以快速地修改给定微码和CBO表。路由器可以将微码加载到UMem未使用的位置并且将对应的转移函数加载到CBO表未使用的位置。之后路由器可以重写HW陷阱向量表中的包裹(parcel)陷阱向量,使得PPE可以在新进入的包裹被服务时执行新的微码和转移函数。本领域技术人员将认识到,转移表510可以是任意大小的表,并且可以基于计算和存储资源使用的可接受水平而相应地调整上面描述的多个入口和元件大小。
图7是示出了用于反复取出并执行PPE 315中任意数量的微指令的技术的流程图。在框700中,从包含在程序计数器PC中的地址取出并执行第一条指令。在框710中,检查该指令以看其是否为最后的指令。如果是,则PPE 315在框770中停止执行。如果不是,则在框720中检查微指令的CC字段以确定是否使用CBO表。如果否,则在框760中,程序计数器PC通过一些非-CBO技术更新,诸如硬线转移函数。
如果框720确定使用CBO表,则在框730中,CC字段用作索引来从CBO表选择入口。之后在框740中,条件代码向量{c3、c2、c 1、c0}用来从CBO表入口选择元件,如上面所描述的。之后,在框750中选择的元件用作一个偏移来通过将当前微指令的NEXTPC字段的值加到包含在由条件代码向量选择的元件中的偏移值来更新程序计数器PC。
通过框760或框750来更新程序计数器PC时,PPE 315返回到框700以反复取出并执行程序计数器PC指向的指令。
图7示出的操作和操作次序仅是示例性和说明性的并且可以使用其它操作或操作次序来根据期望的其他实施例计算下一个指令的地址。
虽然已经在附图中示出并详细描述了一些示例性实施例,但是可以理解,这些实施例仅是示例性的并且是在不背离权利要求限定的本发明基本范围的情况下设计的。通过实例而不是限制的方式,利用的特定逻辑组件可以由功能相似且提供本质上相同结果的已知的等价物或其他组件的排列来替换。

Claims (14)

1.一种数据处理系统中的方法,所述数据处理系统包括执行所述方法的处理器,所述方法包括:
定义将转移代码映射到转移函数入口的转移表,所述转移函数入口包括多个元件;
执行包括多条微码指令的计算机程序,
其中所述多条微码指令之一是具有多个条件的转移指令,以及
其中所述转移指令包括所述转移代码;
评估所述转移指令,
其中,评估所述转移指令包括:
基于所述转移指令中所包括的所述转移代码选择所述转移表中的所述转移函数入口,以及
基于评价所述多个条件的结果,在所述转移函数入口中定位所述多个元件中的输出元件;
基于所述输出元件跳到所述计算机程序的下一条指令;以及
执行所述下一条指令。
2.根据权利要求1所述的方法,其中,跳到所述下一条指令包括:
基于所述输出元件识别偏移;以及
将所述偏移加到基地址以确定所述下一条指令的地址。
3.根据权利要求1所述的方法,其中,执行所述下一条指令包括执行所述数据处理系统的程序计数器指向的指令。
4.根据权利要求1所述的方法,其中,定义所述转移表包括在编译时定义所述转移表。
5.根据权利要求1所述的方法,其中,定义所述转移表包括在运行时定义所述转移表。
6.根据权利要求1所述的方法,其中,评估所述转移指令包括评估所述多个条件。
7.根据权利要求1所述的方法,其中,所述方法由网络装置执行。
8.一种用于评估多条件转移指令的系统,所述系统包括:
用于定义将转移代码映射到转移函数入口的转移表的装置,所述转移函数入口包括多个元件;
用于执行计算机程序中包括的多条微码指令中的微码指令的装置,
其中,所述微码指令是具有多个条件的转移指令,以及
其中,所述转移指令包括所述转移代码;
用于评估所述转移指令的装置,
其中,所述用于评估所述转移指令的装置包括:
用于基于所述转移指令中所包括的所述转移代码选择所述转移表中的所述转移函数入口的装置;
用于基于评估所述多个条件的结果在所述转移函数入口中定位所述多个元件中的输出元件的装置;
用于基于所述输出条件跳到所述多条微码指令中的下一条微码指令的装置;以及
用于执行所述下一条微码指令的装置。
9.根据权利要求8所述的系统,其中,所述用于跳到下一条微码指令的装置包括:用于根据所述输出元件读取偏移的装置;以及用于将所述偏移加到基地址以确定所述下一条微码指令的地址的装置。
10.根据权利要求9所述的系统,其中,所述用于执行所述下一条微码指令的装置包括:用于执行所述系统的程序计数器指向的指令的装置。
11.根据权利要求8所述的系统,其中,所述用于定义所述转移表的装置包括:用于在编译时定义所述转移表的装置。
12.根据权利要求8所述的系统,其中,所述用于定义所述转移表的装置包括:用于在运行时定义所述转移表的装置。
13.根据权利要求8所述的系统,其中所述用于评估所述转移指令的装置包括:用于评估所述多个条件的装置。
14.一种用于执行包括转移指令的程序的数据处理装置,所述数据处理装置包括:
存储器,存储:
所述程序,其中,所述转移指令包括包含转移代码的字段;以及
转移表数据结构,将所述转移代码映射到转移函数,所述转移函数具有至少两个条件表达式;
其中,基于所述两个条件表达式的、所述转移函数的多个元件存储在所述转移表数据结构中所包含的转移函数入口中;以及
用于执行所述程序的装置,
用于评价所述转移指令的装置,
其中,用于评价所述转移指令的装置包括:
用于基于所述转移指令中所包括的所述转移代码,选择所述转移表中的所述转移函数入口的装置,以及
用于基于评价所述至少两个条件表达式的结果,在所述转移函数入口中定位所述多个元件中的输出元件的装置,以及
用于基于所述输出元件,跳到要执行的下一条指令的装置。
CN200910179807.5A 2008-12-23 2009-09-30 利用可编程转移表快速转移的系统和方法 Expired - Fee Related CN101763247B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/342,851 US8078849B2 (en) 2008-12-23 2008-12-23 Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table
US12/342,851 2008-12-23

Publications (2)

Publication Number Publication Date
CN101763247A CN101763247A (zh) 2010-06-30
CN101763247B true CN101763247B (zh) 2014-01-08

Family

ID=40668451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910179807.5A Expired - Fee Related CN101763247B (zh) 2008-12-23 2009-09-30 利用可编程转移表快速转移的系统和方法

Country Status (3)

Country Link
US (2) US8078849B2 (zh)
EP (2) EP2202634B1 (zh)
CN (1) CN101763247B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078849B2 (en) 2008-12-23 2011-12-13 Juniper Networks, Inc. Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table
US10089277B2 (en) 2011-06-24 2018-10-02 Robert Keith Mykland Configurable circuit array
US8869123B2 (en) * 2011-06-24 2014-10-21 Robert Keith Mykland System and method for applying a sequence of operations code to program configurable logic circuitry
US9158544B2 (en) 2011-06-24 2015-10-13 Robert Keith Mykland System and method for performing a branch object conversion to program configurable logic circuitry
US9304770B2 (en) 2011-11-21 2016-04-05 Robert Keith Mykland Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US9633160B2 (en) 2012-06-11 2017-04-25 Robert Keith Mykland Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor
US9811340B2 (en) * 2012-06-18 2017-11-07 Intel Corporation Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US10853074B2 (en) * 2014-05-01 2020-12-01 Netronome Systems, Inc. Table fetch processor instruction using table number to base address translation
US10713048B2 (en) * 2017-01-19 2020-07-14 International Business Machines Corporation Conditional branch to an indirectly specified location

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US6112300A (en) * 1998-06-03 2000-08-29 International Business Machines Corporation Method and apparatus for performing multi-way branching using a hardware relational table
US6851046B1 (en) * 2000-11-14 2005-02-01 Globespanvirata, Inc. Jumping to a recombine target address which is encoded in a ternary branch instruction
US20060218385A1 (en) * 2005-03-23 2006-09-28 Smith Rodney W Branch target address cache storing two or more branch target addresses per index
JP2007272353A (ja) * 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP2008305185A (ja) * 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US20090249047A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Method and system for relative multiple-target branch instruction execution in a processor
US8078849B2 (en) 2008-12-23 2011-12-13 Juniper Networks, Inc. Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C.A.Papachristou.《method for direct multiway branching in microprogram control》.《electronics letters》.1981,第17卷(第19期),709-710. *

Also Published As

Publication number Publication date
US20100161949A1 (en) 2010-06-24
US8078849B2 (en) 2011-12-13
US8332622B2 (en) 2012-12-11
EP2439635B1 (en) 2016-11-16
EP2202634A1 (en) 2010-06-30
EP2202634B1 (en) 2011-11-30
EP2439635A2 (en) 2012-04-11
EP2439635A3 (en) 2012-06-27
US20120084534A1 (en) 2012-04-05
CN101763247A (zh) 2010-06-30

Similar Documents

Publication Publication Date Title
CN101763247B (zh) 利用可编程转移表快速转移的系统和方法
CN1327340C (zh) 处理器和编译器
US7143265B2 (en) Computer program product memory access system
CN105701023B (zh) 考虑到内存访问类型的快取内存替换策略
CN110689126A (zh) 一种用于执行神经网络运算的装置
CN102841777B (zh) 数据处理器中的分支目标缓存器寻址
CN115100018A (zh) 用于处理图像的图像处理器和方法
CN105393240A (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
CN103222003B (zh) 用于根据配置信息执行原子存储器操作的存储器及方法
CN105701032A (zh) 具多样替换策略的集合关联快取内存
US7162617B2 (en) Data processor with changeable architecture
CN103810125A (zh) 有源存储器件聚集、分散和过滤
US20220198117A1 (en) Executing a neural network graph using a non-homogenous set of reconfigurable processors
CN105701022A (zh) 基于内存访问类型以组块来分配的快取内存
CN104778025B (zh) 基于随机访问存储器的先入先出存储器的电路结构
CN102117197B (zh) 高性能通用信号处理器指令分配装置
JP2004157593A (ja) 多ポート統合キャッシュ
CN108269602B (zh) 非易失性存储存储器中的处理器
CN101853211B (zh) 涉及可变大小信元的共享存储器缓冲区的方法和设备
CN105701034A (zh) 基于内存访问类型以分路来分配的快取内存
CN105874436A (zh) 用于自主存储器的方法及系统
KR20100092805A (ko) 재구성 가능한 구조의 프로세서
CN102262611B (zh) 一种16位的risc cpu系统结构
US5297255A (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
CN108139911A (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格

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
C56 Change in the name or address of the patentee

Owner name: JUNIPER NETWORKS INC.

Free format text: FORMER NAME: NETSCREEN TECHNOLOGIES INC.

CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Juniper Networks, Inc.

Address before: California, USA

Patentee before: Jungle network

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140108

Termination date: 20210930

CF01 Termination of patent right due to non-payment of annual fee