本申请的优先权是于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。
背景技术
在计算机领域中RISC(精简指令集计算机)处理器是大家所熟知的。RISC处理器与非-RISC(通常所说的“CISC”)处理器相比,通常具有利用充分精简指令集的基本特性。通常,RISC处理器机器指令并不全是微编码的,可以直接执行而不用解码,因而在处理速度上可以提供有意义的经济效益。此外,“流线型的(streamlined)”指令处理能力还允许进一步简化处理器的设计(与非-RISC设备相比),从而允许更小的硅片和更少的制造费用。
此外,RISC典型的特征在于(i)装入/存储存储器结构体系(也就是,仅在装入和存储指令时必须存取存储器;其他的指令经过处理器中的内部寄存器操作);(ii)处理器和编译器的统一性;和(iii)流水线操作。
美国专利5724566中公开了一种地址流水线,其用以保持指令流水线中的指令地址。流水线操作是一种技术,用于通过把处理器中运算的顺序分成片段来增加处理器的性能,当可能时这些片段能以并行方式有效地被执行。在一个典型的流水线处理器中,与处理器运算操作程序(比如加法,乘法,除法等等)相关的运算单元通常被“分段”,以便任意时钟周期内在该单元一个给定片段中执行操作的一个具体部分。图1示例了具有这样被分段的运算单元的一个典型的处理器体系结构。因此,在任意给定的时钟周期这些单元可以在一个不同计算的结果上进行运算。作为一个例子,在第一时钟周期中两个数A和B被送到乘法单元10并由单元的第一片段12进行部分处理。在第二时钟周期中,来自A和B相乘的部分结果被送到第二片段14,同时第一片段12接收开始进行处理的两个新的数(比方说C和D)。最终结果是在一个初始启动周期之后,每个时钟周期由运算单元10执行一个乘法运算。
从一个结构体系到另一个结构体系,流水线的深度会变化。在本文中,术语“深度”指的是在流水线中存在的分阶段的数量。通常,带有更多阶段的一个流水线执行程序较快,但如果流水线的效果是明显可见的话,对于程序员来说编程也更加困难。大多数流水线处理器是三阶段(取指令,解码,和执行)或四阶段(比如取指令,解码,取操作数,和执行,或者可替换的,取指令,解码/取操作数,执行,和写回),尽管可以使用更多的或更少的阶段。
使用流水线结构通常对地址需要联锁,尤其是在这种情况下,即在一个早先流水线阶段中的一个跟随指令(n+1)需要来自一个后面阶段指令n的结果。解决上述问题的一个简单方法是通过一个或多个时钟周期延迟在指令解码阶段中的操作数计算。可以使用“记分板”,其中把一个位附加到每个处理器寄存器以便作为该寄存器内容的一个标志。可替换的,NOP(空操作操作码)可以被插入编码中以便愿意的时候延迟相应的流水线阶段。后一种方法称为“软件联锁”,具有增加了编码尺寸,并增加了使用需要联锁指令的程序的复杂性的缺点。
在处理器设计中另一个重要的考虑是程序转移或“跳转”。所有的处理器都支持某种类型的转移指令。简单来说,转移涉及程序流被中断或被改变的情况。此外,诸如循环设置和子程序调用指令等其它操作也以类似的方式中断或改变程序流。术语“跳转延迟时隙”通常指的是在一个转移或跳转指令被解码之后在一个流水线内的时间段。转移可以是有条件的(也就是基于一个或多个参数的真值或值)或无条件的。它也可以是绝对的(例如,基于一个绝对存储器地址),或相对的(例如,基于相对的地址和与任何特殊存储器地址无关)。
在流水线系统上进行转移具有一种非常有意义的作用。当一个转移指令被插入并通过处理器的指令解码阶段被解码时(表示处理器必须开始执行一个不同的地址),在指令序列中的下一个指令字已经被提取和插入流水线中。解决该问题的一个方案是清除提取的指令字并暂停或阻塞另外的提取操作直到转移指令已被执行为止,如图2所示。然而,该方法需要在几个指令周期——通常指令周期的数目处于一个到处理器设计中使用的流水线的深度之间——中转移指令的执行结果。这个结果对于处理器的速度和效率是不利的,因为在这一期间处理器不能实施其它的运算。可替换的,可以使用一种延迟的转移方法。在该方法中,当一个转移指令到达解码阶段时流水线不被清除,而通常在转移被执行之前执行存在于流水线先前阶段中的后面的指令。因此,在转移指令被解码时,该转移即被延迟若干——为执行所有流水线中随后指令所必需的——指令周期。与上述的多周期转移相比,这种方法增加了流水线的效率,但也增加了基本编码的复杂性(程序员易于理解)。
结合了包括用于控制处理器流水线内转移指令的执行方法的数字处理器体系结构是为人熟知的;举例来说参见P.Patel等著“Architectural Features of the I860TM-Miocroprocesser RISC Core andOn-chip Caches”,Proceedings of the 1989 IEEE International Conferenceon Computer Design:VLSI in Computers and Processors,ICCD’89,IEEEComp.Society Presss,pp389-390,该文描述了一种处理器结构体系,该结构体系里在有条件转移指令中利用了一种“挤位”。当设置了挤位,对于进行转移情况即注销在延迟时隙中的指令,并执行不进行转移的情况。此外,如未设置挤位,则对于不进行转移情况即注销在延迟时隙中的指令,并执行进行转移的情况。通过预测在程序编辑时间上的转移方向而确定这一挤位。还可参见专利号为U.S.Patent No.5,724,566、申请于1998年3月3日、转让给Texas Instruments Inc.的专利,该专利公布了一种“地址流水线”的使用,这种地址流水线保持出现于指令流水线中的指令的地址,并特别地方便了在一个转移延迟时隙期间停止这个数字处理器而无该转移信息的损失。
基于上述内容,处理器设计者和程序员必须结合现有技术中利用延迟的或多周期的转移方法来仔细权衡得失。需要一种改进的进行转移/跳转的方法来克服或减轻这些折中方法中存在的问题,同时提供附加的灵活性。而且,当把更多的流水线阶段加到处理器设计中时,对于改进的和简化的转移以及处理器内的指令执行,有益之处会更多。此外,在一个具体应用的方式中,能够容易地综合处理这种改进的流水线处理器设计,并且使用这些可获得的综合工具,对于设计者和程序员来说是实际有效的。
具体实施方式
现在参考给出的附图,其中相同的编号指整体相同的部分。
在此所用的术语“处理器”意味着包括任何集成电路或其它的能够就至少一个指令字而执行一个操作的电子设备,包括,但不限于此,精简指令集芯片(RISC)处理器,比如由本专利申请受让人制造的用户结构的芯片,中央处理器(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)D(“延迟的指令段”)—不管跳转状态而总是执行下一个指令
(3)JD(“跳转延迟的指令段”)—当跳转时仅执行下一个指令;如果不进行跳转,插入一个周期流水线阻塞或气泡
当采取一个跳转时,第一模式(1)提供了一个或多个周期的流水线“阻塞”来代替一个指令执行。第二模式(2)提供一个延迟段指令(也就是,在所有环境下,存在于解码后跟随跳转指令的时间段中的指令)的执行。只有当采取一个跳转时,第三模式(3)提供一个延迟段指令的执行。尽管下面的讨论仅仅有关于这三种模式,但应该明白不需要共同使用、或者在相同的指令集内使用所有的三个模式,而且可以把其它的带有不同功能性的附加的延迟模式加到指令集中,以进一步增强编程的灵活性和可控性。
部分地由于可以定制指令集而并不限于先前所述的纯多周期或延迟的转移方法,在跳转延迟时隙控制中,利用上述三个不同的模式可以提供给程序员附加的灵活性。特别是,通过在程序内的确定指令中插入适当的跳转延迟模式编码,在一个处理器和一个指令集内,程序员可以获得多周期和延迟转移方法二者的有益特性。
表1图示了与上述三个延迟段模式相关的跳转延迟模式编码。在图示的实施例中,使用处理器指令字(IW)的两个二进制数据位来表示三个延迟段模式ND,D,和JD的其中之一:
表1
IW位 |
语法 |
模式 |
00 |
d |
如采取跳转则无延迟段指令执行—代之以一周期流水线阻塞或气泡。 |
01 |
.d |
总执行延迟段指令。 |
10 |
.jd |
仅当采取跳转才执行延迟段指令 |
11 | |
保留 |
表2是从表1定义的跳转延迟时隙模式中得到的一个真值表:
表2
|
条件真值 |
跳转延迟时隙模式 |
采取跳转 |
不采取跳转 |
.nd |
一个周期阻塞或气泡 |
延迟段指令执行 |
.d |
延迟段指令执行 |
延迟段指令执行 |
.jd |
延迟段指令执行 |
不延迟段指令执行 |
下面的汇编语言编码利用一个有条件的、到后面有一个数学(加)指令的程序位置‘目标’ 的转移指令(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
IW位 |
语法 |
模式 |
000 | |
(保留) |
001 |
.jd |
仅当采取跳转时执行延迟段指令 |
010 |
.d |
总是执行延迟段指令 |
011 |
.nd1 |
如采取跳转则不执行延迟段指令—代之以一周期流水线阻塞 |
100 | |
(保留) |
101 | |
(保留) |
110 | |
(保留) |
111 |
.nd2 |
如采取跳转则不执行延迟段指令—代之以两周期流水线阻塞 |
在示例的实施例中,存在于指令集内的跳转指令可以停止其它指令类型的执行(即“注销”),取决于两个因素:(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(ip2lpcc AND NOT
jp2condtrue);
ip2nojump <=(ip2jmp AND NOT ip2condtrue)OR(ip2lpcc 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 is:
PORT( 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;
begin
ip2bch<= ′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="17"> -->
<dp n="d17"/>
--循环回路设置指令--
ip2lpcc <=′1′WHEN ip2iv=‘1’ AND(ip2i =olpcc) ELSE
‘0’
--进行跳转/不跳转信号--
ip2jumping<=(ip2rjmpANDip2ondtrue)OR(ip2lpccANDNOTip2condtrue);
ip2nojump
<(ip2rjmpANDNOTip2condtrue)OR(ip2lpccANDip2condtrue);
--取消信号本身—
--
--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 USER
compile
write-format db-hierarchy-output db/delay_slot_noopt.db
rernove_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 50
set_input_delay 20 ip2condtrue -clock ck
set_input_delay t_in ip2dd -clock ck
set_input delay t_in ip2l -clock ck
set_input_delay t_in ip2iv -clock ck
set_output_delay 28 p2killnext -clock ck
compile
write-format db-hierarchy-output db/delay_slot_opt.db