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

文档序号:6503866阅读:334来源:国知局
专利名称:用于流水线化处理器中跳转控制的方法及装置的制作方法
本专利申请要求下列申请以优先权申请于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完成一次乘法运算。
流水线深度会依体系结构而异。在这里上下文中,“深度”一词意指出现于流水线中的分立阶段的数目。总的来说,一条流水线的阶段愈多,运行程序愈快,但也会愈加难以编程——虽然对程序员来说流水线作用显而易见。大多数流水线化的处理器为三阶段(取指令,解码,执行)或四阶段(例如取指令,解码,取操作数,执行或者还可为取指令,解码/取操作数,执行,写回),不过也使用更多或更少的阶段。
在开发一个流水线化处理器的指令集时,必须考虑到若干“冒险”。例如,所谓“结构”或“资源争夺”冒险起因于重叠指令争夺同样的资源(例如总线,寄存器,或其它功能单元),这些冒险通常用一个或更多的流水线阻塞加以解决。所谓“数据”流水线冒险发生于读/写冲突的情况,这种冲突会改变存储器或寄存器存取的顺序。“控制”冒险则一般由程序流中的转移或类似变化所产生。
流水线化处理器通常需要联锁以解决许多这类冒险。例如,考虑这种情况在一个稍前流水线阶段中的一个后继指令(n+1)需要来自于一个稍后阶段的指令n的结果。对上述问题的一个简单解答是以一个或一个以上的时钟周期来延迟处于解码阶段中的操作数计算。然而这种延迟的一个结果,即为对处理器的一个给定指令的执行时间部分地由流水线内围绕该指令的指令所决定。这就使对处理器的编码优化复杂化,因为使程序员在编码内确定联锁情况通常是困难的。
可在处理器中用“记分牌”来实现联锁;在这种方法中,为每个处理器寄存器附加一位,用以作为寄存器内容的指示符;具体地说,指示是否(i)寄存器内容已被更新并因此而可以使用,或者(ii)内容正在进行由其它寄存器所写入这样的改动。在有些体系结构中这一记分牌也用于生成联锁,这种联锁防止执行要依赖于记分牌寄存器内容的指令,直至记分牌指示该寄存器可用为止。这种方法被称为“硬件”联锁,这是因为这种联锁纯粹通过记分牌的检查、经由处理器中的硬件而被调用。这种联锁生成“阻塞”,它们阻碍了对于数据依赖指令的执行(从而阻塞了流水线),直至寄存器可用为止。
另外,还可将NOP(空操作操作码)插入编码中,以在需要时延迟相应的流水线阶段。这后一种方法被称为“软件”联锁,具有加大编码长度及程序——使用了要求联锁指令的程序——复杂性的缺点。就其编码结构而言,大量使用了软件联锁的设计同样往往不能充分优化。
在处理器设计中另一个重要的考虑是程序转移或“跳转”。所有的处理器都支持某种类型的转移指令。简而言之,转移指的是程序流被中断或改变的情况。其它的操作——例如循环设置和子例程调用指令——地以类似方式中断或改变程序流。“跳转延迟时隙”一词经常用于表示在一条流水线中,处于解码中的转移——或称跳转——之后的时隙。当等待转移/装入指令完成时,执行在转移(或装入)之后的指令。转移可为有条件的(亦即基于一个或更多的参数的真或数值)或无条件的。还可为绝对的(例如基于绝对内存地址),或是相对的(例如基于相对地址以及不依赖于任一特定的内存地址)。
转移会对流水线系统具有深远影响。在一个转移指令被插入并由处理器的指令解码阶段进行解码(指示该处理器必须开始执行其它的存取)前,在该指令序列中的下一个指令字即已被取出并插入这一流水线中。对于这一问题的一个解答即为清除所取出的指令字并暂停——或称阻塞——进一步的取操作,直至转移指令被执行完毕,如图2所示。但这一方法由于在若干指令周期内执行转移指令的需要,而通常相等于在处理器设计中所使用的流水线深度。这种结果对于处理器速度及效率是有害的,因为在这一期间处理器不能进行其它操作。
此外,还可使用延迟转移方法。这一方法中,当一个转移指令到达解码阶段时,流水线并不进行清除,而一般是在该转移被执行之前,执行出现于流水线稍早阶段的后续指令。因此当转移指令被解码时,该转移即表现得是以执行流水线中所有后续指令所需的指令周期的数目而延迟。转移方法与上述的多周期转移相比,提高了流水线效率,然而也增加了基本编码的复杂性(还减少了程序员的理解)。
基于上述,处理器设计员及程序员必须与非联锁体系结构相对,仔细权衡相应于利用硬件或软件联锁的折衷方案。而且,必须考虑在具有选定联锁模式的指令集内,转移指令(以及延迟或多周期转移)的交互作用。对流水线及联锁,需要有一种改进方法,该方法既优化了处理器流水线性能,而同时又为程序员提供了附加的编码灵活性。而且,随更多的流水线阶段(甚至于多条多阶段流水线)添加进处理器设计中,在该处理器内改进流水线性能及编码优化的益处可成倍增加。另外,以某种特定方式、方便地综合这些经过改进的流水线处理器设计以及使用现有综合工具的能力,对于设计员和程序员也具有明显效益。
发明概述本发明通过提供经过改进的、用于在流水线化的处理器体系结构内执行指令的方法和装置,而满足了上述这些要求。
在本发明第一方面,公布了一种经过改进的、控制CPU跳转的方法。在第一个实施例中,提供了一种流水线联锁模式,以此检测一个设置转移指令的指令与一个后续转移之间的关系;防止这类指令——它们直接在预定增量内的转移之前——影响转移,所以允许将一个设置标志指令调度到直接在该转移之前的时隙内。可用一个空时隙(或NOP)占据在该转移之前的时隙。在第二个实施例中,通过一个具有一种编码结构的模式而避免了这个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的逻辑设备进行综合。
发明详述现对附图进行编号,全部附图中同样的编号指同样的部分。
在此所用的“处理器”一词意为任何集成电路或其它能够根据至少一个指令字完成一次操作的电子器件,包括——但不限于——诸如本申请受让人所生产的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硬件描述语言进行了综合——的特定实施例,这类实施例在某些方面受到约束,然而这些实施例对于本发明的设计过程来说仅仅为示范性的及说明性的。而且,尽管对于这些实施例规定了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为-2nop ;留下一个空时隙(“填充”)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表达式如下<pre listing-type="program-listing"><![CDATA[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’;]]></pre>注意,如果在阶段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 codexor.f 0,r0,-2 ;测试是否r0为-2bz 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
注意,为生成阻塞,还要求检测出现于阶段2的有效转移指令(例如“ip2bch”)。因此,在下列两个条件同时出现时即生成一个阻塞1.在阶段3的一个指令正在试图设置标志;2.在阶段2的一个转移指令需要使用这些新标志下列示范性编码结构被用于v6以确定这两个条件是否为真表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所示,处理器100为一个ARC微型处理器类的CPU设备,它特别地具有一个处理器核心1002,芯片上存储器1004,以及一个扩展接口1006。这个设备使用定制的、利用本发明的方法900而取得的VHDL设计生产,该设计随后被综合为一个逻辑级表达式,然后使用在半导体技术中为人所熟知的编译、布局以及生产技术归约为一个物理设备。
本领域技术人员会认识到,图7处理器可包含任何普通可得的外围设备,如串行通信设备,并行接口,计时器,高电流驱动器,模数(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)1002,随机存储存储器(RAM)1004,以及存储器控制器1005。还提供了一个存储设备1006(如硬盘驱动器或CD-ROM),输入设备1007(如键盘或鼠标),和显示设备1008(如CRT、等离子体或TFT显示器),以及必要的总线以支持主机和外围设备部件的运行。前述的VHDL描述及综合引擎以一个计算机程序目标代码表达式的形式储存在RAM 1004和/或存储设备1006中,以在设计综合期间由CPU 1002使用,后者在计算技术中为人所熟知。用户(未示)在系统运行期间,通过由程序显示器及输入设备1007、将设计结构规范输入进综合程序而综合逻辑设计。由程序所生成的经过综合的设计储存于存储设备1006中以便以后检索,显示于图形显示设备1008,或经由一个串行或并行接口1012而输出到一台外部设备,如打印机、数据存储设备、其它外围设备——如果需要的话。
虽然以上详述已表明、描述、并指出了本发明应用到各个实施例上的新颖特性,然而应认识到本领域技术人员可对所表述的设备或过程的形式及细节作出各种各样的省略、替换或改变而不偏离本发明。本描述绝不意味着限制、而只应将其作为本发明一般原理的说明。本发明的范围应参照权利要求书而确定。
附录A用于综合的示范性跳转流水线VHDL(v5)<pre listing-type="program-listing"><![CDATA[library ieee;use ieee.std_logic_1164.all;entity jump_pipe_v5 isPORT( ip2bch ; in std_ulogic;   imload3 ; in std_ulogic;   holdup12 ; in std_ulogic;   ihp2_ld_nsc ; in std_ulogic;   xholdup12; in std_ulogic;   ivalid ; in std_ulogic;   ibch_holdp3 ; out std_ulogic;end jump_pipe_v5;architecture synthesis of jump_pipe_v5 isbeginibch_holdp3<= ‘1’ WHEN ip2bch=‘1’   AND imload3=‘0’   AND((holdup12 OR ihp2_ld_nsc)=‘1’   OR xholdup12=‘1’   OR ivalid=‘0’) ELSE   ‘0’;end synthesis;]]></pre>
附录B用于综合的示范性跳转流水线VHDL(v6)<pre listing-type="program-listing"><![CDATA[library ieee.arc;use ieee.std_logic 1164.all;use arc.arcutil.all;entity jump_pipe_v6 isPORT(ip2iv;instd_ulogic;   ip3iv;instd_ulogic;   ip3setflags ;instd_ulogic;   ip2i ;instd_ulogic_vector(4 downto 0);   ip3i ;instd_ulogic_vector(4 downto 0);   ip3c ;instd_ulogic_vector(5 downto 0);   ip3_fbit ;instd_ulogic);   ibch_holdp2 ;out std_ulogic);end jump_pipe_v6;architecture synthesis of jump_pipe_v6 is   signal bch p3flagset; std_ulogic;   signal p2bch ; std_ulogic;begin--Detect branch in stage 2  ip2bch<= ‘1’WHEN ip2iv=‘1’AND (ip2i=obcc OR ip2i=oblcc   OR ip2i=olpcc   OR ip2i=ojcc)ELSE   ‘0’;--------------------ibch_holdp2Branch protection system------------------------ ----In order to reduce code size,we want to remove the need to have a NOP--between setting the flags and taking the associated branch.----e.g.sub.f 0,r0,23 ;is r0=23?--nop ;padding instruction.<<----bz r0_is_23 ;----In order that the compiler does not have to generate these instructions,--we can generate a stage 2 stall if an instruction in stage 3 is attempting--to set the flags.Once this instruction has completed,and has passed out--of stage 3,then stage 2 will continue.----We need to detect the following types of valid instruction at stage 3;----i.Any ALU instruction which sets the nags(p3setflags)--ii.Jcc.F or JLcc.F--iii.A FLAG instruction--ibch_p3flagset<=ip3iv WHEN(ip3setflags=‘1’) --ALU   OR((ip3i=ojcc)AND(ip3_fbit=‘1’))--Jcc/JLcc   OR((ip3i=oflag)AND(ip3c=so_flag)) --FlagELSE‘0’;--In order to generate the stall,we also need to detect a valid branch instruction--present in stage 2(ip2bch).----We generate a stall when the two conditions are present together----a.An instruction in stage 3 is attempting to set the flags--b.A branch instruction at stage 2 needs to use these new flags------Both of the following cases remove the link between setting the flags and the followingbranch,either because the flags don’t get set,or because the branch doesn’t--check the flags.----i. Conditional flag set instruction at stage 3 does not set flags--e.g.,add.cc.f r0,r0,r0,resulting in c=1----ii. Branch at stage 2 uses the AL(always)condition code.--   ibch_holdp2<=‘1’WHEN(ibch_p3flagset=‘1’)--p3 setting flags   AND(ip2bch=‘1’)ELSE--branch in p2   ‘0’;end synthesis;]]></pre>
权利要求
1.一种在具有一条流水线的处理器内控制程序跳转的方法,包括提供包括多个指令字的程序,至少一个所述字包括一个设置标志指令,而且至少另一个所述指令字包括了一个在所述流水线内跟随所述至少一个设置标志指令之后的跳转指令;检测至少一个这类情况此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;以及在所述流水线内阻塞所述至少一个跳转指令的执行,至少直到由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止。
2.如权利要求1的方法,其中检测的动作包括检测何时所述至少一个设置标志指令处于所述至少一个跳转指令的预定增量内;以及生成一个信号。
3.如权利要求2的方法,其中阻塞的动作包括检测所述信号;以及在检测到信号时,在所述流水线的执行阶段内将所述至少一个跳转指令阻塞一个指令周期。
4.如权利要求3的方法,其中所述至少一个跳转指令包括有条件转移指令。
5.一种在流水线化的处理器中控制程序转移的方法,包括提供一个包括多个指令字的指令集,所述的多个指令字包括至少一个设置标志指令字以及至少一个转移指令字,所述至少一个设置标志指令字在所述指令集内先于所述的至少一个转移指令字;在所述指令集内定义至少一种联锁功能,其中在所述设置标志指令字以预定增量而先于所述的至少一个转移指令字时,由所述至少一个设置标志指令字所设置的标志才能为所述处理器所识别;以及在所述处理器上运行所述指令集。
6.如权利要求5的方法,其中所述增量包括一个处理器周期。
7.如权利要求5的方法,进一步包括了基于至少一个参数的值而确定所述增量的值,所述的至少一个参数至少部分地涉及出现于流水线的至少一个阶段的指令字的类型。
8.一种由包括下列步骤所综合的处理器设计方法编辑特定于该设计的一个第一文件以包括至少一个后续以至少一个跳转指令的设置标志指令,所述至少一个跳转指令的执行至少部分地由被所述至少一个设置标志指令所设置的标志所确定;定义至少一个库文件的位置;使用所述第一文件、所述库文件以及用户输入信息而生成一个稿本;运行所述稿本以生成一个定制的描述语言模型;以及基于所述描述语言模型而综合所述设计。
9.如权利要求8的方法,其中综合的动作包括基于所述定制的描述语言模型而运行综合稿本。
10.如权利要求9的方法,进一步包括生成一个用以仿真的第二文件,并用所述第二文件仿真所述设计。
11.如权利要求10的方法,进一步包括了基于所述仿真而评估设计的可接受性的动作。
12.如权利要求11的方法,进一步包括了修订设计以产生一个经修订的设计、并将所述经修订的设计再次综合的动作。
13.如权利要求8的方法,其中编辑的动作包括了选择多个相应于所述设计的输入参数的动作,所述参数包括(i)一寄存器配置;和(ii)一存储器接口配置。
14.一种机器可读数据存储设备,包括一种适于储存多个数据位的数据存储媒体;和一个以多个数据位表现并储存于所述数据存储媒体中的计算机程序,所述程序适于运行在计算机系统的处理器上并综合集成电路逻辑,以用于具有一条流水线并包括一个指令集的处理器,该指令集有至少一个设置标志指令,至少一个转移指令以及至少一个在其之间形成的联锁,其中所述至少一个联锁包括用于检测至少一次这类情况的装置此时一个或更多的由所述设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;用于在所述流水线内阻塞所述至少一个跳转指令的执行、至少直到由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止的装置。
15.如权利要求14的数据存储设备,其中所述的数据存储媒体为只读光盘存储器(CD-ROM),而且所述的多个数据位包括了所述程序的目标代码表达式。
16.一种数字处理器,包括具有一条多阶段指令流水线的处理器核心,所述核心适于解码并运行一个包括了多个指令字的指令集;一个在所述处理器核心与一个信息存储设备之间的数据接口;一个包括了多个指令字的指令集,至少一个所述指令字包括了一个设置标志指令,而且至少另一个所述指令字包括了一个跳转指令,该跳转指令在所述流水线内跟随于所述的至少一个设置标志指令,所述处理器与所述指令集进一步适配于(i)检测至少一次这类情况此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;(ii)在所述流水线内阻塞所述至少一个跳转指令的执行,至少直到由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止。
17.如权利要求14的处理器,其中所述至少一个跳转指令包括一个具有相应逻辑条件的有条件转移指令,由所述至少一个有条件转移指令所指定、跳转到所述信息存储设备内的地址的执行,由所述逻辑条件所确定。
18.一种具有至少一条流水线及相应数据存储设备的数字处理器,其中在所述至少一条流水线内指令的执行由包括以下步骤的方法所控制提供包括多个指令字的一个指令集,至少一个所述字包括一个设置标志指令,而且至少另一个所述指令字包括了一个在所述流水线内跟随所述至少一个设置标志指令之后的跳转指令;检测至少一个这类情况此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;和在所述流水线内阻塞所述至少一个跳转指令的执行,至少直到由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止。
19.如权利要求18的方法,其中所述的至少一条流水线包括一条至少3阶段流水线,该3阶段流水线包括了取指令、解码及执行阶段。
20.一种在具有一条多阶段流水线以及相应存储设备的数字处理器的程序内控制转移的方法,包括在所述数据存储设备中储存一个指令集,所述指令集包括多个指令字,至少一个所述字包括一个设置标志指令,而且至少另一个所述指令字包括了一个在所述流水线内稍前阶段的跳转指令,该稍前阶段先于所述至少一个设置标志指令;检测至少一个这类情况此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;和在所述流水线内将所述至少一个跳转指令的执行阻塞至少一个指令周期。
21.一种用于综合用在数字处理器内的逻辑设计的装置,包括一个中央处理器;一个可操作地连接于所述中央处理器的数据存储设备,所述数据存储设备适配于储存并检索一个计算机程序;一个输入设备,适配于根据来自于所述系统的用户的输入而生成信号;一个计算机程序,储存于所述数据存储设备,所述程序适于接收所述信号并允许所述用户对特定于该设计的一个第一文件输入信息,以包括至少一个跳转指令,所述至少一个跳转指令包括至少一个跳转联锁,所述至少一个跳转联锁适于阻塞在所述指令集内至少一个指令的执行;定义至少一个库文件的位置;使用所述第一文件、所述库文件以及用户输入信息而生成一个稿本;运行所述稿本以生成一个定制的描述语言模型;以及基于所述描述语言模型而综合所述设计。
22.一种数字处理器,包括具有一条多阶段数据流水线的处理装置,所述处理装置适配于解码并执行一个包括多个指令字的指令集;用于储存指令集的装置;数据接口装置,用于在所述处理装置与所述用于储存数据的装置之间传输数据;和一个指令集,储存于所述用于的装置中,包括一个第一指令字,适于在被执行时改变至少一个在所述处理装置内的变量的状态;一个第二指令字,适于影响在所述指令集内的转移,所述转移至少部分地依赖于所述至少一个变量的状态;以及联锁装置,用于检测这种情况此时所述转移会受到所述至少一个变量的状态的影响,并且在这种情况被检测到时阻塞所述第二指令字的执行。
23.一种用于综合用在数字处理器内的逻辑设计的装置,包括用于处理数据的装置;用于储存数据的装置,所述用于储存的装置可操作地连接于所述用于处理的装置,并且适配于储存并检索一个计算机程序;用于输入信息的装置,可操作地连接于所述用于处理的装置,所述用于输入信息的装置适配于根据来自所述系统用户的输入而生成信号;一个计算机程序,储存于所述数据存储设备,所述程序适于检索所述信号而且包括对特定于该设计的一个第一文件输入信息、以包括至少一个跳转联锁的装置,所述的至少一个跳转联锁包括用于检测何时一个跳转指令会受到一个先前设置标志指令的影响的装置;和用于阻塞所述设置标志指令的执行、直到所述跳转指令已被执行为止的装置;用于定义至少一个库文件的位置的装置;用于使用所述第一文件、所述库文件以及用户输入信息而生成一个稿本的装置;用于运行所述稿本以生成一个定制的描述语言模型的装置;和用以基于所述描述语言模型而综合所述设计的装置。
24.一种在具有一条流水线的处理器内控制程序跳转的方法,包括提供适于运行在所述处理器上的一个指令集,包括一个第一设置标志指令;一个第二设置标志指令;一个跳转指令,所述跳转指令在所述流水线中跟随于所述第一设置标志指令及第二设置标志指令之后并至少部分地依赖于由所述第一及第二设置标志指令所设置的标志,所述第二设置标志指令在所述跳转指令之前一个预定增量内;解码所述第一设置标志指令;执行所述第一设置标志指令,从而在所述处理器内设置至少一个标志;解码所述第二设置标志指令;在对其加以执行之前阻塞所述第二设置标志指令;解码所述跳转指令;以及至少部分地基于所述至少一个标志而执行所述跳转指令。
25.如权利要求24的方法,其中所述增量包括一个处理器指令周期。
26.如权利要求24的方法,其中所述处理器流水线包括一条至少三阶段的流水线,该流水线包括了取指令、解码及执行阶段。
27.如权利要求24的方法,其中设置至少一个指令的动作包括以所述处理器的算术逻辑单元(ALU)而设置多个标志。
28.如权利要求24的方法,进一步包括了分析所述第二设置标志指令以确定由所述第二指令所设置的标志会影响由所述跳转指令所进行的跳转。
29.一种在具有一条流水线的处理器内控制程序跳转的方法,包括提供一个包括多个指令字的指令集,每个所述字都包括多位,至少一个所述字包括一个设置标志指令,而且至少另一个所述指令字包括了一个在所述流水线内跟随所述至少一个设置标志指令之后的跳转指令;以多个数值中的一个而对所述至少一个跳转指令的所述数据位赋值;检测至少一个这类情况此时一个或更多的由所述至少一个设置标志指令所设置的标志会影响所述至少一个跳转指令的后续执行;和当所述至少一个跳转指令被解码时,基于所述至少一个数据位的所述被赋予的值,而控制在所述流水线内至少一个后续指令的执行;其中在所述流水线内所述至少一个跳转指令的执行被阻塞,至少直到由所述至少一个设置标志指令所设置的所有标志均被设置完毕为止。
全文摘要
一种在流水线化的处理器(CPU)或用户可定制微处理器内用于控制及执行指令的改进方法及装置。在本发明第一方面,公布了一种允许跳转指令联锁的用户控制的改进方法。在一个实施例中,要求在一个设置标志的指令与一个作为该标志结果而进行的转移之间最少有一个周期;用联锁来检测其前面有设置标志指令的转移,以确保直接在该转移之前的这个指令不会影响转移结果。在第二实施例中,跟随在一个其标志会影响跳转结果的设置标志指令之后的跳转指令被阻塞,直到所有标志均被设置完毕。在本发明第二方面,公布了一种包括了上述联锁的综合处理器设计的方法。还公布了使用上述方法所综合的示范性门逻辑,以及一个能够实现这些方法的计算机系统。
文档编号G06F9/318GK1357122SQ00808459
公开日2002年7月3日 申请日期2000年5月12日 优先权日1999年5月13日
发明者J·R·H·黑克威尔, J·桑德斯 申请人:Arc国际美国控股公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1