数据处理器的制作方法与工艺

文档序号:11970796阅读:119来源:国知局
数据处理器的制作方法与工艺
数据处理器本发明申请是申请日为2009年2月12日、申请号为200910005794.X、发明名称为“数据处理器”的发明申请的分案申请。技术领域本发明涉及微型处理器、微型计算机等数据处理器,涉及能够实现对指令的有效代码分配的技术。

背景技术:
微型处理器在1984年由摩托罗拉公司开发出来的68020以来,长时间占据主流的是32位处理器。这是由于能够由32位指定的232B=4GB在大约20年间是足够大的地址空间。但是,由于伴随系统性能提高的所需存储器容量的增大以及存储器单价的降低,近年来,PC/服务器领域中处理超过4GB空间的64位处理器逐渐普及。而且,在嵌入式处理器中,也预测到会以追随PC/服务器领域的形式在几年、或最迟十年内变成64位。嵌入式处理器与性能最优先的PC/服务器用处理器不同,要谋求兼顾高效率和高性能。其结果,可实现高代码效率的16位固定长度指令集的RISC(ReducedInstructionSetComputer)型嵌入式处理器正在普及。高代码效率即使在片外存储器的大容量化发展的现在,也是在片内高速缓存、RAM、ROM的有效应用中所不可缺少的。但是,使这样的处理器变为64位,必须有效应用16位固定长度指令代码空间。另外,32位处理器时代长期持续的结果一般是,运算基本上为32位,8位、16位的数据在处理器的寄存器中扩展为32位来处理;或者,取4个8位数据或2个16位数据而以32位单位来处理。而且,即使在64位处理器中,在64位运算体系的基础上也需要支持这样的以32位为基本的运算体系。因此,在现有的64位处理器中,根据需要而对同一运算定义32位和64位这两种运算指令。其结果,在64位处理器中,运算指令数量增多,为了定义它们而需要的代码空间也增大。[非专利文献1]:PowerPCUserInstructionSetArchitectureBookIVersion2.02、InternetURL<http://www.ibm.com/developerworks/power/library/pa-archguidev2>、平成20年1月23日检索[专利文献1]:日本特开平06-337783号公报[非专利文献2]:SH-4A扩展功能软件指南、InternetURL<http://documentation.renesas.com/jpn/products/mpumcu/rjj09b0235_sh4asm.pdf>、平成20年1月23日检索[非专利文献3]:AMD64ArchitectureProgrammer’sManualVolumel:ApplicationProgramming,Revision3.11、InternetURL<http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24592.pdf>、平成20年1月23日检索

技术实现要素:
如上所述,为了使16位固定长度指令代码的RISC型嵌入式处理器变为64位而必须有效应用指令的代码空间(简称为指令代码空间)。尤其是32位处理器仅支持32位运算体系即可,与此不同,在64位处理器中需要支持32位和64位这两种运算体系。并且,为此情况而如现有的64位处理器那样对同一运算定义32位和64位这两种运算指令时,则在16位固定长度指令集中,难以压缩指令代码空间,难以构筑与现有的32位运算体系并列的64位运算体系。例如,具有32位运算体系的指令集的指令操作代码具有能够以8位加以表示的256种时,当要仅追加多个64位运算指令时,需要使操作代码的位数至少增加1位,指令代码空间变大,无法维持现有的32位运算指令体系。特别是,即使在作为64位运算的运算结果的低32位与32位运算的32位相同时,也需要在根据运算结果而生成的标志在32位与64位的运算中不同的情况下定义不同的指令。当仅是生成的标志不同时,通过增加由1条指令生成的标志数量,能够削减生成标志的指令数量。例如,在文献1的PowerPC中,由1条指令生成正、负、零、溢出、进位这样的多种标志。而且在文献2中,生成多种用于多个容量的标志。即,生成“种类数量”ד尺寸数量”的标志。在文献2中为“4种”ד2尺寸”=“8标志”。但是,当增加由1条指令生成的标志数量时,需要增加使用标志的指令数量。例如,条件分支指令的分支条件一般为由“使用哪个标志”与“设置还是清除使用的标志”的组合来决定的方式。在文献2的条件分支指令中,指定标志使用方式的字段取5位,可以指定32种。因此,条件分支指令数量为32ד标志以外的变化数量”。作为标志以外的变化而考虑延迟槽(Delayslot)的有无、分支目标地址指定方法等。这样,“标志数量的增加”有利于“生成标志的指令(标志生成指令)数量的削减”,但却导致“使用标志的指令(标志使用指令)数量的增多”。因此,如文献2那样,当增加标志数量时,并不一定能够削减指令数量。文献2以CISC(ComplicatedInstructionSetComputer)为前提,作为主要标志生成指令的运算指令由于还能够指定存储器操作数,因此其数量较多。而且,若能增加标志数量来进行数量较多的“标志生成指令数量的削减”,则能够削减指令数量。而一般的RISC为32位固定长度指令集,指令代码空间具有富余,因此指令数量削减需求较小。因此在RISC中,并没有调整标志数量而实现了指令数量的最小化的实例。但是,在作为16位固定长度的指令集RISC的处理器64位化中,指令代码空间没有富余。另外,RISC的标志生成指令数量少于CISC。因此,仅增加标志数量并未发现最佳点。并且,做成为标志生成指令数量与标志使用指令数量的平衡变得良好的方式是重要的。本发明要解决的第一课题在于:在标志生成指令数量少的指令集中调整标志数量来削减指令数量,谋求对它们进行定义所需的代码空间的最小化,如作为16位固定长度指令集的RISC那样,能实现指令代码空间没有富余的处理器的64位化。另外,一般即使增加标志数量,使用由1条指令生成的多个标志的例子也较少,多为仅使用1个的情况。而当组合使用由多条指令生成的标志时,存在能够进行有效编程的情况。但是,每当执行指令而更新多个标志时,后续指令会重写在先指令生成的标志,因此难以组合使用标志。因此,需要将生成的标志逐次传送至寄存器,在寄存器中进行逻辑运算后立刻返回给标志,判断在寄存器中进行逻辑运算后的结果作为数值而生成标志;或者,每当生成标志时进行条件分支或条件执行。这些方式的执行指令数量将会变多或者分支频率增加,因此效率恶化,性能降低。特别是,在将某数据作为运算对象观察时,其尺寸并不是为两种,因此,即使生成对于多种尺寸的标志,其一方也是不需要的。通过合适的符号扩展或零扩展,虽然有可能对于多种尺寸的标志变为相同的值,从而无论是哪一方都能使用,但不存在改变成一方为不需要的情况。因此,在定义了多个标志的情况下,与同时更新相比,仅更新所需的标志,保留想要保留的标志,能够实现标志间的运算也是有效的。但是,为了实现上述效果,需要指定标志生成指令更新的标志与标志使用指令使用的标志这两者的种类和情况,需要最大的指令代码空间。本发明要解决的第二课题在于:不使用较大的指令代码空间而灵活运用以指令代码空间的最小化为主要目的而定义的多个标志,能够组合使用由多个指令生成的标志。简单说明本申请公开的发明中代表性技术方案的概要如下。在本发明中,采用的观点是在标志生成指令数量较多的情况下,通过增加1条指令生成的标志数量,使得标志生成指令数量的减少超过标志使用指令数量的增加,从而实现指令数量的削减,根据这样的观点,采用定义生成与操作数的数据尺寸对应的多个标志的指令这样的方案。总而言之,在缩小指令集计算机型的数据处理器中,在指令集中添加可对多个数据尺寸的操作数进行运算处理的、不拘泥于如下操作数的数据尺寸而生成与各个数据尺寸对应的标志的指令,其中,该如下操作数为对较大数据尺寸的操作数的低位一侧进行与对较小数据尺寸的操作数的运算处理相等的处理而被进行运算处理的操作数。作为第二观点,为了定义多个标志,仅更新所需的标志,保留想要保留的标志,能够进行标志间的运算,而采用指定标志生成指令更新的标志与标志使用指令使用的标志这两者的种类和位置这样的方案。即,在指令集中添加前置指令,该前置指令在指定与上述指令生成的各个数据尺寸所对应的标志中的由后续指令生成的标志来进行更新的标志的基础上,分别进行修饰的后续指令生成的标志中要使用的标志的指定、以及所指定的2个标志间的逻辑运算的指定。简单说明本申请公开的发明中代表性的技术方案所获得的效果如下。即,根据第一观点的发明,构成指令集的指令的种类(指令数量)整体上减少。因此,能够有利于指令代码空间没有富余的RISC型数据处理器中的指令代码的代码空间缩小。例如,如作为16位固定长度指令集的RISC那样,能够实现指令代码空间没有富余的处理器的64位化。根据第二观点的发明,能够有效应用以指令代码空间的最小化为主要目的来定义的多个标志而不使用较大的指令代码空间,能够组合使用由多个指令所生成的标志。附图说明图1是概略例示出本发明数据处理器中的处理器核心结构的框图。图2是概略例示出本发明实施方式1的处理器核心的执行单元框图。图3是概略例示出本发明实施方式2的标志更新前置指令的说明图。图4是概略例示出本发明实施方式2的处理器核心指令解码单元的框图。图5是概略例示出本发明实施方式2的处理器核心的执行单元的框图。图6是概略例示出本发明实施方式2的处理器核心的工作的说明图。图7是例示出本发明数据处理器的概略结构的框图。具体实施方式1.实施方式的概要首先,说明本申请公开的发明的代表性实施方式的概要。代表性实施方式的概要说明中标记括号来进行参照的附图中的参照符号不过是例示出带该标记的构成要素的概念中所包含的部件。首先具体说明上述各个观点。首先,关于第一观点,16位固定长度指令集的RISC型32位处理器的标志生成指令数量,例如在文献3的SH-4A处理器核心中,操作数字段中8位的指令为17条、4位的指令为12条。使用并更新标志的指令作为标志生成指令来进行计数。另外,取消了与64位处理器化无关的浮动小数点指令。而标志使用指令数量中,操作数字段中8位的指令为4条、4位的指令为1条。并且,标志数量为1。标志数量越少,标志生成指令数量越多,标志使用指令数量越减少,因此在SH-4A处理器核心中,29条指令对5条指令,标志生成指令数量大约为较多的6倍。而且,29条标志生成指令中,26条指令因操作数尺寸而工作不同,因此当简单增加64位指令时,会增加26条指令。其结果是,标志生成指令数量与标志使用指令数量的比为55比5,成为11倍。这样当标志生成指令数量较多时,通过增加1条指令生成的标志数量,能够改变比率而削减指令数量。作为增加的方式,考察定义与标志的种类对应的标志的方式(1)、定义与操作数尺寸对应的标志的方式(2)、或定义与其双方对应的标志的方式(3)。首先,考察定义与标志的种类对应的标志的方式(1)。SH-4A处理器核心的标志种类中包括带符号尺寸、无符号尺寸、零、溢出、进位、移出位等。并且,标志为1位,因此在标记哪个指令的标志中,其意义会变化。在不同的运算标记不同种类的标志的情况下,即使增加标志的种类,指令数量也不减少,因此,当着眼于仅同一运算中生成的标志不同时,比较指令成为候补。当比较指令使带符号尺寸、无符号尺寸、零这3个标志成为别的标志时,能够使18条指令成为8条指令。其它的指令生成零、溢出、进位、移出位等,但由于运算不同,因此即使以种类来划分标志,也没有指令数量削减的效果。另一方面,标志使用指令数量与标志种类数量对应而变为3倍,从5条指令变为15条指令。其结果,与标志有关系的指令数量从60条指令减少10条指令并增加10条指令,因此保持60条指令不变。接着,考察定义与操作数尺寸对应的标志的方式(2)。当对每个32位与64位的操作数尺寸设置标志时,能够使因操作数尺寸而工作不同的29条指令中的、低32位的工作相同的15条指令成为32位与64位共用的指令。而标志成为2倍,因此标志使用指令数量从5条指令变为10条指令。其结果,与标志有关系的指令数量从60条指令减少15条指令并增加5条指令,因此减少为50条指令。并且,考察定义与其双方对应的标志的方式(3)。首先,通过使标志为3种,能够使比较指令从18条指令变为8条指令。而且通过按每个尺寸来定义标志能够使8条指令变为4条指令。另外,比较指令以外的标志生成指令中的低32位的工作能够削减6条相同的指令。而标志使用指令数量对应于标志种类数量而成为6倍,从5条指令变为30条指令。其结果是,与标志有关的指令数量从60条指令减少20条指令并增加25条指令,因此增加为65条指令。如以上那样,根据指令数量最小化这样的观点可知,当使标志数量最优化时,根据操作数尺寸来定义标志的方式(2)是最佳的。指令占用(消耗)的指令代码空间根据指令在操作数字段中使用的位数而变化较大。在N位中,占用指令代码空间整体的2的(16-N)乘方分之一的空间。例如,当为8位时占用1/256的空间,当为4位时占用1/4096的空间。因此,重要的是削减8位操作数字段的指令数量。因此,当限定为具有8位操作数字段的指令(也简称为8位操作数字段指令)来进行上述考察时,32位处理器的与标志有关的8位操作数字段指令中,生成指令为17条,使用指令算上4条条件分支指令而共计为21条指令,其中,因操作数尺寸而工作不同的指令为15条生成指令,因此当简单追加64位指令时,生成指令增加15条指令而成为32条指令,共计成为36条指令。首先,在定义与标志种类对应的标志的方式(1)中,通过使标志为3种,能够使比较指令从17条指令变为6条指令,相反条件分支指令从4条指令增加为12条指令,因此与标志有关的指令数量从36条指令减少8条指令并增加8条指令,因此保持36条指令不变。接着,在定义与操作数尺寸对应的标志的方式(2)中,能够使因操作数尺寸而工作不同的15条指令中的、低32位的工作相同的10条指令成为以32位与64位共用的指令。而标志成为2倍,因此条件分支指令数量从4条指令变为8条指令。其结果,与标志有关的指令数量从36条指令减少10条指令并增加4条,因此减少为30条指令。并且,考虑(研究)定义与其双方对应的标志的方式(3)。首先,通过使标志为3种,能够使比较指令从14条指令变为6条指令。而且通过按每个尺寸地定义标志,能够使6条指令变为3条指令。另外,能够削减3条比较指令以外的标志生成指令中的低32位的工作相同的指令。而标志使用指令数量根据标志种类数量而成为6倍,从4条指令变为24条指令。其结果,与标志有关的指令数量从36条指令减少14条指令并增加20条指令,因此增加为42条指令。如以上那样可知,即使限定为对指令代码空间占用的影响较大的8位操作数字段指令,根据操作数尺寸来定义标志的方式(2)是最佳的。而当在文献2中应用于CISC时,对指令的代码尺寸最小化最佳的方式(3)在RISC中成为最差的方式。在作为本发明第一课题的标志生成指令数量较少的指令集中,调整标志数量来削减指令数量,谋求对它们进行定义所需的代码空间的最小化,如作为16位固定长度指令集的RISC那样实现指令代码空间没有富余的处理器的64位化是通过定义与操作数尺寸对应的标志来达成的。具体而言通过以下来实现:对32位与64位的操作数尺寸的每一个设置标志,合并32位与64位操作数的指令中低32位的工作相同的指令,增加与标志数量增加对应的条件分支等标志使用指令数量。由此,构成指令集的指令种类(指令数量)作为整体而变少。关于第二观点,如课题中描述的那样,定义多个标志而仅更新所需的标志,保留要保留的标志,为了实现标志间的运算而需要指定标志生成指令更新的标志、以及标志使用指令使用的标志这两者的种类与情况,需要最大的指令代码空间。为了解决该问题,定义修饰后续指令的指令、即前置指令即可。前置指令的组成类似于可变长度指令集的组成,如文献4的87页开始记载的那样,已经存在使用前置指令的处理器。并且,只要本领域的技术人员就能够实现其组成。而且,重要的是定义什么样的前置指令。在本发明中,作为标志更新前置指令来进行要更新的标志的指定、后续指令生成的标志中的要使用的标志的指定、以及指定的2个标志间的逻辑运算的指定。当使标志为2种类、使运算为8种类时,能以5位的操作数字段进行指定,不需要较大的指令代码空间。因为也能够指定逻辑运算,因此能够以可抑制要保留的标志的更新的指令集来以与用其他指令进行逻辑运算时相同的指令数来执行标志间的逻辑运算。由此,能够有效应用以指令代码空间的最小化为主要目的来定义的多个标志而不使用较大的指令代码空间,能够组合使用由多个指令所生成的标志。根据上述观点来说明代表性的实施方式。〔1〕缩小指令集计算机型的数据处理器在指令集中具有可对多个数据尺寸的操作数进行运算处理的、不拘泥于如下操作数的数据尺寸而生成与各个数据尺寸对应的标志(newU,newT)的第一指令,其中,该如下操作数为对较大数据尺寸的操作数的低位一侧进行与对较小数据尺寸的操作数的运算处理相等的处理而被进行运算处理的操作数。由此,构成指令集的指令种类(指令数量)在整体上变少。因此,能够有利于指令的代码空间没有富余的RISC型数据处理器中的指令代码空间的缩小。例如,能够如作为16位固定长度指令集的RISC那样实现指令代码空间没有富余的处理器的64位化。〔2〕项1的数据处理器在上述指令集中还具有例如选择使用由上述第一指令生成的标志的第二指令。〔3〕项1的数据处理器在上述指令集还具有前置指令,该前置指令例如指定与上述第一指令生成的各个数据尺寸对应的标志中的由后续指令生成的标志来进行更新的标志,修饰指定的该后续指令。由此,能够定义多个标志而仅更新需要的标志。〔4〕项1的数据处理器在上述指令集中具有前置指令,该前置指令例如在指定与上述第一指令生成的各个数据尺寸对应的标志中的由后续指令生成的标志来进行更新的标志的基础上,分别进行修饰的后续指令生成的标志中要使用的标志、以及所指定的2个标志间的逻辑运算的指定。由此,能够定义多个标志而仅更新所需标志,保留要保留的标志,实现标志间的运算。因此,能够灵活应用以指令代码空间的最小化为主要目的来定义的多个标志,而不使用较大的指令代码空间,组合使用由多个指令所生成的标志。〔5〕在项1的数据处理器中,例如上述多个数据尺寸为32位和64位。〔6〕在项2的数据处理器中,例如上述标志为多个数据尺寸的每一个的带符号尺寸、无符号尺寸、零、溢出、进位、或移出位。〔7〕具有指令执行部(EXU)的缩小指令集计算机型的其他数据处理器在指令集中具有用于执行带标志的生成的处理的第一指令和用于执行带标志的使用的处理的第二指令。上述指令执行部具有进行根据指令解码结果的处理的运算电路(ALU、SFT)、标志锁存电路(U、T)以及标志选择电路(FMUX)。上述运算电路按照上述第一指令的解码结果,不拘泥于如下操作数的数据尺寸而生成与各个数据尺寸对应的标志,该如下操作数为可对多个数据尺寸的操作数进行运算处理的对较大的数据尺寸的操作数的低位一侧进行与对于较小的数据尺寸的操作数的运算处理相等的处理而被进行运算处理的操作数。上述标志锁存电路按照上述第一指令的解码结果锁存上述运算电路中生成的标志。上述标志选择电路按照上述第二指令的解码结果,选择上述标志锁存电路中锁存的标志。〔8〕在项7的数据处理器中,例如,上述运算电路对每个数据尺寸生成带符号尺寸、无符号尺寸、零、溢出、进位、以及移出位的标志,以第一指令从生成的标志中选择一种标志来按每个操作数尺寸锁存在上述标志锁存电路中。〔9〕在项8的数据处理器中,例如上述多个数据尺寸为32位和64位。〔10〕另一其他的数据处理器在指令集中具有进行运算处理而可生成多个标志的运算指令、以及修饰后续指令的前置指令,该前置指令指定上述运算指令生成的多个标志中的由后续指令生成的标志来进行更新的标志。〔11〕另一其他的数据处理器在指令集中具有进行运算处理而可生成多个标志的运算指令以及前置指令,该前置指令在指定上述运算指令生成的多个标志中的由后续指令生成的标志来进行更新的标志的基础上,分别进行要修饰的后续指令生成的标志中的要使用的标志的指定、以及指定的2个标志间的逻辑运算的指定。2.实施方式的详细进一步详细描述实施方式。以下,根据附图详细说明用于实施本发明的优选方式。在用于说明实施发明的优选方式的所有附图中,对具有同一功能的部件标记同一符号,省略其重复说明。《实施方式1》图7例示出本发明的数据处理器DPU。数据处理器DPU以中央处理装置那样的处理器核心CPU为中心,具有以内部总线与其连接的非易失性存储器ROM、易失性存储器RAM、输入输出接口电路IOC、以及外部总线接口电路EBIF等,例如,通过互补型MOS校正电路制造技术而形成在单晶硅等一块半导体衬底上。非易失性存储器ROM被利用为处理器核心CPU执行的程序等的存储区域,易失性存储器RAM被利用为处理器核心CPU的工作区域等。图1概略例示出处理器核心CPU的模块结构。例如,处理器核心CPU由指令高速缓存IC、指令获取单元IFU、指令解码单元IDU、执行单元EXU、加载存储单元LSU、数据高速缓存DC以及总线接口单元BIU构成。指令获取单元IFU将指令地址IA输出到指令高速缓存IC中,指令高速缓存IC将从指令地址IA所指定的地址开始获取的指令FI返回到指令获取单元IFU。高速缓存失败的情况下,将失败后的地址输出到总线接口单元BIU来作为外部指令地址EIA,接收外部获取指令EI后立刻将指令FI返回到指令获取单元IFU。指令解码单元IDU从指令获取单元IFU接收指令OP,并输出分支控制信号BRC。另外,对指令OP进行解码,分别向执行单元EXU和加载存储单元LSU输出执行控制信息EXC和加载存储控制信息LSC,并且访问寄存器文件RF,将执行用操作数EXA和EXB提供给执行单元EXU,将加载存储用地址操作数LSA、LSB以及存储数据SD提供给加载存储单元LSU。并且,从执行单元EXU接收执行结果EXO,从加载存储单元LSU接收加载数据LD,并存储在寄存器文件RF中。执行单元EXU从指令解码单元IDU接收执行控制信息EXC、执行用操作数EXA以及EXB,按照执行控制信息EXC进行执行运算,然后将执行结果EXO返回给指令解码单元IDU。加载存储单元LSU从指令解码单元IDU接收加载存储控制信息LSC、加载存储用地址操作数LSA和LSB、以及存储数据SD,按照加载存储控制信息LSC执行加载存储,然后将加载数据LD返回指令解码单元IDU。另外,加载存储时,对数据高速缓存DC输出数据地址DA,在存储时,还输出数据高速缓存存储数据DCSD。并且,数据高速缓存DC在加载时将数据高速缓存加载数据DCLD返回给加载存储单元LSU,存储时存储数据高速缓存存储数据DCSD。高速缓存失败的情况下,向总线接口单元BIU输出失败的地址来作为外部数据地址EDA,接收外部加载数据ELD后立刻将数据高速缓存加载数据DCLD返回给加载存储单元LSU。另外,伴随高速缓存失败的数据拷回(copyback)、未进行高速缓存的数据在外部存储时,输出那些数据来作为外部存储数据ESD,并且输出那些数据的地址来作为外部数据地址EDA。总线接口单元BIU分别从指令高速缓存IC或数据高速缓存DC接收外部指令地址EIA或外部数据地址EDA,向处理器核心CPU之外输出外部地址EA来请求数据,作为外部数据ED来进行接收,并且分别作为外部获取指令EI或外部加载数据ELD来进行输出。另外,从数据高速缓存DC接收外部数据地址EDA和外部存储数据ESD,作为外部地址EA和外部数据ED来输出到处理器核心CPU之外,并输出存储请求。图2概略例示出本发明实施方式1的处理器的执行单元EXU。执行单元EXU由算术逻辑运算器ALU、移位器SFT、32位标志复用器(multiplexer)FM32、64位标志复用器FM64、32位移位输出复用器M32、64位移出位复用器M64、输出复用器OMUX、32位运算用标志T、64位运算用标志U、标志复用器FMUX构成。另外,虽然未图示,但来自指令解码单元IDU的执行控制信息EXC被输入到各构成要素来对各构成要素进行控制。算术逻辑运算器ALU从指令解码单元IDU接收执行用操作数EXA和EXB,按照执行控制信息EXC来执行各种算术逻辑运算,然后,输出执行结果ALO、32位标志组(带符号大GT32、无符号大GU32、零Z32、溢出V32、进位C32)以及64位标志组(带符号大GT64、无符号大GU64、零Z64、溢出V64、进位C64)。移位器SFT从指令解码单元IDU接收执行用操作数EXA和EXB,按照执行控制信息EXC来执行各种移位运算,然后,输出执行结果SFO、32位左移出位SL32、64位左移出位SL64、以及右移出位SR。并且,在32位移出位复用器M32中,根据移位运算的方向,选择32位左移出位SL32或右移出位SR,并作为32位标志组之一的、即32位移位输出标志SF32来输出。另外,在64位移出位复用器M64中,根据移位运算的方向,选择64位左移出位SL64或右移出位SR,并作为64位标志组之一的、即64位移位输出标志SF64来输出。输出复用器OMUX根据执行控制信息EXC来选择执行结果ALO和执行结果SFO中的一个,并作为执行结果EXO来输出。32位标志复用器FM32按照指令的种类而从32位标志组中选择标志,生成新的32位标志newT,作为32位标志T的输入。同样,64位标志复用器FM64按照指令的种类而从64位标志组中选择标志,生成新的64位标志newU,并作为64位标志U的输入。32位标志T和64位标志U锁存这些输入,并输出到标志复用器FMUX。标志复用器FMUX根据使用的指令来选择32位标志T和64位标志U中的一个,并作为标志输出FO来输出。标志复用器FMUX使用锁存后的值来选择下一次指令中使用的标志,虽未图示,但能够通过使用锁存前的值来接收下一次指令的控制信息作为来自指令解码单元IDU的执行控制信息EXC。根据上述实施方式1,能够整体上减少构成指令集的指令的种类(指令数量)。因此,能够有利于缩小指令代码空间中无富余的RISC型数据处理器中的指令代码的代码空间,能够如16位固定长度指令集的RISC那样,实现指令代码空间中无富余的处理器的64位化。《实施方式2》图3概略例示出本发明实施方式2的标志更新前置指令。标志更新前置指令进行要更新的标志的指定、后续指令生成的标志中要使用的标志的指定、所指定的2个标志间的逻辑运算的指定。当将标志取为32位标志T和64位标志U这两种时,使用1位来用于指定要更新的标志,使用1位来指定后续指令生成的标志中的要使用的标志。另外,当将运算取为6种时,使用3位来用于指定上述所指定的2个标志间的逻辑运算。因此,标志更新前置指令能够用5位操作数字段(field)来指定,不需要较大的指令代码空间。当由16位固定长度指令集进行定义时,如图3所示,用11位的操作类型指定字段OPT来指定是标志更新前置指令,用2位的来源目标(sourcedestination)指定字段SD来指定要更新的标志和指定后续指令生成的标志中要使用的标志,用3位的逻辑运算指定字段TYP来指定上述指定的2个标志间的逻辑运算。逻辑运算的种类为逻辑与“AND”、逻辑或“OR”、逻辑与非“NAND”、逻辑或非“NOR”、逻辑异或“XOR”、新标志“NEW”这六种,分别分配TYP字段000~101。在该运算的种类中添加来源和来源目标标志来作为助记符(mnemonic)。SD字段的高位为来源,低位为目标,0表示指定32位标志T,1表示指定64位标志U。工作栏的newT表示后续指令生成的32位标志,newU表示后续指令生成的64位标志,&=、|=、^=、=、~是含义与C语言相同的运算符号,&=表示取右边值与左边值的逻辑与并代入到左边的变量中,|=表示取右边的值与左边的值的逻辑或并代入到左边的变量中,^=表示取右边的值与左边的值的逻辑异或并代入到左边的变量中,=表述将右边的值代入到左边的变量中,~表示逻辑反相右侧的值。例如,在SD=00、TYP=000的情况下,逻辑运算的种类为逻辑与AND,更新的标志(目标标志)为32位标志T,后续指令生成的标志中要使用的标志(来源标志)也为32位标志T,助记符为ANDTT,工作为T&=newT,U:不变,因此取32位标志T与后续指令生成的标志中的32位标志T的逻辑与,并存储在32位标志T中,64位标志U为未更新的标志更新前置指令。并且,后续指令的工作将用没有前置指令时所生成的标志来更新32位标志T和64位标志U的工作替换为上述标志更新前置指定的工作。本实施方式2与上述实施方式1结构上的不同点表现在指令解码单元IDU和执行单元EXU上,因此处理器核心的代表性的模块结构与实施方式1同样地示于图1中。图4概略例示出本发明实施方式2的处理器的指令解码单元IDU。虽然例示了1个周期发送1条指令的标量处理器,但如文献4那样,以往已经存在使用前置指令的处理器,只要是本领域的技术人员就能够应用到前置解码和发送方式的超标量、顺序输出等其他发送形式。另外,在本实施例中,以仅标志更新前置指令是前置指令为前提,但只要是本领域的技术人员也能够扩展为也可处理其他前置指令。指令解码单元IDU由主解码器DEC和前置解码器PF-DEC构成。主解码器DEC对从指令获取单元IFU提供的指令OP进行解码,将执行控制信息op-exc作为实效控制信息EXC的一部分来输出给执行单元EXU,将32位标志更新控制op-wrt和64位标志U的更新控制op-wru输出给前置解码器PF-DEC,将加载存储控制信息LSC输出给加载存储单元LSU,并且将寄存器文件控制信息RFC输出给寄存器文件RF。寄存器文件控制信息RFC中,以所发送指令到达寄存器写入阶段的定时来提供写入信息。文件RF根据寄存器文件控制信息RFC来将执行用操作数EXA和EXB提供给执行单元EXU,将加载存储用地址操作数LSA、LSB以及存储数据SD提供给加载存储单元LSU。而且,从执行单元EXU接收执行结果EXO,从加载存储单元LSU接收加载数据LD,并存储在寄存器文件RF中。前置解码器PF-DEC对指令OP的操作类型指定字段OPT进行解码,当指令OP为标志更新前置时标记有效标志V,当指令OP不是标志更新前置时进行清除。另外,锁存2位的来源目标指定字段SD来分别作为前置来源标志指定信息pfsrc和前置目标标志信息pfdst。而且,锁存逻辑运算指定字段TYP来作为前置逻辑运算指定信息pftyp。当指令OP为标志更新前置指令时,也将其提供给主解码器DEC。此时,主解码器DEC将标志更新前置作为非操作代码,输出控制信息,使得执行单元EXU和加载存储单元LSU不进行任何工作。在指令OP为标志更新前置指令的下一周期中,主解码器DEC对后续指令进行解码,如上述那样输出各种控制信息。而在前置解码器PF-DEC中,使用在前周期中锁存的信息来进行处理。由于指令OP为标志更新前置指令,因此标记有效标志V,作为逻辑运算指定信息typ、32位标志来源信息srt、64位标志来源信息sru、32位标志更新控制wrt以及64位标志更新控制wru而输出前置逻辑运算指定信息prtyp、前置标志来源指定信息pfsrc、前置标志来源指定信息pfsrc、前置目标标志信息pfdst为0、以及前置目标标志信息pfdst为1这样的信息。结果是,作为用于标志生成的控制信息,使来自主解码器的32位标志更新控制op-wrt和64位标志更新控制op-wru无效,并输出标志更新前置指令的信息。而在指令OP不是标志更新前置指令的下一周期中,未标记有效标志V,因此作为逻辑运算指定信息typ、32位标志来源信息srt、64位标志来源信息sru、32位标志更新控制wrt和64位标志更新控制wru而分别输出101、0、1、32位标志更新控制op-wrt以及64位标志更新控制op-wru。结果是,主解码器DEC的输出被作为指令解码单元IDU来输出。主解码器DEC不进行输出而作为逻辑运算指定信息typ、32位标志来源信息srt以及64位标志来源信息sru来分别输出101、0、1,这样指定指令原本的工作。上述逻辑运算指定信息typ、32位标志来源信息srt、64位标志来源信息sru、32位标志更新控制wrt以及64位标志更新控制wru与由主解码器DEC生成的行控制信息op-exc一起被作为实效控制信息EXC而输出给执行单元EXU。图5概略例示出本发明实施方式2的处理器的执行单元EXU。与图2所示的实施方式1的处理器的执行单元EXU公共的部分具有相同的功能。追加部分是32位标志来源复用器S32、64位标志来源复用器S64、32位标志逻辑运算器FL32、以及64位标志逻辑运算器FL64。32位标志来源复用器S32按照来自指令解码单元IDU的32位标志来源信息srt来选择新的32位标志newT或新的64位标志newU,提供给32位标志逻辑运算器FL32,32位标志逻辑运算器FL32根据所提供的标志和32位标志T,按照逻辑运算指定信息typ来进行逻辑运算,将结果作为锁存到32位标志T中的新的值。同样,64位标志来源复用器S64根据来自指令解码单元IDU的64位标志来源信息srt,选择新的32位标志newT或新的64位标志newU,提供给64位标志逻辑运算器FL64,64位标志逻辑运算器FL64根据所提供的标志和64位标志U,按照逻辑运算指定信息typ来进行逻辑运算,将结果作为锁存到64位标志U中的新的值。如上述那样,利用本发明实施方式2的指令解码单元IDU和执行单元EXU,能够实现基于不需要较大的指令代码空间的标志更新前置指令的、抑制要保留的标志的更新、由多条指令所生成的标志间的逻辑运算。接着,通过具体例子说明标志更新前置指令的效果。图6概略例示出本发明实施方式2的处理器的工作例。图6的C程序为64位指针p不是NULL指针、32位变量i大于10时使{}内执行这样的程序。NULL指针为没有任何指向的状态,值为0。在包含标志更新前置指令的汇编程序中,当记述该C程序时,如图6那样以4条指令来记述。首先在第一步,在“CMP/EQp,0”中以64位尺寸比较64位指针p和NULL指针值0,将比较结果存储在64位标志U中。在64位指针p为NULL指针的情况下,设置64位标志U。即为U=(p==NULL)。此时,32位标志T中存储有比较64位指针p与NULL指针值0的低32位后的结果,但本程序中不使用。第二步中,对标志更新前置指令ORNTU进行解码。在第三步中,在“CMP/GTi,10”中当32位变量i大于10时,标记新的32位标志newT。并且,由于标志更新前置指令ORNTU而成为U|=~newT,因此U=(p==NULL)|~(i>10)。此时,32位标志T不变。结果,在64位标志U中加入C程序的if指令的条件式的反相值。在第四步中,因“BT.D_after_if_close”而U为1,即当条件式不成立时跳转到if指令后面,因此不执行if指令。如以上那样,当使用标志更新前置指令时,则能够汇总多个比较结果,因此在1次条件分支中,结束条件判断。当不使用标志更新前置指令时,则每当条件判断时需要进行条件分支,难以使其高速化。或者在将生成的标志传送至通用寄存器中来进行逻辑运算的情况下,代替第二步的标志更新前置指令而将执行标志传送指令MOVUR0所生成的U标志传送至通用寄存器R1,在第四步的条件分支之前,将执行标志传送指令MOVTR0所生成的T标志传送至通用寄存器R1,以NOTR0来进行逻辑反相,以AND#1,R0来清除高位,以ORR0,R1来生成(p==NULL)|~(i>10)。进而,以SHLRR1来将(p==NULL)|~(i>10)存储到32位标志T中。因此,指令数量增加4条指令而成为2倍,性能降低。这样,标志更新前置指令能够使复杂的条件判断高速化。以上根据实施方式具体说明了由本发明人完成发明,但本发明并不限定于上述实施例,在不脱离其主旨的范围内,当然可以进行各种变更。例如,标志更新前置指令如以ORNTU为代表的那样,在指定由后续指令生成的标志所更新的标志的基础上,还具有分别进行后续指令生成的标志中要使用的标志的指定、以及指定的2个标志间的逻辑运算的指定的功能。本发明不限于上述情况,也可以是仅具有如下功能的指令:指定在先生成的与各个数据尺寸对应的标志中的、由于后续指令生成的标志来进行更新的标志。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1