处理器和编译器的制作方法

文档序号:6396123阅读:139来源:国知局
专利名称:处理器和编译器的制作方法
技术领域
本发明涉及一种DSP(Digital Signal Processor)或CPU(CentralProcessing Unit)等处理器和生成由该处理器执行的指令的编译器,尤其是涉及适于声音或图像等的信号处理的处理器和编译器。
背景技术
随着多媒体技术的发展,要求有高速执行以声音或图像等的信号处理为代表的媒体处理的处理器。作为适应于该要求的现有处理器,有支持SIMD(Single Instruction Multiple Data)型指令的处理器。例如美国Intel公司的MMX Pentium(R)、SSE PentiumIII等。MMXPentium以存储在64比特长度的MMX寄存器中的最大8个整数为对象,由一个指令来扫描相同的操作。
在这种现有处理器中,如[オ-ム公司开发局著[IA-64处理器基本讲座]オ-ム公司、1999年8月25日、p.129的图4.32]中所记载的那样,通过软件流水线操作来进行处理的高速化。
图56是表示基于现有4级软件流水线操作的处理器动作的图。为了实现软件流水线操作,将用于表示是否执行指令的预测的预测标志存储在预测寄存器中。此外将软件流水线操作的序言(prolog)部的处理结束前的次数存储在循环计数器中,将结局(epilogue)部的处理结束前的次数存储在结局计数器中。
但是,在上述现有处理器中,将循环计数器、结局计数器和预测标志作为不同硬件资源进行管理。因此,处理器内必需持有很多资源,存在电路规模变大的问题。
另外,伴随电路规模变大,还存在处理器的消耗功率变大的问题。

发明内容
因此,本发明鉴于这种状况作出,其目的在于提供一种电路规模小、且可以低功耗高速执行循环处理的处理器。
为了实现上述目的,本发明的处理器是译码并执行指令的处理器,具备存储在条件执行指令的预测中所用的多个条件执行用标志的标志寄存器;译码指令的译码装置;和执行由所述译码装置译码的指令的执行装置,在所述译码装置译码循环指令的情况下,所述执行装置根据由软件流水线操作将作为对象的循环展开成条件执行指令时的结局部所对应的所述多个条件执行用标志中任一值,结束所述循环的重复处理。
这样,根据由软件流水线操作将循环展开为条件执行指令时的结局部的条件执行用标志来进行循环重复处理的结束判断。因此,不必为了判断循环处理结束而使用计数器等特别的硬件资源,处理器的电路规模不会变大。另外,与此同时可减小处理器的功耗。
另外,所述标志寄存器中还存储用于所述结束判断的循环用标志,所述执行装置将所述结局部中的所述多个条件执行用标志中任一值写入所述循环用标志。例如,所述执行装置在将所述软件流水线操作的级数设为N级(N为3以上的整数),将流水线的级数设为按所述结局部结束处理的顺序升序计数时,将第(N-2)级的流水线执行的条件执行指令所对应的条件执行用标志的值写入所述结局部在1周期后的所述循环用标志中。
这样,使用由软件流水线操作的级数特定的条件执行用标志的值来进行循环的结束判断。因此,无论软件流水线操作的级数如何,都不必为了判断循环处理结束而使用计数器等特别硬件资源,电路规模不会变大。另外,与此同时可减小处理器的功耗。
另外,上述处理器还包含暂时存储所述译码装置译码的所述指令的指令缓冲器,所述译码装置在根据所述结局部的所述条件执行用标志的值来判断为不执行所述条件执行指令的情况下,在所述循环结束之前,不从所述指令缓冲器中读出所述条件执行指令。
这样,当结局部不执行条件执行指令时,在着重的循环处理结束之前,该软件流水线操作中不执行条件执行指令。因此,其间,不必从指令缓冲器中读出条件执行指令,与此同时可减小处理器的功耗。
本发明另一方面的编译器是将源程序编译成可并行处理的处理器用机器语言程序的编译器,包含对所述源程序进行语法分析的解析(parse)步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含循环的情况下,在由软件流水线操作展开所述循环时的序言部中配置在所述循环紧前面执行的指令。
这样,在由软件流水线操作展开循环时的序言部中配置在循环之前执行的指令。因此,可削减软件流水线操作的空阶段,可高速执行程序。与此同时,可减小处理器执行由该编译器编译的程序的功耗。
本发明的再一方面的编译器是将源程序编译成可并行处理的处理器用机器语言程序的编译器,包含对所述源程序进行语法分析的解析(parse)步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的标志、和在不满足该条件时的条件执行指令的预测中所用的标志不同,来进行分配。
这样,即使象C语言中的if-else语句那样在规定条件成立时执行的指令与不成立时执行的指令不同,也使用于预测的标志不同,以对应于各个指令。由此,仅通过改变标志值就可实现与条件分支指令等效的处理。这样,因为可以简易处理来实现条件分支指令,所以可减小执行由该编译器编译的程序的处理器功耗。
另外,本发明不仅可实现为执行这种特征指令的处理器或生成特征指令的编译器,也可实现为对多个数据等的运算处理方法或实现为包含特征指令的程序。另外,不用说,也可经CD-ROM(CompactDisc-Read Only Memory)等记录媒体或因特网等传送媒体来流通这种程序。


参照说明本发明一特定实施例的附图,本发明的上述和其它目的、优点、和特征将从下面的描述中变得明显。其中,图1是本发明的处理器的示意框图。
图2表示该处理器的算术逻辑、比较运算器的示意图。
图3是表示该处理器的桶形(barrel)移位器的结构框图。
图4是表示该处理器的变换器的结构框图。
图5是表示该处理器的除法器的结构框图。
图6是表示该处理器的乘法/积和运算器的结构框图。
图7是表示该处理器的指令控制部的结构框图。
图8是表示该处理器的通用寄存器(R0-R31)的结构图。
图9是表示该处理器的链接寄存器(LR)的结构图。
图10是表示该处理器的分支寄存器(TAR)的结构图。
图11是表示该处理器的程序状态寄存器(PSR)的结构图。
图12是表示该处理器的条件标志寄存器(CFR)的结构图。
图13是表示该处理器的累加器(M0,M1)的结构图。
图14是表示该处理器的程序计数器(PC)的结构图。
图15是表示该处理器的PC保存用寄存器(IPC)的结构图。
图16是表示该处理器的PSR保存用寄存器(IPSR)的结构图。
图17是表示该处理器的流水线动作的时间图。
图18是表示该处理器的指令执行时的各流水线动作的时间图。
图19是表示该处理器的排列动作的图。
图20A是表示该处理器执行的16比特指令的格式图。
图20B是表示该处理器执行的32比特指令的格式图。
图21A和图21B是说明属于种类[ALUadd(加法)类]的指令的图。
图22A和图22B是说明属于种类[ALUsub(减法)类]的指令的图。
图23A和图23B是说明属于种类[ALUlogic(逻辑运算)类]的指令的图。
图24A和图24B是说明属于种类[CMP(比较运算)类]的指令的图。
图25A和图25B是说明属于种类[mul(乘法)类]的指令的图。
图26A和图26B是说明属于种类[mac(积和运算)类]的指令的图。
图27A和图27B是说明属于种类[msu(积差运算)类]的指令的图。
图28A和图28B是说明属于种类[MEMld(存储器读出)类]的指令的图。
图29A和图29B是说明属于种类[MEMstore(存储器写出)类]的指令的图。
图30是说明属于种类[BRA(分支)类]的指令的图。
图31A和图31B是说明属于种类[BSasl(算术桶形移位)类]的指令的图。
图32A和图32B是说明属于种类[BSlsr(逻辑桶形移位)类]的指令的图。
图33是说明属于种类[CNVvaln(算术变换)类]的指令的图。
图34A和图34B是说明属于种类[CNV(一般变换)类]的指令的图。
图35是说明属于种类[SATvlpk(饱和处理)类]的指令的图。
图36A和图36B是说明属于种类[ETC(其它)类]的指令的图。
图37是说明指令[jloop C6,Cm,TAR,Ra]的详细动作的图。
图38是说明指令[settar C6,Cm,D9]的详细动作的图。
图39是表示序言结局去除型2阶段软件流水线操作的图。
图40是表示C语言的源程序列表的图。
图41是表示使用本实施方式的指令jloop和指令settar生成的机器语言程序的实例图。
图42是说明指令[jloop C6,C2:C4,TAR,Ra]的详细动作的图。
图43是说明指令[settar C6,C2:C4,D9]的详细动作的图。
图44是表示序言结局去除型3阶段软件流水线操作的图。
图45是表示C语言的源程序列表的图。
图46是表示使用本实施方式的指令jloop和指令settar生成的机器语言程序的实例图。
图47是说明指令[jloop C6,C1:C4,TAR,Ra]的详细动作的图。
图48是说明指令[settar C6,C1:C4,D9]的详细动作的图。
图49是表示C语言的源程序列表的图。
图50是表示使用本实施方式的指令jloop和指令settar生成的机器语言程序的实例图。
图51是表示使用图47和图48中分别示出的指令jloop和指令settar的4级软件流水线操作的动作图。
图52是说明图47所示指令jloop用条件标志C6的设定方法一例的图。
图53是表示将循环前后招待的指令分别取入序言部和结局部中的4级软件流水线操作的动作图。
图54是说明图47所示指令jloop用条件标志C6的设定方法另一例的图。
图55是说明图47所示指令jloop用条件标志C6的设定方法再一例的图。
图56是表示现有4级软件流水线操作的动作图。
具体实施例方式
说明本发明的处理器的结构。本处理器是指令的并行性比通常的微计算机高,将AV(Audio Visual)媒体类信号处理技术领域作为目标来开发的通用处理器。通过在便携电话、移动AV设备、数字TV(television)、DVD(Digital Versatile Disc)等中使用共同的芯片,可使软件的再利用性提高。另外,本处理器可以高性能、高性能价格比来实现多数的媒体处理,并且可提供以开发效率提高为目的的高级语言开发环境。
图1是本处理器的示意结构框图。处理器1由指令控制部10、解码部20、寄存器文件30、运算部40、I/F(Interface)部50、指令存储部60、数据存储部70、扩展寄存器部80和I/O(Input/Ooutput)接口部90构成。
运算部40由执行SIMD型指令的运算的算术逻辑、比较运算器41-43、乘法/积和运算器44、桶形移位器45、除法器46以及变换器47构成。乘法/积和运算器44执行最长具有65比特运算结果的累计处理。另外,乘法/积和运算器44与算术逻辑、比较运算器41-43和48一样,可执行SIMD型指令。并且,处理器1最大可并行执行4列算术逻辑、比较运算指令。
图2表示算术逻辑、比较运算器41-43和48的示意结构图。算术逻辑、比较运算器41-43和48分别由ALU(Arithmetic and LogicalUnit)41a、饱和处理部41b和标志部41c构成。ALU41a由算术运算器、逻辑运算器、比较器和TST(test)器构成。ALU41a可应对的运算数据的比特幅度为8比特(并行使用4个运算器的情况)、16比特(并行使用2个运算器的情况)、和32比特(由1个运算器来处理32比特数据的情况)。另外,标志部41c等还对算术运算结果进行溢出的检测和条件标志的生成。将算术运算器、逻辑运算器、比较器和TST器的结果算术右移位,由饱和处理部41b来进行饱和检测、最大、最小值检测、绝对值生成处理。
图3是表示桶形移位器45的结构框图。桶形移位器45由选择器45a和45b、上位桶形移位器45c、下位桶形移位器45d以及饱和处理部45e构成。桶形移位器45执行数据的算术移位(2的补数体系的移位)或逻辑移位(无符号移位)。桶形移位器45通常将32比特或64比特的数据用作输入输出数据。对于存储在寄存器30a或30b中的被移位数据,用其它寄存器或即值来指定移位量。桶形移位器45对输入数据执行左63比特-右63比特的算术移位或逻辑移位,并输出比特长度与输入比特长度相同的数据。
另外,桶形移位器45可根据SIMD型指令,移位8比特、16比特、32比特或64比特的数据。例如,桶形移位器45可并行处理4列8比特数据的移位。
算术移位是2的补数体系的移位。算术移位用于加法或减法时的小数点的位置重合或2的幂次方的乘法(2的1次方、2的2次方、2的(-1)次方、2的(-2)次方等)。
图4是表示变换器47的结构框图。变换器47由饱和块(SAT)47a、BSEQ块47b、MSKGEN块47c、VSUMB块47d、BCNT块47e和IL块47f构成。
饱和块(SAT)47a对输入数据进行饱和处理。饱和块(SAT)47a通过具有两个饱和处理32比特数据的块,支持并行2列的SIMD型指令。
BSEQ块47b计数从MSB(Most Significant Bit)开始连续的0或1。
MSKGEN块47c将指定的比特区间输出为1,将此外的区间输出为0。
VSUMB块47d将输入数据区分成指定的比特幅度,输出其总和。
BCNT块47e计数输入数据中为1的比特数。
IL块47f将输入数据区分成指定的比特幅度,输出置换了各数据块的值。
图5是表示除法器46的结构框图。除法器46将被除数设为64比特,将除数设为32比特,每32比特输出商和余数。除法器46在求出商和余数之前,必需34个周期。除法器46可处理带符号的数据与无符号的数据等两种数据。其中,被除数与除数的有无符号的处理是相同的。另外,除法器46具有输出溢出标志、0除法标志的功能。
图6是表示乘法/积和运算器44的结构框图。算法、积和运算器44由两个32比特乘法器(MUL)44a、44b、三个64比特加法器(Adder)44c-44e、选择器44f和饱和处理部(Saturation)44g构成,进行以下的乘法、积和运算。
·32×32比特的signed的乘法、积和、积差运算·32×32比特的unsigned的乘法·16×16比特的并行两列signed的乘法、积和、积差运算·32×16比特的并行两列signed的乘法、积和、积差运算对整数、固定小数点格式(h1、h2、w1、w2)的数据进行这些运算。另外,对这些运算进行舍入、饱和。
图7是表示指令控制部10的结构框图。指令控制部10由指令高速缓冲存储器10a、地址管理部10b、指令缓冲器10c-10e、10h、跳跃(jump)缓冲器10f和旋转部(rotation)10g构成,进行通常时和分支时的指令供给。指令控制部10通过具有4个128比特的指令缓冲器(指令缓冲器10c-10e、10h),应对最大并行执行数。指令控制部10对于分支处理,在分支执行之前,将分支目的地的指令存储在跳跃缓冲器10f中,同时,将分支目的地地址事先存储在后述的TAR寄存器中(settar指令)。因此,在分支时,指令控制部10使用存储在TAR寄存器中的分支目的地地址和存储在跳跃缓冲器10f中的分支目的地指令,进行分支处理。
另外,处理器1是具有VLIW结构的处理器。这里,所谓VLIW结构是在1个指令字中存储多个指令(加载、存储、运算、分支等),并同时执行全部这些指令的结构。编程器通过将可并行执行的指令记述为一个发行组,可使处理器并行处理该发行组。在本说明书中,用“;;”来表示发行组。下面示出表述例。
(例1)mov r1,0x23;;该指令记述意味着仅执行指令mov。
(例2)mov r1,0x38add r0,r1,r2sub r3,r1,r2;;这些指令记述意味着并行执行3列指令mov、add、sub。
指令控制部10识别发行组,发送到解码部20。解码部20分析发行组的指令,控制必要的资源。
下面,说明本处理器1具备的寄存器。
处理器1的寄存器组如下表1所示。
表1另外,处理器1的寄存器组(由后述的条件标志寄存器等管理的标志)如下表2所示。
表2图8是表示通用寄存器(R0-R31)30a的结构图。通用寄存器(R0-R31)30a是构成成为执行对象的任务的上下文的一部分,并存储数据或地址的32比特的寄存器群。另外,通用寄存器R30和R31分别使用硬件作为全局指针、堆栈指针。
图9是表示链接寄存器(LR)30c的结构图。另外,与该链接寄存器(LR)30c相关,处理器1还具备未图示的保存寄存器(SVR)。链接寄存器(LR)30c是存储函数调用时的返回地址的32比特的寄存器。另外,保存寄存器(SVR)是保存函数调用时的条件标志寄存器的条件标志(CFR.CF)的16比特的寄存器。链接寄存器(LR)30c与后述的分支寄存器(TAR)一样,也用于循环高速化。从链接寄存器(LR)30c的下位1比特始终读出0。在向链接寄存器(LR)30c的下位1比特写入时必需写入0。
例如,在处理器1执行call(brl,jmp)指令时,处理器在链接寄存器(LR)30c保存返回地址,在保存寄存器(SVR)中保存条件标志(CFR.CF)。另外,在执行jmp指令的情况下,处理器1从链接寄存器(LR)30c中取出返回地址(分支目的地地址),使程序计数器(PC)复原。并且,处理器1在执行ret(jmpr)指令的情况下,从链接寄存器(LR)30c中取出分支目的地地址(返回地址),并存储(复原)到程序计数器(PC)中。并且,处理器1从保存寄存器(SVR)中取出条件标志,并存储(复原)到条件标志寄存器(CFR)32的条件标志区域CFR.CF中。
图10是表示分支寄存器(TAR)30d的结构图。分支寄存器(TAR)30d是存储分支目标地址的32比特寄存器。分支寄存器(TAR)30d主要被用于循环的高速化。从分支寄存器(TAR)30d的下位1比特始终读出0。在向分支寄存器(TAR)30d写入时必需写入0。
例如,在执行jmp,jloop指令时,处理器1从分支寄存器(TAR)30d中取出分支目的地地址,并存储在程序计数器(PC)中。在将存储在分支寄存器(TAR)30d中的地址的指令存储在分支用指令缓冲器中的情况下,分支补偿(penalty)变为0。通过在分支寄存器(TAR)30d中存储循环的开头地址,可高速化循环处理。
图11是表示程序状态寄存器(PSR)31的结构图。程序状态寄存器(PSR)31是构成成为执行对象的任务的上下文的一部分,存储下述的处理器状态信息的32比特的寄存器。
比特SWE表示VMP(Virtual Multi-Processor)的LP(LogicalProcessor)切换激活。
表示不允许LP切换,[1]表示允许LP切换。
比特FXP表示固定小数点模式。
表示模式0,[1]表示模式1。
比特IH是中断处理标志,表示在可屏蔽的中断处理中。[1]表示中断处理中,
表示不是中断处理中。一旦产生中断,则自动设置成[1]。比特IH用于知道根据rti指令从中断复原的位置是在其它中断处理中还是程序处理中。
比特EH是表示错误或NMI处理中的标志。
表示不是错误处理中或NMI中断处理中,[1]表示错误处理中或NMI中断处理中。当EH=1时,在产生非同步错误或NMI的情况下,屏蔽比特EH。另外,在VMP激活时,屏蔽VMP的屏极(plate)切换。
比特PL[1:0]表示特权等级。
表示特权等级0,即处理器抽象(abstract)等级,
表示特权等级1(不可设定),[10]表示特权等级2,即系统程序等级,[11]表示特权等级3,即用户程序等级。
比特LPIE3表示LP固有中断3激活。[1]表示允许中断,
表示不允许中断。
比特LPIE2表示LP固有中断2激活。[1]表示允许中断,
表示不允许中断。
比特LPIE1表示LP固有中断1激活。[1]表示允许中断,
表示不允许中断。
比特LPIE0表示LP固有中断0激活。[1]表示允许中断,
表示不允许中断。
比特AEE表示失配(misalignment)例外激活。[1]表示允许失配例外,
表示不允许失配例外。
比特IE表示等级中断激活。[1]表示允许等级中断,
表示不允许等级中断。
比特IM[7:0]表示中断屏蔽。定义至等级0-7,可在各个等级进行屏蔽。等级0是最高的等级。处理器1中仅受理未由IM屏蔽的中断请求中具有最高等级的中断请求。一旦受理中断请求,则硬件自动屏蔽受理的等级以下的等级。IM
是等级0的屏蔽,IM[1]是等级1的屏蔽,IM[2]是等级2的屏蔽,IM[3]是等级3的屏蔽,IM[4]是等级4的屏蔽,IM[5]是等级5的屏蔽,IM[6]是等级6的屏蔽,IM[7]是等级7的屏蔽。
reserved表示预约比特。从reserved中总是读出0。在向reserved写入时必需写入0。
图12是表示条件标志寄存器(CFR)32的结构图。条件标志寄存器(CFR)32是构成成为执行对象的任务的上下文一部分的32比特寄存器,由条件标志(条件标志)、操作标志(运算标志)、矢量条件标志(矢量条件标志)、运算指令用比特位置指定字段、SIMD数据对齐信息字段构成。
比特ALN[1:0]表示对齐模式。设定valnvc指令的对齐模式。
比特BPO[4:0]表示比特位置。由比特位置指定的必需指令使用。
比特VC0-VC3是矢量条件标志。从LSB侧的字节或半字开始顺序对应于VC0,且MSB侧对应于VC3。
比特OVS是溢出标志(摘要)。在由addc指令产生进位或由subc指令产生借位的情况下设置比特CAS。在未由addc指令产生进位或未由subc指令产生借位的情况下,比特CAS保持指令执行前的值。比特CAS的清零必需由软件进行。
比特C0-C7是条件标志。标志C7的值始终为1。忽视FALSE条件反映到标志C7(写入0)。
reserved表示预约比特。从reserved中总是读出0。在向reserved写入时必需写入0。
图13是表示累加器(M0,M1)30b的结构图。该累加器(M0,M1)30b构成成为执行对象的任务的上下文一部分。累加器(M0,M1)30b由图13(a)所示的32比特寄存器MH0-MH1(乘除法、积和用寄存器(上位32比特))、和图13(b)所示的32比特寄存器ML0-ML1(乘除法、积和用寄存器(下位32比特))构成。
寄存器MH0-MH1在乘法指令下用于存储结果的上位32比特。寄存器MH0-MH1在积和指令下用作累加器的上位32比特。另外,寄存器MH0-MH1在处理比特流的情况下,与通用寄存器组合来使用。寄存器ML0-ML1在乘法指令下用于存储结果的下位32比特。寄存器ML0-ML1在积和指令下用作累加器的下位32比特。
图14是表示程序计数器(PC)33的结构图。该程序计数器(PC)33是构成成为执行对象的任务的上下文一部分,保持执行中的指令的地址的32比特的计数器。程序计数器(PC)33的下位1比特中总是存储0。
图15是表示PC保存用寄存器(IPC)34的结构图。PC保存用寄存器(IPC)34是构成成为执行对象的任务的上下文一部分的32比特寄存器,从下位1比特中总是读出0。在向PC保存用寄存器(IPC)34的下位1比特写入时必需写入0。
图16是表示PSR保存用寄存器(IPSR)35的结构图。PSR保存用寄存器(IPSR)35是构成成为执行对象的任务的上下文一部分、保存程序状态寄存器(PSR)31用的32比特寄存器。从PSR保存用寄存器(IPSR)35的程序状态寄存器(PSR)31的预约比特所对应的部分中总是读出0。在向PSR保存用寄存器(IPSR)35的程序状态寄存器(PSR)31的预约比特所对应的部分写入时必需写入0。
下面,说明处理器1的存储器空间。在处理器1中,对4GB的线性存储器空间进行32分割,向128MB单位的空间分配指令SRAM(StaticRAM)和数据SRAM。将该128MB的空间作为1个块,设定想访问SAR(SRAMArea Register)的块。在访问的地址是由SAR设定的空间的情况下,直接对指令SRAM/数据SRAM进行访问,但在不是由SAR设定的空间的情况下,向总线控制器(BCU)发出访问请求。在BCU上连接单片寄存器(OCM)、外部存储器、外部器件、I/O端口等,处理器1可对这些器件进行读写。
图17是表示该处理器1的流水线动作的时间图。处理器1如图17所示,基本上由指令获取、指令分配(分派)、解码、执行、写入等5级流水线构成。
图18是表示该处理器1的指令执行时的各流水线动作的时间图。在指令获取阶段,访问由程序计数器(PC)33指定的地址的指令存储器,将指令传送给指令缓冲器10c-10e、10h等。在指令分配阶段,进行对分支类指令的分支目的地地址信息的输出、输入寄存器控制信号的输出、可变长指令的分配,将指令传送给指示寄存器(IR)。在解码阶段,将存储在IR中的指令输入到解码部20,从解码部20输出运算器控制信号、存储器访问信号。在执行阶段,执行运算,将运算结果输出到数据存储器或通用寄存器(R0-R31)。在写入阶段,将数据传送、运算结果存储在通常寄存器中。
处理器1通过VLIW结构,可并行进行4列上述处理。因此,对于图18所示动作,处理器1按图19所示的定时并行执行。
下面,说明上述结构的处理器1的指令设置。
下示表3-表5按种类不同来分类处理器1执行的指令。
表3表4表5表中的[运算器]表示该指令使用的运算器。运算器的简称的含义如下。即,[A]意味着ALU指令,[B]意味着分支指令,[C]意味着变换指令,[DIV]意味着除法指令,[DBGM]意味着调试指令,[M]意味着存储器访问指令,[S1]、[S2]意味着移位指令,[X1]、[X2]意味着乘法指令。
图20A是表示该处理器1执行的16比特指令的格式图。图20B是表示该处理器1执行的32比特指令的格式图。
另外,图中简称的含义如下。即,[E]意味着终端比特(并行执行的边界),[F]意味着格式比特(00、01、10:16比特指令格式、11:32比特指令格式),[P]意味着预测(执行条件指定8个条件标志C0-C7之一),[OP]意味着操作码字段,[R]意味着寄存器字段,[I]意味着即值字段,[D]意味着位移(デイスプ-スメント)字段。另外,因为[E]字段是VLIW特有的字段,E=0的指令与下一指令并行执行。即,由[E]字段来实现并行度可变的VLIW。另外,预测是根据条件标志C0-C7的值来控制执行或不执行指令的标志,是不使用分支指令就可进行选择执行的高速化技术之一。
例如,在表示指令中预测的条件标志C0为1的情况下,执行分配条件标志C0的指令,在为0的情况下,不执行该指令。
图21A-图36B是说明处理器1执行的指令的示意功能的图。即,图21A和图21B是说明属于种类[ALUadd(加法)类]的指令的图,图22A和图22B是说明属于种类[ALUsub(减法)类]的指令的图,图23A和图23B是说明属于种类[ALUlogic(逻辑运算)类]的指令的图,图24A和图24B是说明属于种类[CMP(比较运算)类]的指令的图,图25A和图25B是说明属于种类[mul(乘法)类]的指令的图,图26A和图26B是说明属于种类[mac(积和运算)类]的指令的图,图27A和图27B是说明属于种类[msu(积差运算)类]的指令的图,图28A和图28B是说明属于种类[MEMld(存储器读出)类]的指令的图,图29A和图29B是说明属于种类[MEMstore(存储器写出)类]的指令的图,图30是说明属于种类[BRA(分支)类]的指令的图,图31A和图31B是说明属于种类[BSasl(算术桶形移位)类]的指令的图,图32A和图32B是说明属于种类[BSlsr(逻辑桶形移位)类]的指令的图,图33是说明属于种类[CNVvaln(算术变换)类]的指令的图,图34A和图34B是说明属于种类[CNV(一般变换)类]的指令的图,图35是说明属于种类[SATvlpk(饱和处理)类]的指令的图,图36A和图36B是说明属于种类[ETC(其它)类]的指令的图。
在这些图中,项目[SIMD]表示指令类型(SIMD(SINGLE)或SIMD的区别),项目[尺寸]表示成为运算对象的各个操作数的尺寸,项目[指令]表示该指令的操作码,项目[操作数]表示该指令的操作数,项目[CFR]表示条件标志寄存器的变化,项目[PSR]表示处理器状态寄存器的变化,项目[代表性动作]表示动作的概要,项目[运算器]表示使用的运算器,项目 表示指令的尺寸。
下面,就几个特定指令来说明处理器1的动作。另外,各指令动作的说明中使用的各种记号的含义如下表6-表10所示。
表6表7表8表9表10[指令jloop、settar]指令jloop是进行循环中的分支与条件标志(这里为预测)的设定的指令。例如若为jloop C6,Cm,TAR,Ra则处理器1使用地址管理部10b等,(1)对条件标志Cm设置1,(2)在寄存器Ra的值比0小的情况下,对条件标志C6设置0,(3)向寄存器Ra的值加-1,存储在寄存器Ra中,(4)执行分支到分支寄存器(TAR)30d表示的地址的一系列的处理。当在跳跃缓冲器10f(分支用指令缓冲器)中未填充分支用指令的情况下,填充分支目的地的指令。详细动作如图37所示。
另外,指令settar是在将分支目的地地址存储在分支寄存器(TAR)30d中的同时、进行条件标志(这里为预测)的设定的指令。例如若为settar C6,Cm,D9则处理器1使用地址管理部10b等,(1)将程序计数器(PC)33的值与位移值(D9)相加所得的地址存储在分支寄存器(TAR)30d中,(2)获取该地址指令后存储在跳跃缓冲器10f(分支用指令缓冲器)中,(3)执行将条件标志C6设置为1、将条件标志Cm设置为0等一系列处理。详细动作如图38所示。
这些指令jloop和指令settar是对基于序言结局去除型的软件流水线操作的循环高速化有效的指令,通常成对使用。另外,软件流水线操作是基于编译器的循环高速化方法的一种,将循环结构变换为序言部、核心部和结局部,对于核心部而言,通过使各累积(重复)与其前后的累积重叠,可有效地并行执行多个指令。
另外,所谓序言结局去除型如图39所示,通过将序言部和结局部设为预测的条件执行指令,忽视、去除序言部和结局部。图39中,在序言结局去除型2阶段软件流水线操作中,条件标志C6和C4分别为结局指令(阶段2)用和序言指令(阶段1)用的预测。
例如在对图40所示C语言源程序使用上述指令jloop和指令settar的情况下,编译器通过序言结局去除型的软件流水线操作,生成图41所示的机器语言程序。
从该机器语言程序的循环部分(等级L00023-指令jloop)可知,分别由指令jloop和settar进行条件标志C4的设置及复位,不必需特别的指令,循环执行在2周期下结束。
另外,处理器1可执行不仅适用于2阶段软件流水线操作、而且也适用于3阶段软件流水线操作的指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]。这些指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]相当于将上述2阶段用指令[jloopC6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]中的寄存器Cm扩展为寄存器C2、C3和C4。
即,若为j jloop C6,C2:C4,TAR,Ra则处理器1使用地址管理部10b等,(1)在寄存器Ra比0小的情况下,对条件标志C4设置0,(2)将条件标志C3的值传送到条件标志C2,将条件标志C4的值传送到条件标志C3和C6,(3)向寄存器Ra加-1,将加法结果存储在寄存器Ra中,(4)执行分支到分支寄存器(TAR)30d表示的地址的一系列的处理。当在跳跃缓冲器10f中未填充分支目的地指令的情况下,填充分支目的地的指令。详细动作如图42所示。
另外,若为settar C6,C2:C4,D9则处理器1使用地址管理部10b等,(1)将程序计数器(PC)33的值与位移值(D9)相加的地址存储在分支寄存器(TAR)30d中,(2)获取该地址指令后存储在跳跃缓冲器10f(分支用指令缓冲器)中,(3)执行将条件标志C4和C6设置为1、将条件标志C2和C3设置为0等一系列处理。详细动作如图43所示。
这些3阶段用指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]中的条件标志的分配如图44所示。如图44(a)所示,在序言结局去除型3阶段软件流水线操作中,条件标志C2、C3、C4分别为阶段3用、阶段2用、阶段1用预测。图44(b)是表示此时的标志传送的执行变迁的图。
例如,在对图45所示C语言源程序使用图42和图43中分别示出的指令jloop和指令settar的情况下,编译器通过序言结局去除型的软件流水线操作,生成图46所示的机器语言程序。
另外,处理器1还可执行适用于4阶段软件流水线操作的指令[jloop C6,C1:C4,TAR,Ra]和指令[settar C6,C1:C4,D9]。
即,若为j jloop C6,C1:C4,TAR,Ra则处理器1使用地址管理部10b等,(1)在寄存器Ra比0小的情况下,对条件标志C4设置0,(2)将条件标志C2的值传送到条件标志C1,将条件标志C3的值传送到条件标志C2,将条件标志C4的值传送到条件标志C3和C6,(3)向寄存器Ra加-1,并存储在寄存器Ra中,(4)执行分支到分支寄存器(TAR)30d表示的地址的一系列的处理。当在跳跃缓冲器10f中未填充分支目的地指令的情况下,填充分支目的地的指令。详细动作如图47所示。
另外,指令settar是在将分支目的地地址存储在分支寄存器(TAR)30d中的同时、进行条件标志(这里为预测)的设定的指令。例如,若为settar C6,C1:C4,D9则处理器1使用地址管理部10b等,(1)将程序计数器(PC)33的值与位移(displacement)值(D9)相加的地址存储在分支寄存器(TAR)30d中,(2)获取该地址指令后存储在跳跃缓冲器10f(分支用指令缓冲器)中,(3)执行将条件标志C4和C6设置为1、将条件标志C1、C2和C3设置为0等一系列处理。详细动作如图48所示。
例如,在对图49所示,C语言源程序使用图47和图48中分别示出的指令jloop和指令settar的情况下,编译器通过结局去除型的软件流水线操作,生成图50所示的机器语言程序。
图51是表示使用图47和图48中分别示出的指令jloop和指令settar的4级软件流水线操作的动作图。
为了实现4级软件流水线操作,使用用于表示是否执行指令的预测的条件标志C1-C4。指令A、B、C和D分别是以软件流水线操作的1级、2级、3级和4级执行的指令。另外,条件标志C4、C3、C2和C1分别对应于指令A、B、C和D。并且,条件标志C6对应于指令jloop。
图52是说明图47所示指令jloop用条件标志C6的设定方法一例的图。该方法利用以下性质。即,将通过软件流水线操作将作为对象的循环展开为条件执行指令时的软件流水线的级数设为N级(N为3以上的整数)。此时,在结局部中,在由第(N-2)级流水线执行的条件执行指令所对应的条件标志变为0的下一周期中,循环结束。
因此,在循环处理的序言部和核心部中,将条件标志C6的值总是设定为1,从进入结局部的阶段开始,监视条件标志C3(在软件流水线的第(N-2)级执行的条件执行指令所对应的条件标志)的值,将条件标志C3的值写入1周期后的条件标志C6中。由此,在循环处理结束时将分配给指令jloop的条件标志C6设定为0,可从循环处理中跳出。例如,在图50所示机器语言程序的实例中,当条件标志C6变为0时,不执行指令[jloop C6,C1:C4,tar,r4],而执行其后配置的指令[ret],从循环处理中跳出。
另外,如图51所示,在结局部中,当某个条件标志的值变为0时,该条件标志的值在循环处理结束之前为0。即,表示注目的条件标志所对应的条件执行指令在循环处理结束之前不被执行。例如,在第5周期中条件标志C4的值变为0的情况下,在循环结束的第7周期之前,条件标志C4的值为0。因此,在从第5周期到第7周期不执行条件标志C4所对应的指令A。
由此,在结局部中条件标志变为0的情况下,在循环处理结束之前,可以进行控制,不从存储了对应该条件标志的指令的指令缓冲器10c(10d、10e、10h)中读出指令。
另外,各指令的一部分示出条件标志的序号。因此,解码部20从指令缓冲器10c(10d、10e、10h)中仅读出条件标志的序号,并根据该序号,调查条件标志的值,若条件标志的值为0,则不从指令缓冲器10c(10d、10e、10h)中读出指令。
另外,如图53所示,在序言部和结局部分别配置在循环前后执行的指令并执行。例如,向在循环(loop)之前执行的指令X和之后执行的指令Y分配条件标志C5,在序言部和结局部中的空阶段执行指令。由此,可减少序言部和结局部中的空阶段。
另外,如C语言中的if--else语句那样,在规定条件成立时执行的指令与不成立时执行的指令不同的情况下,使条件成立时执行的条件执行指令的条件标志与条件不成立时执行的条件执行指令的条件标志不一样,对应于条件来改变条件标志的值。这样可以简单处理来实现条件分支指令。
另外,也可使用下述的条件标志C6的设定方法来代替图52所示的指令jloop用的条件标志C6的设定方法。图54是说明图47所示指令jloop用条件标志C6的设定方法另一例的图。该方法利用以下性质。即,将通过软件流水线操作将成为对象的循环展开为条件执行指令时的软件流水线的级数设为N级(N为2以上的整数)。此时,在与在结局部中由第(N-1)级流水线执行的条件执行指令所对应的条件标志变为0的周期相同的周期,循环结束。
因此,在循环处理的序言部和核心部中,将条件标志C6的值总是设定为1,从进入结局部的阶段开始,监视条件标志C2(在软件流水线的第(N-1)级执行的条件执行指令所对应的条件标志)的值,在相同周期将条件标志C2的值写入条件标志C6中。由此,在循环处理结束时将分配给指令jloop的条件标志C6设定为0,可从循环处理中跳出。
并且,也可使用下述的条件标志C6的设定方法。图55是说明图47所示指令jloop用条件标志C6的设定方法再一例的图。该方法利用以下性质。即,将通过软件流水线操作将成为对象的循环展开为条件执行指令时的软件流水线的级数设为N级(N为4以上的整数)。此时,在结局部中由第(N-3)级流水线执行的条件执行指令所对应的条件标志变为0的2周期之后,循环结束。
因此,在循环处理的序言部和核心部中,将条件标志C6的值总是设定为1,从进入结局部的阶段开始,监视条件标志C4(在软件流水线的第(N-3)级执行的条件执行指令所对应的条件标志)的值,将条件标志C4的值写入2周期后的条件标志C6中。由此,在循环结束时将分配给指令jloop的条件标志C6设定为0,可从循环处理中跳出。
另外,在本实施方式中,说明了4阶段以前的软件流水线操作,但5阶段以上的软件流水线操作也一样,只要增加预测用的条件标志即可。
具有以上说明的特征的机器语言指令由编译器生成。编译器包含对源程序进行语法分析的解析步骤;将分析出的源程序变换为中间代码的中间代码变换步骤;使中间代码最佳化的最佳化步骤;和将最佳化后的中间代码变换为机器语言指令的代码生成步骤。
如上所述,根据本实施方式,使用软件流水线操作的结局部的条件标志来设定循环用条件标志。因此,不必为了判断循环处理结束而使用计数器等特别的硬件资源,电路规模不会变大。另外,与此同时可减小处理器的功耗。
另外,若在结局部不执行条件执行指令,则在注目的循环处理结束之前,在该软件流水线操作中不执行条件执行指令。因此,不必从指令缓冲器中读出条件执行指令,与此同时可减小处理器的功耗。
并且,通过在软件流水线操作的序言部和结局部分别配置在循环前后执行的指令,可减少软件流水线操作的空阶段,可高速执行程序。与此同时,可减小处理器的功耗。
此外,若在结局部不执行条件执行指令,则在着重的循环处理结束之前,在该软件流水线操作中不执行条件执行指令。因此,不必从指令缓冲器中读出条件执行指令,与此同时可减小处理器的功耗。
从以上说明可知,根据本发明的处理器,可提供电路规模小、且能以低功耗来高速执行循环处理的处理器。
另外,可提供能生成减小处理器功耗的机器语言指令的编译器。
如上所述,根据本发明的处理器可以低功耗来执行指令。因此,可用作便携电话、移动AV设备、数字TV、DVD等共同的中心处理器,在期望出现高性能、高性价比的多媒体设备的今天的实用价值极高。











权利要求
1.一种对指令进行译码并执行的处理器,其特征在于具备存储在条件执行指令的预测中所用的多个条件执行用标志的标志寄存器;译码指令的译码装置;和执行由所述译码装置译码的指令的执行装置,在通过所述译码装置译码循环指令的情况下,所述执行装置根据由软件流水线操作将作为对象的循环展开成条件执行指令时的结局部所对应的所述多个条件执行用标志中的任一值,结束所述循环的重复处理。
2.根据权利要求1所述的处理器,其特征在于所述标志寄存器中还存储用于所述结束判断的循环用标志,所述执行装置将所述结局部中的所述多个条件执行用标志中任一值写入所述循环用标志。
3.根据权利要求2所述的处理器,其特征在于所述执行装置在将所述软件流水线操作的级数设为N级(N为3以上的整数),将流水线的级数设为按所述结局部结束处理的顺序升序计数时,将第(N-2)级的流水线执行的条件执行指令所对应的条件执行用标志的值写入所述结局部在1周期后的所述循环用标志中。
4.根据权利要求2所述的处理器,其特征在于所述执行装置在将所述软件流水线操作的级数设为N级(N为2以上的整数),将流水线的级数设为按所述结局部结束处理的顺序升序计数时,将第(N-1)级的流水线执行的条件执行指令所对应的条件执行用标志的值写入在所述结局部中同一周期的所述循环用标志中。
5.根据权利要求2所述的处理器,其特征在于所述执行装置在将所述软件流水线操作的级数设为N级(N为4以上的整数),将流水线的级数设为按所述结局部结束处理的顺序升序计数时,将第(N-3)级的流水线执行的条件执行指令所对应的条件执行用标志的值写入所述在结局部中2周期后的所述循环用标志中。
6.根据权利要求1所述的处理器,其特征在于还包含暂时存储所述译码装置译码的所述指令的指令缓冲器,所述译码装置在根据所述结局部的所述条件执行用标志的值来判断为不执行所述条件执行指令的情况下,在所述循环结束之前,不从所述指令缓冲器中读出所述条件执行指令。
7.根据权利要求1所述的处理器,其特征在于还包含暂时存储所述译码装置译码的所述指令的指令缓冲器,存储在所述指令缓冲器中的指令的一部分表示所述条件执行用标志的存储位置,所述译码装置在根据存储在所述指令缓冲器中的所述指令的所述一部分,读出存储在所述标志寄存器中的所述条件执行用标志,并根据该条件执行用标志判断为不执行所述条件执行指令的情况下,不从所述指令缓冲器中读出所述条件执行指令。
8.根据权利要求1所述的处理器,其特征在于还包含进行所述多个条件执行用标志的分配的标志分配装置,所述标志分配装置当源程序的循环内包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的条件执行用标志、和在不满足该条件时的条件执行指令的预测中所用的条件执行用标志不同,来进行分配。
9.一种编译装置,将源程序编译成可并行处理的处理器用的机器语言程序,其特征在于包含对所述源程序进行语法解析的解析装置;将解析出的所述源程序变换为中间代码的中间代码变换装置;使所述中间代码最佳化的最佳化装置;和将最佳化后的所述中间代码变换为机器语言指令的代码生成装置,所述处理器中存储在条件执行指令的预测中所用的多个标志,所述最佳化装置当所述中间代码中包含循环的情况下,在通过软件流水线操作展开所述循环时的序言部中配置在所述循环的紧前面执行的指令。
10.一种编译装置,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析装置;将分析出的所述源程序变换为中间代码的中间代码变换装置;使所述中间代码最佳化的最佳化装置;和将最佳化后的所述中间代码变换为机器语言指令的代码生成装置,所述处理器中存储在条件执行指令的预测中所用的多个标志,所述最佳化装置当所述中间代码中包含循环的情况下,在通过软件流水线操作展开所述循环时的结局部中,配置在所述循环的紧后面执行的指令。
11.一种编译装置,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析装置;将分析出的所述源程序变换为中间代码的中间代码变换装置;使所述中间代码最佳化的最佳化装置;和将最佳化后的所述中间代码变换为机器语言指令的代码生成装置,所述处理器中存储在条件执行指令的预测中所用的多个标志,所述最佳化装置当所述中间代码中包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的标志、和在不满足该条件时的条件执行指令的预测中所用的标志不同,来进行分配。
12.一种编译方法,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含循环的情况下,在由软件流水线操作展开所述循环时的序言部中,配置在所述循环的紧前面执行的指令。
13.一种编译方法,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含循环的情况下,在由软件流水线操作展开所述循环时的结局部中,配置在所述循环的紧后面执行的指令。
14.一种编译方法,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的标志、和在不满足该条件时的条件执行指令的预测中所用的标志不同,来进行分配。
15.一种编译器,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含循环的情况下,在由软件流水线操作展开所述循环时的序言部中,配置在所述循环的紧前面执行的指令。
16.一种编译器,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含循环的情况下,在由软件流水线操作展开所述循环时的结局部中,配置在所述循环的紧后面执行的指令。
17.一种编译器,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于包含对所述源程序进行语法分析的解析步骤;将分析出的所述源程序变换为中间代码的中间代码变换步骤;使所述中间代码最佳化的最佳化步骤;和将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,所述处理器中存储在条件执行指令的预测中所用的多个标志,在所述最佳化步骤中,当所述中间代码中包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的标志、和在不满足该条件时的条件执行指令的预测中所用的标志不同,来进行分配。
全文摘要
本发明提供一种电路规模小、且可以低功耗高速执行循环处理的处理器,具备解码部与运算部等,当解码部译码指令[jloop C6,C1C4,TAR,Ra]时,执行如下一系列处理,即(1)在寄存器Ra小于0的情况下,将条件标志C4设成0,(2)将条件标志C2的值传送给条件标志C1,将条件标志C3的值传送给条件标志C2,将条件标志C4的值传送给条件标志C3和C6,(3)对寄存器Ra加上-1,并存储在寄存器Ra中,(4)分支到分支寄存器(TAR)所示的地址。在跳跃缓冲器中未填充分支目的地的指令的情况下,填充分支目的地的指令。
文档编号G06F9/44GK1532693SQ20041003220
公开日2004年9月29日 申请日期2004年3月24日 优先权日2003年3月24日
发明者冈林羽月, 田中哲也, 瓶子岳人, 小川一, 也, 人 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1