CN1497435A - 处理器 - Google Patents
处理器 Download PDFInfo
- Publication number
- CN1497435A CN1497435A CNA031603653A CN03160365A CN1497435A CN 1497435 A CN1497435 A CN 1497435A CN A031603653 A CNA031603653 A CN A031603653A CN 03160365 A CN03160365 A CN 03160365A CN 1497435 A CN1497435 A CN 1497435A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- register
- processor
- performance element
- 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.)
- Granted
Links
- 230000014509 gene expression Effects 0.000 claims description 107
- 238000003860 storage Methods 0.000 claims description 66
- 238000007792 addition Methods 0.000 claims description 41
- 229920006395 saturated elastomer Polymers 0.000 claims description 19
- 230000005055 memory storage Effects 0.000 claims description 13
- 238000006073 displacement reaction Methods 0.000 claims description 11
- 230000000052 comparative effect Effects 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 claims 2
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 claims 2
- 230000009471 action Effects 0.000 description 74
- 238000000034 method Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 239000000047 product Substances 0.000 description 9
- 241001269238 Data Species 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 101100322581 Caenorhabditis elegans add-1 gene Proteins 0.000 description 2
- 102100037364 Craniofacial development protein 1 Human genes 0.000 description 2
- 101000880187 Homo sapiens Craniofacial development protein 1 Proteins 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000005755 formation reaction Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101150110532 CFDP1 gene Proteins 0.000 description 1
- 101001056707 Homo sapiens Proepiregulin Proteins 0.000 description 1
- 102100025498 Proepiregulin Human genes 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 101150027978 UMOD gene Proteins 0.000 description 1
- 101150103933 VMAC gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种执行高性能SIMD运算的处理器等。其具备解码部(20)与运算部(40)等,一旦解码部(20)译码指令vcchk,则运算部(40)等判断条件标志寄存器CFR(32)的矢量条件标志VC0-VC3(110)是否全部为0,在全部为0的情况下,分别将条件标志寄存器CFR(32)的条件标志C4及C5设为1及0,在不全部为0的情况下,分别将条件标志C4及C5设为0及1。另外,在条件标志C0-C3中存储矢量条件标志VC0-VC3。
Description
技术领域
本发明涉及一种DSP或CPU等处理器,尤其涉及适于声音或图像等信号处理的处理器。
背景技术
随着多媒体技术的发展,要求高速执行以声音或图像的信号处理等为代表的多媒体处理的处理器。作为适应该要求的现有处理器,有支持单指令流多数据流型SIMD(Single Instruction Multiple Data)型指令的处理器。例如美国英特尔(Intel)公司的奔腾Pentium(R)/奔腾III/奔腾4的MMX/SSE/SSE2等。根据Intel公司的MMX,将存储在64位长度的MMX寄存器中的最大8个整数作为对象,可用1个指令来执行同一操作。
但是,上述现有处理器存在问题是不能充分响应对多媒体处理的多样化要求。
例如,现有处理器可用1个指令来执行对多个数据的运算,用1个指令来比较多个数据,但不能用1个指令来评价这多个比较结果。举例来说,现有处理器可用1个指令执行这样的处理,即以字节为单位来比较32位长度的两个寄存器中存储的数据彼此、并将结果设置成4个标志(フラグ),但不能用1个指令来判断这4个标志值是否全部为零。因此,需读出4个标志、并判断所有4个标志是否为零的多个指令。其中,例如,每次以要4个象素值为单位进行与其它象素值的比较时,需要用于评价比较结果的多个指令,导致指令数量增加,图像处理速度下降。
发明内容
因此,本发明是鉴于这种状况提出的,其目的在于提供一种执行高性能SIMD运算的处理器、及适于高速执行数字信号处理的多媒体用途的处理器。
为了实现上述目的,根据本发明的第1种处理器是执行SIMD型指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果执行指令,所述执行单元在对以多个数据为对象的SIMD型比较指令的比较结果进行判断意旨的指令由所述译码单元译码的情况下,判断所述多个数据是否全部得到相同的比较结果,并生成该结果。
另外,根据本发明的第2种处理器是与外部存储器连接的处理器,其特征在于,具备:存储数据的寄存器;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将寄存器的值存储到外部存储器中的指令由所述译码单元译码的情况下,将所述寄存器中存储的大于4的字节所构成的字数据中、上位半字的最下位1字节与下位半字的最下位1字节存储在所述外部存储器中。
另外,根据本发明的第3种处理器是译码并执行指令的处理器,其特征在于,具备:存储数据的寄存器;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将数据存储在所述寄存器的上位数位的指令由所述这译码单元译码的情况下,不变更所述寄存器中去除所述上位数位的存储区域的值,将所述数据仅存储在所述上位数位中。
另外,根据本发明的第4种处理器是执行SIMD型指令的处理器,其特征在于,具备标志存储单元,存储标志;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将第1寄存器与第2寄存器设为操作数的SIMD型运算指令由所述译码单元译码的情况下,当存储在所述标志存储单元中的标志表示第1状态时,仅将所述第1寄存器作为操作数,执行所述SIMD型运算,当所述标志表示第2状态时,将所述第1寄存器与第2寄存器作为操作数,执行所述SIMD型运算。
另外,根据本发明的第5种处理器是执行SIMD型指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码根据多个数据各自符号来生成值的SIMD指令的情况下,生成表示所述多个数据分别为正、零及负之一的值的数据。
另外,根据本发明的第6种处理器是执行SIMD型指令的处理器,其特征在于,具备:参数指定单元,指定第1参数及第2参数;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码操作第1数据的指令的情况下,根据所述第1参数位移所述第1数据,输出得到的位移数据中、由所述第2参数特定的单位长度位置的多个单位长度数据。
另外,根据本发明的第7种处理器是译码并执行指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将第1及第2数据设为操作数的加法指令由所述译码单元译码的情况下,当所述第1数据是零或正时,生成将所述第1数据、所述第2数据与1相加的结果,当所述第1数据为负时,生成将所述第1数据与所述第2数据相加的结果。
另外,根据本发明的第8种处理器是译码并执行指令的处理器,其特征在于,具备多个寄存器;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码传送第1及第2寄存器的值的指令的情况下,将所述第1寄存器的值存储在第3寄存器中,同时,将所述第2寄存器的值存储在设置在与所述第3寄存器连续位置上的第4寄存器中。
另外,根据本发明的第9种处理器是译码并执行指令的处理器,其特征在于,具备标志存储单元,存储用于条件执行指令的谓词(predicate)的多个标志;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码将所述标志设为操作数的循环的分支指令的情况下,在对循环的开头进行分支的同时,设定所述标志。另外,作为译码并执行指令的处理器,其特征在于,具备分支寄存器,存储分支目的地地址;标志存储单元,存储用于条件执行指令的谓词的多个标志;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在对将所述标志设为操作数的分支寄存器的存储指令由所述译码单元译码的情况下,在将循环的开头地址存储在所述分支寄存器中的同时,设定所述标志。
另外,根据本发明的第10种处理器是执行SIMD型指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将多个数据对作为对象来进行差分绝对值和的SIMD型指令由所述译码单元译码的情况下,生成将所述多个数据对各自的差分绝对值相加后的值。
另外,根据本发明的第11种处理器是译码并执行指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将第1及第2数据设为操作数的饱和指令由所述译码单元译码的情况下,当所述第1数据比由所述第2数据特定的饱和值大时,生成所述饱和值,当所述第1数据小于所述饱和值时,生成所述第1数据。
另外,根据本发明的第12种处理器是译码并执行指令的处理器,其特征在于,具备n单位长度的多个寄存器;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在将第1-第3寄存器和1个参数设为操作数并用单位长度单位进行选择的指令由所述译码单元译码的情况下,将存储在所述第1及第2寄存器中的2n个单位长度数据中、由所述参数选择的n个单位长度数据存储在所述第3寄存器中。
另外,根据本发明的第13种处理器是执行SIMD型指令的处理器,其特征在于,具备:对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码SIMD型指令的情况下,通过进行SIMD型运算,生成多个运算结果,对所述多个运算结果的至少一个进行位扩展。
另外,根据本发明的第14种处理器是执行SIMD型指令的处理器,其特征在于,具备标志存储单元,存储标志;对指令译码的译码单元;和执行单元,根据译码单元的译码结果,执行指令,所述执行单元在由所述译码单元译码对多个数据对进行SIMD型运算的指令的情况下,对所述多个数据对分别进行由所述标志存储单元中存储的标志特定的SIMD型运算。
另外,本发明不仅可实现为执行这种特征指令的处理器,也可实现为对多个数据等的运算处理方法,或实现为包含特征指令的程序。另外,不用说,这种程序可经CD-ROM等记录媒体或因特网等传输媒体来流通。
附图说明
图1是本发明的处理器的示意框图。
图2表示该处理器的算术逻辑、比较运算器的示意图。
图3是表示该处理器的桶形移位器(barrel shifter)的结构框图。
图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是表示该处理器的并行动作的图。
图20是表示该处理器执行的指令的格式的图。
图21是说明属于分类[ALUadd(加法)类]的指令的图。
图22是说明属于分类[ALUsub(减法)类]的指令的图。
图23是说明属于分类[ALUlogic(逻辑运算)类]的指令的图。
图24是说明属于分类[CMP(比较运算)类]的指令的图。
图25是说明属于分类[mul(乘法)类]的指令的图。
图26是说明属于分类[mac(积和运算)类]的指令的图。
图27是说明属于分类[msu(积差运算)类]的指令的图。
图28是说明属于分类[MEMld(存储器读出)类]的指令的图。
图29是说明属于分类[MEMstore(存储器写入)类]的指令的图。
图30是说明属于分类[BRA(分支)类]的指令的图。
图31是说明属于分类[BSasl(算术桶形移位)类其他]的指令的图。
图32是说明属于分类[BSlsr(逻辑桶形移位)类其他]的指令的图。
图33是说明属于分类[CNVvaln(算术变换)类]的指令的图。
图34是说明属于分类[CNV(一般变换)类]的指令的图。
图35是说明属于分类[SATvlpk(饱和处理)类]的指令的图。
图36是说明属于分类[ETC(其它)类]的指令的图。
图37是表示处理器对指令[vcchk]的动作的图。
图38是说明指令[vcchk]的详细动作的图。
图39是表示处理器对指令[stbh(Ra),Rb]的动作的图。
图40是说明指令[stbh(Ra),Rb]的详细动作的图。
图41是表示处理器对指令[stbhp(Ra),Rb:Rb+1]的动作的图。
图42是说明指令[stbhp(Ra),Rb:Rb+1]的详细动作的图。
图43是处理器对指令[sethi Ra,I16]的动作的图。
图44是说明指令[sethi Ra,I16]的详细动作的图。
图45是表示处理器对指令[vaddhvc Rc,Ra,Rb]的动作的图。
图46是说明指令[vaddhvc Rc,Ra,Rb]的详细动作的图。
图47说明图像处理中的动作补偿。
图48是表示处理器对指令[vaddrhvc Rc,Ra,Rb]的动作的图。
图49是说明指令[vaddrhvc Rc,Ra,Rb]的详细动作的图。
图50是表示处理器对指令[vsgnh Ra,Rb]的动作的图。
图51是说明指令[vsgnh Ra,Rb]的详细动作的图。
图52是表示处理器对指令[valnvc1 Rc,Ra,Rb]的动作的图。
图53是说明指令[valnvc1 Rc,Ra,Rb]的详细动作的图。
图54是说明指令[valnvc2 Rc,Ra,Rb]的详细动作的图。
图55是说明指令[valnvc3 Rc,Ra,Rb]的详细动作的图。
图56是说明指令[valnvc4 Rc,Ra,Rb]的详细动作的图。
图57是表示处理器对指令[addarvw Rc,Rb,Ra]的动作的图。
图58是说明指令[addarvw Rc,Rb,Ra]的详细动作的图。
图59是表示[绝对值舍入(away from zero)]动作的图。
图60是表示处理器对指令[movp Rc:Rc+1,Ra,Rb]的动作的图。
图61是说明指令[movp Rc:Rc+1,Ra,Rb]的详细动作的图。
图62是说明指令[jloop C6,Cm,TAR,Ra]的详细动作的图。
图63是说明指令[settar C6,Cm,D9]的详细动作的图。
图64是表示PROEPI(プロェピ)去除型2阶段软件流水线操作的图。
图65是表示C语言源程序列表的图。
图66表示用通常的指令jloop及指令settar生成的机器语言程序的实例。
图67表示用本实施形态的指令jloop及指令settar生成的机器语言程序的实例。
图68是说明指令[jloop C6,C2:C4,TAR,Ra]的详细动作的图。
图69是说明指令[settar C6,C2:C4,D9]的详细动作的图。
图70是表示PROEPI去除型3级软件流水线操作的图。
图71是表示C语言源程序列表的图。
图72表示用通常的指令jloop及指令settar生成的机器语言程序的实例。
图73表示用本实施形态的指令jloop及指令settar生成的机器语言程序的实例。
图74是表示处理器对指令[vsada Rc,Ra,Rb,Rx]的动作的图。
图75(a)是说明指令[vsada Rc,Ra,Rb,Rx]的详细动作的图,(b)是说明指令[vsada Rc,Ra,Rb]的详细动作的图。
图76是表示处理器对指令[satss Rc,Ra,Rb]的动作的图。
图77(a)是说明指令[satss Rc,Ra,Rb]的详细动作的图,(b)是说明指令[satsu Rc,Ra,Rb]的详细动作的图。
图78是表示处理器对指令[bytesel Rc,Ra,Rb,Rx]的动作的图。
图79(a)是表示指令[bytesel Rc,Ra,Rb,Rx]的详细动作的图,(b)是表示寄存器Rx与选择的字节数据的关系的图,(c)是表示指令[byteselRc,Ra,Rb,I12]的详细动作的图,(d)是表示即值(当前值)I12与选择的字节数据的关系的图。
图80是表示位扩展(符号扩展或零扩展)SIMD运算结果一部分的状态图。
图81是表示位扩展SIMD运算的所有结果的状态图。
图82是表示执行由条件标志等指定的种类的SIMD运算的状态图。
具体实施方式
说明根据本发明的处理器的结构。本处理器的指令与通常的微计算机相比,并行性高,是将AV媒体类信号处理技术领域作为目标开发的通用处理器。通过在便携电话、移动AV设备、数字TV、DVD等中使用共同内存(コァ),可提高软件再利用性。另外,本处理器可以高性能、高成本性能来实现更多的媒体处理,并且,提供以提高开发效率为目的的高级语言开发环境。
图1是本处理器的示意框图。本处理器1包括指令控制部10、解码部20、寄存器文件30、运算部40、I/F部50、指令存储部60、数据存储部70、扩展寄存器部80及I/O接口部90。运算部40由执行SIMD型指令运算的算术逻辑、比较运算部41-43、乘法·、积和运算部44、桶形移位器45、除法器46及变换器47构成。乘法·积和运算部44最长以65位进行累计,以不降低位精度。另外,乘法·、积和运算部44与算术逻辑、比较运算器41-43一样,可执行SIMD型指令。此外,该处理器1最大可并行执行3个算术逻辑、比较运算指令。
图2表示算术逻辑、比较运算器41-43的示意图。算术逻辑、比较运算器41~43分别由ALU部41a、饱和处理部41b及标志部41c构成。ALU部41a由算术运算器、逻辑运算器、比较器、TST器构成。对应的运算数据的位宽为8位(并行使用4个运算器)、16位(并行使用2个运算器)、32位(由全部运算器进行32位数据处理)。此外,通过标志部41c等,对算术运算结果进行溢出检测和条件标志的生成。各运算器、比较器、TST器的结果,进行算术右移位、基于饱和处理部41b的饱和、最大、最小值检测、绝对值生成处理。
图3是表示桶形移位器45的结构框图。桶形移位器45由选择器45a、45b、上位桶形移位器45c、下位桶形移位器45d及饱和处理部45e构成,执行数据的算术移位(2的求补体系的移位)或逻辑移位(无符号移位)。通常,输入输出32位或64位的数据。对于存储在寄存器30a、30b中的被移位数据,用其它寄存器或即值来指定移位量。数据进行左63位-右63位的算术或逻辑移位,以输入位长度输出。
另外,桶形移位器45可对SIMD型指令移位8、16、32、64位的数据。例如,可并行处理4个8位数据的移位。
算术移位是2的求补体系的移位,用于加法或减法时的小数点的位置一致或2的幂乘法(2、2的平方、2的(-1)次方、2的(-2)次方等)。
图4是表示变换器47的结构框图。变换器47由饱和块(SAT)47a、BSEQ块47b、MSKGEN块47c、VSUMB块47d、BCNT块47e及IL块47f构成。
饱和块(SAT)47a对输入数据进行饱和处理。通过具有两个饱和处理32位数据的块,支持两个并行的SIMD型指令。
BSEQ块47b从MSB开始计数连续的0或1。
MSKGEN块47c将指定的位区间输出为1,将此外的区间输出为0。
VSUMB块47d将输入数据区分成指定的位宽,输出其总和。
BCNT块47e用输入数据来计数变为1的位的数量。
IL块47f将输入数据区分成指定的位宽,输出改换各数据块后的值。
图5是表示除法器46的结构框图。除法器46设被除数为64位、除数为32位,以每32位输出商和余数。在求出商和余数之前,必需34次周期。可能处理带符号、无符号两种数据。其中,对被除数与除数的有无符号的设定是共同的。另外,具有输出溢出标志、0除法标志的功能。
图6是表示乘法·、积和运算器44的结构框图。乘法·、积和运算器44由两个32位乘法器(MUL)44a、44b、3个64位加法器(Adder)44c-44e、选择器44f及饱和处理部(Saturation)44g构成,进行以下的乘法·、积和运算。
.32×32位的带符号的乘法、积和、积差运算
.32×32位的无符号的乘法
.并行两个16×16位的带符号的乘法、积和、积差运算
.并行两个32×16位的带符号的乘法、积和、积差运算
对整数、固定小数点格式(h1、h2、w1、w2)的数据进行这些运算。另外,对这些运算进行舍入、饱和。
图7是表示指令控制部10的结构框图。指令控制部10由指令高速缓冲存储器10a、地址管理部10b、指令缓冲器10c-10e、转移缓冲器10f及旋转部(rotation)部10g构成,在总是及分支时提供指令。通过具有3个128位的指令缓冲器(指令缓冲器10c-10e),对应于最大并行执行数。指令控制部10对于分支处理,在分支执行前,将分支目的的指令存储在转移缓冲器10f中,同时,将分支目的地址事先存储在后述的TAR寄存器中(settar指令)。因此,在分支时,指令控制部10使用存储在TAR寄存器中的分支目的地址及存储在转移缓冲器10f中的分支目的指令,进行分支。
本处理器1是具有VLIW结构的处理器。这里,所谓VLIW结构是将多个指令(加载、存储、运算、分支等)存储在1个指令字中、同时执行所有这些指令的结构。程序编制器通过将可并行执行的指令记述为1个发行组,可并行处理该发行组。在本说明书中,用“;;”表示发行组的区分。下面示出表述例。
(例1)
mov r1,0x23;;
该指令表述意味着仅执行指令mov。
(例2)
movr1,0x38
add ro,r1,r2
sub r3,r1,r2;;
这些指令表述意味着并行执行3个指令mov、add、sub。
指令控制部10识别发行组,发送到解码部20。解码部20分析发行组的指令,控制必要的资源。
下面,说明本处理器1具备的寄存器。
本处理器1的寄存器组如后附表1所示。
另外,本处理器1的标志组(由后述的条件标志寄存器等管理的标志)如后附表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)一样,也用于循环高速化。下位1位虽总是读出0,但在写入时必需写入0。
例如,在执行call(brl,jmpl)指令的情况下,本处理器1返回连接寄存器(LR)30c,保存地址,将条件标志(CFR.CF)保存到保存寄存器(SVR)。另外,在执行jmp指令的情况下,从连接寄存器(LR)30c返回,取出地址(分支目的地址),并使程序计数器(PC)复原。在执行ret(jmpr)指令的情况下,从连接寄存器(LR)30c中取出分支目的地址(返回地址),存储(复原)到程序计数器(PC)中。并从保存寄存器(SVR)中取出条件标志,存储(复原)到条件标志寄存器(CFR)32的条件标志区域CFR.CF中。
图10是表示分支寄存器(TAR)30d的结构图。分支寄存器(TAR)30d是存储分支目标地址的32位寄存器。主要用于循环高速化。下位1位虽总是读出0,但在写入时必需写入0。
例如在执行jmp,jloop指令的情况下,本处理器1从分支寄存器(TAR)30d中取出分支目的地址,存储在程序计数器(PC)中。在将存储在分支寄存器(TAR)30d中的地址的指令存储在分支用指令缓冲器中的情况下,分支罚(ペナルティ)为0。通过在分支寄存器(TAR)30d中存储循环的开头地址,可高速化循环。
图11是表示程序状态寄存器(PSR)31的结构图。程序状态寄存器(PSR)31构成成为执行对象的任务的上下文的一部分,是存储以下所示处理器状态信息的32位的寄存器。
位SWE:表示VMP(Virtual Multi-Processor)的LP(Logical Processor)切换操作。0表示不允许LP切换,1表示允许LP切换。
位FXP:表示固定小数点模式。“0”表示模式0,“1”表示模式1。
位IH:是中断处理标志,表示是可屏蔽的中断处理中。“1”表示中断处理中,“0”表示不是中断处理中。一旦中断发生,则自动设置。通过rti指令从中断开始进行复原用于区分是其它中断处理中还是程序处理中。
位EH:是表示正在处理错误或NMI的标志。0表示不在错误/NMI中断处理中,1表示在错误/NMI中断处理中。EH=1时,在发生非同步错误或NMI的情况下,被屏蔽。另外,在VMP使能时,屏蔽VMP的屏极(plate)切换。
位PL[1:0]:表示特权等级。“00”表示特权等级0,即,表示处理器抽象等级,“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:表示失调例外使能。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:表示预约位。总是读出0。在写入时必需写入0。
图12是表示条件标志寄存器(CFR)32的结构图。条件标志寄存器(CFR)32是构成成为执行对象的任务上下文的一部分的32位寄存器,由条件标志(条件标志)、操作标志(运算标志)、矢量条件标志(矢量条件标志)、运算指令用位位置指定字段、SIMD数据对齐信息字段构成。
位ALN[1:0]:表示对齐模式。设定valnvc指令的对齐模式。
位BPO[4:0]:表示位位置。由位位置指定必需的指令使用。
位VC0-VC3:是矢量条件标志。从LSB侧的字节或半字开始顺序对应于VC0,MSB侧对应于VC3。
位OVS:是溢出标志(一览)。由饱和发生或溢出检测进行设定。在未检测的情况下,保持指令执行前的值。必需由软件进行清零。
位CAS:是进位标志(一览)。在addc指令下发生进位或在subc指令下发生借位的情况下进行设定。在未在addc指令下发生进位或未在subc指令下发生借位的情况下,保持指令执行前的值。必需由软件进行清零。
位C0-C7:是条件标志。标志C7的值总为1。忽视FALSE条件对标志C7的反映(写入0)。
reserved:表示预约位。总是读出0。在写入时必需写入0。
图13是表示累加器(M0、M1)30b的结构图。该累加器(M0、M1)30b构成成为执行对象的任务上下文的一部分,由图13(a)所示32位寄存器MH0-MH1(乘法除法、积和用寄存器(上位32位))、和图13(b)所示32位寄存器ML0-ML1乘法除法、积和用寄存器(下位32位)构成。
寄存器MH0-MH1在乘法指令下用于存储结果的上位32位。在积和指令下用作累加器的上位32位。另外,在处理位流的情况下,可与通用寄存器组合后使用。寄存器ML0-ML1在乘法指令下用于存储结果的下位32位。在积和指令下用作累加器的下位32位。
图14是表示程序计数器(PC)33的结构图。程序计数器(PC)33构成成为执行对象的任务上下文的一部分,是保持执行中的指令地址的32位的计数器。
图15是表示PC保存用寄存器(IPC)34的结构图。PC保存用寄存器(IPC)34是构成成为执行对象的任务上下文的一部分的32位的寄存器。
图16是表示PSR保存用寄存器(IPSR)35的结构图。PSR保存用寄存器(IPSR)35构成成为执行对象的任务上下文的一部分,是用于保存程序状态寄存器(PSR)31的32位的寄存器,对应于程序状态寄存器(PSR)31的预约位的部分总是读出0,但在写入时必需写入0。
下面,说明本处理器1的存储器空间。在处理器1中,将4GB的线性存储器空间分割成32份,向128MB单位的空间分配指令SRAM(Static RAM)与数据SRAM。将该128MB的空间作为1个块,设定想对SAR(SRAM Area Register)进行访问的块。在被访问的地址是由SAR设定的空间的情况下,直接对指令SRAM/数据SRAM进行访问,但在不是由SAR设定的空间的情况下,对总线控制器(BCU)发出访问请求。在BCU上连接单片存储器(OCM)、外部存储器、I/O端口等,对这些器件可进行读写。
图17是表示处理器1的流水线动作的时间图。处理器1如图17所示,基本上由指令获得、指令分配(分派)、解码、执行、写入5级流水线构成。
图18是表示处理器1在执行指令时的各流水线动作的时间图。在指令获得阶段,访问由程序计数器(PC)33指定的地址的指令存储器,并将指令传送给指令缓冲器10c-10e等。在指令分配阶段,输出对分支类指令的分支目的地地址信息,输出输入寄存器控制信号,分配可变长指令,将指令传送给指令寄存器(IR)。解码阶段中,将IR输入解码部20,输出去处运算器控制信号、存储器访问信号。在执行阶段中,执行运算,将运算结果输出到数据存储器或通用寄存器(R0-R31)30a。在写入阶段中,传送数据,将运算结果存储在通用寄存器中。
处理器1通过VLIW结构,最高能并行进行3个上述处理。因此,就图18所示动作而言,处理器1按图19所示定时来并行执行。
下面,说明上述构成的处理器1的指令组。
后附的表3-表5是按分类不同来分类处理器1执行的指令的表。
表中运算器表示该指令使用的运算器。运算器的略语含义如下。即,A表示ALU指令,B表示分支指令,C表示变换指令,DIV表示除法指令,DBGM表示调试(debug)指令,M表示存储器访问指令,S1、S2表示移位指令,X1、X2表示乘法指令。
图20是表示本处理器1执行的指令的格式的图。
图中略语的含义如下。即,P表示谓词(执行条件:指定8个条件标志C0-C7之一),OP表示操作码字段,R表示寄存器字段,I表示即值(当前值)字段,D表示位移字段。
图21-图36是说明处理器1执行的指令的示意功能图。即,图21是说明属于分类[ALUadd(加法)类]的指令的图,图22是说明属于分类[ALUsub(减法)类]的指令的图,图23是说明属于分类[ALUlogic(逻辑运算)类]的指令的图,图24是说明属于分类[CMP(比较运算)类]的指令的图,图25是说明属于分类[mul(乘法)类]的指令的图,图26是说明属于分类[mac(积和运算)类]的指令的图,图27是说明属于分类[msu(积差运算)类]的指令的图,图28是说明属于分类[MEMld(存储器读出)类]的指令的图,图29是说明属于分类[MEMstore(存储器写入)类]的指令的图,图30是说明属于分类[BRA(分支)类]的指令的图,图31是说明属于分类[BSasl(算术桶形移位)类]的指令的图,图32是说明属于分类[BSlsr(逻辑桶形移位)类]的指令的图,图33是说明属于分类[CNVvaln(算术变换)类]的指令的图,图34是说明属于分类[CNV(一般变换)类]的指令的图,图35是说明属于分类[SATvlpk(饱和处理)类]的指令的图,图36是说明属于分类[ETC(其它)类]的指令的图。
在这些图中,项目SIMD表示该指令类型(SISD(SINGLE)或SIMD的区别),项目[大小]表示成为运算对象的各操作数的大小,项目[指令]表示该指令的操作码,项目[操作数]表示该指令的操作数,项目[CFR]表示条件标志寄存器的变化,项目[PSR]表示处理器状态寄存器的变化,项目[代表动作]表示动作概要,项目[运算器]表示所使用的运算器,项目[3116]表示指令的大小。
下面,就几个特征指令来说明处理器1的动作。另外,各指令的动作说明中使用的各种记号的含义如后附表6-表10所示。
指令vcchk
指令vcchk是判断基于SIMD型比较指令(vcmpCCb等)的结果是否全部为0、且将结果设定到条件标志寄存器(CFR)32的SIMD型指令。例如,若为
vcchk,则处理器1如图37所示,判断条件标志寄存器(CFR)32的矢量条件标志VC0-VC3(110)是否全部为0,在全部为0的情况下,将条件标志寄存器(CFR)32的条件标志C4及C5分别设定成1及0,在不全部为0的情况下,将条件标志C4及C5分别设定为0及1。另外,在条件标志C0-C3中存储矢量条件标志VC0-VC3。详细动作如图38所示。
通过该指令,可快速取出SIMD型比较指令的结果(具体而言是一致、不一致)。对文件中的EOF(End Of File)的检测等有效。
指令stbh、stbhp
指令stbh是将1个寄存器中存储的两个字节数据(存储在上位16位中的字节数据与存储在下位16位中的字节数据)存储在存储器等中的指令,是对应于指令ldbh(向相反方向传送数据)的指令。例如,若为
stbh(Ra),Rb则处理器1通过I/F部50等,如图39所示,在寄存器Ra所示地址的存储区域中,存储寄存器Rb中存储的两个字节数据(寄存器Rb的第16-23位及第0-7位)。详细动作如图40所示。
指令stbhp是将两个寄存器(成对寄存器)中存储的4个字节数据(存储在各寄存器的上位16位中的字节数据与存储在下位16位中的字节数据)存储在存储器等中的指令,是对应于指令ldbhp(向相反方向传送数据)的指令。例如,若为
stbhp(Ra),Rb:Rb+1则处理器1通过I/F部50等,如图41所示,在寄存器Ra所示地址的存储区域中,存储寄存器Rb及Rb+1中存储的4个字节数据(各寄存器的第16-23位及第0-7位)。详细动作如图42所示。
通过这些指令,在16位SIMD型下处理字节数据时,不必变换数据类型,处理高速化。
指令sethi
指令sethi是不变更寄存器的下位16位、将即值存储在上位16位中的指令。例如,若为
sethi Ra,I16则处理器1如图43所示,在寄存器Ra的上位16位中存储16位的即值(I16)。此时,寄存器Ra的下位16位不变化。详细动作如图44所示。
通过该指令,通过与指令[mov Rb,I16]组合,可将32位即值设定到寄存器。
指令vaddhvc、vaddrhvc
指令vaddhvc是通过矢量条件标志的值来切换相加的信号源的SIMD型指令。例如,若为
vaddhvc Rc,Ra,Rb,则处理器1通过运算部40等,如图45所示,以半字矢量形式,将寄存器Ra的值与寄存器Ra或Rb的值相加,将结果存储在寄存器Rc中。此时,加上寄存器Ra及Rb的哪个值由矢量条件标志VC2的值确定。具体而言,在矢量条件标志VC2=1的情况下,将寄存器Ra的值与寄存器Rb的值相加,在VC2=0的情况下,将寄存器Ra的值与寄存器Ra的值相加。详细动作如图46所示。
该指令对图像处理中的动作补偿有效。因为用2除以加法结果寄存器Rc的值以后的值为寄存器Ra、或寄存器Ra与Rb的平均值,所以如图47所示,就动作补偿半灰白(ハフペル半象素单位的动作补偿)而言,无论是整数象素还是半象素,都可用相同程序进行处理。
指令vaddrhvc相当于在上述指令vaddhvc的处理中附加舍入加法结果的处理。例如,若为
vaddrhvc Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41等,如图48所示,以半字矢量形式,将寄存器Ra的值与寄存器Ra或Rb的值相加,并加上用于舍入的1,将结果存储在寄存器Rc中。其它动作与指令vaddhvc一样。详细动作如图49所示。
不用说,该指令也对图像处理中的动作补偿有效。
作为上述指令vaddhvc及指令vaddrhvc各自的功能,也可附加1位右移位(用2来除的处理)。由此,处理器可直接算出整数象素或半象素的象素值。
另外,也可定义使上述指令vaddhvc及指令vaddrhvc的功能合并所具有的指令。例如,也可设置通过条件标志的值来进行指令vaddhvc及指令vaddrhvc之一动作的指令。由此,在有、无舍入的任一情况下都可用相同程序进行处理。
指令vsgnh
指令vsgnh是由寄存器的符号(正/负)及零来生成值的SIMD型指令。例如,若为
vsgnh Ra,Rb,则处理器1如图50所示,以半字矢量形式,在寄存器Ra的值为正的情况下,将1存储在寄存器Rb中,在为负的情况下,将-1存储在寄存器Rb中,在为0的情况下,将0存储在寄存器Rb中。详细动作如图51所示。
该指令在某值为正时输出1、为负时输出-1、为零时输出0,所以对图像处理中的逆量化有效。尤其是可在处理器1中高速化难以按SIMD型进行的运算。
指令valnvc1、valnvc2、valnvc3、valnvc4
指令valnvc1是字节对齐数据、并由矢量条件标志来变更取出的字节数据的SIMD型指令。例如,若为
valnvc1 Rc,Ra,Rb,则处理器1如图52所示,通过对应于条件标志寄存器(CFR)32的位ALN[1:0]的值,使连结寄存器Ra与寄存器Rb的位列移位,进行字节对齐,对应于矢量条件标志VC0的值,将取出的4个字节数据存储在寄存器Rc中。具体而言,在矢量条件标志VC0=0的情况下,从字节对齐后的数据中取出4个字节数据a、a、b、b,存储在寄存器Rc中,在矢量条件标志VC0=1的情况下,取出4个字节数据a、b、b、c,存储在寄存器Rc中。详细动作如图53所示。
该指令对图像处理中的动作补偿有效。因为在半字矢量单位下,用2除以加法结果寄存器Rc的值以后的值为与a及b、或与(a+b)/2及(b+c)/2相等的值,所以如图47所示,就动作补偿的半灰白(ハフペル)(半象素单位的动作补偿)而言,无论是整数象素还是半象素,都可用相同程序进行处理。
指令valnvc2、valnvc3及valnvc4如图52所示,动作与上述指令valnvc1的基本相同,不同之处仅在于从字节对齐后的数据中取出的位置。详细动作分别如图54、图55、图56所示。由此,不用说,这些指令对图像处理中的动作补偿有效。
另外,本发明中对齐等的单位不限于字节,也可用半字或半字节等来代替字节。
[指令addarvw]
指令addarvw是将两个值相加、在相加对象的一方为正的情况下、再加上1的指令。例如,若为
addarvw Rc,Rb,Ra,则处理器1通过算术逻辑、比较运算器41等,如图57所示,将寄存器Ra的值与寄存器Rb的值相加。此时,在寄存器Ra的值为正的情况下,还加上1。详细动作如图38所示。
该指令对绝对值舍入(away from zero)有效。如图59所示,将成为绝对值舍入对象的值存储在寄存器Ra中,同时,将用1填补相当于比进行绝对值舍入的位还下位的位的值存储在寄存器Rb中。因此,若执行上述指令,则将对寄存器Ra的值(这里,最上位位是符号位,小数点位于从最上位开始第2位与第3位之间的固定小数点数据)进行绝对值舍入后的结果存储在寄存器Rc中。在图58所示实例中,通过屏蔽寄存器Rc的上位2位的其他,对+0.5得到+1,对-0.5得到-1,实现绝对值舍入。因此,该指令对图像处理中的绝对值舍入有效。
[指令movp]
指令movp是将任意两个寄存器的值传送到连续的两个寄存器的指令。例如,若为
movp Rc:Rc+1,Ra,Rb,则处理器1通过I/F部50等,如图60所示,将寄存器Ra的值传送到寄存器Rc,将寄存器Rb的值传送到寄存器Rc+1。详细动作如图61所示。
该指令在1个周期中进行独立的两个寄存器的移动,所以可发挥例如在循环的内部减少循环内的周期次数的效果。另外,根据该指令,没有寄存器重命名(寄存器值的破坏),所以在进行循环代间(迭代间)的数据移动时也有效。
本发明的运算种类不限于传送(mov),也可是一项运算(neg等)或二次运算(add)。例如,若是指定任意两个寄存器(R0、R6)与连续的两个寄存器(R2、R3)的加法指令,则由1个指令(1个周期)来执行两个加法操作[R0+R2→R2]及[R6+R3→R3]。
[指令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(分支用指令缓冲器)填充分支用指令的情况下,填充分支目的地的指令。详细动作如图62所示。
另外,指令settar是将分支目的地地址存储在分支寄存器(TAR)30d中,并进行条件标志(这里为谓词)的设定的指令。例如,若为
settar C6,Cm,D9,则处理器1通过地址管理部10b等,(1)将程序计数器(PC)33与位移值(D9)相加后的地址存储在分支寄存器(TAR)30d中,(2)获得该地址的指令后,存储在转移缓冲器10f(分支用指令缓冲器)中,(3)将条件标志C6设为1,将条件标志Cm设为0。详细动作如图63所示。
这些指令jloop及指令settar是对基于起头结尾(PROLOG EPILOG)去除型(以下称为PROEPI去除型)的软件流水线操作的循环高速化有效的指令,通常成对使用。另外,软件流水线操作是基于程序编制器的循环高速化方法之一,通过将循环结构变换为起头(PROLOG)部、核心部、结尾(EPILOG)部,对于核心部,使各迭代(重复)与其前后的迭代重叠,可高效地并行执行多个指令。
所谓PROEPI去除型如图64所示,通过将起头(PROLOG)部及结尾(EPILOG)部设为基于谓词的条件执行指令,去除PROLOG部与EPILOG部。图64中,对于PROLOG去除型2阶段软件流水线操作,条件标志C6与C4分别成为EPILOG指令(阶段2)用、PROLOG指令(阶段1)用的谓词。
下面,边与不具有标志传送功能的通常指令jloop及指令settar相比较,边说明这些jloop及指令settar具有的标志传送功能(条件标志Cm的设定)的意义。
在处理器1的指令组中没有本实施形态的上述指令jloop及指令settar的情况下,即,指令组中仅包含通常的指令jloop及指令settar的情况下,指令jloop及指令settar必需分别独立地进行条件标志Cm的传送。为此,存在如下问题,
(1)与本来的循环执行无关的标志传送指令增加,导致PROEPI去除型软件流水线操作的性能下降,
(2)标志间的数据依赖关系增加,由于标志间的数据依赖及配置限制等导致性能下降,
(3)必需具备标志间传送指令,即,指令组中必需具备本来不必要的标志间传送指令,导致压迫指令组的比较字段。
例如,在对图65所示C语言的源程序使用通常的指令jloop及指令settar的情况下,程序编制器通过PROEPI去除型软件流水线操作,生成图66所示机器语言程序。从该机器语言程序的循环部分(标签L00023至指令jloop)可知,必需设定条件标志C4的指令(指令cmpeq),故循环执行需要3个周期。并且,必需用于设定及复位条件标志C4的两个指令,PROEPI去除的效果减弱。
相反,在指令组中包含本实施形态的指令jloop及指令settar的情况下,程序编制器生成图67所示机器语言程序。从该机器语言程序的循环部分(标签L00023至指令jloop)可知,分别由指令jloop及指令settar来设定及复位条件标志C4,不必特别指令,循环执行通过两个周期完成。
这样,指令[jloop C6,Cm,TAR,Ra]及指令[settar C6,Cm,D9]具有削减2阶段PROEPI去除型软件流水线操作中的执行周期数的效果。
处理器1具备不仅适用于2阶段软件流水线操作、而且还适用于3阶段软件流水线操作的指令[jloop C6,C2:C4,TAR,Ra]及指令[settarC6,C2:C4,D9]。这些指令[jloop C6,C2:C4,TAR,Ra]及指令[settarC6,C2:C4,D9]相当于将上述2阶段的指令[jloop C6,Cm,TAR,Ra]及指令[settar C6,Cm,D9]中的寄存器Cm扩展到寄存器C2、C3及C4。
即,若为
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)30表示的地址。在转移缓冲器10f中未填充分支目的地的指令的情况下,填充分支目的地的指令。详细动作如图68所示。
另外,若为
settar C6,C2:C4,D9,则处理器1通过地址管理部10b等,(1)把将程序计数器(PC)33与位移值(D9)相加后的地址存储在分支寄存器(TAR)30d中,(2)获得该地址的指令后,存储在转移缓冲器10f(分支用指令缓冲器)中,(3)将条件标志C4与C6设为1,将条件标志C2与C3设为0。详细动作如图69所示。
这些3阶段用指令[jloop C6,C2:C4,TAR,Ra]及指令[settarC6,C2:C4,D9]中条件标志的作用如图70所示。如图70(a)所示,在PROEPI去除型3阶段软件流水线操作中,条件标志C2、C3、C4分别变为阶段3用、阶段2用、阶段1用的谓词。图70(b)是表示基于此时的标志传送的执行变迁图。
表示这些指令[jloop C6,C2:C4,TAR,Ra]及指令[settar C6,C2:C4,D9]的标志传送意义的程序例如图71-图73所示。图71表示源程序的实例,图72表示用不具有这种标志传送功能的指令jloop及指令settar生成的机器语言程序的实例,图73表示用本实施形态的具有标志传送功能的指令jloop及指令settar生成的机器语言程序的实例。比较图72与图73可知,通过使用本实施形态的具有标志传送功能的指令jloop及指令settar,不需要5个指令,同时,循环执行也减少1个周期。
4阶段以上的软件流水线操作也一样,只要增加谓词用条件标志即可。
除以上特征指令外,处理器1可执行上述图21-图36中未例举的以下特征指令。
[指令vsada]
指令vsada是算出差分绝对值和的SIMD型指令。例如,若为
vsada Rc,Ra,Rb,Rx,则处理器1通过算术逻辑、比较运算器41,如图74所示,以字节单位SIMD运算寄存器Ra的值与寄存器Rb的值之差(算出4组字节各自的差),取4个结果各自的绝对值后相加,将寄存器Rx的值加到结果中,将结果存储在寄存器Rc中。详细动作如图75(a)所示。
处理器1还执行没有上述指令vsada格式中的最后操作数(Rx)的形式的指令。例如,若为
vsada Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41等,以字节单位SIMD运算寄存器Ra的值与寄存器Rb的值之差(算出4组字节各自的差),取4个结果各自的绝对值后相加,将结果存储在寄存器Rc中。详细动作如图75(b)所示。
这些指令vsada是指令vasubb与指令vabssumb的复合指令。指令vasubb是以字节单位将4组SIMD数据分别相减、将结果得到的4个符号存储在条件标志寄存器中的SIMD型指令。另外,指令vabssumb是根据条件标志寄存器、以字节单位、将4组SIMD数据分别进行绝对值相加、将该结果与其它4字节数据相加的SIMD型指令。
因此,通过指令vsada,与连续使用指令vasubb与指令vabssumb的情况相比,以1个周期算出差分绝对值和,高速化运算。这种指令vsada对图像处理的动作预测中差分绝对值和的算出等有效。
本发明的数据单位不限于字节,也可是半字或半字节等。
[指令satss、satsu]
指令satss是在任意位置(数位)使带符号的值饱和为带符号的值的指令。例如,若为
satss Rc,Ra,Rb,则处理器1通过饱和块(SAT)47a等,如图76所示,在寄存器Ra的值比由寄存器Rb特定的饱和值(寄存器Rb的1的补数)大的情况下,将该饱和值存储在寄存器Rc中,在寄存器Ra的值小于饱和值的情况下,将寄存器Ra的值存储在寄存器Rc中。详细动作如图77(a)所示。
另外,指令satsu是在任意位置(进位)使无符号的值饱和为带符号的值的指令。例如,若为
satsu Rc,Ra,Rb,则处理器1通过饱和块(SAT)47a等,在寄存器Ra的值比由寄存器Rb特定的饱和值大的情况下,将该饱和值存储在寄存器Rc中,在寄存器Ra的值小于饱和值的情况下,将寄存器Ra的值存储在寄存器Rc中。详细动作如图77(b)所示。
通过这种指令satss及指令satsu,可在任意位置进行饱和处理。在汇编编程时,不必使饱和位置与特定位置一致,编程容易。
[指令bytesel]
指令bytesel是用字节单位来选择两个寄存器之一的值的指令。例如,若为
bytesel Rc,Ra,Rb,Rx,则处理器1通过运算部40等,如图78所示,根据寄存器Rx的值,对寄存器Rc的4个字节并行进行将寄存器Ra及寄存器Rb的8个字节数据之一存储在寄存器Rc中的动作。详细动作如图79(a)所示,寄存器Rx与选择的字节数据的关系如图79(b)所示。
处理器1还执行以下格式的指令bytesel。即,若为
bytesel Rc,Ra,Rb,I12,则处理器1通过运算部40等,根据12位的即值,以字节单位,对寄存器Rc的4个字节并行进行将寄存器Ra及寄存器Rb的8个字节数据之一存储在寄存器Rc中的动作。详细动作如图79(c)所示,即值I12与选择的字节数据的关系如图79(d)所示。
因为通过该指令bytesel,可将字节数据存储在寄存器的任意位置,所以高速化数据的替换重复等。另外,可增加SIMD运算的挠度。
另外,在上述指令[bytesel Rc,Ra,Rb,Rx]中,也可利用寄存器Rx的填充位等,指定向Rc[31:24]、Rc[23:16]、Rc[15:8]、Rc[7:0]分别存储/不存储上述字节数据。从而,可以字节单位来选择是否更新寄存器Rc的值。
本发明的数据单位不限于字节,也可是半字或半字节等。
[扩展SIMD运算结果的指令]
处理器1不仅可执行以上指令,还可执行进行与SIMD运算相关联的辅助处理的指令。
例如,处理器1若提供某指令,则如图80所示,进行位扩展(符号扩展或零扩展)SIMD运算结果一部分的辅助处理。图80表示对于存储在两个寄存器中的值、以半字单位SIMD运算处于直线位置关系或交叉位置关系的数据的状态,图80(a)表示将得到结果的下位半字扩展为字的处理,图80(b)表示将得到结果的上位半字扩展为字的处理。
所谓以半字单位SIMD运算处于直线位置关系的数据的指令是例如指令vaddh等,所谓以半字单位SIMD运算处于交叉位置关系的数据的指令是例如指令vxaddh等。
处理器1若提供某指令,则如图81所示,进行位扩展所有SIMD运算结果的辅助处理。图81表示对于存储在两个寄存器中的值、以半字单位SIMD运算处于直线位置关系或交叉位置关系的数据的状态,表示将得到的两个半字分别扩展为字的处理。
这种扩展SIMD运算结果的指令在进行SIMD运算后、进行符号扩展或零扩展并使数据大小一致的情况下有效,以1个周期来执行SIMD运算与扩展处理。
处理器1也可执行由条件标志等指定的种类的SIMD运算来作为与SIMD运算关联的辅助指令。例如,处理器1如图82所示,在由条件标志将第1及第2运算分别指定为加法及减法的情况下,对两个寄存器的值,分别以半字单位相加及相减处于直线位置关系或交叉位置关系的数据彼此。
作为一例,在条件标志C0及C1是1、0的情况下,处理器1通过算术逻辑、比较运算器41,
(1)将寄存器Ra的上位半字与寄存器Rb的上位半字相加,将结果存储在寄存器Rc的上位半字中,并且,
(2)从寄存器Ra的下位半字中减去寄存器Rb的下位半字,将结果存储在寄存器Rc的下位半字中。
这种SIMD运算种类可指定的指令对运算种类不固定、依赖于其它处理结果来决定运算种类的处理有效。
本发明可适用于在上述运算(1)及(2)中不使用寄存器Rb的情况。例如,
(1)将寄存器Ra的上位半字与寄存器Ra的下位半字相加,将结果存储在寄存器Rc的上位半字中,并且,
(2)从寄存器Ra的上位半字中减去寄存器Ra的下位半字,将结果存储在寄存器Rc的下位半字中。
发明效果
从上述说明可知,根据本发明的处理器执行判断基于SIMD型比较指令的结果是否全部为0,将结果设为条件标志的SIMD型的特征指令。从而,快速取出SIMD型比较指令的结果(具体而言是一致、不一致),高速化以多个象素值为单位的比较处理,高速化文件中的EOF的检测等。
另外,根据本发明的处理器执行将1个寄存器中存储的两个字节数据(存储在上位16位中的字节数据与存储在下位16位中的字节数据)存储在存储器等中的特征指令。从而,例如在以16位SIMD型处理字节数据的情况下,不需要数据的类型变换,高速化处理。
另外,根据本发明的处理器执行不变更寄存器的下位16位、将即值存储在上位16位中的特征指令。由此,通过与其它指令[mov Rb,I16]相组合,可将32位即值设定到寄存器。
另外,根据本发明的处理器执行所谓根据矢量条件标志的值来切换相加源信号的SIMD型特征指令。由此,就动作补偿半灰白(半象素单位的动作补偿)而言,无论是整数象素还是半象素,都可用相同程序进行处理。
另外,根据本发明的处理器执行按照寄存器的符号(正/负)及零来生成值的SIMD型的特征指令。由此,在某值为正时输出1、为负时输出-1、为零时输出0,所以高速化图像处理中的逆量化。
另外,根据本发明的处理器执行以单位长度对齐数据、按照矢量条件标志来变更取出的单位长度数据的SIMD型特征指令。由此,就动作补偿半灰白(半象素单位的动作补偿)而言,无论是整数象素还是半象素,都可用相同程序进行处理。
根据本发明的处理器执行将两个值相加、在加法对象之一为正的情况下再加上1的特征指令。由此,高速化图像处理中的绝对值舍入。
另外,根据本发明的处理器执行将任意两个寄存器的值传送到连续的两个寄存器的特征指令。由此,因为以1个周期来执行独立的两个寄存器的移动,所以发挥例如在循环内部减少循环内周期数的效果。另外,根据该指令,因为没有寄存器重命名(寄存器值的破坏),所以在进行循环代间(迭代间)的数据移动时也有效。
另外,根据本发明的处理器执行进行循环中的分支与条件标志(这里为谓词)的设定的特征指令。由此,实现基于PROEPI去除型的软件流水线操作的循环的高速化。
另外,根据本发明的处理器执行算出差分绝对值和的SIMD型特征指令。由此,高速化图像处理的动作预测中的差分绝对值和的算出等。
另外,根据本发明的处理器中指令satss执行在任意位置(进位)使带符号的值饱和为带符号的值的特征指令。由此,在汇编编程时不必使饱和位置与特定位置一致,编程容易。
另外,根据本发明的处理器执行以单位长度单位选择两个寄存器之一值的特征指令。由此,因为可将单位长度数据存储在寄存器的任意位置中,所以高速化数据的替换重复等,可增加SIMD运算的弹性。
另外,根据本发明的处理器执行扩展SIMD运算结果的特征指令。由此,以1个周期来执行在进行SIMD运算后使数据大小一致的处理。
另外,根据本发明的处理器可执行由条件标志等指定的种类的SIMD运算。由此,可由相同程序来实现依赖于其它处理结果来决定运算种类的动态处理。
如上所述,根据本发明的处理器可边执行高性能的SIMD运算,边高速执行多媒体处理中必需的各种数字信号处理,在便携电话、移动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,pi01,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,asivh,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 |
debug指令 | 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,vhf,macw,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的位号码iX[i:j] X的位号码j到位号码iX:Y X与Y的连接{n{X}} X的n次重复sextM(X,N) 将X从N位宽符号扩展到M位宽。M的默认值为32。N的默认值为X具有的全位宽。uextM(X,N) 将X从N位宽零扩展到M位宽。M的默认值为32。N的默认值为X具有的全位宽。smul(X,Y) 带符号乘法X*Yumul(X,Y) 无符号乘法X*Ysdiv(X,Y) 带符号除法的商的整数部X/Ysmod(X,Y) 符号与被除数相同的余数udlv(X,Y) 无符号除法的商X/Y。umod(X,Y) 余数abs(X) 绝对数bseq(X,Y) for(i=0;i<32;i++)[if(X[31-i]!=Y)break;}result=i;bcnt(X,Y) S=0;for(i=0;i<32;i++){if(X[i]=Y)S++;}result=S;max(X,Y) result=(X>Y)?X:Ymin(X,Y) result=(X<Y)?X:Y;tstz(X,Y) X&Y!=0tstn(X,Y) X&Y!=0 |
表7
记号 含义 |
Ra Ra[31:0] 编号a的寄存器 (0<=a<=31)Ra+1 R(a+1)[31:0] 编号a+1的寄存器 (0<=a<=30)Rb Rb[31:0] 编号b的寄存器 (0<=b<=31)Rb+1 R(b+1)[31:0] 编号b+1的寄存器 (0<=b<=30)Rc Rc[31:0] 编号c的寄存器 (0<=c<=31)Rc+1 R(c+1)[31:0] 编号c+1的寄存器 (0<=c<=30)Ra2 Ra2[31:0] 编号a2的寄存器 (0<=a2<=15)Ra2+1 R(a2+1)[31:0] 编号a2+1的寄存器 (0<=a2<=14)Rb2 Rb2[31:0] 编号b2的寄存器 (0<=b2<=15)Rb2+1 R(b2+1)[31:0] 编号b2+1的寄存器 (0<=b2<=14)Rc2 Rc2[31:0] 编号c2的寄存器 (0<=c2<=15)Rc2+1 R(c2+1)[31:0] 编号c2+1的寄存器 (0<=c2<=14)Ra3 Ra3[31:0] 编号a3的寄存器 (0<=a3<=7)Ra3+1 R(a3+1)[31:0] 编号a3+1的寄存器 (0<=a3<=6)Rb3 Rb3[31:0] 编号b3的寄存器 (0<=b3<=7)Rb3+1 R(b3+1)[31:0] 编号b3+1的寄存器 (0<=b3<=6)Rc3 Rc3[31:0] 编号c3的寄存器 (0<=c3<=7)Rc3+1 R(c3+1)[31:0] 编号c3+1的寄存器 (0<=c3<=6)Rx Rx[31:0] 编号x的寄存器 (0<=x<=3) |
表8
记号 | 含义 |
+-&|!<<>>>>>^-=!=>>=>(u)>=(u)<<=<(u)<=(u) | 加法减法逻辑与逻辑或逻辑非逻辑左移位(算术左移位)算术右移位逻辑右移位异或逻辑逻辑非相等(等于)不等(不等于)大于 带符号(将左边、右边的MSB视为符号)大于等于 带符号(将左边、右边的MSB视为符号)大于 无符号(不将左边、右边的MSB视为符号)大于等于 无符号(不将左边、右边的MSB视为符号)小于 带符号(将左边、右边的MSB视为符号)小于等于 带符号(将左边、右边的MSB视为符号)小于 无符号(不将左边、右边的MSB视为符号)小于等于 无符号(不将左边、右边的MSB视为符号) |
表9
记号 含义 |
D(addr) 存储器内的地址addr的双字数据W(addr) 存储器内的地址addr的字数据H(addr) 存储器内的地址addr的半数据B(addr) 存储器内的地址addr的字节数据B(addr,bus_lock)若访问存储器内的地址addr的字节数据,则锁定同时使用的总线。(其中,在是不能锁定总线的情况下,不锁定)B(addr,bus_unlock)若访问存储器内的地址addr的字节数据,则解除同时使用的总线的锁定。(其中,在是不能锁定总线或未锁定的总线的情况下,忽略锁定解除)EREG(num) 号码num的扩展寄存器;EREG_ERR 在之前的扩展寄存器访问中发生错误时,在不是发生为1的错误的情况下,为0,;<- 写入结果=> 指令的同义词(由汇编程序变换)reg#(Ra) 通用寄存器Ra的寄存器号码(5位的数值)Ox 16进制的前缀Ob 2进制的前缀tmp 暂时变量UD 不定值(安装依赖或动态变化的值)Dn 位移值(n用自然数表示位数。)In 即值(n用自然数表示位数。) |
记号 含义 |
○句法说明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,RLa和RHb之间进行运算。high 在RHa和RHb,RLa和RHb之间进行运算。low 在RHa和RLb,RLa和RLb之间进行运算。pair 在RH和RHb,RH和RLb之间进行运算。(RH为32位数据) |
表10
Claims (55)
1、一种处理器,其执行SIMD型指令,其特征在于:
具备:对指令进行译码的译码单元;和
执行单元,其根据译码单元的译码结果执行指令,
所述执行单元,在对以多个数据为对象的SIMD型比较指令的比较结果进行判断意旨的指令、由所述译码单元译码的情况下,判断所述多个数据是否全部得到相同的比较结果,并生成该结果。
2、根据权利要求1所述的处理器,其特征在于:
所述执行单元判断所述多个比较结果是否全部为零,并生成该结果。
3、根据权利要求1所述的处理器,其特征在于:
所述处理器还具备用于存储标志的标志存储单元,
所述执行单元将基于所述比较指令的比较结果与生成的所述结果一起存储在所述标志存储单元中。
4、一种处理器,其与外部存储器连接,其特征在于:
具备:存储数据的寄存器;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在将寄存器的值存储到外部存储器的意旨的指令由所述译码单元译码的情况下,将所述寄存器中存储的4个以上字节所构成的字数据中、上位半字的最下位1字节与下位半字的最下位1字节存储在所述外部存储器中。
5、根据权利要求4所述的处理器,其特征在于:
所述执行单元将所述上位半字的最下位1字节与所述下位半字的最下位1字节存储在所述外部存储器的连续地址的存储区域中。
6、一种处理器,其与外部存储器连接,其特征在于:
具备:存储数据的寄存器;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在将第1及第2寄存器的值存储到外部存储器中的意旨的指令由所述译码单元译码的情况下,将所述第1寄存器中存储的4个以上的字节所构成的字数据中,上位半字的最下位1字节与下位半字的最下位1字节存储在所述外部存储器中,并且,将所述第2寄存器中存储的4个以上的字节所构成的字数据中、上位半字的最下位1字节与下位半字的最下位1字节存储在所述外部存储器中。
7、根据权利要求6所述的处理器,其特征在于:
所述执行单元将所述第1寄存器的上位半字的最下位1字节及下位半字的最下位1字节与所述第2寄存器的上位半字的最下位1字节及下位半字的最下位1字节存储在所述外部存储器的连续地址的存储区域中。
8、一种处理器,其译码并执行指令,其特征在于:
具备:存储数据的寄存器;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在将数据存储在所述寄存器的上位数位的意旨的指令由所述这译码单元译码的情况下,在所述寄存器中对去除所述上位数位的存储区域的值不变更,将所述数据仅存储在所述上位数位中。
9、根据权利要求8所述的处理器,其特征在于:
所述寄存器具有保持1字数据的存储区域,所述执行单元将所述数据存储在所述寄存器的上位半字中。
10、一种处理器,其执行SIMD型指令,其特征在于:
具备:存储第1标志的标志存储单元;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在对将第1寄存器与第2寄存器作为操作数的SIMD型运算指令由所述译码单元译码的情况下,当存储在所述标志存储单元中的第1标志表示第1状态时,仅将所述第1寄存器作为操作数,执行所述SIMD型运算,在所述第1标志表示第2状态时,将所述第1寄存器与第2寄存器作为操作数,执行所述SIMD型运算。
11、根据权利要求10所述的处理器,其特征在于:
所述SIMD型运算是加法,
所述执行单元在所述第1标志表示第1状态时,将所述第1寄存器的值与该值相加,在所述第1标志表示第2状态时,将所述第1寄存器的值与第2寄存器的值相加。
12、根据权利要求11所述的处理器,其特征在于:
所述执行单元在将两个数据a1及a2存储在所述第1寄存器中,将两个数据b1及b2存储在所述第2寄存器中的情况下,当所述第1标志表示第1状态时,算出(a1+a1)及(a2+a2),在所述第1标志表示第2状态时,算出(a1+b1)及(a2+b2)。
13、一种处理器,执行SIMD型指令,其特征在于:
具备:存储标志的标志存储单元;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在将第1寄存器与第2寄存器作为操作数的SIMD型运算指令由所述译码单元译码的情况下,当存储在所述标志存储单元中的标志表示第1状态时,仅将所述第1寄存器作为操作数,而执行所述SIMD型运算后,进行舍入处理,当所述标志表示第2状态时,将所述第1寄存器与第2寄存器作为操作数,执行所述SIMD型运算后,进行舍入处理。
14、根据权利要求13所述的处理器,其特征在于:
所述SIMD型运算是加法,
所述执行单元在所述标志表示第1状态时,将所述第1寄存器的值与该值相加后,加上1,在所述标志表示第2状态时,将所述第1寄存器的值与第2寄存器的值相加后,加上1。
15、根据权利要求14所述的处理器,其特征在于:
所述执行单元在将两个数据a1及a2存储在所述第1寄存器中,将两个数据b1及b2存储在所述第2寄存器中的情况下,当所述标志表示第1状态时,算出(a1+a1+1)及(a2+a2+1),在所述标志表示第2状态时,算出(a1+b1+1)及(a2+b2+1)。
16、根据权利要求10~12中任一项所述的处理器,其特征在于:
在所述标志存储单元中还存储第2标志,
所述执行单元根据所述第2标志的值来切换是否舍入所述运算结果。
17、根据权利要求11、12、14及15中任一项所述的处理器,其特征在于:
所述执行单元还用2来除所述运算结果。
18、一种处理器,执行SIMD型指令,其特征在于:
具备:对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在根据多个数据各自符号来生成值的意旨的SIMD型指令由所述译码单元译码的情况下,生成表示所述多个数据是否分别为正、零及负之一的值的数据。
19、根据权利要求18所述的处理器,其特征在于:
所述执行单元根据所述多个数据是否分别为正、零及负之一来生成1、0及-1。
20、根据权利要求19所述的处理器,其特征在于:
所述指令包含存储所述多个数据的第1寄存器和存储由所述执行单元生成的所述数据的第2寄存器的指定,
所述执行单元对应于存储在所述第1寄存器中的多个数据的存储位置,将1、0及-1之一存储在所述第2寄存器的多个存储位置每个中。
21、一种处理器,执行SIMD型指令,其特征在于:
具备:参数指定单元,指定第1参数及第2参数;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在操作第1数据意旨的指令由所述译码单元译码的情况下,根据所述第1参数将所述第1数据进行位移,在得到的位移数据中输出,由所述第2参数特定的单位长度位置的多个单位长度数据。
22、根据权利要求21所述的处理器,其特征在于:
所述执行单元在所述移位数据中包含连续的第1-第3单位长度数据的情况下,当所述第2参数表示第1状态时,按顺序生成两个所述第1单位长度数据、及两个所述第2单位长度数据,当所述第2参数表示第2状态时,按顺序生成1个所述第1单位长度数据、两个所述第2单位长度数据及1个所述第3单位长度数据。
23、根据权利要求21所述的处理器,其特征在于:
所述执行单元在所述移位数据中包含连续的第1-第4单位长度数据的情况下,当所述第2参数表示第1状态时,按顺序生成两个所述第1单位长度数据及两个所述第2单位长度数据,当所述第2参数表示第2状态时,按顺序生成1个所述第1单位长度数据、1个所述第3单位长度数据、1个所述第2单位长度数据及1个所述第4单位长度数据。
24、根据权利要求21~23中任一项所述的处理器,其特征在于:
所述第1及第2参数是标志。
25、根据权利要求21~23中任一项所述的处理器,其特征在于:
所述单位长度是字节。
26、一种处理器,译码并执行指令,其特征在于:
具备:对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在将第1及第2数据作为操作数的加法指令由所述译码单元译码的情况下,当所述第1数据是零或正时,生成将所述第1数据、所述第2数据与1相加的结果,当所述第1数据为负时,生成将所述第1数据与所述第2数据相加的结果。
27、根据权利要求26所述的处理器,其特征在于:
所述第1数据是成为绝对值舍入对象的数据,
所述第2数据是指定进行绝对值舍入的数位的数据。
28、根据权利要求27所述的处理器,其特征在于:
所述第2数据是将相对所述第1数据进行绝对值舍入的数位所对应的数位为1、将其它数位为零的值。
29、一种处理器,译码并执行指令,其特征在于:
具备:多个寄存器;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在操作第1及第2寄存器的值意旨的指令由所述译码单元译码的情况下,将所述第1寄存器的操作结果存储在第3寄存器中,并将所述第2寄存器的操作结果存储在设置在与所述第3寄存器连续位置上的第4寄存器中。
30、一种处理器,译码并执行指令,其特征在于:
具备:标志存储单元,存储用于条件执行指令的谓词的多个标志;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在将所述标志作为操作数的循环的分支指令由所述译码单元译码的情况下,对循环的开头进行分支,并设定所述标志。
31、根据权利要求30所述的处理器,其特征在于:
所述标志用于通过软件流水线操作展开循环的情况下的EPILOG指令及PROLOG指令至少之一的指令用谓词。
32、根据权利要求30所述的处理器,其特征在于:
在所述指令中,将多个标志指定为操作数,
所述执行单元在所述分支指令被译码的情况下,在所述分支的同时,在所述多个标志之间进行传送。
33、根据权利要求32所述的处理器,其特征在于:
所述多个标志用于通过软件流水线操作展开环的情况下的EPILOG指令、核心指令及PROLOG指令用的谓词。
34、一种处理器,译码并执行指令,其特征在于:
具备:分支寄存器,存储分支目的地地址;
标志存储单元,存储用于条件执行指令的谓词的多个标志;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在对将所述标志做为操作数的分支寄存器的存储指令由所述译码单元译码的情况下,将循环的开头地址存储在所述分支寄存器中,并设定所述标志。
35、根据权利要求34所述的处理器,其特征在于:
所述标志用于通过软件流水线操作展开循环的情况下的EPILOG指令及PROLOG指令至少之一的指令用谓词。
36、根据权利要求34所述的处理器,其特征在于:
在所述指令中,将多个标志指定为操作数,
所述执行单元在译码所述存储指令的情况下,在所述存储的同时,进行所述多个标志之间的设定。
37、根据权利要求36所述的处理器,其特征在于:
所述多个标志用于通过软件流水线操作展开环的情况下的EPILOG指令、核心指令及PROLOG指令用的谓词。
38、一种处理器,执行SIMD型指令,其特征在于:
具备:对指令译码的译码单元;和
执行单元,根据译码单元的译码结果,执行指令,
所述执行单元在将多个数据对作为对象来进行差分绝对值和意旨的SIMD型指令由所述译码单元译码的情况下,生成将所述多个数据对各自的差分绝对值相加后的值。
39、根据权利要求38所述的处理器,其特征在于:
所述指令中,加上所述多个数据对外,包含第1数据的指定,
所述执行单元生成在将所述差分绝对值相加后的值中加上所述第1数据的值。
40、根据权利要求38所述的处理器,其特征在于:
所述多个数据对由两个寄存器指定,
所述执行单元算出所述两个寄存器中对应字节数据组各自的差分绝对值,通过将所有差分绝对值相加,生成所述值。
41、一种处理器,译码并执行指令,其特征在于:
具备:对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在将第1及第2数据设为操作数的饱和指令由所述译码单元译码的情况下,当所述第1数据比由所述第2数据特定的饱和值大时,生成所述饱和值,当所述第1数据小于所述饱和值时,生成所述第1数据。
42、根据权利要求41所述的处理器,其特征在于:
所述第1数据及所述饱和值是带符号的值。
43、根据权利要求41所述的处理器,其特征在于:
所述第2数据是指定饱和位置的数位的数据。
44、根据权利要求42所述的处理器,其特征在于:
所述第2数据是将比饱和值的数位大的数位设为1、将小于饱和值数位的数位设为零的值。
45、一种处理器,译码并执行指令,其特征在于:
具备:n单位长度的多个寄存器;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在将第1~第3寄存器和1个参数设为操作数、并用单位长度单位进行选择意旨的指令由所述译码单元译码的情况下,将存储在所述第1及第2寄存器中的2n个单位长度数据中、由所述参数选择的n个单位长度数据存储在所述第3寄存器中。
46、根据权利要求45所述的处理器,其特征在于:
所述参数是存储在第4寄存器中的值。
47、根据权利要求45所述的处理器,其特征在于:
所述参数是即值。
48、根据权利要求45所述的处理器,其特征在于:
所述参数中包含是否将所述单位长度数据存储在所述第3寄存器的n个部位每个中的标志,
所述执行单元根据所述标志,选择地进行是否将所述n个单位长度数据存储在所述第3寄存器中。
49、根据权利要求45~48中任一项所述的处理器,其特征在于:
所述单位长度是字节。
50、一种处理器,执行SIMD型指令,其特征在于:
具备:对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在SIMD型指令由所述译码单元译码的情况下,通过进行SIMD型运算,生成多个运算结果,对所述多个运算结果的至少一个进行位扩展。
51、根据权利要求50所述的处理器,其特征在于:
所述指令将两个半字作为运算结果存储在字长度的寄存器中,将这两个半字之一扩展成字数据。
52、根据权利要求50所述的处理器,其特征在于:
所述指令将两个半字作为运算结果存储在字长度的寄存器中,将这两个半字分别扩展成字数据。
53、一种处理器,执行SIMD型指令,其特征在于:
具备:存储标志的标志存储单元;
对指令译码的译码单元;和
执行单元,根据译码单元的译码结果执行指令,
所述执行单元在对多个数据对进行SIMD型运算意旨的指令由所述译码单元译码的情况下,对所述多个数据对分别进行由所述标志存储单元中存储的标志特定的SIMD型运算。
54、根据权利要求53所述的处理器,其特征在于:
所述标志存储单元中存储第1及第2标志,
所述指令中包含第1及第2数据对的指定,
所述执行单元,对所述第1数据对进行对应于所述第1标志值的运算,并对所述第2数据对实施对应于所述第2标志值的运算。
55、根据权利要求53所述的处理器,其特征在于:
所述标志存储单元中存储第1及第2标志,
所述指令中包含数据对的指定,
所述执行单元对所述数据对实施对应于所述第1标志值的运算,并对所述数据对实施对应于所述第2标志值的运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002280077A JP3958662B2 (ja) | 2002-09-25 | 2002-09-25 | プロセッサ |
JP280077/2002 | 2002-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1497435A true CN1497435A (zh) | 2004-05-19 |
CN100524204C CN100524204C (zh) | 2009-08-05 |
Family
ID=31973293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031603653A Expired - Lifetime CN100524204C (zh) | 2002-09-25 | 2003-09-25 | 处理器 |
Country Status (6)
Country | Link |
---|---|
US (5) | US7281117B2 (zh) |
EP (1) | EP1403762A3 (zh) |
JP (1) | JP3958662B2 (zh) |
KR (1) | KR20040027409A (zh) |
CN (1) | CN100524204C (zh) |
TW (2) | TW200945190A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270112A (zh) * | 2010-06-03 | 2011-12-07 | 边立剑 | Risc微处理器指令译码电路 |
CN102411490A (zh) * | 2011-08-09 | 2012-04-11 | 清华大学 | 一种针对动态可重构处理器的指令集的优化方法 |
CN102893254A (zh) * | 2010-05-11 | 2013-01-23 | Arm有限公司 | 条件式比较指令 |
CN103309813A (zh) * | 2012-03-15 | 2013-09-18 | 国际商业机器公司 | 数据处理方法和装置 |
CN104008021A (zh) * | 2013-02-22 | 2014-08-27 | Mips技术公司 | 针对多数据体系结构的精确的异常信号发送 |
CN104657112A (zh) * | 2006-09-22 | 2015-05-27 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
CN107851018A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 数据处理 |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
US7861007B2 (en) * | 2003-12-05 | 2010-12-28 | Ati Technologies Ulc | Method and apparatus for multimedia display in a mobile device |
US7676476B2 (en) * | 2004-08-25 | 2010-03-09 | Microsoft Corporation | Data types with incorporated collation information |
US7219213B2 (en) * | 2004-12-17 | 2007-05-15 | Intel Corporation | Flag bits evaluation for multiple vector SIMD channels execution |
US7512826B2 (en) * | 2005-04-20 | 2009-03-31 | International Business Machines Corporation | Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US7752028B2 (en) | 2007-07-26 | 2010-07-06 | Microsoft Corporation | Signed/unsigned integer guest compare instructions using unsigned host compare instructions for precise architecture emulation |
JP5092722B2 (ja) | 2007-12-07 | 2012-12-05 | ソニー株式会社 | 画像処理装置、画像処理方法およびプログラム |
US8041927B2 (en) * | 2008-04-16 | 2011-10-18 | Nec Corporation | Processor apparatus and method of processing multiple data by single instructions |
US7996647B2 (en) * | 2008-07-23 | 2011-08-09 | Microchip Technology Incorporated | Enhanced microprocessor or microcontroller |
US8938642B2 (en) * | 2008-08-15 | 2015-01-20 | Apple Inc. | Confirm instruction for processing vectors |
US8271832B2 (en) * | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US9009528B2 (en) * | 2008-08-15 | 2015-04-14 | Apple Inc. | Scalar readXF instruction for processing vectors |
US8862932B2 (en) * | 2008-08-15 | 2014-10-14 | Apple Inc. | Read XF instruction for processing vectors |
JP5438551B2 (ja) | 2009-04-23 | 2014-03-12 | 新日鉄住金ソリューションズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
JP2013515319A (ja) * | 2009-12-25 | 2013-05-02 | インテル・コーポレーション | 分岐なし高速ベクトル除算計算 |
US20120084539A1 (en) * | 2010-09-29 | 2012-04-05 | Nyland Lars S | Method and sytem for predicate-controlled multi-function instructions |
JP5659772B2 (ja) * | 2010-12-17 | 2015-01-28 | 富士通株式会社 | 演算処理装置 |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US9032189B2 (en) * | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US8949777B2 (en) * | 2011-04-22 | 2015-02-03 | Intel Corporation | Methods and systems for mapping a function pointer to the device code |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
CN104025033B (zh) * | 2011-12-30 | 2017-11-21 | 英特尔公司 | 利用控制操纵的simd可变移位和循环 |
US8898433B2 (en) * | 2012-04-26 | 2014-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Efficient extraction of execution sets from fetch sets |
US9038042B2 (en) | 2012-06-29 | 2015-05-19 | Analog Devices, Inc. | Staged loop instructions |
US9378017B2 (en) * | 2012-12-29 | 2016-06-28 | Intel Corporation | Apparatus and method of efficient vector roll operation |
JP2015049832A (ja) | 2013-09-04 | 2015-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 定数ロードのオーバーヘッドを削減する方法、装置及びプログラム |
US11113054B2 (en) | 2013-09-10 | 2021-09-07 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression |
US9430390B2 (en) | 2013-09-21 | 2016-08-30 | Oracle International Corporation | Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications |
JP2015143949A (ja) * | 2014-01-31 | 2015-08-06 | 富士通株式会社 | 演算プログラム、演算装置および演算方法 |
CN103970508A (zh) * | 2014-06-04 | 2014-08-06 | 上海航天电子通讯设备研究所 | 一种精简的微处理器ip核 |
CN104317554B (zh) * | 2014-10-14 | 2017-02-15 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于simd处理器的寄存器文件数据读写装置和方法 |
US20160179538A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor |
US9817791B2 (en) | 2015-04-04 | 2017-11-14 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word |
US11847427B2 (en) * | 2015-04-04 | 2023-12-19 | Texas Instruments Incorporated | Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor |
US9952865B2 (en) | 2015-04-04 | 2018-04-24 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file |
US10025823B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US10698688B2 (en) * | 2015-06-24 | 2020-06-30 | International Business Machines Corporation | Efficient quantization of compare results |
US10705841B2 (en) * | 2015-06-24 | 2020-07-07 | International Business Machines Corporation | Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation |
US10620952B2 (en) | 2015-06-24 | 2020-04-14 | International Business Machines Corporation | Conversion of boolean conditions |
US10067954B2 (en) | 2015-07-22 | 2018-09-04 | Oracle International Corporation | Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations |
GB2540939B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | An apparatus and method for performing a splice operation |
US20170177369A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Non-contiguous multiple register access for microprocessor data exchange instructions |
US10503474B2 (en) | 2015-12-31 | 2019-12-10 | Texas Instruments Incorporated | Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
EP3336692B1 (en) * | 2016-12-13 | 2020-04-29 | Arm Ltd | Replicate partition instruction |
EP3336691B1 (en) | 2016-12-13 | 2022-04-06 | ARM Limited | Replicate elements instruction |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US20190102182A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US10795677B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values |
US11256504B2 (en) | 2017-09-29 | 2022-02-22 | Intel Corporation | Apparatus and method for complex by complex conjugate multiplication |
US10664277B2 (en) | 2017-09-29 | 2020-05-26 | Intel Corporation | Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words |
US10534838B2 (en) | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
US10514924B2 (en) | 2017-09-29 | 2019-12-24 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US11243765B2 (en) | 2017-09-29 | 2022-02-08 | Intel Corporation | Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements |
US10802826B2 (en) | 2017-09-29 | 2020-10-13 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US10795676B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US10552154B2 (en) | 2017-09-29 | 2020-02-04 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US11074073B2 (en) | 2017-09-29 | 2021-07-27 | Intel Corporation | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements |
US11113061B2 (en) * | 2019-09-26 | 2021-09-07 | Advanced Micro Devices, Inc. | Register saving for function calling |
CN111026736B (zh) * | 2019-12-13 | 2024-03-12 | 中盈优创资讯科技有限公司 | 数据血缘管理方法及装置、数据血缘解析方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2703884B2 (ja) | 1985-12-27 | 1998-01-26 | 日本電気株式会社 | データ書込み制御方式 |
US5036454A (en) * | 1987-05-01 | 1991-07-30 | Hewlett-Packard Company | Horizontal computer having register multiconnect for execution of a loop with overlapped code |
US5303355A (en) * | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
WO1997009679A1 (en) | 1995-09-01 | 1997-03-13 | Philips Electronics North America Corporation | Method and apparatus for custom processor operations |
US5793658A (en) * | 1996-01-17 | 1998-08-11 | Digital Equipment Coporation | Method and apparatus for viedo compression and decompression using high speed discrete cosine transform |
JP3701401B2 (ja) | 1996-08-12 | 2005-09-28 | 株式会社ルネサステクノロジ | 飽和演算命令を有するマイクロプロセッサ |
US6260137B1 (en) | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
JP2000020486A (ja) | 1998-06-29 | 2000-01-21 | Ricoh Co Ltd | Simd型演算器 |
JP3652518B2 (ja) | 1998-07-31 | 2005-05-25 | 株式会社リコー | Simd方式の演算器及び演算処理装置 |
JP5052713B2 (ja) | 1998-10-09 | 2012-10-17 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 条件付き命令を備えるベクトルデータプロセッサ |
US6829696B1 (en) * | 1999-12-30 | 2004-12-07 | Texas Instruments Incorporated | Data processing system with register store/load utilizing data packing/unpacking |
JP2001229021A (ja) * | 2000-02-18 | 2001-08-24 | Mitsubishi Electric Corp | データ処理装置 |
US7124160B2 (en) * | 2000-03-08 | 2006-10-17 | Sun Microsystems, Inc. | Processing architecture having parallel arithmetic capability |
US7558816B2 (en) * | 2001-11-21 | 2009-07-07 | Sun Microsystems, Inc. | Methods and apparatus for performing pixel average operations |
US7035331B2 (en) * | 2002-02-20 | 2006-04-25 | Intel Corporation | Method and apparatus for performing a pixel averaging instruction |
-
2002
- 2002-09-25 JP JP2002280077A patent/JP3958662B2/ja not_active Expired - Lifetime
-
2003
- 2003-09-17 EP EP03020559A patent/EP1403762A3/en not_active Withdrawn
- 2003-09-24 TW TW098124440A patent/TW200945190A/zh unknown
- 2003-09-24 US US10/668,358 patent/US7281117B2/en active Active
- 2003-09-24 TW TW092126392A patent/TW200411542A/zh unknown
- 2003-09-25 KR KR1020030066510A patent/KR20040027409A/ko active IP Right Grant
- 2003-09-25 CN CNB031603653A patent/CN100524204C/zh not_active Expired - Lifetime
-
2007
- 2007-08-31 US US11/896,368 patent/US7594099B2/en not_active Expired - Lifetime
- 2007-08-31 US US11/896,370 patent/US20080046690A1/en not_active Abandoned
- 2007-08-31 US US11/896,369 patent/US20080046688A1/en not_active Abandoned
- 2007-08-31 US US11/896,371 patent/US20080046704A1/en not_active Abandoned
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632784B2 (en) | 2006-09-22 | 2017-04-25 | Intel Corporation | Instruction and logic for processing text strings |
US11029955B2 (en) | 2006-09-22 | 2021-06-08 | Intel Corporation | Instruction and logic for processing text strings |
US9645821B2 (en) | 2006-09-22 | 2017-05-09 | Intel Corporation | Instruction and logic for processing text strings |
US9703564B2 (en) | 2006-09-22 | 2017-07-11 | Intel Corporation | Instruction and logic for processing text strings |
US11023236B2 (en) | 2006-09-22 | 2021-06-01 | Intel Corporation | Instruction and logic for processing text strings |
US10261795B2 (en) | 2006-09-22 | 2019-04-16 | Intel Corporation | Instruction and logic for processing text strings |
CN104657112A (zh) * | 2006-09-22 | 2015-05-27 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
US9740489B2 (en) | 2006-09-22 | 2017-08-22 | Intel Corporation | Instruction and logic for processing text strings |
CN104657112B (zh) * | 2006-09-22 | 2017-12-01 | 英特尔公司 | 用于处理文本串的指令和相关联的处理器 |
US11537398B2 (en) | 2006-09-22 | 2022-12-27 | Intel Corporation | Instruction and logic for processing text strings |
US9804848B2 (en) | 2006-09-22 | 2017-10-31 | Intel Corporation | Instruction and logic for processing text strings |
US9772847B2 (en) | 2006-09-22 | 2017-09-26 | Intel Corporation | Instruction and logic for processing text strings |
US10929131B2 (en) | 2006-09-22 | 2021-02-23 | Intel Corporation | Instruction and logic for processing text strings |
US9772846B2 (en) | 2006-09-22 | 2017-09-26 | Intel Corporation | Instruction and logic for processing text strings |
US9740490B2 (en) | 2006-09-22 | 2017-08-22 | Intel Corporation | Instruction and logic for processing text strings |
US9720692B2 (en) | 2006-09-22 | 2017-08-01 | Intel Corporation | Instruction and logic for processing text strings |
CN102893254A (zh) * | 2010-05-11 | 2013-01-23 | Arm有限公司 | 条件式比较指令 |
US9383999B2 (en) | 2010-05-11 | 2016-07-05 | Arm Limited | Conditional compare instruction |
CN102893254B (zh) * | 2010-05-11 | 2015-11-25 | Arm有限公司 | 数据处理装置和数据处理设备 |
CN102270112A (zh) * | 2010-06-03 | 2011-12-07 | 边立剑 | Risc微处理器指令译码电路 |
CN102411490A (zh) * | 2011-08-09 | 2012-04-11 | 清华大学 | 一种针对动态可重构处理器的指令集的优化方法 |
CN102411490B (zh) * | 2011-08-09 | 2014-04-16 | 清华大学 | 一种针对动态可重构处理器的指令集的优化方法 |
CN103309813A (zh) * | 2012-03-15 | 2013-09-18 | 国际商业机器公司 | 数据处理方法和装置 |
US9575753B2 (en) | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
CN103309813B (zh) * | 2012-03-15 | 2016-06-29 | 国际商业机器公司 | 数据处理方法和装置 |
CN104008021A (zh) * | 2013-02-22 | 2014-08-27 | Mips技术公司 | 针对多数据体系结构的精确的异常信号发送 |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
CN104699460B (zh) * | 2013-12-04 | 2017-11-14 | 美国亚德诺半导体公司 | 数字信号处理器、计算机可读存储介质和执行流水线多阶段循环的方法 |
CN107851018A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 数据处理 |
Also Published As
Publication number | Publication date |
---|---|
US20080046704A1 (en) | 2008-02-21 |
US20080046690A1 (en) | 2008-02-21 |
US20080046688A1 (en) | 2008-02-21 |
US7281117B2 (en) | 2007-10-09 |
US7594099B2 (en) | 2009-09-22 |
TW200945190A (en) | 2009-11-01 |
TW200411542A (en) | 2004-07-01 |
EP1403762A2 (en) | 2004-03-31 |
US20080046687A1 (en) | 2008-02-21 |
US20040068642A1 (en) | 2004-04-08 |
EP1403762A3 (en) | 2007-12-12 |
KR20040027409A (ko) | 2004-04-01 |
JP2004118470A (ja) | 2004-04-15 |
JP3958662B2 (ja) | 2007-08-15 |
CN100524204C (zh) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1497435A (zh) | 处理器 | |
CN1302380C (zh) | 处理器和编译器 | |
CN1482540A (zh) | 编译程序、编译程序装置和编译方法 | |
CN1246772C (zh) | 处理器 | |
CN1264089C (zh) | 编译设备和编译方法 | |
CN1472646A (zh) | 适应性强具备最佳化功能的编译装置 | |
CN1202470C (zh) | 处理器 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1194292C (zh) | 具有改良的指令集体系结构的微处理器 | |
CN100338568C (zh) | 开发片上系统用的开发环境的生成方法 | |
CN1153155C (zh) | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 | |
CN1154947C (zh) | 处理数据的方法和装置 | |
CN1186718C (zh) | 微控制器指令集 | |
CN1656495A (zh) | 标量/矢量处理器 | |
CN1126030C (zh) | 数据处理装置 | |
CN1688966A (zh) | 包括对准或者广播指令的多媒体协处理器控制机制 | |
CN1886744A (zh) | 在可扩展的处理器架构中增加高级指令所用的方法和装置 | |
CN1664779A (zh) | 软件开发基础架构 | |
CN1173931A (zh) | 处理器的定制的基本操作的方法与设备 | |
CN1584824A (zh) | 一种基于cisc结构的微处理器构架及指令实现方式 | |
CN1319210A (zh) | 可配置的硬件块的配置方法 | |
CN1684058A (zh) | 处理器 | |
CN1469241A (zh) | 处理器、程序变换装置和变换方法以及计算机程序 | |
CN1226323A (zh) | 数据处理装置寄存器 | |
CN1279435C (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151104 Address after: Kanagawa Patentee after: SOCIONEXT Inc. Address before: Osaka Japan Patentee before: Matsushita Electric Industrial Co.,Ltd. |
|
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090805 |