CN1167005C - 用于流水线化处理器中跳转控制的方法及装置 - Google Patents

用于流水线化处理器中跳转控制的方法及装置 Download PDF

Info

Publication number
CN1167005C
CN1167005C CNB008084599A CN00808459A CN1167005C CN 1167005 C CN1167005 C CN 1167005C CN B008084599 A CNB008084599 A CN B008084599A CN 00808459 A CN00808459 A CN 00808459A CN 1167005 C CN1167005 C CN 1167005C
Authority
CN
China
Prior art keywords
instruction
sign
jump
processor
streamline
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
CNB008084599A
Other languages
English (en)
Other versions
CN1357122A (zh
Inventor
J��R��H���ڿ�����
J·R·H·黑克威尔
J·桑德斯
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.)
Synopsys Inc
Original Assignee
ARC INTERNAT U S HOLDINGS Inc
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
Priority claimed from US09/418,663 external-priority patent/US6862563B1/en
Priority claimed from US09/523,871 external-priority patent/US6560754B1/en
Application filed by ARC INTERNAT U S HOLDINGS Inc filed Critical ARC INTERNAT U S HOLDINGS Inc
Publication of CN1357122A publication Critical patent/CN1357122A/zh
Application granted granted Critical
Publication of CN1167005C publication Critical patent/CN1167005C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • 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/30181Instruction operation extension or modification
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Selective Calling Equipment (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种在流水线化的处理器(CPU)或用户可定制微处理器内用于控制及执行指令字的改进方法及装置。在本发明第一方面,公布了一种允许跳转指令字联锁的用户控制的改进方法。在一个实施例中,要求在一个设置标志的指令字与一个作为该标志结果而进行的转移之间最少有一个周期;用联锁来检测其前面有设置标志指令的转移指令字,以确保直接在该转移之前的这个指令字不会影响转移结果。在第二实施例中,跟随在一个其标志会影响跳转结果的设置标志指令字之后的跳转指令字被阻塞,直到所有标志均被设置完毕。在本发明第二方面,公布了一种包括了上述联锁的综合处理器设计的方法。还公布了使用上述方法所综合的示范性门逻辑,以及一个能够实现这些方法的计算机系统。

Description

用于流水线化处理器中跳转控制的方法及装置
本专利申请要求下列申请以优先权:申请于1999年5月13日的美国临时专利申请、申请号为U.S.Serial No.60/134,253、标题为“Method And Apparatus For Synthesizing And Implementing IntergratedCircuit Designs”,和共同待审的申请于1999年10月14日、申请号为U.S.Serial No.09/418,663、标题为“Method And Apparatus For ManagingThe Configuration And Functionality Of A Semiconductor Design”的专利申请,该申请要求申请于1998年10月14日申请号为U.S.Serial No.60/102,271、并具有同样标题的的美国临时专利申请的优先权。
技术领域
本发明涉及集成电路设计领域,特别设计使用一种硬件描述语言(HDL)、以在流水线化的中央处理器(CPU)或用户可定制的微处理器中执行指令。
背景技术
RISC(或称精简指令集计算机)处理器在计算技术中为人所熟知。RISC处理器通常具有利用大幅精简的——相比于非RISC(通常称为“CISC”)处理器而言——指令集的基本特征。一般地,RISC处理器机器指令并非全部微编码化,而是可直接执行、无需解码,从而在运行速度上提供了明显的高效率。而且这一“流线型的”指令处理能力在处理器的设计中又允许进一步的简化(与非RISC装置相比),从而提供了更小的硅片以及更低的制造成本。
RISC处理器通常还具有这样的特征:(i)装入/储存存储器体系结构(亦即仅装入和储存指令具有对存储器的入口,其它指令则经由处理器内的内部寄存器而进行操作);(ii)处理器和编译程序结合;(iii)流水线作业。
流水线作业是一种通过将处理器中的操作顺序分成分立部分——一旦有可能这些分立部分即被高效地同时执行——以提高处理器性能的技术。在典型的流水线化的处理器中,相应于处理器算术运算(如ADD,MULTIPLY,DIVIDE等等)的运算单元通常被“分段”,从而在任一时钟周期中,可令操作的一个特定部分在该单元的一个给定部分完成。图1表示一个具有这样分段的运算单元的典型处理器体系结构。所以这些单元可在任一给定时钟周期对不同的计算结果进行运算。例如在第一时钟周期,两个数A和B被馈送到乘法单元10并由该单元的第一部分12部分地加以处理。在第二时钟周期,来自于A和B相乘的部分结果被传送到第二部分14,而此时第一部分12接收两个新数(比如C和D),开始进行处理。净结果为初始的启动周期之后,每个时钟周期都由运算单元10完成一次乘法运算。
流水线深度会依体系结构而异。在这里上下文中,“深度”一词意指出现于流水线中的分立阶段的数目。总的来说,一条流水线的阶段愈多,运行程序愈快,但也会愈加难以编程——虽然对程序员来说流水线作用显而易见。大多数流水线化的处理器为三阶段(取指令,解码,执行)或四阶段(例如取指令,解码,取操作数,执行或者还可为取指令,解码/取操作数,执行,写回),不过也有使用多于或少于三或四阶段的流水线化的处理器。
在开发一个流水线化处理器的指令集时,必须考虑到若干“冒险”。例如,所谓“结构”或“资源争夺”冒险起因于重叠指令争夺同样的资源(例如总线,寄存器,或其它功能单元),这些冒险通常用一个或更多的流水线阻塞加以解决。所谓“数据”流水线冒险发生于读/写冲突的情况,这种冲突会改变存储器或寄存器存取的顺序。“控制”冒险则一般由程序流中的转移或类似变化所产生。
流水线化处理器通常需要联锁以解决许多这类冒险。例如,考虑这种情况:在一个稍前流水线阶段中的一个后继指令(n+1)需要来自于一个稍后阶段的指令n的结果。对上述问题的一个简单解答是以一个或一个以上的时钟周期来延迟处于解码阶段中的操作数计算。然而这种延迟的一个结果,即为对处理器的一个给定指令的执行时间部分地由流水线内围绕该指令的指令所决定。这就使对处理器的编码优化此复杂化,因为使程序员在编码内确定联锁情况通常是困难的。
可在处理器中用“记分牌”来实现联锁;在这种方法中,为每个处理器寄存器附加一位,用以作为寄存器内容的指示符;具体地说,指示是否(i)寄存器内容已被更新并因此而可以使用,或者(ii)内容正在进行由其它寄存器所写入这样的改动。在有些体系结构中这一记分牌也用于生成联锁,这种联锁防止执行要依赖于记分牌寄存器内容的指令,直至记分牌指示该寄存器可用为止。这种方法被称为“硬件”联锁,这是因为这种联锁纯粹通过记分牌的检查、经由处理器中的硬件而被调用。这种联锁生成“阻塞”,它们阻碍了对于数据依赖指令的执行(从而阻塞了流水线),直至寄存器可用为止。
另外,还可将NOP(空操作操作码)插入编码中,以在需要时延迟相应的流水线阶段。这后一种方法被称为“软件”联锁,具有加大编码长度及程序——使用了要求联锁指令的程序——复杂性的缺点。就其编码结构而言,大量使用了软件联锁的设计同样往往不能充分优化。
在处理器设计中另一个重要的考虑是程序转移或“跳转”。所有的处理器都支持某种类型的转移指令。简而言之,转移指的是程序流被中断或改变的情况。其它的操作——例如循环设置和子例程调用指令——也以类似方式中断或改变程序流。“跳转延迟时隙”一词经常用于表示在一条流水线中,处于解码中的转移——或称跳转——之后的时隙。当等待转移/装入指令完成时,执行在转移(或装入)之后的指令。转移可为有条件的(亦即基于一个或更多的参数的真或数值)或无条件的。还可为绝对的(例如基于绝对内存地址),或是相对的(例如基于相对地址以及不依赖于任一特定的内存地址)。
转移会对流水线系统具有深远影响。在一个转移指令被插入并由处理器的指令解码阶段进行解码(指示该处理器必须开始执行其它的存取)前,在该指令序列中的下一个指令字即已被取出并插入这一流水线中。对于这一问题的一个解答即为清除所取出的指令字并暂停——或称阻塞——进一步的取操作,直至转移指令被执行完毕,如图2所示。但这一方法由于在若干指令周期内执行转移指令的需要,而若干指令周期的数目通常为1和在处理器设计中所使用的流水线深度之间的数。这种结果对于处理器速度及效率是有害的,因为在这一期间处理器不能进行其它操作。
此外,还可使用延迟转移方法。这一方法中,当一个转移指令到达解码阶段时,流水线并不进行清除,而一般是在该转移被执行之前,执行出现于流水线稍早阶段的后续指令。因此当转移指令被解码时,该转移即表现得是以执行流水线中所有后续指令所需的指令周期的数目而延迟。转移方法与上述的多周期转移相比,提高了流水线效率,然而也增加了基本编码的复杂性(还减少了程序员的理解)。
现有技术中已经提出了在数字处理器中用于跳转(转移)控制的各种方法和装置。例如参见作者为WARREN,H.S.名称为“InstructionScheduling for the IBM RISC System/6000 Processor”,IBM Journalof Research and Development,IBM Corporation,Vol.34,no.1,1990,其中使用分离的转移和执行单元;转移单元分配指令给执行单元,并且在分配之前至少部分解码所述指令,以确定所述指令是否设置或使用条件寄存器,并且将所述条件寄存器“锁存”为适合。然而此结构非常复杂,并不能给程序员提供将指令调度进不影响后序转移的预转移指令槽(instruction slot)。还可参见欧洲专利(申请)号为0365188,转让给阿波罗计算机公司,发明名称为“中央处理器条件编码方法和装置”以及“条件寄存器相干展望”研究披露的内容,Industrial Opportunities,Ltd.,no.348,1993年4月,其中每个披露的内容都不是在处理器中执行条件编码和控制跳转/转移指令操作的最优方法。
基于上述,处理器设计员及程序员必须与非联锁体系结构相对,仔细权衡相应于利用硬件或软件联锁的折衷方案。而且,必须考虑在具有选定联锁模式的指令集内,转移指令(以及延迟或多周期转移)的交互作用。对流水线及联锁,需要有一种改进方法,该方法既优化了处理器流水线性能,而同时又为程序员提供了附加的编码灵活性。而且,随更多的流水线阶段(甚至于多条多阶段流水线)添加进处理器设计中,在该处理器内改进流水线性能及编码优化的益处可成倍增加。另外,以某种特定方式、方便地综合这些经过改进的流水线处理器设计以及使用现有综合工具的能力,对于设计员和程序员也具有明显效益。
发明内容
本发明通过提供经过改进的、用于在流水线化的处理器体系结构内执行指令的方法和装置,而满足了上述这些要求。
在本发明第一方面,公布了一种经过改进的、控制在CPU内跳转的方法。在第一个实施例中,提供了一种流水线联锁模式,以此检测一个设置转移指令的指令字与一个后续转移指令字之间的关系;防止这类指令——它们直接在预定增量内的转移指令之前——影响转移操作,所以允许将一个设置标志指令字调度到直接在该转移指令之前的时隙内。可用一个空时隙(或NOP)占据在该转移指令字之前的时隙。在第二个实施例中,通过一个具有一种编码结构的模式而避免了这个空时隙,该编码结构要求在流水线某个稍前阶段的一个转移被延迟,直至该设置标志指令字已被移到流水线的稍后阶段、而且该标志已被设置为止。
在本发明第二方面,公布了一种经过改进的综合集成电路设计——在设计中采用了前述的跳转延迟时隙方法——的方法。在一个示范性实施例中,这一方法包括了取得关于设计结构的用户输入;基于该用户输入及现有功能库而生成专用HDL功能区块;基于该用户输入及库而确定设计层次结构并生成一个层次结构文件、新库文件、和程序描述文件(makefile);运行程序描述文件以生成结构HDL及稿本;运行生成的稿本以为仿真程序及综合稿本而生成一个程序描述文件;基于生成的设计及综合稿本而综合这一设计。
在本发明第三方面,公布了一种经过改进的计算机程序,该程序可用于综合处理器设计并实施上述方法。在一个示范性实施例中,这一计算机程序包括了储存于一台微型计算机的磁存储器装置中、并适于由此运行在其中央处理器上的一个目标代码表示。该计算机程序进一步包括了一个交互式的、菜单驱动的图形用户界面(GUI),因此便于轻松使用。
在本发明第四方面,公布了一套经过改进的装置,以运行上述的计算机程序——该程序被用于对相应于流水线化处理器的逻辑加以综合。在一个示范性实施例中,这一系统包括了一个具有显示器、中央处理器、数据存储装置以及输入装置的独立微型计算机系统。
在本发明第五方面,公布了一种经过改进的处理器结构体系,该处理器结构体系使用上述的跳转联锁方法以及约束/无约束综合逻辑。在一个示范性实施例中,该处理器包括一个精简指令集计算机(RISC),该计算机具有一条三阶段指令流水线——包括取指令、解码及执行阶段,这些阶段部分地由上述的跳转联锁方法所控制。
附图说明
图1为一种使用“分段的”运算单元的典型原有技术处理器结构体系框图。
图2图解说明了一个原有技术四阶段流水线处理器的操作,该处理器正进行一个多周期转移操作。
图3为一个流水线流程图,说明根据本发明,经由第一联锁模式而控制在一个流水线化的处理器中的转移的一般化方法。
图4为一个示意图,说明一个综合逻辑(无约束)的第一实施例,用于实现图3的跳转流水线联锁方法。
图5为一个示意图,说明一个综合逻辑(受约束)的第二实施例,用于实现图3的跳转流水线联锁方法。
图6为一个逻辑流程图,说明根据本发明、经由第二联锁模式而控制在一个流水线化的处理器中的转移的一般化方法。
图7为一个示意图,说明一个综合逻辑(无约束)的第一实施例,用于实现图6的跳转流水线联锁方法。
图8为一个示意图,说明一个综合逻辑(受约束)的第二实施例,用于实现图6的跳转流水线联锁方法。
图9为一个逻辑流程图,说明根据本发明而综合处理器逻辑的一般化方法,包括了跳转控制联锁。
图10为一个包括了相应于本发明的流水线联锁的处理器设计框图。
图11为一个计算设备的功能区块示意图,它包括了本发明的硬件描述语言,用以对图4-5和7-8的逻辑设备进行综合。
具体实施方式
现对附图进行编号,全部附图中同样的编号指同样的部分。
在此所用的“处理器”一词意为任何集成电路或其它能够根据至少一个指令字完成一次操作的电子器件,包括——但不限于——诸如本申请受让人所生产的用户配置计算机这样的精简指令集计算机(RISC)处理器,中央处理器(CPU),以及数字信号处理器(DSP)。这些设备的硬件可集成到单独一个芯片(“小片”)上,或分布于两个或更多的小片上。而且处理器的各种功能特征可依照相应于本发明的软件或者固件而完全实现。
另外,本领域普通技术人员会认识到,此处所用的“阶段”一词指的是流水线处理器中各个连续阶段,即阶段1指的是第一流水线阶段,阶段2指的是第二流水线阶段,等等。
还应认识到,尽管以下讨论就VHSIC硬件描述语言(VHDL)而进行,然而还可使用其它如Verilog这样的硬件描述语言,同样成功地描述本发明的各个实施例。而且,尽管使用了一个示范性的Synopsy综合引擎——如Design Compiler 1999.05(DC99)——以对此处提出的各个实施例进行综合,但也可使用其它综合引擎——例如,特别是可从Cadence Design Systems,Inc.购到的Bui1dgates。“IEEE标准1076.3-1997”,IEEE Standard VHDL Synthesis Packages规定了一种工业接受的语言,用于规定硬件定义语言基的设计及综合能力——一个本领域的普通技术人员也许希望能对此加以使用。
最后,应认识到,尽管以下描述说明了逻辑——该逻辑由本申请受让人使用上述综合引擎及VHSIC硬件描述语言进行了综合——的特定实施例,这类实施例在某些方面受到约束,然而这些实施例对于本发明的设计过程来说仅仅为示范性的及说明性的。而且,尽管对于这些实施例规定了1.0μm工艺,其它工艺(如0.35μm或0.18μm)相信也可结合这里所公布的本发明而使用。
现描述根据本发明,经过改进的、控制在处理器内跳转(包括转移、循环设置、子例程调用等等)的方法。
本发明的方法概括地说,包括在处理器指令集内的一个指令字——它设置一个标志——以及一个作为该标志结果的跳转(指令)之间设置一个或更多的联锁。在以下参照图3所描述的一个实施例中,禁止先于某个给定的跳转指令若干预定周期的设置标志指令影响该跳转的执行。例如,要求在一个设置标志指令与任一作为该标志结果的跳转之间由该指令设置最低数目的周期(n)。在另一实施例中(图6),在第一阶段的跳转指令被延迟,直至在某个稍后阶段的设置标志指令被移出该阶段为止。为说明起见,假定处理器结构体系每个机器周期执行一个指令——尽管可认识到可使用其它的结构体系。
考虑一个流水线化的结构体系,其中可令跳转以一个处理器标志为条件,而且该跳转指令在一个早于该标志为一个指令所设置前的阶段被执行。可能在一个有条件跳转的同时执行一个设置标志指令,因为这两个指令在同一时刻处于流水线的不同阶段。假定在每个周期结束时更新处理器标志,则这一有条件跳转就会基于周期开始的值而确定是否改变程序流——而非基于由设置标志指令在该周期当中所计算出的标志值。这样跳转指令就不会受到设置标志指令的影响。
为确保跳转指令会使用由设置标志指令所设的标志值,不执行该跳转指令,直到标志值已被更新为止。因此在设置标志指令的执行与跳转指令的执行之间,会有若干周期(n)。
但如果该跳转由于某种原因而阻塞于流水线上,而且在一个稍后阶段的设置标志指令不受这一阻塞影响、被允许完成并更新处理器标志,则当跳转被允许继续时,它即会以这个更新了的处理器标志为条件并得到一个不同的结果。
熟练程序员会希望确保有用的指令可在设置标志指令与跳转指令之间的所需周期得以执行。如非描述于此的本发明,程序员就不得不确保位于设置标志指令与跳转指令之间的任何指令都不得改变由跳转指令所检测的处理器标志值。
这里所描述的改进的方法和装置允许程序员在某个第一设置标志指令与其相应的有条件跳转之间的所需周期中,调度一个第二设置标志指令,并确保该有条件跳转不受该第二设置标志指令影响——如果这个跳转阻塞于流水线上的话。这就会——举例来说——允许一个第二有条件跳转指令与该第二设置标志指令配成对,其方式使得这两对指令重叠,从而节省了运行时间。
现在参见图3,描述根据本发明、控制在一个流水线化的处理器内跳转的一般化方法的第一实施例。在方法300的第一步骤302,提供一个适于在处理器上运行并包括多个指令字的程序。在该程序中的每个指令字都表示为并包括了多个数据位,并且至少其中一个指令字包括一个设置标志指令(如下面更详细讨论的“xor.f”指令),而至少另一个字包括一个跳转指令。但请注意此处所用的“跳转”一词可指任何转移、跳转、循环设置或调用指令,尽管其它要求改变处理器指令处理流程的指令也相信可与所公布的本发明一起使用。设置标志指令与跳转指令二者的形式与内容都在数字处理器技术中为人所熟知。
设置标志指令字对于跳转指令字可为任何顺序或关系;然而,情况是在程序内至少一个设置标志指令字位于至少一个跳转指令字之前。这一设置标志指令字先于一个后续跳转指令字的这种相对的邻近关系(以程序序列中相应于指令字的机器或处理器周期的数目加以衡量)还会变化。在原有技术方法中,当设置标志指令字以一个程序序列中小于预定增量或数目的指令字而先于一个跳转指令字时,该跳转指令的操作即会受由直接在它的设置标志指令之前所设置标志的影响,相应地,跳转操作也依是否在先于该跳转的时隙中调度进了设置标志指令而变化;设备程序员需要清楚地考虑到这一行为。
相比之下,本发明实施例的联锁特性防止了出现于一个跳转指令之前小于预定增量的一个设置标志指令影响该跳转的操作。特别地,在所描述的实施例中,这个增量包括了一个机器周期,并且相应地任何在处理器中算术逻辑单元(ALU)或其它单元内、在直接优先于该跳转的周期或时隙内的设置标志都不能在该跳转指令完成之前进行标志的设置,所以它不改变跳转所要考虑的标志(例如ALU的那些标志)。
作为一个一般性命题,当在阶段3有一个装入指令,以防止一个在阶段2上的跳转指令(例如“Jcc rn”)与一个在阶段3上的装入指令(例如“LD rn,[…]”)之间可能的锁位情况时,所说明实施例的联锁信号不置于真(即联锁未启动)。在这种情况下,记分牌会防止装入完成,这意味着该记分牌不会被清零、导致一种完全死锁的情况。不认为这种装入排除相应于本发明有问题,因为装入并不设置标志。
在步骤306,对出现于跳转指令一个指令之前的设置标志指令进行解码并执行,从而在ALU或处理器内的其它寄存器内设置指定标志。请注意在本实施例中,在阶段2的一个跳转指令及一个在阶段3的设置标志指令必须依它们能被分析之前的关系而被解码。
下面在步骤308,流水线已从步骤306移来并分析了出现于流水线上的任何跳转及设置标志指令之间的关系。确定了这样的联锁:出现于阶段3的设置标志指令直接在出现于阶段2的跳转指令之前。该跳转指令被阻塞于当前周期的结尾,因为一个用于阶段2的阻塞请求被置于真。为防止设置标志指令影响后续的跳转,设置标志指令也必须被阻塞于当前周期的结尾。这个联锁生成了一个用于阶段3的阻塞请求。在这个周期结束时,该阻塞请求信号防止了在阶段2和阶段3的指令移到流水线上的下一阶段。
在步骤312,被调度到设置标志指令之后的一个跳转指令在阶段2阻塞被取消、并取出了指定跳转的某个稍后时间由处理器进行解码及执行。对指令解码有用的方法及装置为计算机技术领域所熟知,相应地就不在此处进一步详述。
在步骤314,阻塞的(第二)设置标志指令在步骤312的跳转完成的同时也被解码并执行。这种同时完成确保了该第二设置标志指令不影响跳转的结果。
提供了图3方法的以下示例(特别是在本申请人的ARC Core的版本5或“v5”中)用以说明。如前所述,在一个设置标志的指令与一个作为该标志的结果的转移之间要求有最少一个周期;这使得设置标志的指令可被调度到转移之前、不会影响这个转移结果的时隙,如下所述:
xor.f 0,r1,-1      ;为jz指令设置标志
and.f r0,r1,r2     ;不影响转移结果
jz [r10]             ;进行跳转
经常以一个NOP(空操作)指令填入该时隙,如下例所示:
xor.f 0,r0,-2      ;测试是否r0为-2
nop                  ;留下一个空时隙(“填充”)
bz r0_is_minus_2     ;进行跳转
规定这个v5联锁以确保当第二设置标志指令到达阶段3时,该指令不会在转移指令完成前设置标志,并从而使它不能改变该转移所要考虑的标志(如ALU标志)。在上述例子中,联锁检测这种情况会出现的场合,并阻塞在阶段3中的设置标志指令。
所述实施例的v5联锁信号(“ibch_holgp3”)进一步考虑会影响一个跳转的阶段2阻塞的三种类型;
i.后续指令未出现
ii.一个转移(如,Jcc[rn])引用了一个上记分牌的寄存器
iii.一个转移(如,Jcc[rn])由一个扩展阶段2阻塞所保持
i.在ARC v5处理器中,直接后续于一个跳转指令的指令被称为‘延迟时隙’指令。该跳转指令以模式为特征,用以根据转移的结果而控制延迟时隙指令的执行。为进行所要控制的后续指令的执行,它必须处于流水线中。如无后续的指令字可置于阶段1中,跳转指令就会阻塞于阶段2,如一个寄存器‘失误’导致的结果。
ii.如对于一个跳转的目标地址从一个寄存器取得,而该寄存器被标记为一个未完成装入的目的地(一个上了记分牌的寄存器),则该跳转必须被阻塞,直至该装入完成、并且寄存器值被更新为止。
iii.在ARC v5处理器中,提供一个接口以用于增加额外的‘扩展’寄存器。这个接口允许生成一个外部阻塞信号。一个外部阻塞会阻塞一个在阶段2的跳转指令——如果该跳转指令引用了一个扩展寄存器而该扩展寄存器不能在该周期上返回数据的话。
上述“ibch_holdp3”联锁功能的一个总结性VHDL表达式如下:
ibch_holdp3<=‘1’WHEN ip2bch=‘1’
                 AND imload 3=‘0’
                 AND((holdup12 Or ihp2_1d_nsc)=‘1’
                    OR xholdup12=‘1’
                    OR ivalid=‘0’)ELSE
                   ‘0’;
注意,如果在阶段2的一个指令被阻塞,则相应于ibch_holdp3的逻辑将阻塞在阶段3的任何指令,除非在阶段3的指令为装入。在本实施例中,逻辑并不为设置标志指令进行特别校验,而只是一个可设置标志的指令。
这里的附录A提供了一个示范性VDHL表达式,用于综合ARC Core版本5(v5)的跳转流水线联锁。
注意,除了上述调度到预置空时隙中的NOP外,一个熟练的程序员会构造其编码、使之在这一时隙中完成某种有用操作。对这类编码的选择方案范围很广,依作为一个整体的程序总结构而定。例如在一个例子中,可能在这个预置空时隙中完成转移中的第一个编码逻辑运算。这就使得这个预置空时隙可用于有用的程序执行。再举一例,某些算法可被分段,使得在程序流的两个分支中执行同样的下一个指令。在这种情况下,就可能在这个预置空时隙中编码,令其执行而无论是否使用了这一分支。许多这样的选择方案都是可能的,并被认为属于这里所公布的本发明的范围。
图4表示了综合逻辑的第一实施例,用于实现本发明的v5的跳转流水线联锁。图4的逻辑使用上述的应用了LSI 10k 1.0μm工艺、未加约束的SynopsyDesign Compiler而进行综合。
图5表示了v5跳转流水线联锁的综合逻辑第二实施例,除了包括了“指令有效”信号(ivalid)与ibch_holdp3之间的延迟最小的约束。但可以认识到,还可将其它约束用于选择方案——与/或该ivalid与ibch_holdp3之间最小化约束一起。
现在参见图6,描述根据本发明、控制在一个流水线化的处理器内跳转的一般化方法的第二实施例。在方法600的第一个步骤602中,如前所述地提供了一个适配于运行在处理器上并包括有多个指令字的指令集。至少其中一个指令字包括一个设置标志指令(如上例中的“xor.f”指令),而且至少其中另一个字包括一个跳转指令。
不过相对于图3的方法,图6实施例的联锁不允许将一个NOP或设置标志指令调度到直接在跳转之前的时隙中。反之,处理器首先将设置标志指令移进解码阶段并在步骤604将该指令解码。其次在步骤606,该设置标志指令被移进执行阶段并被执行。此时,确定在执行阶段的指令的标识(步骤608);以下相应于表1描述一种可用于作出这一确定的示范性编码。跳转指令经步骤610而被移进解码阶段并进行解码。该跳转指令被阻塞于这个解码阶段(步骤612)直至经步骤614,设置标志指令被移出执行阶段并相应地设置了标志为止。注意仅在步骤608确定出现了一个设置标志指令时,才会发生步骤612的阻塞。这个跳转指令随后即被移进执行阶段并在步骤616执行。如所易知,这一方法特别允许为“如果—于是”结构而写入一种更紧致的编码。并且可以理解,许多上述步骤(例如设置标志指令移进执行阶段以及跳转指令移进解码阶段)都会同时发生。
以下示范性编码结构(涉及ARC Core的版本6或“v6”)说明图6的方法:
v6 code:xor.f 0,r0,-2;测试是否r0为-2
         bz r0_is_minus_2;进行转移
以上v6联锁编码结构允许v5编码的NOP(此处图3)被省略,因为在阶段2的转移会被延迟直到设置标志指令已经移出阶段3并且该指令已被设置为止。v6编码执行时间与v5编码相同,但明显减少了编码长度,因为出现于v5编码中的许多NOP被略去。
对下列类型的有效指令必须在阶段3进行检测及识别,以启动v6联锁:
i.任何设置标志的ALU指令(例如“p3setflags”)
ii.设置标志跳转指令(例如Jcc.F或JLcc.F)
iii.FLAG指令
这些设置标志跳转指令被用于从子例程或中断返回,因为它们允许包含程序计数器及处理器标志的32位寄存器从一个寄存器中的一个单一储存的32位量进行同时重装。
本实施例中对这些指令检测的完成如表1所示:
                                  表1
    编码 被检测指令类型
ibch_p3flagset<=ip3iv WHEN(ip3setflags=‘1’))OR((ip3i=ojcc)AND(ip3_fbit=‘1’)OR((ip3i=oflag)AND(ip3c=so_fag)ELSE             ‘0’    ---ALU---Jcc/JLcc---FLAG
注意,为生成阻塞,还要求检测出现于阶段2的有效转移指令(例如“ip2bch”)。因此,在下列两个条件同时出现时即生成一个阻塞:
1.在阶段3的一个指令正在试图设置标志;
2.在阶段2的一个转移指令需要使用这些新标志
下列示范性编码结构被用于v6以确定这两个条件是否为真:
                           表2
    编码     被检测指令类型
ibch_holdup2<=‘1’WHEN(ibch_p3 flagset=‘1’))AND(ip2bch=‘1’)ELSE               ‘0’ ---阶段3设置标志---在阶段2转移
注意在所说明实施例中,还可能检测这样一些程序条件,其中或者(a)标志未被设置;或者(b)后续转移指令不校验所设置标志。在这两种情况下,均将在设置标志与后续转移之间的联锁取消。相应地,这些条件的检测就在处理器性能上提供了进一步潜在的改进,这是因为不必为设置标志/转移组合而生成联锁——如检测到该标志不会被设置(如指令随后被取消),或者该标志由不为选定转移条件所测试的指令所设置的话。
下列v6编码的特定例子说明了上述概念:
i.在阶段3的有条件设置标志指令不设置标志(例如add.cc.fr0,r0,r0,导致c=1)
ii.在阶段2的转移指令使用了AL(总是)条件模式。
此处附录B包括了一个相应于本发明的示范性跳转流水线联锁VHDL表达式,如同所用于ARC Core版本6(v6)综合的。但应认识到,上述方法并不限于这一特定实施方案,而是可与任意数量的不同处理器设计结合使用。
图7说明用以实现本发明v6跳转流水线联锁的综合逻辑的第一实施例。图7逻辑使用上述的应用了LSI 10k 1.0μm工艺、未加约束的SynopsyDesign Compiler而进行综合。
图8表示了v6跳转流水线联锁的综合逻辑第二实施例,只是包括了令输入与ibch_holdp3之间的延迟最小的约束。图8逻辑也使用上述的应用了LSI 10k 1.0μm工艺的SynopsyDesign Compiler而进行综合。
进一步可认识到,所实施于v5或v6(或与本发明相一致的其它实施例)的跳转流水线联锁功能可与其它跳转控制或流水线联锁技术结合。例如,描述于本申请人同处办理中的、标题为“用于流水线化处理器中的跳转延迟时隙控制的方法及装置”的美国专利申请中的跳转延迟时隙控制,以及本申请人同处办理中的、标题为“用于处理器流水线分段法及再装配的方法以及装置”的美国专利申请中的流水线撕裂与抓起方法,二者均与此同时提出申请,并且二者均于此全部被包括进来、作为参考资料。此外,各种寄存器编码模式——如公布于本申请人同处办理中的、标题为“用于在流水线化处理器内松散寄存器编码的方法及装置”的美国专利申请——地可与本发明结合使用。
综合方法
现参见图9,描述包括了上述的跳转流水线联锁功能综合逻辑的方法900。综合集成电路逻辑——它具有一个用户定制的(即“软的”)指令集——的一般化方法公布在本申请人同处办理中的、申请于1999年10月14日、申请号为U.S.Patent Application Serial No.09/418,663、标题为“用于管理半导体设计的结构以及功能的方法及装置”专利申请中,这里将其全部引入、作为参考资料。
虽然以下描述就运行于微型计算机或其它类似处理设备上的算法或计算机程序而进行,应认识到其它硬件环境(包括小型计算机、工作站、联网的计算机、“超级计算机”以及大型机)也可被用于应用这一方法。另外,还可将这个计算机程序的一个或一个以上的部分实施于相对于软件的硬件或固件上——如果愿意的话,这类备选实施例完全属于计算机技术人员的技术范围内。
首先,在步骤902根据设计结构而取得用户输入。具体地,由用户选择所要的功能块或功能,并根据需要而增加、减少或生成涉及设计的指令。例如,在信号处理应用中,令CPU包括一个单一的“乘和累加(MAC)”指令通常是有利的。在本发明中,将综合设计的指令集加以改进、以在其中包括上述的跳转流水线联锁(或另一个可比的联锁/控制结构体系)。对各VHDL文件的技术库位置也由用户在步骤902加以规定。本发明中的技术库文件储存所有为综合处理所需的单元,包括——举例来说——逻辑功能、输入/输出计时以及所有相关约束。本发明中,各用户可规定他/她自己的库名及位置,从而增加了更多的灵活性。
其次在步骤903,基于用户输入及在步骤902规定的现有功能库而创建定制的HDL功能块。
在步骤904,基于用户输入及上述库文件而确定设计层次结构。基于该设计层次结构而顺序生成一个层次结构文件、新库文件以及程序描述文件。这里所用的“程序描述文件”一词指普遍使用的UNIX程序描述文件功能或为具有计算机编程技术的人员所熟知的计算机系统类似功能。程序描述文件功能使驻存在计算机系统中的其它软件或算法以规定的顺序运行。另外,它还规定数据文据以及为指定程序的成功运行所必需的其它信息的名字及位置。不过注意,此处所公布的本发明可使用不同于该“程序描述文件”类型的文件结构来产生所需功能。在本发明程序描述文件生成过程的一个实施例中,用户经由显示器而被互动地要求输入关于所需设计的信息,例如“建立”的类型(例如总的设备或系统结构),扩展存储系统数据总线的宽度,扩展的不同类型,寄存器类型/大小,等等。但也可使用与本发明一致的输入信息的许多其它结构及资源。
在步骤906,运行在步骤904生成的程序描述文件以创建结构HDL。该结构HDL将设计中分立的功能块结合在一起,以作出一个完整的设计。
其后在步骤908,运行生成于步骤906的稿本以为仿真程序而创建一个程序描述文件。在步骤908还运行生成一个综合稿本的稿本。
此时在程序中决定是对设计进行综合还是进行仿真(步骤910)。如选择仿真,用户即在步骤912使用生成的设计及仿真程序描述文件运行仿真程序。另外,如选择综合,用户即在步骤914使用综合稿本及生成的设计而进行综合。在综合/仿真稿本完成后,在步骤916评估设计是否合适。例如,一个综合引擎也许会生成设计的一个特定的物理布局,该布局满足了总设计过程的性能条件但不满足这个小片的大小要求。在这种情况下,设计者会对控制文件、库或其它能够影响小片大小的单元进行改动。所得到的设计信息集合随后即被用于重新运行综合稿本。
如果生成的设计是可接受的,设计过程即结束。如果生成的设计是不可接受的,则重新进行开始于步骤902的过程步骤,直到取得一个可接受的设计。以这种方式,方法900为可重复的。
图10表示一个使用1.0μm工艺所生产、包括了图4、5、7或8的逻辑以及此处前述的跳转流水线联锁功能的示范性流水线化处理器。如图10所示,处理器1000为一个ARC微型处理器类的CPU设备,它特别地具有一个处理器核心1002,芯片上存储器1004,以及一个扩展接口1006。这个设备使用定制的、利用本发明的方法900而取得的VHDL设计生产,该设计随后被综合为一个逻辑级表达式,然后使用在半导体技术中为人所熟知的编译、布局以及生产技术归约为一个物理设备。
本领域技术人员会认识到,图10处理器可包含任何普通可得的外围设备,如串行通信设备,并行接口,计时器,高电流驱动器,模数(A/D)转换器,数模转换器(D/A),中断处理器,LCD驱动器,存储器以及其它类似设备。另外,该处理器还可包括用户特定或应用特定的电路元件。本发明并不限于外围设备及其它应用本方法及装置进行组合的电路元件的类型、数量或复杂性。反之,任何由现有半导体工艺的物理能力所施加的限制都会随时间而改进。因此可预期,随半导体工艺的进步,可能应用本发明的集成的复杂性及质量将进一步提高。
还请注意,许多IC(集成电路)设计目前使用微处理器核心或DSP(数字信号处理器)核心。但DSP仅会被要求用于有限数量的DSP功能(如有限脉冲响应分析或者话音编码),或用于IC的快速存储器直接存取(DMA)体系结构。这里所公布的本发明可支持许多DSP指令功能,并且其快速的本地RAM系统提供了对数据的立即存取。通过将公布于此的方法应用于IC的CPU及DSP功能二者,可节约可观的成本。
另外,请注意这里如前所述的方法(及相应的计算机程序)可容易地以相对简单的再综合适应于更新的生产技术,例如0.18或0.1微米工艺——而非使用“硬的”原有微技术系统时,为了适应这类技术通常要采用冗长昂贵的处理。
现在参见图11,描述一个能够综合——尤其是——此处图4-5及7-8的跳转流水线联锁逻辑结构的计算设备的实施例。计算设备1100包括一个母板1101,该母板有一个中央处理器(CPU)1102,随机存储存储器(RAM)1104,以及存储器控制器1105。还提供了一个存储设备1106(如硬盘驱动器或CD-ROM),输入设备1107(如键盘或鼠标),和显示设备1108(如CRT、等离子体或TFT显示器),以及必要的总线以支持主机和外围设备部件的运行。前述的VHDL描述及综合引擎以一个计算机程序目标代码表达式的形式储存在RAM 1104和/或存储设备1106中,以在设计综合期间由CPU 1102使用,后者在计算技术中为人所熟知。用户(未示)在系统运行期间,通过由程序显示器及输入设备1107、将设计结构规范输入进综合程序而综合逻辑设计。由程序所生成的经过综合的设计储存于存储设备1106中以便以后检索,显示于图形显示设备1108,或经由一个串行或并行接口1112而输出到一台外部设备,如打印机、数据存储设备、其它外围设备——如果需要的话。
虽然以上详述已表明、描述、并指出了本发明应用到各个实施例上的新颖特性,然而应认识到本领域技术人员可对所表述的设备或过程的形式及细节作出各种各样的省略、替换或改变而不偏离本发明。本描述绝不意味着限制、而只应将其作为本发明一般原理的说明。本发明的范围应参照权利要求书而确定。

Claims (22)

1.一种方法(600),用于在具有一条流水线的处理器(1000)内控制程序跳转,所述流水线包括取指令、解码和执行阶段,所述方法包括:
提供包括多个指令字的指令集,所述多个指令字中至少包括一个设置标志指令,还至少包括另一个在所述流水线内跟随所述至少一个设置标志指令之后的跳转指令;
将所述至少一个设置标志指令移进所述解码阶段;
将所述至少一个设置标志指令移进所述执行阶段;
在所述执行阶段识别指令类型;
将所述至少一个跳转指令移进所述解码阶段;
检测至少一个这类情况:此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;
如果检测到至少一个上述情况发生,则在所述流水线解码阶段阻塞所述至少一个跳转指令,至少直到将由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止;以及
将所述至少一个跳转指令移进所述执行阶段并执行。
2.如权利要求1的方法,其中检测的动作包括:
检测何时所述至少一个设置标志指令处于所述至少一个跳转指令的预定增量内;以及
当处于所述预定增量之内时,生成一个信号。
3.如权利要求2的方法,其中阻塞的动作包括:
检测所述信号;以及
在检测到信号时,在所述流水线的执行阶段内将所述至少一个跳转指令阻塞一个指令周期。
4.如权利要求3的方法,其中所述至少一个跳转指令包括有条件转移指令。
5.一种在流水线化的处理器(1000)中控制程序转移的方法(300),包括:
提供一个包括多个指令字的指令集,所述的多个指令字包括至少第一和第二设置标志指令字以及至少一个转移指令字,所述第一和第二设置标志指令字在所述处理器的流水线内先于所述的至少一个转移指令字,所述第一设置标志指令字处于所述至少一个移转指令字的预定增量之外,所述第二设置标志指令字处于所述至少一个转移指令字的预定增量之内;
解码并执行所述第一设置标志指令字;
解码所述第二设置标志指令字;
在所述流水线内阻塞所述第二设置标志指令字,至少直到所述第二设置标志指令的执行不会影响转移指令字的执行为止;
解码所述转移指令字;
根据至少部分由所述第一设置标志指令字设置的标志执行所述转移指令字。
6.如权利要求5的方法,其中所述预定增量包括一个处理器周期。
7.如权利要求5的方法,进一步包括了基于至少一个参数的值而确定所述预定增量的值,所述的至少一个参数至少部分地与出现于流水线的至少一个阶段的指令字的类型有关。
8.一种数字处理器(1000),包括:
一个具有一条多阶段指令流水线的处理器核心(1002),所述流水线包括取指令、解码和执行阶段,该解码和执行阶段分别用于解码并运行一个包括了多个指令字的指令集;
一个在所述处理器核心与一个信息存储设备之间的数据接口;以及
一个指令集,其包括至少一个设置标志指令和至少一个在所述流水线内跟随于所述的至少一个设置标志指令之后的跳转指令,所述处理器(1000)与所述指令集进一步适配于:
将所述设置标志指令移进所述解码阶段;
将所述设置标志指令移进所述执行阶段;
在所述执行阶段识别所述指令类型;
将所述跳转指令移进所述解码阶段;
检测至少一次这类情况:此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;
如果检测到所述至少一种情况,在所述解码阶段阻塞所述跳转指令至少直到所有将要由所述设置标志指令设置的标志均被设置完毕为止;以及
将所述跳转指令移进所述执行阶段并执行。
9.如权利要求8的处理器,其中所述至少一个跳转指令包括一个具有逻辑条件的有条件转移指令,由所述有条件转移指令指定所述跳转指令到所述信息存储设备内的执行,该有条件转移指令由所述逻辑条件确定。
10.如权利要求5的方法,其中的所述处理器流水线包括一条至少三阶段流水线,该三阶段流水线包括取指令、解码及执行阶段。
11.如权利要求5的方法,还包括用所述至少第一设置标志指令字设置至少一个标志,设置至少一个标志的动作包括为所述处理器的算法逻辑单元设置多个标志。
12.一种数字处理器(1000),包括:
一个具有一条多阶段指令流水线的处理器核心(1002),所述流水线包括取指令、解码和执行阶段,该解码和执行阶段分别用于解码并运行一个包括了多个指令字的指令集;和
一个指令集,其包括至少第一和第二设置标志指令,以及在所述流水线内一个跟随于所述第一和第二设置标志指令之后的至少一个跳转指令,所述第一设置标志指令处于所述跳转指令的预定增量之外,并且所述第二设置标志指令处于所述跳转指令的预定增量之内;
其中所述处理器(1000)与所述指令集适配于:
解码并执行一个所述第一设置标志指令;
解码所述第二设置标志指令;
在所述流水线内阻塞所述第二设置标志指令,至少直到所述第二设置标志指令的执行不会影响所述跳转指令的执行为止;
解码所述跳转指令;以及
根据由所述第一设置标志指令设置的至少部分标志执行所述跳转指令。
13.如权利要求12的处理器,其中令所述处理器(1000)进一步适配于当被调度到直接跟随于所述至少一个跳转指令的时隙中的指令不能被用于插进所述流水线的取指令阶段时,在所述流水线的解码阶段内阻塞所述至少一个跳转指令。
14.如权利要求12所述的处理器,其中令所述处理器(1000)进一步适配于当用于所述跳转指令的目标地址要从一个未完成装入操作的寄存器取得时,阻塞所述的至少一个跳转指令。
15.如权利要求12所述的处理器,其中令所述处理器(1000)进一步适配于当一个扩展寄存器未能在一个给定机器周期内返回与所述多个指令字相关的参考数据值时,阻塞所述的至少一个跳转指令。
16.如权利要求12所述的处理器,其中所述第二设置标志指令包括了在跳转指令的目标地址开始的指令序列的第一指令。
17.如前所列任一项权利要求的处理器,其中所述第一和第二设置标志指令从下列一组中选择:
            (i)任何设置标志的ALU指令;
            (ii)设置标志跳转指令;和
            (iii)FLAG指令。
18.如权利要求5的方法,其中所述第二设置标志指令字与所述转移指令字同时被执行。
19.如权利要求5的方法,进一步包括了提供至少另一个配置在所述流水线内、跟随所述第二设置标志指令字之后的转移指令字,使得在所述流水线内有一第一指令对和一第二指令对,所述第一指令对包括所述第一设置标志指令字与所述至少一个转移指令字,所述第一指令对至少部分地重叠于一个第二指令对,所述第二指令对包括所述第二设置标志指令字与所述至少另一个转移指令字。
20.如权利要求5的方法,进一步包括了当被调度到直接跟随于所述至少一个转移指令字的时隙中的指令,不能被用于插进所述流水线的取指令阶段时,在所述流水线的解码阶段内阻塞至少一个转移指令字。
21.如权利要求5的方法,进一步包括了当用于所述转移指令字的目标地址要从一个未完成装入操作的寄存器取得时,阻塞所述的至少一个转移指令。
22.如权利要求5的方法,进一步包括了当一个扩展寄存器未能在一个给定机器周期内返回与所述多个指令字相关的参考数据值时,阻塞所述的至少一个转移指令字。
CNB008084599A 1999-05-13 2000-05-12 用于流水线化处理器中跳转控制的方法及装置 Expired - Fee Related CN1167005C (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13425399P 1999-05-13 1999-05-13
US60/134,253 1999-05-13
US09/418,663 1999-10-14
US09/418,663 US6862563B1 (en) 1998-10-14 1999-10-14 Method and apparatus for managing the configuration and functionality of a semiconductor design
US09/523,871 2000-03-13
US09/523,871 US6560754B1 (en) 1999-05-13 2000-03-13 Method and apparatus for jump control in a pipelined processor

Publications (2)

Publication Number Publication Date
CN1357122A CN1357122A (zh) 2002-07-03
CN1167005C true CN1167005C (zh) 2004-09-15

Family

ID=27384544

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008084599A Expired - Fee Related CN1167005C (zh) 1999-05-13 2000-05-12 用于流水线化处理器中跳转控制的方法及装置

Country Status (7)

Country Link
EP (1) EP1190303B1 (zh)
CN (1) CN1167005C (zh)
AT (1) ATE256886T1 (zh)
AU (1) AU4712300A (zh)
DE (1) DE60007312T2 (zh)
TW (1) TW527563B (zh)
WO (1) WO2000070444A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4204522B2 (ja) * 2004-07-07 2009-01-07 株式会社東芝 マイクロプロセッサ
GB2563589B (en) * 2017-06-16 2019-06-12 Imagination Tech Ltd Scheduling tasks
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
GB2563588B (en) 2017-06-16 2019-06-26 Imagination Tech Ltd Scheduling tasks
CN111026442B (zh) * 2019-12-17 2022-08-02 天津国芯科技有限公司 一种cpu中用于消除程序无条件跳转开销的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor

Also Published As

Publication number Publication date
CN1357122A (zh) 2002-07-03
WO2000070444A2 (en) 2000-11-23
DE60007312T2 (de) 2004-10-14
DE60007312D1 (de) 2004-01-29
WO2000070444A3 (en) 2001-08-09
ATE256886T1 (de) 2004-01-15
AU4712300A (en) 2000-12-05
EP1190303B1 (en) 2003-12-17
EP1190303A2 (en) 2002-03-27
TW527563B (en) 2003-04-11

Similar Documents

Publication Publication Date Title
CN1716189A (zh) 设计用户可定制的处理器的方法以及装置
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
Falk et al. Optimal static WCET-aware scratchpad allocation of program code
EP0843257B1 (en) Improved code optimiser for pipelined computers
CN1108560C (zh) 用于存储与多种编程语言相关的执行数据的方法和装置
Lee et al. Compiler optimization on VLIW instruction scheduling for low power
CN1217261C (zh) 用于处理器流水线分段法及再装配的方法以及装置
CN1167005C (zh) 用于流水线化处理器中跳转控制的方法及装置
Merten et al. Modulo schedule buffers
CN1155883C (zh) 在流水线处理器中用于跳转延迟时隙控制的方法和装置
CN100351782C (zh) 用于设计数字处理器的方法以及装置
CN1372190A (zh) 对处理器中循环的处理
Mantripragada et al. A new framework for integrated global local scheduling
Whitham et al. Using trace scratchpads to reduce execution times in predictable real-time architectures
CN1206145A (zh) 带有流水线处理电路的信号处理器及其方法
Sassone et al. Static strands: safely collapsing dependence chains for increasing embedded power efficiency
US20060168431A1 (en) Method and apparatus for jump delay slot control in a pipelined processor
US8176451B2 (en) Behavioral synthesis apparatus, behavioral synthesis method, and computer readable recording medium
Dragomir et al. Loop unrolling and shifting for reconfigurable architectures
Gao et al. Pipeline scheduling for array based reconfigurable architectures considering interconnect delays
Leung et al. Run-time versus compile-time instruction scheduling in superscalar (RISC) processors: Performance and trade-off
US20050183079A1 (en) Tail duplicating during block layout
Aa et al. A backtracking instruction scheduler using predicate-based code hoisting to fill delay slots
Lu et al. Branch penalty reduction on IBM cell SPUs via software branch hinting
US7836279B2 (en) Method and system for supporting software pipelining using a shifting register queue

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SYNOPSYS INC.

Free format text: FORMER OWNER: ARC INTERNAT U. S. HOLDINGS INC.

Effective date: 20130710

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130710

Address after: American California

Patentee after: Synopsys Inc.

Address before: American California

Patentee before: ARC Internat U. S. Holdings Inc.

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

Granted publication date: 20040915

Termination date: 20160512