在流水线处理器中用于跳转延迟时隙控制的方法和装置的制作方法

文档序号:6503867阅读:533来源:国知局
专利名称:在流水线处理器中用于跳转延迟时隙控制的方法和装置的制作方法
本申请地优先权是于1999年5月13日申请的美国临时专利申请Serial No.60/134,253,标题为“Method And Apparatus For SynthesizingAnd Implementing Intergrated Circuit Designs,”和共同待审的于1999年10月14日申请的美国专利申请No.09/418,663,标题为“Method AndApparatus For Managing The Configuration And Functionality Of ASemiconductor Design’它的优先权是相同标题的于1998年10月14日申请的美国临时专利申请Serial No.60/104,271。

背景技术
1.发明领域
本发明涉及集成电路设计领域,尤其涉及在一个流水线中央处理器(CPU)或用户化微处理器中使用的用于实现指令的一种硬件描述语言。
2.相关技术描述
在计算机领域中RISC(精简指令集计算机)处理器是大家所熟知的。RISC处理器与非-RISC(通常所说的“CISC”)处理器相比,通常具有利用充分精简指令集的基本特性。通常,RISC处理器机器指令并不全是微编码的,可以直接执行而不用解码,因而在处理速度上可以提供有意义的经济效益。此外,“流线型的(streamlined)”指令处理能力还允许进一步简化处理器的设计(与非-RISC设备相比),从而允许更小的硅片和更少的制造费用。
此外,RISC典型的特征在于(i)装入/存储存储器结构体系(也就是,仅在装入和存储指令时必须存取存储器;其他的指令经过处理器中的内部寄存器操作);(ii)处理器和编译器的统一性;和(iii)流水线操作。
流水线操作是一种技术,用于通过把处理器中运算的顺序分成片段来增加处理器的性能,当可能时这些片段能以并行方式有效地被执行。在一个典型的流水线处理器中,与处理器运算操作程序(比如加法,乘法,除法等等)相关的运算单元通常被“分段”,以便任意时钟周期内在该单元一个给定片段中执行操作的一个具体部分。

图1示例了具有这样被分段的运算单元的一个典型的处理器体系结构。因此,在任意给定的时钟周期这些单元可以在一个不同计算的结果上进行运算。作为一个例子,在第一时钟周期中两个数A和B被送到乘法单元10并由单元的第一片段12进行部分处理。在第二时钟周期中,来自A和B相乘的部分结果被送到第二片段14,同时第一片段12接收开始进行处理的两个新的数(比方说C和D)。最终结果是在一个初始启动周期之后,每个时钟周期由运算单元10执行一个乘法运算。
从一个结构体系到另一个结构体系,流水线的深度会变化。在本文中,术语“深度”指的是在流水线中存在的分阶段的数量。通常,带有更多阶段的一个流水线执行程序较快,但如果流水线的效果是明显可见的话,对于程序员来说编程也更加困难。大多数流水线处理器是三阶段(取指令,解码,和执行)或四阶段(比如取指令,解码,取操作数,和执行,或者可替换的,取指令,解码/取操作数,执行,和写回),尽管可以使用更多的或更少的阶段。
使用流水线结构通常对地址需要联锁,尤其是在这种情况下,即在一个早先流水线阶段中的一个跟随指令(n+1)需要来自一个后面阶段指令n的结果。解决上述问题的一个简单方法是通过一个或多个时钟周期延迟在指令解码阶段中的操作数计算。可以使用“记分板”,其中把一个位附加到每个处理器寄存器以便作为该寄存器内容的一个标志。可替换的,NOP(空操作操作码)可以被插入编码中以便愿意的时候延迟相应的流水线阶段。后一种方法称为“软件联锁”,具有增加了编码尺寸,并增加了使用需要联锁指令的程序的复杂性的缺点。
在处理器设计中另一个重要的考虑是程序转移或“跳转”。所有的处理器都支持某种类型的转移指令。简单来说,转移涉及程序流被中断或被改变的情况。此外,诸如循环设置和子程序调用指令等其它操作也以类似的方式中断或改变程序流。术语“跳转延迟时隙”通常指的是在一个转移或跳转指令被解码之后在一个流水线内的时间段。转移可以是有条件的(也就是基于一个或多个参数的真值或值)或无条件的。它也可以是绝对的(例如,基于一个绝对存储器地址),或相对的(例如,基于相对的地址和与任何特殊存储器地址无关)。
在流水线系统上进行转移具有一种非常有意义的作用。当一个转移指令被插入并通过处理器的指令解码阶段被解码时(表示处理器必须开始执行一个不同的地址),在指令序列中的下一个指令字已经被提取和插入流水线中。解决该问题的一个方案是清除提取的指令字并暂停或阻塞另外的提取操作直到转移指令已被执行为止,如图2所示。然而,该方法需要在几个指令周期——通常指令周期的数目处于一个到处理器设计中使用的流水线的深度之间——中转移指令的执行结果。这个结果对于处理器的速度和效率是不利的,因为在这一期间处理器不能实施其它的运算。可替换的,可以使用一种延迟的转移人方法。在该方法中,当一个转移指令到达解码阶段时流水线不被清除,而通常在转移人被执行之前执行存在于流水线先前阶段中的后面的指令。因此,在转移指令被解码时,该转移即被延迟若干——为执行所有流水线中随后指令所必需的——指令周期。与上述的多周期转移相比,这种方法增加了流水线的效率,但也增加了基本编码的复杂性(程序员易于理解)。
基于上述内容,处理器设计者和程序员必须结合现有技术中利用延迟的或多周期的转移方法来仔细权衡得失。需要一种改进的进行转移/跳转的方法来克服或减轻这些折衷方法中存在的问题,同时提供附加的灵活性。而且,当把更多的流水线阶段加到处理器设计中时,对于改进的和简化的转移以及处理器内的指令执行,有益之处会更多。此外,在一个具体应用的方式中,能够容易地综合处理这种改进的流水线处理器设计,并且使用这些可获得的综合工具,对于设计者和程序员来说是实际有效的。
发明概述
本发明通过提供一种用于在数字处理器结构体系内执行指令的改进的方法和装置来满足上述的需要。
在本发明的第一个方面中,公开了一种在一个流水线处理器内管理转移和指令执行的改进的方法。在一个实施例中,利用指令字的预定位实现三个分立的延迟段模式。这三个模式包括(i)在所有环境下执行一个延迟段指令;(ii)只有当采用一个跳转时执行一个延迟段,和(iii)如果采用一个跳转,一个流水线就阻塞或气泡来代替一个指令执行。一个流水线泡类似于一个NOP空操作指令,其中它是一个流过流水线而不执行任何操作的指令。它通常是一个在被装入流水线之后就被“注销”的指令。使用现有的转移或类似的指令,在跳转延迟时隙控制中这三个模式的可用性给程序员提供了额外的灵活性。此外,公开了用综合逻辑实现上述延迟段方法的无约束和有约束的示例。
在本发明的第二个方面中,公开了结合上述跳转延迟时隙方法的一个集成电路的综合设计的改进方法。在一个实施例中,该方法包括获得用户输入的有关设计的配置;基于用户的输入和现存的功能库生成用户化的HDL功能块;基于用户的输入和程序库确定设计层次并产生一个层次文件,新的库文件,和程序描述文件;运行程序描述文件生成结构的HDL和稿本;运行生成的稿本生成一个用于模拟程序的程序描述文件和一个综合稿本;以及基于产生的设计和综合稿本对设计进行综合。
在本发明的第三个方面中,公开了用于综合处理器设计的一种改进的计算机程序和具体实现上述内容的方法。在一个实施例中,计算机程序包括存储在一个微型计算机的磁存储设备上的一个目标编码表达式,并适于在其中的中央处理器上运行。计算机程序进一步包括一个交互式的,菜单控制的图形用户界面(GUI),因而便于使用。
在本发明的第四个方面中,公开了用于运行上述计算机程序的一种改进的装置,该计算机程序用于综合与流水线处理器相关的逻辑。在一个实施例中,系统包括一个具有一个显示器的独立的微型计算机系统,中央处理器,数据存储设备,和输入设备。
在本发明的第五个方面中,公开了利用上述跳转延迟时隙方法和有约束/无约束的综合逻辑的一种改进的处理器体系结构。在一个实施例中,该处理器包括具有三阶段流水线的一个精简指令集计算机(RISC),三阶段流水线包括由上述跳转延迟时隙方法所部分控制的取指令,解码,和执行阶段。
附图简述
图1是使用“分段的”算法单元的一个典型的现有技术处理器结构的方框图。
图2是正进行一个多周期转移运算的一个四阶段流水线处理器的示意图。
图3是按照本发明在一个流水线处理器内控制跳转延迟时隙模式的通常方法的一个示意性的逻辑流程图。
图3a是执行图3指定的跳转延迟时隙模式方法的一个实施例的逻辑流程图。
图4是按照本发明、对结合了跳转延迟时隙模式的处理器逻辑进行综合的普通方法的一个逻辑流程图。
图5是表示用于实现本发明的跳转延迟时隙模式的综合逻辑(无约束)的第一实施例的示意图。
图6是表示用于实现本发明的跳转延迟时隙模式的综合逻辑(有约束)的第二实施例的示意图。
图7是结合了相应于本发明的跳转延迟时隙模式的一个流水线处理器设计的方框图。
图8是用于综合处理图5-6的逻辑装置的一个计算机系统实施例的功能方框图。
发明详述
现在参考给出的附图,其中相同的编号指整体相同的部分。
在此所用的术语“处理器”意味着包括任何集成电路或其它的能够就至少一个指令字而执行一个操作的电子设备,包括,但不限于此,精简指令集芯片(RISC)处理器,比如由本专利申请受让人制造的ARC用户结构的芯片,中央处理器(CPU),以及数字信号处理器(DSP)。这样设备的硬件可以被集成在一个单片硅上(“小片”),或被分布在两个或多个小片中。而且,处理器的各种功能方式可以用软件或与处理器相关的固件来实现。
此外,作为本领域普通技术人员来说,应理解在此使用的术语“阶段”涉及一个流水线处理器内的各连续阶段;即阶段1相当于第一流水线阶段,阶段2相当于第二流水线阶段,依此类推。
此外应注意的是,下面的描述仅与VHSIC硬件描述语言(VHDL)有关,而诸如Verilog的其它硬件描述语言也可以同样成功地用于描述本发明的各种实施例。而且,示例了一个Synopsys综合引擎,比如Design Compiler 1999.05(DC99)来用于综合处理在此所述的各种实施例,但也可以使用其它的综合引擎,比如特别地可从Cadence DesignSystems,Inc.获得的Buildgates。IEEE std.1076.3-1997,IEEE StandardVHDL Synthesis Packages描述了一种用于规定基于硬件描述语言的设计的一种工业接受的语言以及综合处理能力,这对于本领域普通技术人员来说,是可以得到的。
最后,应该清楚尽管下面描述了本专利申请受让人使用上述的综合处理引擎和VHSIC硬件描述语言来综合处理逻辑的具体实施例,这类具体实施例以不同方式受到约束,但这些实施例仅仅作为本发明的设计示例。而且,尽管对这些实施例规定了一种1.0um工艺,但应该可以想象到用其它的制造工艺(例如0.35um或0.18um)来结合在此公开的本发明。
现在描述相应于本发明、控制跳转延迟时隙以及在一个处理器内对它们进行编码的改进的方法。
本发明通常包括多个不同的“跳转模式”或修改程序。这些修改程序在整个跳转过程中控制处理器的操作;特别是,一个指令在一个先于跳转指令本身阶段的流水线阶段之后、或该流水线阶段之中的执行。总体来说,这些修改程序提供给程序员许多益处,这些益处不是由多周期或延迟的转移方法孤立地提供的,因为程序员能够安排程序编码以便在这样的跳转或转移操作过程中按期望的方式操作流水线。
现在参考图3,描述按照本发明在一个流水线处理器内跳转进行期间控制指令执行的通用方法300。首先,在步骤302,提供一个适于在处理器上运行和包括多个指令“字”的程序。程序中的每个指令字被表示为并包括了多个数据位,并且至少一个指令字包括一个跳转指令。在本文中,术语“指令集”用于描述可以在处理器上执行的每个可能指令的完全集,并且术语“程序”用于描述从处理器的指令集中选择、以便实现一具体目的的一个指令特定序列。在此所用的术语“跳转”指任何转移,跳转,循环设置或调用指令,虽然其他要求改变处理器指令处理流程的指令也能够与所公开的本发明相结合。
下一步,在步骤304,多个预定值之一被分配到跳转指令的至少一个数据位。在一个实施例中,跳转指令的两个数据位被指定携带跳转延迟时隙模式信息,如以下参考表1所示。对于这两位使用允许的二元状态“0”和“1”,可以形成22或4的唯一组合,每个组合指定一种不同的跳转延迟时隙模式。然而,应该明白,通过使用或多或少的数据位可以指定任意不同数目的唯一(或非唯一)模式,如果需要的话,甚至使用不同的数字基数。
接着,在步骤306,由处理器解码包含在跳转延迟时隙模式信息中的至少一个跳转指令。在计算机领域中大家熟知用于指令解码的方法和装置,因而在此不作进一步的描述。然而应注意的是,与现有技术的指令解码相比,本发明的指令集内的跳转指令解码包括不仅对指令本身进行解码(步骤307),还包括对先前所述的指定的跳转延迟时隙模式数据位的解码和分析(步骤308)。
在步骤310,按照步骤304中由程序员规定的功能性,执行指定的跳转延迟时隙模式。
图3a图示了经图3步骤310而执行指定跳转延迟时隙模式的方法的一个实施例。在第一步骤312,读取在步骤314中被指定的携带延迟段模式信息的数据位以便确定在被解码指令内所选择的跳转延迟时隙模式。接着,在步骤314,分析选择的延迟段模式以便确定它是否是有条件的(也就是,取决于另一个参数,比如是否采取一个到另一个程序地址的跳转)。如果选择的模式是有条件的,在步骤316和317中分析参数的状态以便确定其中的“真值”。如果该条件为真,经步骤318执行用于一个真实条件的所需的动作。如果该条件不为真,经步骤320执行用于一个虚伪条件所需的动作(或选择不采取动作)。如果选择的模式对任何参数都是无条件的,在步骤322中执行那个模式(比如执行流水线内一个随后的指令,或者一个流水线阻塞)所需的动作。
在上述方法300的一个示范性实施例中,定义了下列三个跳转修改程序(延迟段模式)
(1)ND(“没有延迟的指令段”)—当无跳转时仅执行流水线中的表2
下面的汇编语言编码利用一个有条件的、到后面有一个数学(加)指令的程序位置‘目标’ 的转移指令(beq),示例了表1各相应跳转延迟时隙模式的语法和操作的例子
(1)beq.nd target;
add rl,rl,1;如果采取跳转不执行“加”
(2)beq.d target
add rl,rl,1;总是执行“加”
(3)beq.jd target;
add rl,rl,1;仅当采取跳转执行“加”
表1的第四个模式(“11”)可以用于其它的跳转模式或非跳转模式功能——如果愿意的话,从而为程序员提供了进一步的灵活性。另外,虽然在表1的实施例中示例了指令字的两位,但应该清楚的是,可以想象使用其他数目的以及不同安排的位(包括它们在指令字内的位置及其语法)。例如,三个非相邻的位可用于表示多达八个独立的跳转延迟时隙模式。
表3利用基于IW内三个数据位的五个跳转延迟时隙模式(四个加一个保留),示例了本发明跳转延迟时隙模式的第二实施例
表3
在示例的实施例中,存在于指令集内的跳转指令可以停止其它指令类型的执行(即“注销”),取决于两个因素(i)选择的延迟段模式,和(ii)跳转指令的条件是否为真。以下四个指令说明了本文中与本申请人的ARC RISC处理器相关的VHDL编码的上述原理
1.规则的跳转指令
ip2rjmp<=′1′WHEN ip2iv=′1′AND(ip2i=obcc
OR ip2i=oblcc
OR ip2i=ojcc)ELSE
′0′;
2.循环回路设置指令
ip21pcc<=′1′WHEN ip2iv=′1′AND(ip2i=olpcc)ELSE
′0′;
3.跳转/非跳转信号
ip2jumping<=(ip2rjmp AND ip2condtrue)OR(ip21pcc AND NOT
jp2condtrue);
ip2nojump<=(ip2jmp AND NOT ip2condtrue)OR(ip21pcc AND
ip2condtrue);
4.“注销”信号
ip2killnext<=‘1’WHEN((ip2dd=dmk)AND ip2bch=‘1’)
OR((ip2dd=dmnd)AND ip2jumping=‘1’)
OR((ip2dd=dmjd)AND ip2nojump=‘1’)ELSE
′0′
p2killnext<=ip2killnext;
应注意的是,所示实施例的ip2killnext指令包括p2iv(流水线阶段2指令有效信号)和一个用于一个跳转操作的全解码,以便在流水线控制逻辑(“pipectl”)内可以使用它而不用除en2(流水线阶段2启动/阻塞信号)以外的任何其他的解码。这种特性减少了解码延迟并允许指令更快执行。尽管在这个例子中使用的解码技术导致了上述操作中的许多益处,但应该明白该技术对于本发明的实际应用并不是必不可少的。
附录A示例了用于综合处理本发明的上述跳转延迟时隙模式的VHDL的一个实施例。
附录B提供了利用Synopsys综合处理引擎用于延迟段综合处理的一个综合稿本的示例。
此外,应该注意的是,可以连同(单独地或共同的)其他的流水线控制和联锁的方法一起来使用本发明的方法和装置,其中尤其包括那些与本申请共同待审的美国专利申请标题为“Method And ApparatusFor Jump Control In A Pipelined Processor’中公开的内容,以及那些与本申请共同待审的美国专利申请标题为“Method And Apparatus ForProcessor Pipeline Segmentation and Reassembly”中公开的内容,它们与此同时申报,在此结合它们的全部内容作为参考。而且,各种寄存器编码方案,比如与本申请共同待审的美国专利申请标题为“Methodand Apparatus for Loose Register Encoding Within a Pipelined Processor”中描述的“松散”寄存器编码,它与此同时申报,在此结合参考它的全部内容,在此可以连同本发明使用的跳转延迟时隙一起进行描述。进行综合处理的方法
参考图4,描述了先前讨论的结合跳转延迟时隙模式综合处理逻辑的方法400。在与本申请共同待审的美国专利申请序列号09/418,663标题为“Method And Apparatus For Managing The Configuration AndFunctionality Of A Semiconductor Design”中公开了综合处理具有一个用户化(即“软的”)指令的集成电路逻辑的普通方法,它于1999年10月14日申报,在此结合它的全部内容作为参考。
虽然下面的描述是有关于在一个微型计算机或其他类似处理设备上的一个算法或计算机程序,但应该清楚可以使用其它的硬件环境(包括小型计算机,工作站,网络计算机,“超级计算机”,和大型计算机)来实践本方法。此外,如果需要的话,相对于软件可以把计算机程序的一个或多个部分实施于硬件或固件中,这种替换的实施例在计算机技术领域是熟知的。
最初,在步骤402中获得有关设计配置的用户输入。特别是,由用户选择用于设计的期望的模块或功能,并按需要添加、减去或产生与设计有关的指令。例如,在信号处理应用程序中,通常最好让CPU包括单一的“乘法和累积”(MAC)指令。在本发明中,修改综合设计的指令集以便在其中结合上述跳转延迟时隙模式(或其他等同的跳转延迟时隙控制体系结构)。尤其是,在本发明的实施例中,表示指定跳转延迟时隙模式的多个预定值之一通过参考图1的上述跳转指令字的两个数据位进行表示。此外,在步骤402中由用户定义用于每个VHDL文件的技术库位置。本发明中的技术库文件存储了所有与用于综合处理所需单元相关的信息,例如包括逻辑功能,输入/输出计时,和任何相关约束。在本发明中,每个用户可以定义他的/她的自己的库名和位置,从而进一步增加了灵活性。
下一步,在步骤403,生成在步骤402中规定的基于用户输入和现存功能库的用户化的HDL功能块。
在步骤404中,基于用户的输入和上述的库文件确定设计结构层次。基于设计结构层次顺序地产生一个结构层次文件,新的库文件,和程序描述文件。在此使用的术语“程序描述文件”相当于通用的UNIX程序描述文件功能或者相当于计算机领域普通技术人员熟知的一个计算机系统的类似的功能。程序描述文件功能导致其他常驻计算机系统中的程序或算法以规定的次序被执行。此外,它进一步规定数据文件的名称和位置和其他为指定程序的成功操作所需的信息。但应该注意的是,在此公开的发明可以利用不同于“程序描述文件”的文件结构来产生期望的功能性。
在本发明的程序描述文件产生处理过程的一个实施例中,是经过显示提示交互地询问用户来输入与期望的设计有关的信息,比如“构件”的类型(例如,整体设备或系统配置),外部存储器系统数据总线的宽度,扩展时隙的不同类型,高速缓冲存储器的类型/大小等等。但只要符合本发明,也可以使用许多其他的输入信息的配置和资源。
在步骤406,运行在步骤404中产生的程序描述文件以便生成结构的HDL。该结构的HDL将设计中分立的功能块结合在一起以便完成一个设计。
接着,在步骤408,运行在步骤406中产生的稿本以生成用于模拟程序的一个程序描述文件。此外,在步骤408中还运行产生一个综合稿本的稿本。
在程序的这一点上,做出一个是否综合或模拟设计的决定(步骤410)。如果选择模拟,用户利用在步骤412产生的设计和模拟程序描述文件(和用户程序)运行模拟程序。可替换的,如果选择综合处理,用户利用在步骤414中的综合稿本和产生的设计运行综合处理。在完成综合/模拟稿本之后,在步骤416评估适当的设计程序。例如,一个综合引擎可以生成一个具体的设计的物理布局,它符合整体设计处理程序的性能标准,但不符合所要求的小片尺寸。在此情况下,设计者将对控制文件,数据库,或其它元件进行改变,它们可以影响小片尺寸。随后设计信息的结果集合被用于重新运行综合处理稿本。
如果产生的设计是可接受的,则完成设计处理程序。如果设计是不可接受的,重新执行从步骤402开始的处理步骤直到获得一个可接受的设计。在此方式中,循环方法400。
现在参考图5,示例了利用图4的Synopsys设计编译器和方法所综合处理的门逻辑(包括在附录A的VHDL中所引用的ip2bch)的第一实施例。注意用于产生图5的逻辑综合的处理期间,规定了一个LSI10k 1.0um工艺,并且在设计上没有约束。来自图5逻辑的p2killnext信号输出被用于VHDL编码(rctl.vhdl)中的任何地方以便当指令被传送到阶段2时在阶段1中将其标以“注销”标记。
图6示例了利用Synopsys设计编译器和上述的1.0um工艺综合处理的示范性门逻辑的第二实施例。然而,不像图5的逻辑,已经约束了ip2condtrue和p2killnext之间的关键路径以便以尽可能短的时间进行操作。如先前所提到的,在整个综合处理过程中,只要需要可以应用许多各种不同的约束。
图7示例了制造好的流水线处理器的一个例子,使用在此上述的一个1.0um工艺和结合图5的逻辑以及跳转延迟时隙模式。如图7所示,处理器700是一个ARC类的微处理器CPU设备,其中尤其具有一个处理器芯片702,芯片存储器704,和一个外部接口706。利用用户化VHDL设计制造该设备,使用本发明的方法400获得用户化的VHDL设计,该设备随后被综合处理成一个逻辑级表达式,并接着利用半导体领域已知的编译,布局和制造技术把它精简成一个物理设备。
本领域普通技术人员应该清楚,图7的处理器可以包括任何通用的可获得的外围设备,比如串行通信设备,并行接口,计时器,计数器,高电流驱动器,模数(A/D)转换器,数模(D/A)转换器,中断处理器,LCD驱动器,存储器和其他类似的设备。另外,处理器还可以包括自定义或应用的具体电路元件。本发明不局限于外围设备的类型,数量或复杂程度,以及其他的可以使用本发明方法和装置相组合的电路元件。反之,任何由现有半导体工艺的物理能力所施加的限制都会随时间而改进。因此可预期,随半导体工艺的进步,可能应用本发明的集成的复杂性及质量将进一步提高。
还应该注意的是,当前的许多IC设计使用一个微处理器芯片和一个DSP芯片。然而DSP仅可以用于所需的有限数量的DSP功能,或者用于IC的快速DMA结构体系。在此公开的本发明可以支持许多DSP指令功能,并且它的快速局部RAM系统可以直接存取数据。通过使用在此公开的用于IC的CPU&DSP功能的方法可以明显地实现节省费用。
除此之外,请注意这里如前所述的方法(及相应的计算机程序)可容易地以相对简单的再综合适应于更新的生产技术,例如0.18或0.1微米工艺——而非使用“硬的”原有微技术系统时,为了适应这类技术通常要采用冗长昂贵的处理。
现在参考图8,描述一个计算设备的实施例,它尤其是能够综合这里图5和图6的跳转延迟时隙模式逻辑结构。计算设备800包括一个母板801,该母板具有一个中央处理器(CPU)802,随机存取存储器(RAM)804,和存储器控制器805。此外还提供一个存储设备806(比如一个硬盘驱动器或CD-ROM),输入设备807(比如一个键盘或鼠标),和显示设备808(比如一个CRT,等离子体,或TFT显示器),以及支持主机和周边器件工作所需的总线。在整个设计综合处理过程中,上述的VHDL描述和综合引擎以计算机程序的一个目标编码表达式的形式被存储在RAM 804和/或存储设备806中来由CPU 802进行使用,在计算机领域中后者是大家熟知的。在整个系统操作过程中,用户(未示出)通过把设计的配置规范经程序显示和输入设备807输入到综合处理程序中来综合处理逻辑设计。由程序所生成的经过综合的设计储存于存储设备806中以便以后检索,显示于图形显示设备808,或经由一个串行或并行接口812而输出到一台外部设备,如打印机、数据存储设备、其它外围设备——如果需要的话。
尽管上面已经进行了详细描述,并应用各种实施例指出了本发明的新颖性,但应明白在不脱离本发明的范畴下,本领域技术人员可以对本发明的设备的细节或处理过程以省略,替代,或改变的各种形式作出变化。上述的内容是目前实现本发明的最佳方式。这一描述绝不意味着限制,反之,应作为本发明通用原理的示例。本发明的范围应该根据权利要求的内容来确定。
附录A-示例用于综合处理的延迟段VHDL
library ieee.arc;use ieee.std_logic_1164.all;use arc.arcutil.all;entity delay_slot isPORT(ip2iv ;in std_ulogic;   ip2condtrue;in std_ulogic;   ip2i ;in std-ulogic_vector(4 downto 0);   ip2dd ;in std_ulogic_vector(1 downto 0);   p2killnext ;out std_ulogic);end delay_slot;architecture synthesis of delay_slot is   signal ip2bch ; std_ulogic;   signal ip2rjmp; std_ulogic;   signal ip2lpcc; std_ulogic;   signal ip2jumping ; std_ulogic;   signal ip2nojump ; std_ulogic;   signal ip2killnext; std_ulogic;beginip2bch<=′1′WHEN ip2iv=‘1’AND (ip2i=obccOR ip2i=oblcc   OR ip2I=olpccOR ip21=ojcc)ELSE   ‘0’;------延迟段取消逻辑.--------由于LPcc指令对其它的转移指令以不同方式使用它的条件码,在实施例中需要两个信号来规定一个进行跳转的跳转指令,一个用于规定一个不进行跳转的跳转指令。--规则跳转指令--ip2rjmp<=′1′WHEN ip2iv=′1′AND(ip2i=obcc   OR ip2i =oblcc   OR ip2i =ojcc)ELSE   ‘0’;<!-- SIPO <DP n="15"> --><dp n="d15"/>--循环回路设置指令--ip21pcc<=′1′WHEN ip2iv=‘1’AND(ip2i=olpcc)ELSE‘0’--进行跳转/不跳转信号--ip2jumping<=(ip2rjmpANDip2ondtrue)OR(ip21pccANDNOTip2condtrue);ip2nojump<(ip2rjmpANDNOTip2condtrue)OR(ip21pccANDip2condtrue);--取消信号本身—----ip2killnext include p2iv and a full decode for a jump,so can--be used in pipectl without any further decode(apart from en2 of course).  ip2killnext<=’1’WHEN((ip2dd=dmk)AND ip2bch=′1′)  OR((ip2dd=dmnd)AND ip2jumping=′1′)  OR((ip2dd=dmjd)AND ip2nojump=′1′)ELSE   ‘0’;  p2killnext<=ip2killnext;end synthesis;
附录B-用于延迟段综合的示例综合稿本
/*′produce result without any optimization*//*assuming using the LSI Logic 10k library*/analyze-format vhdl-lib ARC {ARCHOME+"/arc/vhdl/arcutil.vhdl"}analyze-format vhdl-lib USER{USERDIR+"/vhdl/delay_slot.vhdl"}elaborate delay_slot-arch"synthesis"-Hb USERcompilewrite-format db-hierarchy-output db/delay_slot_noopt.dbrernove_design-all/*result with logic optimization*/elaborate delay_slot-arch"synthesis"-lib USER/*timing for inputs direct from flipflops*/t_in=1.33/*create an imaginary 20MHz clock*/create clock-name ck-period 50set_input_delay 20 ip2condtrue -clock ckset_input_delay t_inip2dd-clock ckset_input delay t_inip2l -clock ckset_input_delay t_inip2iv-clock ckset_output_delay 28 p2killnext -clock ckcompilewrite-format db-hierarchy-output db/delay_slot_opt.db
权利要求
1.一种在流水线处理器内控制指令执行的方法,包括
提供包括多个指令字的一个指令集,每个所述指令字包括多个数据位,至少所述字的其中之一包括一个跳转指令;
将多个值中的一个赋予所述至少一个跳转指令的至少一个所述数据位;
当所述至少一个跳转指令被解码时,基于所述至少一个所述数据位的所述被赋值在所述流水线内控制至少一个随后指令的执行。
2.权利要求1的方法,其中赋值的动作包括
在所述至少一个跳转指令内识别多个数据位;
将两个分立值的其中之一赋予每个所述数据位,所述两个分立值的组合表示所述处理器内的至少三个跳转延迟时隙模式。
3.权利要求2的方法,其中基于所述分立值控制执行的动作包括从组中选择至少一个模式,该组包括
(i)在所有环境下执行所述至少一个随后的指令;
(ii)只有当出现一个跳转时执行所述至少一个随后的指令;和
(iii)如果出现一个跳转则阻塞流水线或在流水线中插入一个气泡。
4.权利要求3的方法,其中所述至少一个跳转指令包括一个有条件转移指令。
5.权利要求1的方法,其中基于所述一个被赋值而控制执行的动作包括
(i)在所有环境下执行所述至少一个随后的指令;
(ii)只有当出现一个跳转时执行所述至少一个随后的指令;和
(iii)如果出现一个跳转则阻塞流水线或在流水线中插入一个气泡。
6.一种综合处理器设计的方法包括
输入信息到第一文件以便包括一个具有至少一个跳转指令的指令集,所述至少一个跳转指令包括多个跳转延迟模式中的至少一个;
定义至少一个库文件的位置;
使用第一文件,所述库文件,和用户输入信息产生一个稿本;
运行所述稿本以便生成一个用户化的描述语言模块;和
基于所述描述语言模块来综合所述设计。
7.权利要求6的方法,其中进行综合的动作包括基于所述描述语言模块运行综合稿本。
8.权利要求7的方法,进一步包括产生用于一个模拟程序的第三文件,并使用所述第三文件模拟所述设计。
9.权利要求8的方法,进一步包括基于所述模拟来评估设计的可接受性的动作。
10.权利要求9的方法,进一步包括对设计进行修订以产生一个经修订设计的动作,并再综合所述修订的设计。
11.权利要求1的方法,其中输入的动作包括提供与所述设计相关的多个输入参数,所述参数包括
(i)一个高速缓存配置;
(ii)一个存储器接口配置。
12.一种机器可读取的数据存储设备包括
一个数据存储媒体,适于存储多个数据位;和
表现为多个数据位并存储在所述存储媒体上的一个计算机程序,所述程序适于在一个计算机系统的处理器上运行,并在一个具有一条流水线、而且结合了具有至少一个转移指令和多个与之相关跳转模式的一个指令集的处理器中用于综合处理集成电路逻辑,所述多个跳转模式至少包括下列
(i)在所有环境下执行所述所述流水线内的一个随后的指令;
(ii)只有当出现跳转时执行所述流水线内的一个随后的指令;
(iii)如果出现跳转阻塞所述流水线。
13.权利要求12的数据存储设备,其中所述数据存储媒体是一个光盘只读存储器(CD-ROM),并且所述多个数据位包括一个所述程序的目标表达式。
14.一种数字处理器包括
一个具有多阶段指令流水线的处理器芯片,所述芯片适于解码和执行包括多个指令字的一个指令集;
在所述处理器芯片和一个信息存储设备之间的一个数据接口;
一个包括多个指令字的指令集,至少一个所述指令字是一个跳转指令,该跳转指令包含定义多个跳转延迟时隙模式的数据,所述多个模式响应于所述指令集内的所述至少一个跳转指令字而控制所述处理器芯片的所述指令流水线内的指令的执行。
15.权利要求14的处理器,其中所述多个跳转延迟模式包括至少下列模式
(i)在所有环境下执行所述所述流水线内的一个随后的指令;
(ii)只有当出现跳转时执行所述流水线内的一个随后的指令;
(iii)如果出现跳转阻塞所述流水线。
16.权利要求14的处理器,其中所述至少一个跳转指令包括具有一个相关逻辑条件的一个有条件转移指令,由通过所述逻辑条件确定的所述至少一个有条件转移指令而指定的执行一个跳转到所述信息存储设备内的地址。
17.一种数字处理器,具有至少一个流水线和一个相关的数据存储设备,其中通过下列方法控制所述至少一个流水线内的指令的执行,包括
在所述数据存储设备内存储一个指令集,所述指令集包括多个指令字,每个所述指令字包括多个数据位,至少一个所述指令字包括一个转移指令,用于直接转移到所述数据存储设备内的第一地址;
将多个值的其中之一赋予所述至少一个转移指令的所述至少一个数据位;
对包括所述一个值的所述至少一个转移指令进行解码;
基于所述一个值确定是否在一个阶段中执行所述流水线内的一个指令,该阶段先于所述至少一个转移指令的那个阶段;
基于所述至少一个转移指令转移到所述第一地址。
18.权利要求17的处理器,其中所述数据位包括二进制(基数2)数据。
19.权利要求17的方法,其中所述至少一个流水线包括至少三阶段指令流水线,包括取指令,解码,和执行阶段。
20.一种控制多阶段流水线数字处理器程序内转移的方法,包括
在所述数据存储设备内存储一个指令集,所述指令集包括多个指令字,每个所述指令字包括多个数据位,至少一个所述指令字包括一个转移指令,用于基于第一参数直接转移到所述数据存储设备内的第一地址;
定义多个跳转模式;
分配所述多个跳转模式的至少一个给所述至少一个转移指令的至少一个所述数据位;
对包括所述至少一个数据位的所述至少一个转移指令进行解码;
基于所述至少一个数据位和所述第一参数确定是否转移到所述第一地址。
21.权利要求20的方法,其中定义多个跳转模式的动作包括定义下列模式
(i)在所有环境下执行一个随后的指令;
(ii)只有当出现跳转时执行一个随后的指令;
(iii)如果出现跳转阻塞流水线或把一个气泡插进流水线。
22.一种在数字处理器内使用的用于综合逻辑设计的装置,包括
一个中央处理器;
一个数据存储设备,可操作地连接到所述中央处理器,所述数据存储设备适于存储和检索计算机程序;
一个输入设备,适于响应来自所述系统的一个用户输入产生信号;
一个计算机程序,存储在所述数据存储设备上,所述程序适于接收所述信号和允许所述用户
输入信息到第一文件以便包括具有至少一个跳转指令的一个指
令集,所述至少一个跳转指令包括多个跳转延迟模式的至少其
中之一;
定义至少一个库文件的位置;
使用第一文件,所述库文件,和用户输入信息产生一个稿本;
运行所述稿本以便生成一个用户化的描述语言模块;
基于所述描述语言模块来综合所述设计。
23.一种数字处理器包括
具有一个多阶段数据流水线的处理装置,所述处理装置适于解码和执行包括多个指令字的一个指令集;
用于存储数据的装置;
在所述处理装置和所述存储数据装置之间的用于传输数据的数据接口装置;
一个包括多个指令字的指令集,至少一个所述指令字是一个跳转指令,该跳转指令包含定义多个跳转控制装置的数据,所述多个跳转控制装置响应于所述指令集内的所述至少一个跳转指令字、控制所述处理装置的所述数据流水线内的指令的执行。
24.一种在数字处理器内使用的用于综合逻辑设计的装置,包括
用于处理数据的装置;
用于存储数据的装置,所述用于存储的装置可操作地连接到所述用于处理的装置,并适于存储和检索一个计算机程序;
用于输入信息的装置,可操作地连接到所述处理装置,所述输入装置适于响应来自所述系统的一个用户输入而产生信号;
一个计算机程序,存储在所述数据存储设备上,所述程序适于接收所述信号并包括
方法,用于输入信息到第一文件以便包括具有至少一个跳转指
令的一个指令集,所述至少一个跳转指令包括多个跳转延迟模
式的至少其中之一;
方法,用于定义至少一个库文件的位置;
方法,用于使用第一文件,所述库文件,和用户输入信息产生
一个稿本;
方法,用于运行所述稿本以便生成一个用户化的描述语言模块;
方法,用于基于所述描述语言模块来综合所述设计。
全文摘要
一种在流水线中央处理器(CPU)或用户化微处理器内用于实现指令的方法和装置。在本发明的第一个方面中,公开了流水线内控制转移和执行指令的一种改进的方法。在一个实施例中,该方法包括在程序跳转指令内定义三个分立的延迟段;这些延迟段模式按照程序员需要而规定后面指令执行或者阻塞流水线程序。在本发明的第二个方面中,公开了结合上述模式综合处理一个处理器设计的方法。还描述了利用上述的方法所综合的示范性门逻辑,以及一个能够实施这些方法的计算机系统。
文档编号G06F9/38GK1360693SQ00808460
公开日2002年7月24日 申请日期2000年5月12日 优先权日1999年5月13日
发明者P·沃恩斯, C·格林汉姆 申请人:Arc国际美国控股公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1