CN1217261C - 用于处理器流水线分段法及再装配的方法以及装置 - Google Patents

用于处理器流水线分段法及再装配的方法以及装置 Download PDF

Info

Publication number
CN1217261C
CN1217261C CN008084580A CN00808458A CN1217261C CN 1217261 C CN1217261 C CN 1217261C CN 008084580 A CN008084580 A CN 008084580A CN 00808458 A CN00808458 A CN 00808458A CN 1217261 C CN1217261 C CN 1217261C
Authority
CN
China
Prior art keywords
instruction
streamline
phase
processor
iii
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
CN008084580A
Other languages
English (en)
Other versions
CN1355900A (zh
Inventor
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
Application filed by ARC INTERNAT U S HOLDINGS Inc filed Critical ARC INTERNAT U S HOLDINGS Inc
Publication of CN1355900A publication Critical patent/CN1355900A/zh
Application granted granted Critical
Publication of CN1217261C publication Critical patent/CN1217261C/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Advance Control (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、并具有同样标题的的美国临时专利申请的优先权。
                      发明背景
1.发明领域
本发明涉及集成电路设计领域,特别设计使用一种硬件描述语言(HDL)、以在流水线化的中央处理器(CPU)或用户可定制的微处理器中执行指令。
2.相关技术描述
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完成一次乘法运算。
流水线深度会依体系结构而异。在这里上下文中,“深度”一词意指出现于流水线中的分立阶段的数目。总的来说,一条流水线的阶段愈多,运行程序愈快,但也会愈加难以编程——虽然对程序员来说流水线作用显而易见。大多数流水线化的处理器为三阶段(取指令,解码,执行)或四阶段(例如取指令,解码,取操作数,执行或者还可为取指令,解码/取操作数,执行,写回),不过也使用更多或更少的阶段。
尽管有处理器中运算的前述“分段法”,原有技术处理器的流水线中的指令一般是连续的。具体地说,一个阶段中的指令一般以最少的空时隙、NOP码之类而直接随之以稍后阶段中的指令。而且,当一个稍后阶段中的指令被阻塞(例如在运行阶段中的一条指令等待来自一个取操作的信息),则该流水线中稍前、稍后的阶段也都被阻塞。通过这种方式,流水线易于基本上以“锁步”方式运行。
在开发一个流水线化处理器的指令集时,必须考虑到若干“冒险”。例如,所谓“结构”或“资源争夺”冒险起因于重叠指令争夺同样的资源(例如总线,寄存器,或其它功能单元),这些冒险通常用一个或更多的流水线阻塞加以解决。所谓“数据”流水线冒险发生于读/写冲突的情况,这种冲突会改变存储器或寄存器存取的顺序。“控制”冒险则一般由程序流中的转移或类似变化所产生。
流水线化处理器通常需要联锁以解决许多这类冒险。例如,考虑这种情况:在一个稍前流水线阶段中的一个后继指令(n+1)需要来自于一个稍后阶段的指令n的结果。对上述问题的一个简单解答是以一个或一个以上的时钟周期来延迟处于解码阶段中的操作数计算。然而这种延迟的一个结果,即为对处理器的一个给定指令的执行时间部分地由流水线内围绕该指令的指令所决定。这就使对处理器的编码优化复杂化,因为使程序员在编码内确定联锁情况通常是困难的。
可在处理器中用“记分牌”来实现联锁;在这种方法中,为每个处理器寄存器附加一位,用以作为寄存器内容的指示符;具体地说,指示是否(i)寄存器内容已被更新并因此而可以使用,或者(ii)内容正在进行由其它寄存器所写入这样的改动。在有些体系结构中这一记分牌也用于生成联锁,这种联锁防止执行要依赖于记分牌寄存器内容的指令,直至记分牌指示该寄存器可用为止。这种方法被称为“硬件”联锁,这是因为这种联锁纯粹通过记分牌的检查、经由处理器中的硬件而被调用。这种联锁生成“阻塞”,它们阻碍了对于数据依赖指令的执行(从而阻塞了流水线),直至寄存器可用为止。
另外,还可将NOP(空操作操作码)插入编码中,以在需要时延迟相应的流水线阶段。这后一种方法被称为“软件”联锁,具有加大编码长度及程序——使用了要求联锁指令的程序——复杂性的缺点。就其编码结构而言,大量使用了软件联锁的设计同样往往不能充分优化。
在处理器设计中另一个重要的考虑是程序转移或“跳转”。所有的处理器都支持某种类型的转移指令。简而言之,转移指的是程序流被中断或改变的情况。其它的操作——例如循环设置和子例程调用指令——也以类似方式中断或改变程序流。“跳转延迟时隙”一词经常用于表示在一条流水线中,处于解码中的转移——或称跳转——之后的时隙。当等待转移/装入指令完成时,执行在转移(或装入)之后的指令。转移可为有条件的(亦即基于一个或更多的参数的真或数值)或无条件的。还可为绝对的(例如基于绝对内存地址),或是相对的(例如基于相对地址以及不依赖于任一特定的内存地址)。
转移对流水线系统可具有深远影响。在一个转移指令被插入并由处理器的指令解码阶段进行解码(指示该处理器必须开始执行其它的存取)前,在该指令序列中的下一个指令字即已被取出并插入这一流水线中。对于这一问题的一个解答即为清除所取出的指令字并暂停——或称阻塞——进一步的取操作,直至转移指令被执行完毕,如图2所示。但这一方法由于在若干指令周期内执行转移指令的需要,而通常相等于在处理器设计中所使用的流水线深度。这种结果对于处理器速度及效率是有害的,因为在这一期间处理器不能进行其它操作。
此外,还可使用延迟转移方法。这一方法中,当一个转移指令到达解码阶段时,流水线并不进行清除,而一般是在该转移被执行之前,执行出现于流水线稍前阶段的后续指令。因此当转移指令被解码时,该转移即表现得是以执行流水线中所有后续指令所需的指令周期的数目而延迟。转移方法与上述的多周期转移相比,提高了流水线效率,然而也增加了基本编码的复杂性(还减少了程序员的理解)。
在原有技术中已提出了各种各样的用于数字处理器内流水线控制的方法及装置。例如专利号为European Patent(Application)No.0352103、转让给Digital Equipment Corporation、申请于1989年7月20日的专利中所描述的,该专利技术特别描述了用于在一个5段流水线化的设备中“气泡”压缩的一种装置及方法,该设备包括执行单元,微定序器,存储管理单元,总线接口单元。这一体系结构在流水线锁存器内通过过重标志来识别气泡;这个气泡生成及识别过程进行于6个独立的周期上;见该专利文件的表1。类似地,在这个DEC发明中的气泡压缩进行于多个(5个)周期上。
专利号European Patent(Application)No.0649085、转让给CyrixCorporation、申请于1994年10月17日的专利中,特别描述了一种用于流水线控制——涉及在一个多流水线(例如X和Y)结构体系中的流水线“滑动”及“冲洗”——的方法及装置。这个Cyrix发明进一步利用了“例外”,该例外生成于一个指令由于错误条件而不能完成、并且不应被移出其当前阶段的情况。这类指令被从流水线“冲洗”掉。“滑动”产生于在后续阶段的一个指令为一个先前阶段中的指令所改写的情况。
还请参见专利号U.S Patent5,809,320、申请于1998年9月15日、转让给Digital Equipment Corporation的专利,该专利公布了用于流水线处理的替代方法,该流水线阻塞于流水线预计密集流动中的特定阶段。当一个上游阶段被阻塞时插入一个空操作(NOP),从而允许连续的下游处理。
但上述方法或装置对于单流水线RISC处理器应用均非最佳,上述方法或装置中每个都(i)过于复杂并/或要求实际上额外的逻辑、机器周期和/或其它功能以取得所需的流水线“气泡”生成或气泡压缩(滑动)性能,(ii)不提供当前气泡的类型评估,(iii)不提供评估是否在压缩期间被改写的气泡能够在其被改写前得以完成的能力,或者(iv)不提供灵活性以使程序员用多种方法来实现上述类型的NOP类功能。
而且,就阻塞而言——这些阻塞由设置标志指令的存在所引发、产生于流水线中转移/跳转指令之前,所有这类流水线气泡信息或产生于流水线内的压缩还必须与设置标志和转移/跳转指令之间的联锁兼容。但对于设置标志和转移/跳转指令联锁,原有技术方法一般不易兼容——无论是对气泡生成、还是对压缩(或者二者都包括)。举例来说,请参见研究报告“Condition Register Coherency Lookahead”,Industrial Opportunities,Ltd.,no.348,1993年4月,作为原有技术关于设置标志和转移/跳转指令联锁的一般性代表。
基于上述,处理器设计员及程序员必须与非联锁体系结构相对,仔细权衡相应于利用硬件或软件联锁的折衷方案。而且,必须考虑在具有选定联锁模式的指令集内,转移指令(以及延迟或多周期转移)的交互作用。
对流水线及联锁,需要有一种改进方法,该方法既优化了处理器流水线性能,而同时又为程序员提供了附加的编码灵活性。而且,随更多的流水线阶段(甚至于多条多阶段流水线)添加进处理器设计中,在该处理器内改进流水线性能及编码优化的益处可成倍增加。另外,以某种特定方式、方便地综合这些经过改进的流水线处理器设计以及使用现有综合工具的能力,对于设计员和程序员也具有明显效益。
                        发明内容
本发明通过提供经过改进的、用于在流水线化的处理器体系结构中执行指令的方法和装置,而满足了上述这些要求。
于本发明第一方面,公布了一种经过改进的、控制处理器内一条或一条以上流水线的操作的方法。在一个实施例中,公布了一种流水线分段法(“撕裂”),其中(i)先于一个被阻塞阶段的阶段中,指令也被阻塞,(ii)被阻塞指令的后续阶段的指令允许完成。从而有目的地在流水线中生成了间断或称“撕裂”。将空时隙(或NOP)插入流水线的后续阶段,以阻碍当前在被撕裂阶段中的被执行指令受到多次执行。类似地,公布了一种方法,该方法允许指令——其它情况下这些指令会在流水线中稍前阶段被阻塞——于稍后阻塞的阶段被再装配,从而有效地修复了任何撕裂或存在的流水线间断。
于本发明第二方面,公布了一种经过改进的处理器结构体系,该处理器结构体系使用上述的流水线撕裂及抓起方法。在一个示范性实施例中,该处理器包括一个精简指令集计算机(RISC),该计算机具有一条三阶段流水线——包括取指令、解码及执行阶段,这些阶段部分地由上述的流水线撕裂/抓起模式所控制。还公布了综合的被用来实现这些模式的门逻辑,门逻辑既包括受约束的也包括无约束的。其中上述处理器在设计期间是用户可定制的和可扩展的,包含:具有一条多阶段指令流水线的处理器核心,该流水线具有至少第一、第二和第三阶段,所述核心适配于解码及执行一个包括多个指令字的指令集;一个在所述处理器核心与一个信息存储设备之间的数据接口;以及一个包括多个指令字的指令集,所述指令字包括一个或多个用户选定的扩展指令,所述处理器与所述指令集适配于:(i)通过与所述流水线相关的逻辑,检测出现于所述流水线的所述第三阶段的一个被阻塞指令;(ii)通过与所述流水线相关的逻辑,检测在所述第三阶段与出现于所述流水线的所述第一阶段的一个指令之间的另一指令;(iii)利用流水线逻辑,确定在所述第三和第一阶段之间的所述指令在下一周期期间完成处理的能力;和(iv)基于所述确定,处理出现于所述第一阶段的所述指令而同时将所述第三阶段保持为阻塞;其中所述被阻塞指令和所述另一指令中,至少其中之一包括扩展指令。因此,可针对所需特性使设计得到优化。
                         附图简述
图1为一种使用“分段的”运算单元的典型原有技术处理器结构体系框图。
图2图解说明了一个原有技术四阶段流水线处理器的操作,该处理器正进行一个多周期转移操作。
图3为一个流水线流程图,说明在一个相应于本发明的多阶段流水线中“撕裂”的概念。
图4为一个逻辑流程图,说明根据本发明、使用“撕裂”以控制一条流水线的一般化方法。
图5为一个流水线流程图,说明在一个相应于本发明的多阶段流水线中“抓起”的概念。
图6为一个逻辑流程图,说明根据本发明、使用“抓起”以控制一条流水线的概括方法。
图7为一个逻辑流程图,说明了根据本发明、对包括了流水线撕裂/抓起的处理器逻辑加以综合的概括方法。
图8a-8b为示意图,说明一个实现本发明流水线“撕裂”功能的门逻辑的示范性实施例(分别为无约束的以及受约束的),用图7的方法加以综合。
图8c-8d为示意图,说明一个实现本发明流水线“抓起”功能的门逻辑的示范性实施例(分别为无约束的以及受约束的),用图7的方法进行综合。
图9为包括了相应于本发明流水线撕裂/抓起模式的处理器设计的框图。
图10为一个计算设备的功能区块示意图,该计算设备使用了包括图7方法的一个计算机程序以对一个流水线化的处理器设计进行综合。
                    发明详细描述
现对附图进行编号,全部附图中同样的编号指同样的部分。
在此所用的“处理器”一词意为任何集成电路或其它能够根据至少一个指令字完成一次操作的电子器件,包括——但不限于——诸如本申请受让人所生产的ARC用户配置计算机这样的精简指令集计算机(RISC)处理器,中央处理器(CPU),以及数字信号处理器(DSP)。
另外,本领域普通技术人员会认识到,此处所用的“阶段”一词指的是流水线处理器中各个连续阶段,即阶段1指的是第一流水线阶段,阶段2指的是第二流水线阶段,等等。尽管以下讨论就一个三阶段流水线(即取指令、解码及执行阶段)而进行,然而应认识到,此处所公布的方法和装置可广泛应用于具有一条或一条以上有着多于或少于三阶段的流水线的处理器结构体系。
还应认识到,尽管以下讨论就VHSIC硬件描述语言(VHDL)而进行,然而还可使用其它如Verilog_这样的硬件描述语言,同样成功地描述本发明的各个实施例。而且,尽管使用了一个示范性的Synopsy_综合引擎——如Design Compiler 1999.05(DC99)——以对此处提出的各个实施例进行综合,但也可使用其它综合引擎——如可从Cadence Design Systems,Inc.购到的Buildgates_。“IEEE标准1076.3-1997”,IEEE Standard VHDL Synthesis Packages规定了一种工业接受的语言,用于规定硬件定义语言基的设计及综合能力——一个本领域的普通技术人员也许希望能对此加以使用。
最后,应认识到,尽管以下描述说明了逻辑——该逻辑由本申请受让人使用上述综合引擎及VHSIC硬件描述语言进行了综合——的特定实施例,这类实施例在某些方面受到约束,然而这些实施例对于本发明的设计过程来说仅仅为示范性的及说明性的。
流水线分段法(“撕裂”)
本发明的体系结构包括一条大体上自由流动的流水线。如果在这条流水线中的一个阶段被阻塞,则以前阶段也被阻塞——如果它们包含指令的话。但尽管以前阶段阻塞,使流水线中稍后阶段(即“下游”)得以继续——如果未另外施加联锁的话——仍有一些优点。这些优点包括——除其它优点之外——(i)由此而得以在流水线内继续的某些指令处理导致了与“阻塞”整条流水线相比,更好的处理性能;(ii)连续处理位于流水线内稍后阶段的设置标志指令的能力,由此而确保了在跳转或转移指令——这些指令的执行会受标志状态的影响——执行之前设置标志,(iii)使记分牌装入指令得以在流水线的一个稍后阶段向存储器发出请求,而依赖于这一装入的指令则被保持于流水线的某个稍前阶段。这一装入必须被允许发出,否则即会引发死锁状态。
提请注意,对应于设置标志指令的连续处理,本申请人与本申请一道同时办理的、标题为“用于流水线化处理器中的跳转控制的方法及装置”的美国专利申请中,公布了一种方法及装置,用于以后续的跳转/转移指令而对设置标志指令进行联锁,这些跳转/转移指令会受设置标志指令所作设置标志的影响。
作为上述方法的一个示例,考虑一个具有三阶段流水线(取出,解码,执行)的处理器,其中一个指令被阻塞于阶段2,但在阶段3的指令被允许从稍前阶段“撕裂开”而继续其向下通过流水线其余阶段的行程。图3图解说明了这一原理(假定未施加联锁)。
现参见图4,描述使用本发明流水线撕裂概念以控制一条多阶段流水线的方法。方法400的第一个步骤402包括生成一个指令集,该指令集包括多个要在处理器上运行的指令字。这一指令集通常储存在一个其类型在本领域中广为人知的芯片上程序存储设备(如一个程序RAM或ROM存储器)中,虽然也可使用其它类型的设备,包括芯片外存储器。指令集自身的生成同样在本领域中广为人知,只是在范围上将其加以改进,包括了流水线撕裂功能,下面会更详细地描述这一改进。
以下在步骤404,指令集(程序)由——特别是——程序计数器(PC)以指定顺序从存储设备依次取出,并运行于处理器上,所取出的指令在流水线的各个阶段顺序得到处理。请注意,在一个RISC处理器的上下文中,仅有装入/储存指令可访问程序存储空间,因此,在这样的处理器中可使用多个中间寄存器来物理地接收及保持取自程序存储器的指令信息。在处理器内的这样一种装入/储存体系结构以及寄存器结构的使用在本领域中是众所周知的,故不作进一步描述。
在步骤406,在流水线一个阶段中的阻塞条件由逻辑块取出,这些逻辑块将信号组合以确定是否发生了冲突,这种冲突通常是为了访问某个数据值或其它资源。此步骤的一个例子是这种条件的检测:正为某个指令寄存器读取的一个寄存器被标记为“上了记分牌”,意为处理器必须等待,直至该寄存器为一个新值所更新为止。另一个例子是在一个多周期操作(如一个移位及加乘)进行时某个状态机生成了阻塞周期。
在步骤408,流水线N+1阶段(这里N=经步骤406调用了阻塞的阶段的阶段号)中有效指令的存在受到检验。在这里上下文中,一个“有效指令”指一个未由于任何原因而被标记为“无效”(步骤410)、而且已在先前(N)阶段成功地完成了处理(步骤412)的指令。例如,在一个相应于本申请人的ARC Core的实施例中,“p3iv”信号(即“阶段3指令有效”)即用于表示流水线的阶段3包含一个有效指令。阶段3中的指令由于若干原因而可能是无效的,包括:
1.当指令移进阶段2时该指令被标记为无效(即p2iv=‘0’),并因此而在其移进阶段3时继续为无效;
2.在阶段3中的指令已在一个先前周期由流水线撕裂逻辑标记为无效,但随后为一个从阶段3移进阶段2的指令所替换。
请注意,从步骤410得出的“停止”条件来自于条件“无效=是”,这是因为仅当阶段2和阶段3中同时出现有效指令时才会发生撕裂。
注意这种情况:出现于阶段2的指令在步骤412中被确定为已不能完成处理(上面第二条),而在阶段3的指令能够完成处理,必须允许在阶段3的指令脱离流水线(或移到下一阶段)并将阶段3标记为正处于无效,以填补每个步骤414的间隔。另一种方法是将一个NOP或其它空指令插进阶段3,并将阶段3标记为有效。如果未插入这一空白或将该阶段标记为无效,则指令——该指令在阶段2不能完成处理时,即于阶段3处理——即会在下一个指令周期被再次执行,而这是所不希望的。
请进一步注意,对本申请人ARC Core的相应于“v6”实施例的联锁而言——对此详细描述于本申请人与本申请一道同时办理的、标题为“用于流水线化处理器中的跳转控制的方法及装置”的美国专利申请中,如果出现一个跳转指令而且阶段3包含一个设置标志指令,则流水线的阶段2即会阻塞。所以需要本发明的流水线撕裂功能以用于v6跳转联锁。
最后,在步骤418,出现于阶段3(以及一条具有5个或更多阶段的流水线中的后续阶段)的有效指令依下一时间周期而被执行,同时保持出现于阶段2、阻塞于该阶段的指令。请注意依后续时钟周期,会出现对阶段2中被阻塞指令的处理,这有赖于引起阻塞的阻塞/联锁信号的状态。一旦该阻塞/联锁信号失效,则该阶段中被阻塞指令的处理即会在下一指令周期的前沿开始。
以下摘自本申请附录I的示范性代码用于与本申请人ARC Core
(三阶段流水线变体)结合,以实现前述的“撕裂”功能:
n_p3iv<= ip3iv WHEN ien3=‘0’                      ELSE

            ‘0’  WHEN ien2=‘0’  AND ien3=‘1’     ELSE

              ip2iv;

  p3ivreg;  PROCESS(ck,clr)

         BEGIN

         IF clr=‘1’THEN

                ip3iv<=‘0’;

  ELSIF(ck‘EVENT AND ck=‘1’)THEN

         ip3iv<=n_p3iv;

  END IF;

  END PROCESS;
不过要认识到,不同于此处所提出的编码模式——无论用于同样的还是其它的处理器上——也可用于实现本发明的流水线撕裂功能。
阻塞时流水线再装配(“抓起”)
在上述的流水线撕裂概念之外,本发明还以机制处理相反情况;即当各阶段之间出现空时隙或空白时,允许流水线的稍前阶段继续处理或“抓起”到稍后阶段,否则流水线即被“撕裂”。这一功能也被称为“流水线转换启动”。
作为上述概念的一个示例,请考虑前述的三阶段流水线的情况,其中一个指令被阻塞于阶段3,阶段2为空或包含一个注销的指令/长立即字(这里以后称之为“未用时隙”)。应用本发明的抓起功能,通过使阶段1指令得以继续处理、直至完成——成时该指令即进入阶段2,一个新指令进入阶段1——而允许阶段1依时钟脉冲边沿被抓起到阶段2。应用这种处理,取消了被阻塞阶段3与阶段1之间的任何空时隙或空白。图5图解说明了这一概念。
参见图6,描述了利用本发明的“抓起”技术而控制一条多阶段处理器流水线的方法。在该方法600的第一个步骤602,确定在某个第一阶段(所示例中的阶段2)上的指令的有效性。在流水线抓起上下文中,一个有效指令简单地规定为当其进入其当前阶段(所示例中的阶段2)时、未被标记为无效的指令。如果指令经步骤602无效,则流水线转换启动信号即经步骤602被置于“真”,如下面所更详细讨论的那样。所描述的这个流水线转换启动信号控制指令字从阶段1进入阶段2的转换。如果阶段3中的指令不能完成处理,这一事件中即会出现流水线“抓起”。阶段2中的无效时隙即会为来自阶段1的前行指令所替换,而阶段3上的指令即会保持于阶段3。
如果阶段2中的指令经步骤602为有效,在阶段2中完成处理的该有效指令的能力即随后在步骤604进行确定。如果该有效指令不能完成处理并在下一个周期移出阶段2,转换启动信号即经步骤606被置于“伪”,从而使流水线转换失效。这就防止了有效的、待处理的指令为来自先前阶段的前行指令所替代(图1)。如果阶段2中的该有效指令能够完成处理,其次即确定是否在阶段2中有一个中断伪指令正在等待一个未决取指令在步骤608中完成处理。如确实如此,则转换启动信号即再次被置为“伪”,从而再次阻碍了在阶段2中的这个有效指令被替换,这是因为该有效(但未完成)指令不会在下一周期前进到阶段3。如果阶段2中的该有效指令能够在下一周期完成处理,而且不等待未决取指令,则转换启动信号即经步骤610被置为“真”,从而允许阶段1指令前行至阶段2——随之以阶段2中的指令同时移进阶段3。
所以根据上述逻辑,当处理器运行时,流水线转换启动信号总被置为“真”,除非当:(i)阶段2中的一个有效指令因某种原因而不能完成;或者(ii)假设在阶段2中有一个中断正在等待一个未决取指令完成。请注意,如果阶段2中的一个无效指令被保持(特别是由于阶段3上的一次阻塞),则转换启动信号即即被置为“真”并允许阶段1中的指令移进阶段2。因此,这个无效阶段2指令将为该有效阶段1指令所替换。
本发明的“抓起”或流水线转换启动信号(en1)可以——在一个实施例中——利用本处下列的示范性代码(摘自附录II)而生成:
ien1<=‘0’WHEN en=‘0’
                OR(p2int=‘1’AND ien2=‘0’)
                OR(p2int=‘1’AND ien2=‘0’)ELSE
       ‘1’;
还请注意,本发明的流水线撕裂及抓起方法可与流水线控制及联锁的其它方法相结合(或者单独地或者共同地),那些方法尤其包括了在本申请人与本申请一道同时办理的、标题为“用于流水线化处理器中的跳转控制的方法及装置”的美国专利申请中所公布的方法,以及在本申请人与本申请一道同时办理的、标题为“用于流水线化处理器中的跳转延迟时隙控制的方法及装置”的美国专利申请中所公布的方法,该两申请与此一道提交,二者均包括进来、在此全部地引为参考资料。此外,各种寄存器编码模式——如“松散”寄存器编码,这种编码描述于本申请人与本申请一道同时办理的、标题为“用于在流水线化处理器内松散寄存器编码的方法及装置”的美国专利申请,该申请与此一道提交,并包括进来、在此全部地引为参考资料——可与这里所描述的流水线撕裂以及/或者抓起发明结合使用。
综合方法
现在参见图7,描述结合前述的流水线撕裂及/或抓起功能、对逻辑进行综合的方法700。这一综合集成电路逻辑的一般化方法具有一个用户定制的(即“软的”)指令集,公布于本申请人与本申请一道办理、在1999年10月14日呈交、申请号为U.S.Patent ApplicationSerial No.09/418,663、标题为“用于管理半导体设计的结构以及功能的方法及装置”的专利申请中,这里将该专利申请全部地包括进来、引为参考资料。
虽然以下描述就运行于计算机或其它类似处理装置上的算法或计算机程序而进行,要认识到其它硬件环境(包括微型计算机,工作站,联网的计算机,“超级计算机”,以及大型计算机)也可用于实行本方法。另外,计算机程序的一部分或更多部分还可实施于相对于软件的硬件或固件上——如果愿意的话,这类备选实施例完全在计算机技术人员的技能范围内。
开始,在第一个步骤702,依照设计结构而取得用户输入。具体地说,由用户选择为这一设计所需的模块或功能,并且随需要而加、减或者生成与设计有关的指令。例如,在信号处理应用中,令CPU包括一个单一的“乘和累加”(MAC)指令通常是有益的。在本发明中,对综合设计的指令集进行了改动,使之于其中包括了前述的流水线撕裂及/或抓起模式(或另一个可比的流水线控制结构体系)。每个VHDL文件的技术库位置也由用户在步骤702加以规定。在本发明中技术库文件储存所有与为综合处理所必需的单元相关的信息,包括——举例来说——逻辑功能。输入/输出计时,以及所有相关约束。在本发明中,每个用户都可规定他/她自己的库名及位置,从而增加了更多的灵活性。
其次在步骤703,用户基于步骤702中所规定的用户输入及已有功能库而创建定制的HDL功能块。
在步骤704,基于用户输入及上述库文件而确定设计层次结构。层次结构文件、新的库文件以及程序描述文件顺序地基于该设计层次结构而生成。这里“程序描述文件”一词用于指常用的UNIX程序描述文件功能或为计算机编程技术人员所熟知的计算机系统的类似功能。该程序描述文件功能使其它程序或算法驻留于计算机系统中,依指定顺序被执行。此外,它还进一步指定为成功运行被指定程序所必需的数据文件和其它资料的名字和位置。但请注意,这里所公布的本发明可利用不同于“程序描述文件”类型的文件结构来产生所需功能。
在本发明程序描述文件生成进程的一个实施例中,经由显示器提示而互动地请求用户输入关于所要设计的信息,如“建立”的类型(例如总设备或系统结构),外部存储器系统数据总线,不同的扩展类型,高速缓存类型/大小,等等。可使用许多其它的输入信息结构及信息源,然而仍与本发明相一致。
在步骤706,用户运行在步骤704生成的程序描述文件以生成结构HDL。这一结构HDL将设计中离散的功能块结合在一起,以作出一个完整的设计。
然后在步骤708,运行在步骤706所生成的稿本,为仿真程序而生成一个程序描述文件。用户还运行该稿本以在步骤708生成一个综合稿本。
这时在程序中作出决定,是综合还是仿真该设计(步骤710)。如选择仿真,用户就使用在步骤712生成的设计及仿真程序描述文件来进行仿真。另外,如选择综合,用户就使用综合稿本及在步骤中所生成的设计进行综合。完成了综合/仿真稿本后,在步骤716评估设计是否恰当。例如,一个综合引擎可生成该设计的一个特定物理布局,它满足总设计过程的性能条件但不满足芯片大小要求。在此情况下,设计员即会对控制文件、库或其它能影响芯片大小的成分进行改动。这个设计信息的结果集合随后即被用于再次运行综合稿本。
如果生成的设计是可接受的,则这一设计过程即完成。如果生成的设计是不可接受的,则开始于步骤702的过程各步骤过程重新执行,直至得到一个可接受的设计。以这种方式,方法700为可迭代的。
现在参见图8a-8b,描述了示范性门逻辑的一个实施例(包括参照附录I的VHDL的“p3iv”信号),该门逻辑用上述图7的Synopsy_Design Compiler及方法进行了综合。注意,在用于生成图8a逻辑的综合过程进行期间,规定了一个LSI 10k 1.0μm,工艺,并且未对设计施加约束。对图8b应用了同样的过程;但在从1en3到时钟的通路上约束了设计。附录III包括了用于生成图8a-8b的示范性门逻辑的编码。
参见图8c-8d,描述了示范性门逻辑的一个实施例(包括参照附录II的VHDL的“ien1”信号),该门逻辑用图7的方法进行了综合。注意,在用于生成图8c逻辑的综合过程进行期间,规定了一个LSI 10k1.0μm工艺,并且未对设计施加约束。对图8d应用了同样的过程;但约束了设计以防止使用AND-OR门。附录IV包含了用于生成图8c-8d的示范性门逻辑的编码。
图9表示了一个示范性流水线化的处理器,该处理器用1.0μm工艺生产,并包括了这里在前面所描述的流水线撕裂及抓起模式。如图9所示,处理器900为一个ARC微处理器类的CPU器件,它尤其是有一个处理器核心902,芯片上存储器904,以及一个外部接口906。该器件以定制的VHDL设计生产,而该设计用本发明的方法900取得,随后将其综合为一个逻辑级表达式,然后简化为一个使用编译、布局和生产技术——这些技术在半导体技术中广为人知——的物理器件。
本领域技术人员会认识到,图9的处理器可包含任何普通可得的外围设备,例如串行通信装置,并行端口,计时器,计数器,高电流驱动器,模数(A/D)转换器,数模(D/A)转换器,中断处理器,LCD驱动器,存储器以及其它的类似装置。另外,处理器还可包括用户专用或应用专用的电路元件。本发明并不受限于外围设备及其它会使用本方法及装置加以组合的电路元件的类型,数量,或复杂性。反之,任何由现有半导体工艺的物理能力所施加的限制都会随时间而改进。因此可预期,随半导体工艺的进步,可能应用本发明的集成的复杂性及质量将进一步提高。
还请注意,许多IC设计目前使用微处理器芯片或DSP芯片。但DSP仅会被要求用于有限数量的DSP功能(如有限脉冲响应分析或者话音编码),或用于IC的快速DMA体系结构。这里所公布的本发明可支持许多DSP指令功能,并且其快速的本地RAM系统提供了对数据的立即存取。通过将公布于此的方法应用于IC的CPU及DSP功能二者,可节约可观的成本。
另外,请注意这里如前所述的方法(及相应的计算机程序)可容易地以相对简单的再综合适应于更新的生产技术,例如0.18或0.1微米工艺——而非使用“硬的”原有微技术系统时,为了适应这类技术通常要采用冗长昂贵的处理。
现在参见图10,对能够相应公布于此的撕裂/抓起信号、综合逻辑的计算设备的一个实施例加以描述。该计算设备1000包括一个母板1001,该母板有一个中央处理器(CPU)1002,随机存储存储器(RAM)1004,以及存储器控制器1005。还提供了一个存储设备1006(如硬盘驱动器或CD-ROM),输入设备1007(如键盘或鼠标),和显示设备1008(如CRT、等离子体或TFT显示器),以及必要的总线以支持主机和外围设备部件的运行。前述的VHDL描述及综合引擎以一个计算机程序目标代码表达式的形式储存在RAM 1004和/或存储设备1006,以在设计综合期间由CPU 1002使用,后者在计算技术中为人所熟知。用户(未示)在系统运行期间,通过由程序显示器及输入设备1007、将设计结构规范输入进综合程序而综合逻辑设计。由程序所生成的经过综合的设计储存于存储设备1006中以便以后检索,显示于图形显示设备1008,或经由一个串行或并行接口1012输出到一台外部设备,如打印机,数据存储设备,其它外围设备——如果需要的话。
虽然以上详述已表明、描述、并指出了本发明应用到各个实施例上的新颖特性,然而应认识到本领域技术人员可对所表述的设备或过程的形式及细节作出各种各样的省略、替换或改变而不偏离本发明。本描述绝不意味着限制、而只应将其作为本发明一般原理的说明。本发明的范围应参照权利要求书而确定。
附录I用于为流水线撕裂而生成综合逻辑的VHDL
library ieee;

  use ieee.std_logic_1164.all;

  entity v007a is

  port(ck   :    in    std_ulogic;

       clr  :    in    std_ulogic;

       ien2 :    in    std_ulogic;

       ien3 :    in    std_ulogic;

       ip2iv:    in    std_ulogic;

       p3iv :    out   std_ulogic);

  end v007a;

  architecture synthesis of v007a is

      signal n_p3iv    :    std_ulogic;

      signal ip3iv     :    std_ulogic;

  begin

       n_p3iv<= ip3iv WHEN ien3=′0′                ELSE

                 ′0′ WHEN ien2=′0′AND ien3=′1′ ELSE

                  ip2iv;

  p3ivreg:    PROCESS(ck,clr)

  BEGIN

      IF clr=′1′THEN

              ip3iv<=′0′;

      ELSIF(ck′EVENT AND ck=′1′)THEN

              ip3iv<=n_p3iv;

      END IF;

  END PROCESS;

      p3iv    <=    ip3iv;

  end synthesis;
附录II用于为流水线抓起而生成综合逻辑的VHDL
library ieee;

  use ieee.std_logic_1164.all;

  enty v007b is

       port(en    :    in    std_ulogic;

       p2int      :    in    std_ulogic;

       ien2       :    in    std_ulogic;

       ip2iv      :    in    std_ulogic;

       ien1       :    out   std_ulogic);

  end v007b;
  architecture synthesis of v007b is

  begin

       ien1  <=    ′0′WHEN en=′0′

                            OR(p2int=′1′AND ien2=′0′)

                            OR(ip2iv=′1′AND ien2=′0′)    ELSE

                     ′1′;

  end synthesis;
附录III用于为撕裂逻辑而生成样本示意图的综合稿本
/*Analyze VHDL*/
analyze-library user-format vhdl vhdl/v007a.vhdl
/*Unconstrained logic*/
elaborate-library user v007a
compile
write-fonnat db-hierarchy-output db/v007a_uc.db
create_schematic-schematic_view
plot-output v007a_uc.ps
remove_design-all
/*Constrained logic*/
elaborate-library user v007a
create_clock-name″ck″-period 10-waveform{0 5}ck
set_input_delay-clock ck 8 ien3
compile
write-format db-hierarchy-output db/v007a_c.db
create_schematic-schematic_view
plot-output v007a_c.ps
附录IV用于为抓起逻辑而生成样本示意图的综合稿本
/*Analyze VHDL*/
analyze-library user-format vhdl vhdl/v007b.vhdl
/*Unconstrained logic*/
elaborate-library user v007b
compile
write-format db-hierarchy-output db/v007b_uc.db
create_schematic-schematic_view
plot-output v007b_uc.ps
remove_design-all
/*Constrained logic*/
elaborate-library user v007b
set_max_area 0
set_dont_use find(cell,lsi_10k/AO*)
compile-map_effort high
write-format db-hierarchy-output db/v007b_c.db
create_schematic-schematic_view
plot-output v007b_c.ps

Claims (25)

1.一种操作用户定制的处理器(900)和指令集的方法,其中所述处理器具有流水线,所述指令集包括一个或多个用户选定的扩展指令,所述流水线至少部分是基于用户所作选择来配置的,所述流水线包括至少第一、第二和第三阶段,所述方法包括:
将一个第一有效指令引入所述第一阶段;
将一个第二有效指令引入所述第二阶段,所述第二阶段为所述第一阶段的下游;
在所述第一阶段阻塞所述第一指令;
在所述第一流水线阶段阻塞后,在所述第二阶段处理所述第二指令;以及
或者(i)将所述第二阶段标记为有效,或者(ii)将一个时隙插入所述流水线的所述第二阶段,以防止出现于所述第二阶段中的所述处理过的指令被多次执行;
其中所述第一有效指令和所述第二有效指令中,至少其中之一包括扩展指令。
2.如权利要求1的方法,其中所述流水线包括四阶段流水线,并且包括提取、解码、执行和写回阶段,提供所述第一和第二流水线阶段的动作包括了分别提供一个指令解码阶段和一个指令执行阶段。
3.如权利要求1的方法,其中阻塞动作包括:
检测联锁情况;以及
生成一个联锁信号,使所述信号适于阻塞第一流水线阶段。
4.如权利要求3的方法,进一步包括了在处理其中所述第二个指令之前在所述第二流水线阶段确定所述指令的有效性。
5.如权利要求1的方法,进一步包括:
在所述第一阶段阻塞后,处理在所述第三阶段内的一个指令;和
当所述第二阶段内的处理过的指令被移到所述第三阶段时,将所述第三阶段内处理过的指令移到所述第四阶段。
6.如权利要求1的方法,其中引入的动作包括:
提供一个标志设置指令于所述第二阶段内,以及一个跳转指令于所述第一阶段内;
检测由所述的至少一个标志设置指令所设置的一个或一个以上标志的至少一种情况,该情况会影响所述的至少一个跳转指令的后续执行;以及
阻塞在所述流水线的所述第一阶段内、所述的至少一个跳转指令的执行,至少直到要由所述的至少一个标志设置指令所设置的所有标志均已被设置为止。
7.如权利要求1的方法,其中所述时隙选自下面一组:
(i)一个空时隙;
(ii)一个包含一个被注销字的时隙;和
(iii)一个包含一个长立即字的时隙。
8.如权利要求1的方法,其中所述的阻塞动作包括检测逻辑输出,所述逻辑处理信号以确定是否在所述处理器内存在资源冲突。
9.如权利要求1的方法,其中所述的阻塞动作包括检测是否所述第一有效指令在其处理前要求一个多周期处理的结果。
10.如权利要求1的方法,其中所述有效指令包括那些未由于任何原因而被标记为“无效”的指令,以及那些或者(i)在所述流水线的稍前阶段已成功地完成的,或者(ii)正在从一个指令存储设备插入所述流水线的指令。
11.一个数字处理器(900),包括:
一个具有一条多阶段指令流水线的处理器核心(902),该流水线至少具有第一、第二和第三阶段,所述核心适配于解码并执行一个包括多个指令字的指令集;
一个在所述处理器核心与一个信息存储设备之间的数据接口;
一个包括多个指令字的指令集,所述处理器与所述指令集进一步适配于:
(i)通过与所述流水线相关的逻辑,检测阻塞于所述流水线的所述第二阶段的一个第一有效指令;
(ii)通过与所述流水线相关的逻辑,检测何时一个有效指令出现于所述流水线的所述第三阶段;
(iii)利用所述流水线的逻辑的执行,在所述第二阶段被阻塞后,执行在所述第三阶段中的所述有效指令;以及
(iv)或者(a)将所述第三阶段标记为有效,或者(b)将一个时隙插入所述流水线的所述第三阶段,以防止出现于所述第三阶段的所述执行后的指令被执行多次。
12.如权利要求11的处理器,所述处理器与所述指令集进一步适配于:
(i)通过与所述流水线相关的逻辑,检测出现于所述流水线的所述第三阶段的被阻塞指令;
(ii)通过与所述流水线相关的逻辑,检测在所述第三阶段与出现于所述流水线所述第一阶段的一个指令之间的一个指令;
(iii)确定在所述第三和第一阶段之间的所述指令在下一周期期间完成处理的能力;以及
(iv)至少部分地基于所述确定,处理出现于所述第一阶段的所述指令并将所述指令前移至所述第二阶段。
13.如权利要求11的数字处理器,其中所述处理器被进一步配置为利用与所述流水线相关的逻辑来评估至少一个在所述流水线的第三阶段的指令,并确定是否所述的至少一个在第三阶段的指令:
(i)在移进所述流水线的所述第二阶段时是无效的;或者
(ii)是无效的,但尚未随后被一个指令所替换。
14.如权利要求11的数字处理器,其中所述处理器进一步适配为:
提供一个标志设置指令于所述第二阶段内,以及一个跳转指令于所述第一阶段内;
检测由所述标志设置指令所设置的一个或一个以上标志的至少一种情况,该情况会影响所述跳转指令的后续执行;
阻塞在所述流水线的所述第一阶段内所述跳转指令的执行,至少直到要由所述标志设置指令所设置的所有标志均已被设置为止。
15.一种用户定制的数字处理器(900),包括:
一个具有一条多阶段指令流水线的处理器核心(902),该流水线具有至少第一、第二和第三阶段,所述核心适配于解码及执行一个包括多个指令字的指令集;
一个在所述处理器核心与一个信息存储设备之间的数据接口;以及
一个包括多个指令字的指令集,所述指令字包括一个或多个用户选定的扩展指令,所述处理器与所述指令集进一步适配于:
(i)通过与所述流水线相关的逻辑,检测出现于所述流水线的所述第三阶段的一个被阻塞指令;
(ii)通过与所述流水线相关的逻辑,检测在所述第三阶段与出现于所述流水线的所述第一阶段的一个指令之间的另一指令;
(iii)利用流水线逻辑,确定在所述第三和第一阶段之间的所述指令在下一周期期间完成处理的能力;和
(iv)基于所述确定,处理出现于所述第一阶段的所述指令而同时将所述第三阶段保持为阻塞;
其中所述被阻塞指令和所述另一指令中,至少其中之一包括扩展指令。
16.如权利要求15的处理器,其中在所述第三和第一阶段之间的所述指令包括一个未用时隙,所述未用时隙从以下一组中选择:
(i)一个空时隙;
(ii)一个包含一个被注销指令的时隙;和
(iii)一个包含一个长立即字的时隙。
17.如权利要求15的处理器,其中所述处理器包括一个具有一个扩展指令集的精简指令集计算机(RISC),所述扩展指令集包括至少一个用于完成特定处理的用户选定指令,所述处理器进一步地适配于从所述扩展指令集选择任一所述指令。
18.如权利要求15的处理器,所述处理器进一步地适配于:
提供一个标志设置指令于所述第二阶段内,以及一个跳转指令于所述第一阶段内;
检测由所述标志设置指令所设置的一个或一个以上标志的至少一种情况,该情况会影响所述跳转指令的后续执行;以及
阻塞在所述流水线的所述第一阶段内所述跳转指令的执行,至少直到要由所述标志设置指令所设置的所有标志均已被设置为止。
19.如权利要求15的处理器,其中所述处理器包括一个精简指令集计算机(RISC),并且所述指令集包括一个基本指令集和一个扩展指令集,所述扩展指令集包括至少一个用户设置、适于完成一个特定操作的指令,所述阻塞的指令与出现于所述第一阶段的所述指令中至少其中之一选自所述扩展指令集。
20.如权利要求15的处理器,进一步包括:
一个程序存储器(904),其中所述处理器适配为仅有装入/储存指令可访问所述程序存储器;以及
多个立即寄存器适配为接收并保持取自所述程序存储器(904)的指令。
21.如权利要求15的处理器,其中在所述第三与第一阶段之间的所述指令包括一个未用时隙。
22.如权利要求21的方法,其中所述的检测在所述第三与第一阶段之间的一个指令的动作包括检测一个未用时隙。
23.一种操作具有一条多阶段指令流水线的处理器核心(902)的方法(600),该流水线有至少第一、第二和第三阶段,所述核心适配于解码并执行一个包括多个指令字的指令集,该方法包括:
检测出现于所述流水线的所述第三阶段的被阻塞指令;
检测在所述第三阶段与出现于所述流水线所述第一阶段的一个指令之间的一个指令;
确定在所述第三和第一阶段之间的所述指令在下一周期期间完成处理的能力;
基于所述确定,处理出现于所述第一阶段的所述指令并将所述指令前移至所述第二阶段。
24.如权利要求23的方法,其中所述未用时隙选自下面一组的时隙:
(i)一个空时隙;
(ii)一个包含一个被注销字的时隙;和
(iii)一个包含一个长立即字的时隙。
25.一种用户配置的数字处理器(900),包括:
一个具有一条多阶段指令流水线的处理器核心(902),该流水线具有至少第一、第二和第三阶段,所述核心是基于在设计阶段由用户所作的选择而配置的,并且适配于解码及执行一个包括多个指令字的指令集;和
一个包括多个指令字的指令集,所述指令字包括一个或多个用户选定的扩展指令,所述处理器与所述指令集进一步适配于:
利用流水线控制逻辑,检测出现于所述流水线的所述第三阶段的一个被阻塞指令;
利用流水线控制逻辑,检测在所述第三阶段与出现于所述流水线的所述第一阶段的一个指令之间的一个未用时隙,所述未用时隙选自下面一组:
(i)一个空时隙;
(ii)一个包含一个被注销字的时隙;和
(iii)一个包含一个长立即字的时隙;以及
处理出现于所述第一阶段的所述指令而同时使所述第三阶段保持阻塞,并于随后将所述处理过的指令从所述第一阶段前移到所述第二阶段;
其中所述被阻塞指令和出现于所述第一阶段的所述指令包括用户选定的扩展指令。
CN008084580A 1999-05-13 2000-05-12 用于处理器流水线分段法及再装配的方法以及装置 Expired - Fee Related CN1217261C (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
US52417900A 2000-03-13 2000-03-13
US09/524,179 2000-03-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNA2005100843183A Division CN1716189A (zh) 1999-05-13 2000-05-12 设计用户可定制的处理器的方法以及装置

Publications (2)

Publication Number Publication Date
CN1355900A CN1355900A (zh) 2002-06-26
CN1217261C true CN1217261C (zh) 2005-08-31

Family

ID=27384547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN008084580A Expired - Fee Related CN1217261C (zh) 1999-05-13 2000-05-12 用于处理器流水线分段法及再装配的方法以及装置

Country Status (5)

Country Link
EP (1) EP1190337A2 (zh)
CN (1) CN1217261C (zh)
AU (1) AU4848700A (zh)
TW (1) TW589544B (zh)
WO (1) WO2000070483A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
CN100451951C (zh) * 2006-01-26 2009-01-14 深圳艾科创新微电子有限公司 Risc cpu中的5+3级流水线设计方法
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
CN102194350B (zh) * 2011-03-24 2013-01-30 大连理工大学 一种基于vhdl的cpu
CN102830953B (zh) * 2012-08-02 2017-08-25 中兴通讯股份有限公司 指令处理方法及网络处理器指令处理装置
CN104793987B (zh) * 2014-01-17 2018-08-03 中国移动通信集团公司 一种数据处理方法及装置
US9971516B2 (en) 2016-10-17 2018-05-15 International Business Machines Corporation Load stall interrupt
CN111399912B (zh) * 2020-03-26 2022-11-22 超睿科技(长沙)有限公司 一种面向多周期指令的指令调度方法、系统及介质
CN113961247B (zh) * 2021-09-24 2022-10-11 北京睿芯众核科技有限公司 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
EP0463966B1 (en) * 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
DE69408769T2 (de) * 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor

Also Published As

Publication number Publication date
CN1355900A (zh) 2002-06-26
WO2000070483A3 (en) 2001-08-09
AU4848700A (en) 2000-12-05
EP1190337A2 (en) 2002-03-27
WO2000070483A2 (en) 2000-11-23
TW589544B (en) 2004-06-01

Similar Documents

Publication Publication Date Title
CN1716189A (zh) 设计用户可定制的处理器的方法以及装置
CN1217261C (zh) 用于处理器流水线分段法及再装配的方法以及装置
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
Flynn et al. Computer system design: system-on-chip
Eichenbergert et al. Optimizing compiler for the cell processor
CN1129843C (zh) 使用组合的数据处理器系统和指令系统
Schoeberl et al. Towards a time-predictable dual-issue microprocessor: The Patmos approach
US20160328231A1 (en) Memory-network processor with programmable optimizations
CN1292343C (zh) 处理器及处理管线中例外反应的装置与方法
CN1658154A (zh) 早期修正分支指令预测错误的管线微处理器装置与方法
Oh et al. Recurrence cycle aware modulo scheduling for coarse-grained reconfigurable architectures
Dai et al. Flushing-enabled loop pipelining for high-level synthesis
CN1260647C (zh) 在数据处理设备中锁定源寄存器的方法和该数据处理设备
CN1155883C (zh) 在流水线处理器中用于跳转延迟时隙控制的方法和装置
US8447961B2 (en) Mechanism for efficient implementation of software pipelined loops in VLIW processors
Merten et al. Modulo schedule buffers
CN1198208C (zh) 流水线处理器内用于松散寄存器编码的方法和装置
CN1234066C (zh) 基于操作队列复用的指令流水线系统和方法
CN1167005C (zh) 用于流水线化处理器中跳转控制的方法及装置
US20020032558A1 (en) Method and apparatus for enhancing the performance of a pipelined data processor
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
Berekovic et al. A core generator for fully synthesizable and highly parameterizable RISC-cores for system-on-chip designs
US8006074B1 (en) Methods and apparatus for executing extended custom instructions
CN115335802A (zh) 用于优化从一个存储器到另一个存储器的数据传输的方法和系统
US20060168431A1 (en) Method and apparatus for jump delay slot control in a pipelined processor

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

Granted publication date: 20050831

Termination date: 20160512

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