CN1302380C - 处理器和编译器 - Google Patents

处理器和编译器 Download PDF

Info

Publication number
CN1302380C
CN1302380C CNB2004100322020A CN200410032202A CN1302380C CN 1302380 C CN1302380 C CN 1302380C CN B2004100322020 A CNB2004100322020 A CN B2004100322020A CN 200410032202 A CN200410032202 A CN 200410032202A CN 1302380 C CN1302380 C CN 1302380C
Authority
CN
China
Prior art keywords
instruction
processor
intermediate code
condition
sign
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004100322020A
Other languages
English (en)
Other versions
CN1532693A (zh
Inventor
冈林羽月
田中哲也
瓶子岳人
小川一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1532693A publication Critical patent/CN1532693A/zh
Application granted granted Critical
Publication of CN1302380C publication Critical patent/CN1302380C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种电路规模小、且可以低功耗高速执行循环处理的处理器,具备解码部与运算部等,当解码部译码指令[jloop C6,C1:C4,TAR,Ra]时,执行如下一系列处理,即(1)在寄存器Ra小于0的情况下,将条件标志C4设成0,(2)将条件标志C2的值传送给条件标志C1,将条件标志C3的值传送给条件标志C2,将条件标志C4的值传送给条件标志C3和C6,(3)对寄存器Ra加上-1,并存储在寄存器Ra中,(4)分支到分支寄存器(TAR)所示的地址。在跳跃缓冲器中未填充分支目的地的指令的情况下,填充分支目的地的指令。

Description

处理器和编译器
技术领域
本发明涉及一种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是说明属于种类[MEM l d(存储器读出)类]的指令的图。
图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,0x38
add r0,r1,r2
sub 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)切换激活。[0]表示不允许LP切换,[1]表示允许LP切换。
比特FXP:表示固定小数点模式。[0]表示模式0,[1]表示模式1。
比特IH:是中断处理标志,表示在可屏蔽的中断处理中。[1]表示中断处理中,[0]表示不是中断处理中。一旦产生中断,则自动设置成[1]。比特IH用于知道根据rti指令从中断复原的位置是在其它中断处理中还是程序处理中。
比特EH:是表示错误或NMI处理中的标志。[0]表示不是错误处理中或NMI中断处理中,[1]表示错误处理中或NMI中断处理中。当EH=1时,在产生非同步错误或NMI的情况下,屏蔽比特EH。另外,在VMP激活时,屏蔽VMP的屏极(plate)切换。
比特PL[1:0]:表示特权等级。[00]表示特权等级0,即处理器抽象(abstract)等级,[01]表示特权等级1(不可设定),[10]表示特权等级2,即系统程序等级,[11]表示特权等级3,即用户程序等级。
比特LPIE3:表示LP固有中断3激活。[1]表示允许中断,[0]表示不允许中断。
比特LPIE2:表示LP固有中断2激活。[1]表示允许中断,[0]表示不允许中断。
比特LPIE1:表示LP固有中断1激活。[1]表示允许中断,[0]表示不允许中断。
比特LPIE0:表示LP固有中断0激活。[1]表示允许中断,[0]表示不允许中断。
比特AEE:表示失配(misalignment)例外激活。[1]表示允许失配例外,[0]表示不允许失配例外。
比特IE:表示等级中断激活。[1]表示允许等级中断,[0]表示不允许等级中断。
比特IM[7:0]:表示中断屏蔽。定义至等级0-7,可在各个等级进行屏蔽。等级0是最高的等级。处理器1中仅受理未由IM屏蔽的中断请求中具有最高等级的中断请求。一旦受理中断请求,则硬件自动屏蔽受理的等级以下的等级。IM[0]是等级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是说明属于种类[MEM l d(存储器读出)类]的指令的图,图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]表示处理器状态寄存器的变化,项目[代表性动作]表示动作的概要,项目[运算器]表示使用的运算器,项目[3116]表示指令的尺寸。
下面,就几个特定指令来说明处理器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]
  寄存器名称   比特幅度   个数   用途
  R0~R31   32比特   32个   通常寄存器。用于存储数据存储器的指针、运算指令中的数据等。
  TAR   32比特   1个   分支用寄存器。用于存储分支时的分支地址。
  LR   32比特   1个   链接用寄存器。
  SVR   16比特   2个   保存用寄存器。保存条件标志(CFR)与积和模式。
  M0~M1(MH0:ML0~MH1:ML1)   64比特   2个   运算用寄存器。用于存储运算指令中的数据。
[表2]
  C0~C7   1比特  8个   条件标志。表示条件成立、不成立。
  VC0~VC3   1比特  4个   媒体处理扩展指令用条件标志。表示条件成立、不成立。
  OVS   1比特  1个   溢出标志。检测运算时的溢出。
  CAS   1比特  1个   进位标志。检测运算时的进位。
  BPO   5比特  1个   比特位置指定。指定屏幕处理指令时成为处理对象的比特位置。
  ALN   2比特  1个   字节对齐指定。
  FXP   1比特  1个   固定小数点运算模式。
  UDR   32比特  1个   未定义寄存器
[表3]
  范畴   运算器   指令操作数
  存储器传送指令(加载)   M   ld,ldh,ldhu,ldb,ldbu,ldp,ldhp,ldbp,ldbh,ldbuh,ldbhp,ldbuhp
  存储器传送指令(存储)   M   st,sth,stb,stp,sthp,stbp,stbh,stbhp
  存储器传送指令(其它)   M   dpref,ldstb
  外部寄存器传送指令   M   rd,rde,wt,wte
  分支指令   B   br,brl,call,jmp,jmpl,jmpr,ret,jmpf,jloop,setbb,setlr,settar
软件中断指令 B   rti,pi0,pi0l,pi1,pi1l,pi2,pi2l,pi3,pi3l,pi4,pi4l,pi5,pi5l,pi6,pi6l,pi7,pi7l,sc0,sc1,sc2,sc3,sc4,sc5,sc6,sc7
VMP/中断控制指令 B   intd,inte,vmpsleep,vmpsus,vmpswd,vmpswe,vmpwait
算术运算指令 A   abs,absvh,absvw,add,addarvw,addc,addmsk,adds,addsr,addu,addvh,addvw,neg,negvh,negvw,rsub,s1add,s2add,sub,subc,submsk,subs,subvh,subvw,max,min
  逻辑运算指令   A   and,andn,or,sethi,xor,not
比较指令 A   cmpCC,cmpCCa,cmpCCn,cmpCCo,tstn,tstna,tstnn,tstno,tstz,tstza,tstzn,tstzo
  传送指令   A   mov,movcf,mvclcas,mvclovs,setlo,vcchk
  NOP指令   A   nop
移位指令1 S1   asl,aslvh,aslvw,asr,asrvh,asrvw,lsl,lsr,rol,ror
  移位指令2   S2   aslp,aslpvw,asrp,asrpvw,lslp,lsrp
[表4]
  范畴   运算器   指令操作数
  抽取指令   S2   ext,extb,extbu,exth,exthu,extr,extru,extu
  屏蔽指令   C   msk,mskgen
  饱和指令   C   sat12,sat9,satb,satbu,sath,satw
  变换指令   C   valn,valn1,valn2,valn3.valnvc1,valnvc2,valnvc3,valnvc4,vhpkb,vhpkh,vhunpkb,vhunpkh,vintlhb,vintlhh,vintllb,vintllh,vlpkb,vlpkbu,vlpkh,vlpkhu,vlunpkb,vlunpkbu,vlunpkh,vlunpkhu,vstovb,vstovh,vunpk1,vunpk2,vxchngh,vexth
  比特计数指令   C   bcnt1,bseq,bseq0,bseq1
  其它   C   byterev,extw,mskbrvb,mskbrvh,rndvh,movp
  乘法指令1   X1   fmulhh,fmulhhr,fmulhw,fmulhww,hmul,lmul
  乘法指令2   X2   fmulww,mul,mulu
  积和指令1   X1   fmachh,fmachhr,fmachw,fmachww,hmac,lmac
  积和指令2   X2   fmacww,mac
  积差指令1   X1   fmsuhh,fmsuhhr,fmsuhw,fmsuww,hmsu,lmsu
  积差指令2   X2   fmsuww,msu
  除法指令   DIV   div,divu
  调试指令   DBGM   dbgm0,dbgm1,dbgm2,dbgm3
[表5]
  范畴   运算器   指令操作数
  SIMD算术运算指令   A   vabshvh,vaddb,vaddh,vaddhvc,vaddhvh,vaddrhvc,vaddsb,vaddsh,vaddsrb,vaddsrh,vasubb,vcchk,vhaddh,vhaddhvh,vhsubh,vhsubhvh,vladdh,vladdhvh,vlsubh,vlsubhvh,vnegb,vnegh,vneghvh,vsaddb,vsaddh,vsgnh,vsrsubb,vsrsubh,vssubb,vssubh,vsubb,vsubh,vsubhvh,vsubsh,vsumh,vsumh2,vsumrh2,vxaddh,vxaddhvh,vxsubh,vxsubhvh,vmaxb,vmaxh,vminb,vminh,vmovt,vsel
  SIMD比较指令   A   vcmpeqb,vcmpeqh,vcmpgeb,vcmpgeh,vcmpgtb,vcmpgth,vcmpleb,vcmpleh,vcmpltb,vcmplth,vcmpneb,vcmpneh,vscmpeqb,vscmpeqh,vscmpgeb,vscmpgeh,vscmpgtb,vscmpgth,vscmpleb,vscmpleh,vscmpltb,vscmplth,vscmpneb,vscmpneh
  SIMD移位指令1   S1   vaslb,vaslh,vaslvh,vasrb,vasrh,vasrvh,vlslb,vlslh,vlsrb,vlsrh,vrolb,vrolh,vrorb,vrorh
  SIMD移位指令2   S2   vasl,vaslvw,vasr,vasrvw,vlsl,vlsr
  SIMD饱和指令   C   vsath,vsath12,vsath8,vsath8u,vsath9
  SIMD其它指令   C   vabssumb,vrndvh
  SIMD乘法指令   X2   vfmulh,vfmulhr,vfmulw,vhfmulh,vhfmulhr,vhfmulw,vhmul,vlfmulh,vlfmulhr,vlfmulw,vlmul,vmul,vpfmulhww,vxfmulh,vxfmulhr,vxfmulw,vxmul
  SIMD积和指令   X2   vfmach,vfmachr,vfmacw,vhfmach,vhfmachr,vhfmacw,vhmac,vlfmach,vlfmachr,vlfmacw,vlmac,vmac,vpfmachww,vxfmach,vxfmachr,vxfmacw,vxmac
  SIMD积差指令   X2   vfmsuh,vfmsuw,vhfmsuh,vhfmsuw,vhmsu,vlfmsuh,vlfmsuw,vlmsu,vmsu,vxfmsuh,vxfmsuw,vxmsu
[表6]
 符号  含义
 X[i]X[i:j]X:Y{n{X}}sextM(X,N)uextM(X,N)smul(X,Y)umul(X,Y)sdiv(X,Y)smod(X,Y)udiv(X,Y)umod(X,Y)abs(X)bseq(X,Y)bcnt(X,Y)max(X,Y)min(X,Y)tstz(X,Y)tstn(X,Y)  X的比特序号i从X的比特序号j到比特序号iX与Y连结X重复n次将X从N比特幅度符号扩展到M比特幅度M的默认值为32M的默认值为X具有的全部比特幅度将X从N比特幅度0扩展到M比特幅度M的默认值为32N的默认值为X具有的全部比特幅度带符号乘法不带符号乘法带符号除法的商的整数部与被除数相同的符号的余数无符号的除法的商剩余绝对值for(i=0;i<32;i++){if(X[31-i]!=Y)break;}result=i;S=0;for(i=0;i<32;i++){if(X[i]=Y)S++;}result=S;result=(X>Y)?X:Yresult=(X<Y)?X:Y;X&Y=0X&Y!=0
[表7]
  符号   含义
  RaRa+1RbRb+1RcRc+1Ra2Ra2+1Rb2Rb2+1Rc2Rc2+1Ra3Ra3+1Rb3Rb3+1Rc3Rc3+1Rx   Ra[31:0]       序号a的寄存器     (0<=a<=31)R(a+1)[31:0]   序号a+1的寄存器   (0<=a<=30)Rb[31:0]       序号b的寄存器     (0<=b<=31)R(b+1)[31:0]   序号b+1的寄存器   (0<=b<=30)Rc[31:0]       序号c的寄存器     (0<=c<=31)R(c+1)[31:0]   序号c+1的寄存器   (0<=c<=30)Ra2[31:0]      序号a2的寄存器    (0<=a2<=15)R(a2+1)[31:0]  序号a2+1的寄存器  (0<=a2<=14)Rb2[31:0]      序号b2的寄存器    (0<=b2<=15)R(b2+1)[31:0]  序号b2+1的寄存器  (0<=b2<=14)Rc2[31:0]      序号c2的寄存器    (0<=c2<=15)R(c2+1)[31:0]  序号c2+1的寄存器  (0<=c2<=14)Ra3[31:0]      序号a3的寄存器    (0<=a3<=7)R(a3+1)[31:0]  序号a3+1的寄存器  (0<=a3<=6)Rb3[31:0]      序号b3的寄存器    (0<=b3<=7)R(b3+1)[31:0]  序号b3+1的寄存器  (0<=b3<=6)Rc3[31:0]      序号c3的寄存器    (0<=c3<=7)R(c3+1)[31:0]  序号c3+1的寄存器  (0<=c3<=6)Rx[31:0]       序号x的寄存器     (0<=x<=3)
[表8]
 符号   含义
 +-&|!<<>>>>>^~==!=>>=>(u)>=(u)<<=<(u)<=(u)   加法减法逻辑与逻辑或逻辑非逻辑左移位(算术左移位)算术右移位逻辑右移位异或逻辑非等于(相等)不等(不相等)大于、带符号(将左边、右边的MSB视为符号)大于等于、带符号(将左边、右边的MSB视为符号)大于、不带符号(不将左边、右边的MSB视为符号)大于等于、不带符号(不将左边、右边的MSB视为符号)小于、带符号(将左边、右边的MSB视为符号)小于等于、带符号(将左边、右边的MSB视为符号)小于、不带符号(不将左边、右边的MSB视为符号)小于等于、不带符号(不将左边、右边的MSB视为符号)
[表9]
  符号   含义
  D(addr)W(addr)H(addr)B(addr)B(addr,bus_lock)B(addr,bus_unlock)EREG(num)EREG_ERR<-=>reg#(Ra)0x0btmpUDDnIn   存储器内的地址addr的双字数据存储器内的地址addr的字数据存储器内的地址addr的半数据存储器内的地址addr的字节数据当访问存储器内的地址addr的字节数据时锁定同时使用的总线(其中,在不能锁定的总线的情况下,不锁定)当访问存储器内的地址addr的字节数据时解除同时使用的总线(其中,在不能锁定的总线或未锁定的总线的情况下,忽视锁定解除)序号num的扩展寄存器(在之前的扩展寄存器访问产生错误时,为1,在未产生错误时,为0。)写入结果指令的同义词(由汇编程序变换)通用寄存器Ra的寄存器序号(5比特的数值)16进制的前缀2进制的前缀临时变量不确定值(依赖于安装或动态变化的值)位移值(n为自然数,表示比特数。)即值(n为自然数,表示比特数。)
[表10]
符号                              含义
○语法说明if(条件){条件成立时执行}else{条件不成立时执行}条件A成立时执行,if(条件A);※不成立时不执行for(式1;式2;式3)    ※与C语言一样(式1)?式2:式3       ※与C语言一样○术语说明定义说明中使用的术语。整数乘法         是由smul定义的乘法固定小数点乘法整数运算后,算术左移位。移位量在PSR.FXP为0的情况下为1比特,为1的情况下为2比特。SIMD运算         straight/cross/high/low/pair将半字矢量数据的上位16比特设为RH、将下位16比特设为RL。在Ra寄存器与Rb寄存器之间的运算的情况下,如下定义各运算。straight         在RHa与RHb、RLa与RLb之间进行运算。cross            在RHa与RLb、PLa与RHb之间进行运算。high             在RHa与RHb、RLa与RHb之间进行运算。low              在RHa与RLb、PLa与RLb之间进行运算。pair             在RH与RHb、RH与RLb之间进行运算。(RH是32比特数据)

Claims (14)

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、一种编译方法,将源程序编译成可并行处理的处理器用机器语言程序,其特征在于:包含
对所述源程序进行语法分析的分析步骤;
将分析出的所述源程序变换为中间代码的中间代码变换步骤;
使所述中间代码最佳化的最佳化步骤;和
将最佳化后的所述中间代码变换为机器语言指令的代码生成步骤,
所述处理器中存储在条件执行指令的预测中所用的多个标志,
在所述最佳化步骤中,当所述中间代码中包含条件分支指令的情况下,使在满足该条件时的条件执行指令的预测中所用的标志、和在不满足该条件时的条件执行指令的预测中所用的标志不同,来进行分配。
CNB2004100322020A 2003-03-24 2004-03-24 处理器和编译器 Expired - Fee Related CN1302380C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003081132A JP3974063B2 (ja) 2003-03-24 2003-03-24 プロセッサおよびコンパイラ
JP081132/2003 2003-03-24

Publications (2)

Publication Number Publication Date
CN1532693A CN1532693A (zh) 2004-09-29
CN1302380C true CN1302380C (zh) 2007-02-28

Family

ID=32821431

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100322020A Expired - Fee Related CN1302380C (zh) 2003-03-24 2004-03-24 处理器和编译器

Country Status (4)

Country Link
US (2) US7380112B2 (zh)
EP (1) EP1462933A3 (zh)
JP (1) JP3974063B2 (zh)
CN (1) CN1302380C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309803A (zh) * 2012-03-16 2013-09-18 三星电子株式会社 用于支持可重构处理器的验证的设备和方法

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
US7669042B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Pipeline controller for context-based operation reconfigurable instruction set processor
US7991984B2 (en) * 2005-02-17 2011-08-02 Samsung Electronics Co., Ltd. System and method for executing loops in a processor
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
CN102944803B (zh) * 2006-06-30 2015-06-24 英特尔公司 泄漏功率估计
JP4159586B2 (ja) * 2006-08-03 2008-10-01 エヌイーシーコンピュータテクノ株式会社 情報処理装置および情報処理の高速化方法
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
JP5043560B2 (ja) * 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置
US8413151B1 (en) 2007-12-19 2013-04-02 Nvidia Corporation Selective thread spawning within a multi-threaded processing system
JP5193624B2 (ja) 2008-02-19 2013-05-08 ルネサスエレクトロニクス株式会社 データプロセッサ
US8959497B1 (en) * 2008-08-29 2015-02-17 Nvidia Corporation System and method for dynamically spawning thread blocks within multi-threaded processing systems
US8615770B1 (en) 2008-08-29 2013-12-24 Nvidia Corporation System and method for dynamically spawning thread blocks within multi-threaded processing systems
US8145890B2 (en) * 2009-02-12 2012-03-27 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state
US20110055303A1 (en) * 2009-09-03 2011-03-03 Azuray Technologies, Inc. Function Generator
US8903736B2 (en) * 2010-04-05 2014-12-02 Yahoo! Inc. Fast networked based advertisement selection
US9038042B2 (en) 2012-06-29 2015-05-19 Analog Devices, Inc. Staged loop instructions
EP2872966A1 (en) * 2012-07-12 2015-05-20 Dual Aperture International Co. Ltd. Gesture-based user interface
US11048513B2 (en) * 2013-07-15 2021-06-29 Texas Instruments Incorporated Entering protected pipeline mode with clearing
CN103942035B (zh) * 2014-04-11 2017-08-29 华为技术有限公司 处理指令的方法、编译器及指令处理器
GB2551548B (en) 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
CN107229446A (zh) * 2017-04-26 2017-10-03 深圳市创成微电子有限公司 一种音频数据处理器
CN111045729A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
US12112171B2 (en) 2020-09-26 2024-10-08 Intel Corporation Loop support extensions
CN113946539B (zh) * 2021-10-09 2024-02-13 深圳市创成微电子有限公司 一种dsp处理器及其循环跳转指令的处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
CN1271889A (zh) * 1999-04-23 2000-11-01 太阳微系统有限公司 用于使用寄存器分配器建立调用约定序言和收尾程序代码的方法和装置
US6289443B1 (en) * 1998-01-28 2001-09-11 Texas Instruments Incorporated Self-priming loop execution for loop prolog instruction
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6192515B1 (en) * 1998-07-17 2001-02-20 Intel Corporation Method for software pipelining nested loops
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
GB2367406B (en) * 2000-06-13 2002-06-05 Siroyan Ltd Predicated execution of instructions in processors
US20030120905A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US6289443B1 (en) * 1998-01-28 2001-09-11 Texas Instruments Incorporated Self-priming loop execution for loop prolog instruction
CN1271889A (zh) * 1999-04-23 2000-11-01 太阳微系统有限公司 用于使用寄存器分配器建立调用约定序言和收尾程序代码的方法和装置
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309803A (zh) * 2012-03-16 2013-09-18 三星电子株式会社 用于支持可重构处理器的验证的设备和方法
CN103309803B (zh) * 2012-03-16 2017-06-23 三星电子株式会社 用于支持可重构处理器的验证的设备和方法

Also Published As

Publication number Publication date
US7380112B2 (en) 2008-05-27
EP1462933A2 (en) 2004-09-29
EP1462933A3 (en) 2008-01-23
US20080209407A1 (en) 2008-08-28
US20040193859A1 (en) 2004-09-30
CN1532693A (zh) 2004-09-29
JP2004288016A (ja) 2004-10-14
JP3974063B2 (ja) 2007-09-12

Similar Documents

Publication Publication Date Title
CN1302380C (zh) 处理器和编译器
CN1497435A (zh) 处理器
CN1264089C (zh) 编译设备和编译方法
CN1153129C (zh) 用于处理器定制操作的设备
CN1101019C (zh) 数据序列产生方法及设备、转换方法及计算机
CN100339824C (zh) 高效执行特长指令字的处理器和方法
CN1482540A (zh) 编译程序、编译程序装置和编译方法
CN1194292C (zh) 具有改良的指令集体系结构的微处理器
CN1287257C (zh) 用于算术表达式优化的方法和装置
CN1210647C (zh) 适于作由正值处理及饱和运算处理组成的修整处理的处理器
CN1570870A (zh) 终极管道和最优重排技术
CN1842767A (zh) 用于多个异常处理模型的中间表示
JP4157016B2 (ja) コンパイラ装置及びコンパイル方法
CN1252144A (zh) 一可编程组件中可构元件的自同步方法
CN1127016C (zh) 计算机处理装置和方法
CN1802632A (zh) 用于在程序代码转换期间执行解释器优化的方法和装置
CN1147306A (zh) 多指令集映射
CN1656495A (zh) 标量/矢量处理器
CN1684058A (zh) 处理器
CN1655118A (zh) 处理器和编译器
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1918546A (zh) 程序转换装置及程序转换方法
CN101051301A (zh) 用于操作计算机处理器阵列的方法和装置
CN101046741A (zh) 处理器装置和复合条件处理方法
CN1862521A (zh) 处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070228

Termination date: 20180324

CF01 Termination of patent right due to non-payment of annual fee