设计用户可定制的处理器的方法以及装置的制作方法

文档序号:6630547阅读:187来源:国知局
专利名称:设计用户可定制的处理器的方法以及装置的制作方法
技术领域
本发明涉及集成电路设计领域,特别涉及使用一种硬件描述语言(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完成一次乘法运算。
流水线深度会依体系结构而异。在这里上下文中,“深度”一词意指出现于流水线中的分立阶段的数目。总的来说,一条流水线的阶段愈多,运行程序愈快,但也会愈加难以编程——虽然对程序员来说流水线作用显而易见。大多数流水线化的处理器为三阶段(取指令,解码,执行)或四阶段(例如取指令,解码,取操作数,执行或者还可为取指令,解码/取操作数,执行,写回),不过也使用更多或更少的阶段。
尽管有处理器中运算的前述“分段法”,原有技术处理器的流水线中的指令一般是连续的。具体地说,一个阶段中的指令一般以最少的空时隙、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 Patent 5,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’ELSEip2iv;p3ivreg;PROCESS(ck,clr)BEGINIF clr=‘1’THENip3iv<=‘0’;ELSIF(ck‘EVENTAND ck=‘1’)THENip3iv<=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(现在是美国6862563号专利)、标题为“用于管理半导体设计的结构以及功能的方法及装置”的专利申请中,这里将该专利申请全部地包括进来、引为参考资料。
虽然以下描述就运行于计算机或其它类似处理装置上的算法或计算机程序而进行,要认识到其它硬件环境(包括微型计算机,工作站,联网的计算机,“超级计算机”,以及大型计算机)也可用于实行本方法。另外,计算机程序的一部分或更多部分还可实施于相对于软件的硬件或固件上——如果愿意的话,这类备选实施例完全在计算机技术人员的技能范围内。
开始,在第一个步骤702,依照设计结构而取得用户输入。具体地说,由用户选择为这一设计所需的模块或功能,并且随需要而加、减或者生成与设计有关的指令。例如,在信号处理应用中,令CPU包括一个单一的“乘和累加”(MAC)指令通常是有益的。在本发明中,对综合设计的指令集进行了改动,使之于其中包括了前述的流水线撕裂及/或抓起模式(或另一个可比的流水线控制结构体系)。每个VHDL文件的技术库位置也由用户在步骤702加以规定。在本发明中技术库文件储存所有与为综合处理所必需的单元相关的信息,包括——举例来说——逻辑功能。输入/输出计时,以及所有相关约束。在本发明中,每个用户都可规定他/她自己的库名及位置,从而增加了更多的灵活性。
其次在步骤703,用户基于步骤702中所规定的用户输入及已有功能库而创建定制的HDL功能块。
在步骤704,基于用户输入及上述库文件而确定设计层次结构。层次结构文件、新的库文件以及程序描述文件顺序地基于该设计层次结构而生成。这里“程序描述文件”一词用于指常用的UNIX程序描述文件功能或为计算机编程技术人员所熟知的计算机系统的类似功能。该程序描述文件功能使其它程序或算法驻留于计算机系统中,依指定顺序被执行。此外,它还进一步指定为成功运行被指定程序所必需的数据文件和其它资料的名字和位置。但请注意,这里所公布的本发明可利用不同于“程序描述文件”类型的文件结构来产生所需功能。
在本发明程序描述文件生成进程的一个实施例中,经由显示器提示而互动地请求用户输入关于所要设计的信息,如“建立”的类型(例如总设备或系统结构),外部存储器系统数据总线,不同的扩展类型,高速缓存类型/大小,等等。可使用许多其它的输入信息结构及信息源,然而仍与本发明相一致。
在步骤706,用户运行在步骤704生成的程序描述文件以生成结构HDL。这一结构HDL将设计中离散的功能块结合在一起,以作出一个完整的设计。
然后在步骤708,运行在步骤706所生成的稿本,为仿真程序而生成一个程序描述文件。用户还运行该稿本以在步骤708生成一个综合稿本。
这时在程序中作出决定,是综合还是仿真该设计(步骤710)。如选择仿真,用户就使用在步骤712生成的设计及仿真程序描述文件来进行仿真。另外,如选择综合,用户就使用综合稿本及在步骤中所生成的设计进行综合。完成了综合/仿真稿本后,在步骤716评估设计是否恰当。例如,一个综合引擎可生成该设计的一个特定物理布局,它满足总设计过程的性能条件但不满足芯片大小要求。在此情况下,设计员即会对控制文件、库或其它能影响芯片大小的成分进行改动。这个设计信息的结果集合随后即被用于再次运行综合稿本。
如果生成的设计是可接受的,则这一设计过程即完成。如果生成的设计是不可接受的,则开始于步骤702的过程各步骤过程重新执行,直至得到一个可接受的设计。以这种方式,方法700为可迭代的。
现在参见图8a-8b,描述了示范性门逻辑的一个实施例(包括参照附录工的VHDL的“p3iv”信号),该门逻辑用上述图7的SynopsyDesign Compiler及方法进行了综合。注意,在用于生成图8a逻辑的综合过程进行期间,规定了一个LSI 10k 1.0μm,工艺,并且未对设计施加约束。对图8b应用了同样的过程;但在从len3到时钟的通路上约束了设计。附录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<pre listing-type="program-listing">library ieee;  use ieee.std_logie_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;  p3ivregPROCESS(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;</pre>
附录II用于为流水线抓起而生成综合逻辑的VHDL<pre listing-type="program-listing">library ieee;  use ieee.std_logic_1164.all;  entity v007b is  port(enin 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;</pre>
附录III用于为撕裂逻辑而生成样本示意图的综合稿本<pre listing-type="program-listing">/*Analyze VHDL*/  analyze-library user-format vhdl vhdl/v007a.vhdl  /*Unconstrained logic*/  elaborate-library user v007a  compile  write-format 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{05}ck  set_input_delay-clock ck 8 ien 3  compile  write-format db-hierarchy-output db/v007a_c.db  create_schematic-schematic_view  plot-output v007a_c.ps</pre>
附录IV用于为抓起逻辑而生成样本示意图的综合稿本<pre listing-type="program-listing">/*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</pre>
权利要求
1.一种设计用户可定制的数字处理器的方法,所述处理器具有指令集和流水线,该流水线包括至少三个阶段,所述方法包括接收关于所述处理器的设计配置的用户输入,至少一部分所述输入与一个扩展指令有关;识别在生成所述设计时使用的至少一个技术描述;和基于至少部分所述用户输入和所述至少一个识别的描述,生成所述处理器的至少一个定制的描述语言模型,所述模型具有所述扩展指令作为所述指令集的一部分;其中所述流水线被配置以(i)检测在所述流水线的所述至少三个阶段中的第一阶段阻塞的第一指令;(ii)检测第二指令何时出现于所述流水线的所述至少三个阶段中的第二阶段,所述第二阶段是所述第一阶段的下游;和(iii)在所述第一阶段被阻塞之后执行所述第二指令。
2.如权利要求1的方法,其中所述扩展指令包括所述第一和第二指令中的一个。
3.如权利要求1的方法,其中所述至少三个阶段包括至少取指令、解码、执行和写回阶段,所述至少三个阶段中的所述第一阶段包括所述指令解码阶段,且所述第二阶段包括所述执行阶段。
4.如权利要求1的方法,进一步包括基于至少部分所述用户输入和所述至少一个识别的技术描述,生成至少一个定制的功能块。
5.如权利要求1的方法,其中接收用户输入的动作包括接收用户选择的一个或多个所需的处理器配置参数,所述参数是从由(i)整体设备配置和(ii)高速缓存配置组成的组中选择的。
6.如权利要求1的方法,其中所述至少一个技术描述包括一个或多个技术库文件。
7.一种适合设计用户可定制的数字处理器的装置,所述处理器具有指令集和流水线,该流水线包括至少三个流水线阶段,所述装置包括适合运行计算机程序的计算机系统;和至少一个计算机程序,其被配置以接收关于所述处理器的设计配置的用户输入,至少一部分所述输入与一个扩展指令有关;识别在生成所述设计时使用的至少一个技术描述;和基于至少部分所述用户输入和所述至少一个识别的描述,生成所述处理器的至少一个定制的描述语言模型,所述模型具有所述扩展指令作为所述指令集的一部分;其中从所述模型生成的所述处理器被配置以(i)检测在所述流水线的所述至少三个阶段中的第一阶段阻塞的第一指令;(ii)检测第二指令何时出现于所述流水线的所述至少三个阶段中的第二阶段,所述第二阶段是所述第一阶段的下游;和(iii)在所述第一阶段被阻塞之后执行所述第二指令。
8.如权利要求7的装置,其中所述扩展指令包括所述第一和第二指令中的一个。
9.一种设计用户可定制的数字处理器的方法,所述处理器具有指令集和流水线,该流水线包括至少三个阶段,所述方法包括接收关于所述处理器的设计配置的用户输入,至少一部分所述输入与一个扩展指令有关;识别在生成所述设计时使用的至少一个技术描述;和基于至少部分所述用户输入和所述至少一个识别的描述,生成所述处理器的至少一个定制的描述语言模型,所述模型具有所述扩展指令作为所述指令集的一部分;其中所述流水线被配置用于(i)检测在所述流水线的所述至少三个阶段中的第一阶段阻塞的第一指令;(ii)在所述第二阶段检测一个空的、停止的或者未用的时隙,所述第二阶段是所述第一阶段的上游;和(iii)至少部分基于所述空的、停止的或者未用时隙的所述检测,处理在所述第三阶段出现的指令,所述第三阶段是所述第二阶段的上游;和(iv)把在所述第三阶段中的所述指令前移到所述流水线内的后续阶段。
10.一种适合设计用户可定制的数字处理器的装置,所述处理器具有指令集和流水线,该流水线包括至少三个流水线阶段,所述装置包括适合运行计算机程序的计算机系统;和至少一个计算机程序,其被配置以接收关于所述处理器的设计配置的用户输入,至少一部分所述输入与一个扩展指令有关;识别在生成所述设计时使用的至少一个技术描述;和基于至少部分所述用户输入和所述至少一个识别的描述,生成所述处理器的至少一个定制的描述语言模型,所述模型具有所述扩展指令作为所述指令集的一部分;其中从所述模型生成的所述处理器被配置以(i)检测在所述流水线的所述至少三个阶段中的第一阶段阻塞的第一指令;(ii)在所述第二阶段检测一个空的、停止的或者未用的时隙,所述第二阶段是所述第一阶段的上游;和(iii)至少部分基于所述空的、停止的或者未用时隙的所述检测,处理在所述第三阶段出现的指令,所述第三阶段是所述第二阶段的上游;和(iv)把在所述第三阶段中的所述指令前移到所述流水线内的后续阶段。
全文摘要
用于在流水线化的中央处理器(CPU)或用户可定制的微处理器上执行指令的改进的方法及装置。在本发明第一方面,公布了一种在一个阶段已被阻塞或中断情况下控制流水线运行的改进方法。在一个实施例中,公布了一种流水线分段法(“撕裂”),其中该流水线在后面、未阻塞各阶段仍被允许继续下去而不顾稍前阶段的阻塞。类似地,还公布了一种方法,其中允许出现于流水线中稍前阶段的指令被再装配(“抓起”)到稍后的阻塞阶段。还公布了一种设计包括了上述分段法及再装配方法的用户可定制的处理器的方法,以及一种能够实现所述设计方法的装置。
文档编号G06F9/32GK1716189SQ200510084318
公开日2006年1月4日 申请日期2000年5月12日 优先权日1999年5月13日
发明者J·R·H·黑克威尔, J·桑德斯 申请人:Arc国际美国控股公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1