CN1246772C - 处理器 - Google Patents
处理器 Download PDFInfo
- Publication number
- CN1246772C CN1246772C CNB031385419A CN03138541A CN1246772C CN 1246772 C CN1246772 C CN 1246772C CN B031385419 A CNB031385419 A CN B031385419A CN 03138541 A CN03138541 A CN 03138541A CN 1246772 C CN1246772 C CN 1246772C
- Authority
- CN
- China
- Prior art keywords
- data
- mentioned
- group
- order
- explanation
- 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 - Lifetime
Links
- 238000013519 translation Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 abstract description 38
- 238000007792 addition Methods 0.000 description 81
- 238000012545 processing Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 19
- 229920006395 saturated elastomer Polymers 0.000 description 15
- 238000000034 method Methods 0.000 description 13
- 241001269238 Data Species 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 101150103933 VMAC gene Proteins 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 102100027674 CTD small phosphatase-like protein Human genes 0.000 description 2
- 102100027667 Carboxy-terminal domain RNA polymerase II polypeptide A small phosphatase 2 Human genes 0.000 description 2
- 102100037364 Craniofacial development protein 1 Human genes 0.000 description 2
- 102100034223 Golgi apparatus protein 1 Human genes 0.000 description 2
- 101000725950 Homo sapiens CTD small phosphatase-like protein Proteins 0.000 description 2
- 101000725947 Homo sapiens Carboxy-terminal domain RNA polymerase II polypeptide A small phosphatase 2 Proteins 0.000 description 2
- 101000880187 Homo sapiens Craniofacial development protein 1 Proteins 0.000 description 2
- 101100449731 Homo sapiens GLG1 gene Proteins 0.000 description 2
- 101100439271 Schizosaccharomyces pombe (strain 972 / ATCC 24843) cfr1 gene Proteins 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000007704 transition 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
- 238000005266 casting Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000004154 complement system Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation 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
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- 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/30018—Bit or string instructions
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供一种执行对作为SIMD运算对象的操作数位置的约束少、弹性高的SIMD运算的处理器。具备解码部(20)和运算部(40)等,若解码部(20)译码命令[vxaddh Rc,Ra,Rb],则算术逻辑、比较运算器(41)等(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相加,将结果存储在寄存器Rc的上位16位中,同时,(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相加,将结果存储在寄存器Rc的下位16位中。
Description
技术领域
本发明涉及DSP或CPU等处理器,尤其是涉及执行SIMD型命令的处理器。
背景技术
以前,作为支持SIMD(Single Instruction Multiple Data:单命令多数据流)型命令的处理器,有美国因特尔公司的Pentium(R)/Pentium(R)III/Pentium(R)4的MMX/SSE/SSE2等。
例如,若是MMX,则以64比特长的MMX寄存器中存储的最大8个整数为对象,可由1个命令来执行相同的操作。
但是,在上述现有处理器中,存在对作为SIMD运算对象的操作数(operand)位置的约束多的问题。
例如,在第1寄存器的上位数位和下位数位中分别存储数值A及B、在第2寄存器的上位数位和下位数位中分别存储数值C及D的状态下,在由现有处理器执行将第1寄存器和第2寄存器设为操作数的SIMD型加法命令的情况下,得到的加法值为A+C及B+D。即,得到存储在两寄存器的上位数位中的数据彼此的加法值和存储在两寄存器的下位数位中的数据彼此的加法值,由数据在寄存器中的存储位置来唯一确定运算对象。
因此,例如在对上述第1寄存器及第2寄存器求出A+D、及B+C的加法值的情况下,需要在调换存储在一方寄存器中的上位数位的数据与下位数位的数据的存储位置后,执行SIMD型的加法命令,或不使用SIMD型加法命令,而执行两次通常的SISD(Single InstructionSingle Data:单命令单数据流)型加法命令。
但是,随着近年来的通信数字化,在需要博立叶变换或滤波处理等数字信号处理的图像处理或声音处理领域中,必需对多个数据实施相同的运算处理,但此时,例如必需对位于距数据排列中的中心位置左右对称的数据实施相同运算等处理的情况多。在这种情况下,需要反序排列作为运算对象的两种操作数,例如,将存储在两个寄存器中一方高位数位中的数据与存储在另一方低位数位中的数据作为对象,进行运算。
但是,在现有处理器的SIMD运算中,如上所述,因为必需按相同顺序排列作为运算对象的操作数,所以必需操作数的重新排列等,存在数字信号处理需要很多时间的问题。
发明内容
因此,鉴于这种状况,本发明的目的在于提供一种处理器,执行对作为SIMD运算对象的操作数位置的约束少、适应性强的SIMD运算。具体而言,提供一种例如适于高速执行数字信号处理的多媒体用途的处理器。
为了实现上述目的,本发明的处理器执行由1个指令来运算多个数据的SIMD型指令,其特征在于:具备译码单元,译码指令;和执行单元,根据译码单元的译码结果,执行指令,上述执行单元在上述译码单元译码SIMD型指令的情况下,其中,SIMD型指令包含指定运算种类的指令代码、指定由n(≥2)个数据排列构成的第1数据群的第1操作数、和指定由n个数据排列构成的第2数据群的第2操作数,对以属于上述第1数据群的1个数据和属于上述第2数据群的1个数据为1组的n组进行由上述指令代码指定的运算,上述n组的至少1组由构成上述第1数据群的n个数据排列中的第i个数据和构成上述第2数据群的n个数据排列中的第j(≠i)个数据构成。
例如,上述n为2,上述第1数据群由第1个数据和第2个数据构成,上述第2数据群由第1个数据和第2个数据构成,上述执行单元在对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算的同时,对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算。即,运算处于交叉位置关系的各个数据。
这里,在运算种类是乘法、积和或积差的情况下,也可仅输出所得各运算结果的下位部分,或仅输出上位部分,或仅输出部分运算结果。
另外,例如,也可是上述n为2,上述第1数据群由第1个数据和第2个数据构成,上述第2数据群由第1个数据和第2个数据构成,上述执行单元在对上述第1数据群的第1个数据和第2数据群的第1个数据组成的组进行上述运算的同时,对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算,上述执行单元又在对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算的同时,对上述第1数据群的第2个数据和第2数据群的第2个数据组成的组进行上述运算。即,也可执行将一方的数据排列中的对象固定为特定数据的SIMD型命令。
另外,也可执行移位执行SIMD型运算所得结果后输出、或累计n排列(矢量)数据后算出标量值、或符号扩展n个数据每个的SIMD型命令。
另外,本发明不仅可实现为执行这种特征命令的处理器,也可实现为对多个数据等的运算处理方法,或可实现为包含特征命令的程序。另外,不用说,这种程序可经CD-ROM等记录媒体或因特网等传输媒体进行流通。
附图说明
图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是表示该处理器的管道(pipe-line)动作的时间图。
图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(算术桶形移位(barrel shift))类]的命令的图。
图32是说明属于分类[BSlsr(逻辑桶形移位)类]的命令的图。
图33是说明属于分类[CNVvaln(算术变换)类]的命令的图。
图34是说明属于分类[CNV(一般变换)类]的命令的图。
图35是说明属于分类[SATvlpk(饱和处理)类]的命令的图。
图36是说明属于分类[ETC(其他)类]的命令的图。
图37是说明命令[ld Rb,(Ra,D10)]的图。
图38是说明命令[ld Rb3,(Ra3,D5)]的图。
图39是说明命令[ld Rb,(GP,D13)]的图。
图40是说明命令[ld Rb2,(GP,D6)]的图。
图41是说明命令[ld Rb2,(GP)]的图。
图42是说明命令[ld Rb,(SP,D13)]的图。
图43是说明命令[ld Rb2,(SP,D6)]的图。
图44是说明命令[ld Rb2,(SP)]的图。
图45是说明命令[ld Rb,(Ra+)I10]的图。
图46是说明命令[ld Rb,(Ra+)]的图。
图47是说明命令[ld Rb2,(Ra2+)]的图。
图48是说明命令[ld Rb,(Ra)]的图。
图49是说明命令[ld Rb2,(Ra2)]的图。
图50是说明命令[ldh Rb,(Ra,D9)]的图。
图51是说明命令[ldh Rb3,(Ra3,D4)]的图。
图52是说明命令[ldh Rb,(GP,D12)]的图。
图53是说明命令[ldh Rb2,(GP,D5)]的图。
图54是说明命令[ldh Rb2,(GP)]的图。
图55是说明命令[ldh Rb,(SP,D12)]的图。
图56是说明命令[ldh Rb2,(SP,D5)]的图。
图57是说明命令[ldh Rb2,(SP)]的图。
图58是说明命令[ldh Rb,(Ra+)I9]的图。
图59是说明命令[ldh Rb,(Ra+)]的图。
图60是说明命令[ldh Rb2,(Ra2+)]的图。
图61是说明命令[ldh Rb,(Ra)]的图。
图62是说明命令[ldh Rb2,(Ra2)]的图。
图63是说明命令[ldhu Rb,(Ra,D9)]的图。
图64是说明命令[ldhu Rb,(GP,D12)]的图。
图65是说明命令[ldhu Rb,(SP,D12)]的图。
图66是说明命令[ldhu Rb,(Ra+)I9]的图。
图67是说明命令[ldhu Rb,(Ra+)]的图。
图68是说明命令[ldhu Rb,(Ra)]的图。
图69是说明命令[ldb Rb,(Ra,D8)]的图。
图70是说明命令[ldb Rb,(GP,D11)]的图。
图71是说明命令[ldb Rb,(SP,D11)]的图。
图72是说明命令[ldb Rb,(Ra+)I8]的图。
图73是说明命令[ldb Rb,(Ra+)]的图。
图74是说明命令[ldb Rb,(Ra)]的图。
图75是说明命令[ldbu Rb,(Ra,D8)]的图。
图76是说明命令[ldbu Rb,(GP,D11)]的图。
图77是说明命令[ldbu Rb,(SP,D11)]的图。
图78是说明命令[ldbu Rb,(Ra+)I8]的图。
图79是说明命令[ldbu Rb,(Ra+)]的图。
图80是说明命令[ldbu Rb,(Ra)]的图。
图81是说明命令[ldp Rb:Rb+1,(Ra,D11)]的图。
图82是说明命令[ldp Rb:Rb+1,(GP,D14)]的图。
图83是说明命令[ldp Rb:Rb+1,(SP,D14)]的图。
图84是说明命令[ldp Rb:Rb+1,(SP,D7)]的图。
图85是说明命令[ldp Rb:Rb+1,(SP)]的图。
图86是说明命令[ldp Rb:Rb+1,(Ra+)I11]的图。
图87是说明命令[ldp Rb2:Rb2+1,(Ra2+)]的图。
图88是说明命令[ldp Rb:Rb+1,(Ra+)]的图。
图89是说明命令[ldp Rb:Rb+1,(Ra)]的图。
图90是说明命令[ldp LR:SVR,(Ra,D14)]的图。
图91是说明命令[ldp LR:SVR,(Ra)]的图。
图92是说明命令[ldp LR:SVR,(GP,D14)]的图。
图93是说明命令[ldp LR:SVR,(SP,D14)]的图。
图94是说明命令[ldp LR:SVR,(SP,D7)]的图。
图95是说明命令[ldp LR:SVR,(SP)]的图。
图96是说明命令[ldp TAR:UDR,(Ra,D11)]的图。
图97是说明命令[ldp TAR:UDR,(GP,D14)]的图。
图98是说明命令[ldp TAR:UDR,(SP,D14)]的图。
图99是说明命令[ldhp Rb:Rb+1,(Ra,D10)]的图。
图100是说明命令[ldhp Rb:Rb+1,(Ra+)I10]的图。
图101是说明命令[ldhp Rb2:Rb2+1,(Ra2+)]的图。
图102是说明命令[ldhp Rb:Rb+1,(Ra+)]的图。
图103是说明命令[ldhp Rb:Rb+1,(Ra)]的图。
图104是说明命令[ldbp Rb:Rb+1,(Ra,D9)]的图。
图105是说明命令[ldbp Rb:Rb+1,(Ra+)I9]的图。
图106是说明命令[ldbp Rb:Rb+1,(Ra+)]的图。
图107是说明命令[ldbp Rb:Rb+1,(Ra)]的图。
图108是说明命令[ldbh Rb,(Ra+)I7]的图。
图109是说明命令[ldbh Rb,(Ra+)]的图。
图110是说明命令[ldbh Rb,(Ra)]的图。
图111是说明命令[ldbuh Rb,(Ra+)I7]的图。
图112是说明命令[ldbuh Rb,(Ra+)]的图。
图113是说明命令[ldbuh Rb,(Ra)]的图。
图114是说明命令[ldbhp Rb:Rb+1,(Ra+)I7]的图。
图115是说明命令[ldbhp Rb:Rb+1,(Ra+)]的图。
图116是说明命令l1dbhp Rb:Rb+1,(Ra)]的图。
图117是说明命令[ldbuhp Rb:Rb+1,(Ra+)I7]的图。
图118是说明命令[ldbuhp Rb:Rb+1,(Ra+)]的图。
图119是说明命令[ldbuhp Rb:Rb+1,(Ra)]的图。
图120是说明命令[st(Ra,D10),Rb]的图。
图121是说明命令[st(Ra3,D5),Rb3]的图。
图122是说明命令[st(GP,D13),Rb]的图。
图123是说明命令[st(GP,D6),Rb2]的图。
图124是说明命令[st(GP),Rb2]的图。
图125是说明命令[st(SP,D13),Rb]的图。
图126是说明命令[st(SP,D6),Rb2]的图。
图127是说明命令[st(SP),Rb2]的图。
图128是说明命令[st(Ra+)I10,Rb]的图。
图129是说明命令[st(Ra+),Rb]的图。
图130是说明命令[st(Ra2+),Rb]的图。
图131是说明命令[st(Ra),Rb]的图。
图132是说明命令[st(Ra2),Rb2]的图。
图133是说明命令[sth(Ra,D9),Rb]的图。
图134是说明命令[sth(Ra3,D4),Rb3]的图。
图135是说明命令[sth(GP,D12),Rb]的图。
图136是说明命令[sth(GP,D5),Rb2]的图。
图137是说明命令[sth(GP),Rb2]的图。
图138是说明命令[sth(SP,D12),Rb]的图。
图139是说明命令[sth(SP,D5),Rb2]的图。
图140是说明命令[sth(SP),Rb2]的图。
图141是说明命令[sth(Ra+)I9,Rb]的图。
图142是说明命令[sth(Ra+),Rb]的图。
图143是说明命令[sth(Ra2+),Rb2]的图。
图144是说明命令[sth(Ra),Rb]的图。
图145是说明命令[st(Ra2),Rb2]的图。
图146是说明命令[stb(Ra,D8),Rb]的图。
图147是说明命令[stb(GP,D11),Rb]的图。
图148是说明命令[stb(SP,D11),Rb]的图。
图149是说明命令[stb(Ra+)18,Rb]的图。
图150是说明命令[stb(Ra+),Rb]的图。
图151是说明命令[stb(Ra),Rb]的图。
图152是说明命令[stp(Ra,D11),Rb:Rb+1]的图。
图153是说明命令[stp(GP,D14),Rb:Rb+1]的图。
图154是说明命令[stp(SP,D14),Rb:Rb+1]的图。
图155是说明命令[stp(SP,D7),Rb:Rb+1]的图。
图156是说明命令[stp(SP),Rb:Rb+1]的图。
图157是说明命令[stp(Ra+)I11,Rb:Rb+1]的图。
图158是说明命令[stp(Ra+),Rb:Rb+1]的图。
图159是说明命令[stp(Ra2+),Rb2:Rb2+1]的图。
图160是说明命令[stp(Ra),Rb:Rb+1]的图。
图161是说明命令[stp(Ra,D11),LR:SVR]的图。
图162是说明命令[stp(Ra),LR:SVR]的图。
图163是说明命令[stp(GP,D14),LR:SVR]的图。
图164是说明命令[stp(SP,D14),LR:SVR]的图。
图165是说明命令[stp(SP,D7),LR:SVR]的图。
图166是说明命令[stp(SP),LR:SVR]的图。
图167是说明命令[stp(Ra,D11),TAR:UDR]的图。
图168是说明命令[stp(GP,D14),TAR:UDR]的图。
图169是说明命令[stp(SP,D14),TAR:UDR]的图。
图170是说明命令[sthp(Ra,D10),Rb:Rb+1]的图。
图171是说明命令[sthp(Ra+)I10,Rb:Rb+1]的图。
图172是说明命令[sthp(Ra+),Rb:Rb+1]的图。
图173是说明命令[sthp(Ra2+)I10,Rb2:Rb2+1]的图。
图174是说明命令[sthp(Ra),Rb:Rb+1]的图。
图175是说明命令[stbp(Ra,D9),Rb:Rb+1]的图。
图176是说明命令[stbp(Ra+)I9,Rb:Rb+1]的图。
图177是说明命令[stbp(Ra+),Rb:Rb+1]的图。
图178是说明命令[stbp(Ra),Rb:Rb+1]的图。
图179是说明命令[stbp(Ra+)I7,Rb]的图。
图180是说明命令[stbp(Ra+),Rb]的图。
图181是说明命令[stbp(Ra),Rb]的图。
图182是说明命令[stbhp(Ra+)I7,Rb:Rb+1]的图。
图183是说明命令[stbhp(Ra+),Rb:Rb+1]的图。
图184是说明命令[stbhp(Ra),Rb:Rb+1]的图。
图185是说明命令[dpref(Ra,D8)]的图。
图186是说明命令[ldstb Rb,(Ra)]的图。
图187是说明命令[rd C0:C1,Rb,(D11)]的图。
图188是说明命令[rd C0:C1,Rb,(Ra,D5)]的图。
图189是说明命令[rd C0:C1,Rb,(Ra)]的图。
图190是说明命令[rd C0:C1,Rb2,(Ra2)]的图。
图191是说明命令[rd C2:C3,Rb,(Ra,D5)]的图。
图192是说明命令[rd C2:C3,Rb,(Ra)]的图。
图193是说明命令[rde C0:C1,Rb,(Ra,D5)]的图。
图194是说明命令[rde C0:C1,Rb,(Ra)]的图。
图195是说明命令[rde C2:C3,Rb,(Ra,D5)]的图。
图196是说明命令[rde C2:C3,Rb,(Ra)]的图。
图197是说明命令[wt C0:C1,(D11),Rb]的图。
图198是说明命令[wt C0:C1,(Ra,D5),Rb]的图。
图199是说明命令[wt C0:C1,(Ra),Rb]的图。
图200是说明命令[wt C0:C1,(Ra2),Rb2]的图。
图201是说明命令[wt C2:C3,(Ra,D5),Rb]的图。
图202是说明命令[wt C2:C3,(Ra),Rb]的图。
图203是说明命令[wte C0:C1,(Ra,D5),Rb]的图。
图204是说明命令[wte C0:C1,(Ra),Rb]的图。
图205是说明命令[wte C2:C3,(Ra,D5),Rb]的图。
图206是说明命令[wte C2:C3,(Ra),Rb]的图。
图207是说明命令[br D20]的图。
图208是说明命令[br D9]的图。
图209是说明命令[brl D20]的图。
图210是说明命令[call D20]的图。
图211是说明命令[brl D9]的图。
图212是说明命令[call D9]的图。
图213是说明命令[jmp LR]的图。
图214是说明命令[jmp TAR]的图。
图215是说明命令[jmpl LR]的图。
图216是说明命令[call LR]的图。
图217是说明命令[jmpl TAR]的图。
图218是说明命令[call TAR]的图。
图219是说明命令[jmpr LR]的图。
图220是说明命令[ret]的图。
图221是说明命令[jmpf LR]的图。
图222是说明命令[jmpf C6,C2:C4,TAR]的图。
图223是说明命令[jmpf Cm,TAR]的图。
图224是说明命令[jmpf TAR]的图。
图225是说明命令[jloop C6,TAR,Ra,I8]的图。
图226是说明命令[jloop C6,TAR,Ra]的图。
图227是说明命令[jloop C6,TAR,Ra2]的图。
图228是说明命令[jloop C6,TAR,Ra2,1]的图。
图229是说明命令[jloop C6,Cm,TAR,Ra,I8]的图。
图230是说明命令[jloop C6,Cm,TAR,Ra]的图。
图231是说明命令[jloop C6,Cm,TAR,Ra2]的图。
图232是说明命令[jloop C6,Cm,TAR,Ra2,1]的图。
图233是说明命令[jloop C6,C2:C4,TAR,Ra,I8]的图。
图234是说明命令[jloop C6,C2:C4,TAR,Ra]的图。
图235是说明命令[jloop C6,C2:C4,TAR,Ra2]的图。
图236是说明命令[jloop C6,C2:C4,TAR,Ra2,1]的图。
图237是说明命令[jloop C5,LR,Ra,I8]的图。
图238是说明命令[jloop C5,LR,Ra]的图。
图239是说明命令[settar D9]的图。
图240是说明命令[settar C6,Cm,D9]的图。
图241是说明命令[settar C6,D9]的图。
图242是说明命令[settar C6,C2:C4,D9]的图。
图243是说明命令[settar C6,C4,D9]的图。
图244是说明命令[setlr D9]的图。
图245是说明命令[setlr C5,D9]的图。
图246是说明命令[setbb TAR]的图。
图247是说明命令[setbb LR]的图。
图248是说明命令[intd]的图。
图249是说明命令[inte]的图。
图250是说明命令[vmpswd]的图。
图251是说明命令[vmpswe]的图。
图252是说明命令[vmpsleep]的图。
图253是说明命令[vmpwait]的图。
图254是说明命令[vmpsus]的图。
图255是说明命令[rti]的图。
图256是说明命令[piNl(pi0l,pi1l,pi2l,pi3l,pi4l,pi5l,pi6l,pi7l]的图。
图257是说明命令[piN(pi0,pi1,pi2,pi3,pi4,pi5,pi6,pi7]的图。
图258是说明命令[scN(sc0,sc1,sc2,sc3,sc4,sc5,sc6,sc7]的图。
图259是说明命令[add Rc,Ra,Rb]的图。
图260是说明命令[add Rc3,Ra3,Rb3]的图。
图261是说明命令[add Ra2,Rb2]的图。
图262是说明命令[add Rb,Ra2,I12]的图。
图263是说明命令[add Ra2,I5]的图。
图264是说明命令[add SP,I19]的图。
图265是说明命令[add SP,I11]的图。
图266是说明命令[addu Rb,GP,I13]的图。
图267是说明命令[addu Rb,SP,I13]的图。
图268是说明命令[addu Ra3,SP,I6]的图。
图269是说明命令[addvw Rc,Ra,Rb]的图。
图270是说明命令[addvh Rc,Ra,Rb]的图。
图271是说明命令[addc Rc,Ra,Rb]的图。
图272是说明命令[adds Rc,Ra,Rb]的图。
图273是说明命令[addsr Rc,Ra,Rb]的图。
图274是说明命令[s1add Rc,Ra,Rb]的图。
图275是说明命令[s1add Rc3,Ra3,Rb3]的图。
图276是说明命令[s2add Rc,Ra,Rb]的图。
图277是说明命令[s2add Rc3,Ra3,Rb3]的图。
图278是说明命令[addmsk Rc,Ra,Rb]的图。
图279是说明命令[addarvw Rc,Ra,Rb]的图。
图280是说明命令[sub Rc,Rb,Ra]的图。
图281是说明命令[sub Rc3,Rb3,Ra3]的图。
图282是说明命令[sub Rb2,Ra2]的图。
图283是说明命令[sub Rb2,Ra2,I12]的图。
图284是说明命令[sub Ra2,I5]的图。
图285是说明命令[sub SP,I19]的图。
图286是说明命令[sub SP,I11]的图。
图287是说明命令[subc Rc,Rb,Ra]的图。
图288是说明命令[subvw Rc,Rb,Ra]的图。
图289是说明命令[subvh Rc,Rb,Ra]的图。
图290是说明命令[subs Rc,Rb,Ra]的图。
图291是说明命令[submsk Rc,Rb,Ra]的图。
图292是说明命令[rsub Rb,Ra,I8]的图。
图293是说明命令[rsub Ra2,I4]的图。
图294是说明命令[rsub Ra2,Rb2]的图。
图295是说明命令[neg Rb,Ra]的图。
图296是说明命令[neg Ra2]的图。
图297是说明命令[negvh Rb,Ra]的图。
图298是说明命令[negvw Rb,Ra]的图。
图299是说明命令[abs Rb,Ra]的图。
图300是说明命令[absvw Rb,Ra]的图。
图301是说明命令[absvh Rb,Ra]的图。
图302是说明命令[max Rc,Ra,Rb]的图。
图303是说明命令[min Rc,Ra,Rb]的图。
图304是说明命令[and Rc,Ra,Rb]的图。
图305是说明命令[and Ra2,Rb2]的图。
图306是说明命令[and Rb,Ra,I8]的图。
图307是说明命令[andn Rc,Ra,Rb]的图。
图308是说明命令[andn Ra2,Rb2]的图。
图309是说明命令[andn Rb,Ra,I8]的图。
图310是说明命令[or Rc,Ra,Rb]的图。
图311是说明命令[or Ra2,Rb2]的图。
图312是说明命令[or Rb,Ra,I8]的图。
图313是说明命令[xor Rc,Ra,Rb]的图。
图314是说明命令[xor Ra2,Rb2]的图。
图315是说明命令[xor Rb,Ra,I8]的图。
图316是说明命令[not Rb,Ra]的图。
图317是说明命令[not Ra2]的图。
图318是说明命令[cmpCC Rm,Ra,Rb]的图。
图319是说明命令[cmpCC C6,Ra2,Rb2]的图。
图320是说明命令[cmpCC]的图。
图321是说明命令[cmpCC R6,Ra2,I4]的图。
图322是说明命令[cmpCC]的图。
图323是说明命令[cmpCC]的图。
图324是说明命令[cmpCCn Cm,Ra,Rb,Cn]的图。
图325是说明命令[cmpCCn Cm,Ra,I5,Cn]的图。
图326是说明命令[cmpCCn Cm:Cm+1,Ra,Rb,Cn]的图。
图327是说明命令[cmpCCn Cm:Cm+1,Ra,I5,Cn]的图。
图328是说明命令[cmpCCa Cm:Cm+1,Ra,Rb,Cn]的图。
图329是说明命令[cmpCCa Cm:Cm+1,Ra,I5,Cn]的图。
图330是说明命令[cmpCCo Cm:Cm+1,Ra,Rb,Cn]的图。
图331是说明命令[cmpCCo Cm:Cm+1,Ra,I5,Cn]的图。
图332是说明命令[tstz Cm,Ra,Rb]的图。
图333是说明命令[tstz C6,Ra2,Rb2]的图。
图334是说明命令[tstz Cm,Ra,I5]的图。
图335是说明命令[tstz C6,Ra2,I4]的图。
图336是说明命令[tstz Cm:Cm+1,Ra,Rb]的图。
图337是说明命令[tstz Cm:Cm+1,Ra,I5]的图。
图338是说明命令[tstzn Cm,Ra,Rb,Cn]的图。
图339是说明命令[tstzn Cm,Ra,I5,Cn]的图。
图340是说明命令[tstzn Cm:Cm+1,Ra,Rb,Cn]的图。
图341是说明命令[tstzn Cm:Cm+1,Ra,I5,Cn]的图。
图342是说明命令[tstza Cm:Cm+1,Ra,Rb,Cn]的图。
图343是说明命令[tstza Cm:Cm+1,Ra,I5,Cn]的图。
图344是说明命令[tstzo Cm:Cm+1,Ra,Rb,Cn]的图。
图345是说明命令[tstzo Cm:Cm+1,Ra,I5,Cn]的图。
图346是说明命令[tstn Cm,Ra,Rb]的图。
图347是说明命令[tstn C6,Ra2,Rb2]的图。
图348是说明命令[tstn Cm,Ra,I5]的图。
图349是说明命令[tstn C6,Ra2,I4]的图。
图350是说明命令[tstn Cm:Cm+1,Ra,Rb]的图。
图351是说明命令[tstn Cm:Cm+1,Ra,I5]的图。
图352是说明命令[tstnn Cm,Ra,Rb,Cn]的图。
图353是说明命令[tstnn Cm,Ra,I5,Cn]的图。
图354是说明命令[tstnn Cm:Cm+1,Ra,Rb,Cn]的图。
图355是说明命令[tstnn Cm:Cm+1,Ra,I5,Cn]的图。
图356是说明命令[tstna Cm:Cm+1,Ra,Rb,Cn]的图。
图357是说明命令[tstna Cm:Cm+1,Ra,I5,Cn]的图。
图358是说明命令[tstno Cm:Cm+1,Ra,Rb,Cn]的图。
图359是说明命令[tstno Cm:Cm+1,Ra,I5,Cn]的图。
图360是说明命令[mov Rb,Ra]的图。
图361是说明命令[mov Ra2,Rb]的图。
图362是说明命令[mov Ra,I16]的图。
图363是说明命令[mov Ra2,I8]的图。
图364是说明命令[mov Rb,TAR]的图。
图365是说明命令[mov Rb2,TAR]的图。
图366是说明命令[mov Rb,LR]的图。
图367是说明命令[mov Rb2,LR]的图。
图368是说明命令[mov Rb,SVR]的图。
图369是说明命令[mov Rb,PSR]的图。
图370是说明命令[mov Rb,CFR]的图。
图371是说明命令[mov Rb,MH0]的图。
图372是说明命令[mov Rb2,MH0]的图。
图373是说明命令[mov Rb,MH1]的图。
图374是说明命令[mov Rb2,MH1]的图。
图375是说明命令[mov Rb,ML0]的图。
图376是说明命令[mov Rb,ML1]的图。
图377是说明命令[mov Rb,IPC]的图。
图378是说明命令[mov Rb,IPSR]的图。
图379是说明命令[mov Rb,PC]的图。
图380是说明命令[mov Rb,EPC]的图。
图381是说明命令[mov Rb,EPSR]的图。
图382是说明命令[mov Rb,PSR0]的图。
图383是说明命令[mov Rb,PSR1]的图。
图384是说明命令[mov Rb,PSR2]的图。
图385是说明命令[mov Rb,PSR3]的图。
图386是说明命令[mov Rb,CFR0]的图。
图387是说明命令[mov Rb,CFR1]的图。
图388是说明命令[mov Rb,CFR2]的图。
图389是说明命令[mov Rb,CFR3]的图。
图390是说明命令[mov LR,Rb]的图。
图391是说明命令[mov LR,Rb2]的图。
图392是说明命令[mov TAR,Rb]的图。
图393是说明命令[mov TAR,Rb2]的图。
图394是说明命令[mov SVR,Rb]的图。
图395是说明命令[mov PSR,Rb]的图。
图396是说明命令[mov CFR,Rb]的图。
图397是说明命令[mov MH0,Rb]的图。
图398是说明命令[mov MH0,Rb2]的图。
图399是说明命令[mov MH1,Rb]的图。
图400是说明命令[mov MH1,Rb2]的图。
图401是说明命令[mov ML0,Rb]的图。
图402是说明命令[mov ML1,Rb2]的图。
图403是说明命令[mov IPC,Rb]的图。
图404是说明命令[mov IPSR,Rb]的图。
图405是说明命令[mov EPC,Rb]的图。
图406是说明命令[mov EPSR,Rb]的图。
图407是说明命令[mov PSR0,Rb]的图。
图408是说明命令[mov PSR1,Rb]的图。
图409是说明命令[mov PSR2,Rb]的图。
图410是说明命令[mov PSR3,Rb]的图。
图411是说明命令[mov CFR0,Rb]的图。
图412是说明命令[mov CFR1,Rb]的图。
图413是说明命令[mov CFR2,Rb]的图。
图414是说明命令[mov CFR3,Rb]的图。
图415是说明命令[mvclovs Cm:Cm+1]的图。
图416是说明命令[movcf Ci,Cj,Cm,Cn]的图。
图417是说明命令[mvclcas Cm:Cm+1]的图。
图418是说明命令[sethi Ra,I16]的图。
图419是说明命令[setlo Ra,I16]的图。
图420是说明命令[vcchk]的图。
图421是说明命令[nop]的图。
图422是说明命令[asl Rc,Ra,Rb]的图。
图423是说明命令[asl Rc,Ra,I5]的图。
图424是说明命令[asl Ra2,I4]的图。
图425是说明命令[aslvw Rc,Ra,Rb]的图。
图426是说明命令[aslvw Rb,Ra,I5]的图。
图427是说明命令[aslvh Rc,Ra,Rb]的图。
图428是说明命令[aslvh Rb,Ra,I5]的图。
图429是说明命令[asr Rc,Ra,Rb]的图。
图430是说明命令[asr Rb,Ra,I5]的图。
图431是说明命令[aslvh Ra2,I4]的图。
图432是说明命令[asrvw Rc,Ra,Rb]的图。
图433是说明命令[asrvh Rc,Ra,Rb]的图。
图434是说明命令[lsl Rc,Ra,Rb]的图。
图435是说明命令[lsl Rc,Ra,I5]的图。
图436是说明命令[lsl Ra2,I4]的图。
图437是说明命令[lsr Rc,Ra,Rb]的图。
图438是说明命令[lsr Rb,Ra,I5]的图。
图439是说明命令[rol Rc,Ra,Rb]的图。
图440是说明命令[rol Rb,Ra,I5]的图。
图441是说明命令[ror Rb,Ra,I5]的图。
图442是说明命令[aslp Mm,Ra,Mn,Rb]的图。
图443是说明命令[aslp Mm,Rb,Mn,I6]的图。
图444是说明命令[aslp Mm,Rc,MHn,Ra,Rb]的图。
图445是说明命令[aslp Mm,Rb,MHn,Ra,I6]的图。
图446是说明命令[aslpvw Mm,Ra,Mn,Rb]的图。
图447是说明命令[aslpvw Mm,Rb,Mn,I6]的图。
图448是说明命令[asrp Mm,Ra,Mn,Rb]的图。
图449是说明命令[asrp Mm,Rb,Mn,I6]的图。
图450是说明命令[asrp Mm,Rc,MHn,Ra,Rb]的图。
图451是说明命令[asrp Mm,Rb,MHn,Ra,I6]的图。
图452是说明命令[asrpvw Mm,Ra,Mn,Rb]的图。
图453是说明命令[lslp Mm,Ra,Mn,Rb]的图。
图454是说明命令[lslp Mm,Rb,Mn,I6]的图。
图455是说明命令[lslp Mm,Rc,MHn,Ra,Rb]的图。
图456是说明命令[lslp Mm,Rc,MHn,Ra,I6]的图。
图457是说明命令[lsrp Mm,Ra,Mn,Rb]的图。
图458是说明命令[lsrp Mm,Ra,Mn,I6]的图。
图459是说明命令[lsrp Mm,Rc,MHn,Ra,Rb]的图。
图460是说明命令[lslp Mm,Rc,MHn,Ra,I6]的图。
图461是说明命令[extr Rc,Ra,Rb]的图。
图462是说明命令[extr Rb,Ra,Ib5,Ia5]的图。
图463是说明命令[ext Rb,Ra,I5]的图。
图464是说明命令[exth Ra2]的图。
图465是说明命令[extb Ra2]的图。
图466是说明命令[extru Rc,Ra,Rb]的图。
图467是说明命令[extru Rb,Ra,Ib5,Ia5]的图。
图468是说明命令[extu Rb,Ra,I5]的图。
图469是说明命令[exthu Ra2]的图。
图470是说明命令[extbu Ra2]的图。
图471是说明命令[mskgen Rc,Rb]的图。
图472是说明命令[mskgen Rb,Ib5,Ia5]的图。
图473是说明命令[msk Rc,Ra,Rb]的图。
图474是说明命令[msk Rb,Ra,Ib5,Ia5]的图。
图475是说明命令[satw Mm,Rb,Mn]的图。
图476是说明命令[sath Rb,Ra]的图。
图477是说明命令[sat12 Rb,Ra]的图。
图478是说明命令[sat9 Rb,Ra]的图。
图479是说明命令[satb Rb,Ra]的图。
图480是说明命令[satbu Rb,Ra]的图。
图481是说明命令[extw Mm,Rb,Ra]的图。
图482是说明命令[vintllh Rc,Ra,Rb]的图。
图483是说明命令[vintlhh Rc,Ra,Rb]的图。
图484是说明命令[vintllb Rc,Ra,Rb]的图。
图485是说明命令[vintlhb Rc,Ra,Rb]的图。
图486是说明命令[valn Rc,Ra,Rb]的图。
图487是说明命令[valn1 Rc,Ra,Rb]的图。
图488是说明命令[valn2 Rc,Ra,Rb]的图。
图489是说明命令[valn3 Rc,Ra,Rb]的图。
图490是说明命令[valnvc1 Rc,Ra,Rb]的图。
图491是说明命令[valnvc2 Rc,Ra,Rb]的图。
图492是说明命令[valnvc3 Rc,Ra,Rb]的图。
图493是说明命令[valnvc4 Rc,Ra,Rb]的图。
图494是说明命令[vxchngh Rb,Ra]的图。
图495是说明命令[byterev Rb,Ra]的图。
图496是说明命令[vstovb Rb,Ra]的图。
图497是说明命令[vstovh Rb,Ra]的图。
图498是说明命令[vlunpkh Rb:Rb+1,Ra]的图。
图499是说明命令[vlunpkhu Rb:Rb+1,Ra]的图。
图500是说明命令[vlunpkb Rb:Rb+1,Ra]的图。
图501是说明命令[vlunpkbu Rb:Rb+1,Ra]的图。
图502是说明命令[vhunpkh Rb:Rb+1,Ra]的图。
图503是说明命令[vhunpkb Rb:Rb+1,Ra]的图。
图504是说明命令[vunpk1 Rb,Mn]的图。
图505是说明命令[vunpk2 Rb,Mn]的图。
图506是说明命令[vlpkh Rc,Ra,Rb]的图。
图507是说明命令[vlpkhu Rc,Ra,Rb]的图。
图508是说明命令[vlpkb Rc,Ra,Rb]的图。
图509是说明命令[vlpkbu Rc,Ra,Rb]的图。
图510是说明命令[vhpkh Rc,Ra,Rb]的图。
图511是说明命令[vhpkb Rc,Ra,Rb]的图。
图512是说明命令[vexth Mm,Rb,Ra]的图。
图513是说明命令[bseq0 Rb,Ra]的图。
图514是说明命令[bseq1 Rb,Ra]的图。
图515是说明命令[bseq Rb,Ra]的图。
图516是说明命令[bcnt1 Rb,Ra]的图。
图517是说明命令[rndvh Rb,Ra]的图。
图517是说明命令[rndvh Rc,Ra,Rb]的图。
图518是说明命令[mskbrvb Rc,Ra,Rb]的图。
图519是说明命令[mskbrvh Rc,Ra,Rb]的图。
图520是说明命令[movp Rc:Rc+1,Ra,Rb]的图。
图521是说明命令[hmul Mm,Rc,Ra,Rb]的图。
图522是说明命令[lmul Mm,Rc,Ra,Rb]的图。
图523是说明命令[fmulhh Mm,Rc,Ra,Rb]的图。
图524是说明命令[fmulhhr Mm,Rc,Ra,Rb]的图。
图525是说明命令[fmulhw Mm,Rc,Ra,Rb]的图。
图526是说明命令[fmulhww Mm,Rc,Ra,Rb]的图。
图527是说明命令[mul Mm,Rc,Ra,Rb]的图。
图528是说明命令[mul Mm,Rc,Ra,I8]的图。
图529是说明命令[mulu Mm,Rc,Ra,Rb]的图。
图530是说明命令[mulu Mm,Rc,Ra,I8]的图。
图531是说明命令[fmulww Mm,Rc,Ra,Rb]的图。
图532是说明命令[hmac Mm,Rc,Ra,Rb,Mn]的图。
图533是说明命令[hmac M0,Rc,Ra,Rb,Rx]的图。
图534是说明命令[lmac Mm,Rc,Ra,Rb,Mn]的图。
图535是说明命令[lmac M0,Rc,Ra,Rb,Rx]的图。
图536是说明命令[fmachh Mm,Rc,Ra,Rb,Mn]的图。
图537是说明命令[fmachh M0,Rc,Ra,Rb,Rx]的图。
图538是说明命令[fmachhr Mm,Rc,Ra,Rb,Mn]的图。
图539是说明命令[fmachhr M0,Rc,Ra,Rb,Rx]的图。
图540是说明命令[fmachw Mm,Rc,Ra,Rb,Mn]的图。
图541是说明命令[fmachw M0,Rc,Ra,Rb,Rx]的图。
图542是说明命令[fmachww Mm,Rc,Ra,Rb,Mn]的图。
图543是说明命令[fmachww M0,Rc,Ra,Rb,Rx]的图。
图544是说明命令[mac Mm,Rc,Ra,Rb,Mn]的图。
图545是说明命令[mac M0,Rc,Ra,Rb,Rx]的图。
图546是说明命令[fmacww Mm,Rc,Ra,Rb,Mn]的图。
图547是说明命令[fmacww M0,Rc,Ra,Rb,Rx]的图。
图548是说明命令[hmsu Mm,Rc,Ra,Rb,Mn]的图。
图549是说明命令[hmsu M0,Rc,Ra,Rb,Rx]的图。
图550是说明命令[lmsu Mm,Rc,Ra,Rb,Mn]的图。
图551是说明命令[lmsu M0,Rc,Ra,Rb,Rx]的图。
图552是说明命令[fmsuhh Mm,Rc,Ra,Rb,Mn]的图。
图553是说明命令[fmsuhh M0,Rc,Ra,Rb,Rx]的图。
图554是说明命令[fmsuhhr Mm,Rc,Ra,Rb,Mn]的图。
图555是说明命令[fmsuhhr M0,Rc,Ra,Rb,Rx]的图。
图556是说明命令[fmsuhw Mm,Rc,Ra,Rb,Mn]的图。
图557是说明命令[fmsuhw M0,Rc,Ra,Rb,Rx]的图。
图558是说明命令[fmsuhww Mm,Rc,Ra,Rb,Mn]的图。
图559是说明命令[fmsuhww M0,Rc,Ra,Rb,Rx]的图。
图560是说明命令[msu Mm,Rc,Ra,Rb,Mn]的图。
图561是说明命令[msu M0,Rc,Ra,Rb,Rx]的图。
图562是说明命令[fmsuww Mm,Rc,Ra,Rb,Mn]的图。
图563是说明命令[fmsuww M0,Rc,Ra,Rb,Rx]的图。
图564是说明命令[div MHm,Rc,MHn,Ra,Rb]的图。
图565是说明命令[divu MHm,Rc,MHn,Ra,Rb]的图。
图566是说明命令[dbgm0]的图。
图567是说明命令[dbgm1]的图。
图568是说明命令[dbgm2 I15]的图。
图569是说明命令[dbgm3 I15]的图。
图570是说明命令[vaddh Rc,Ra,Rb]的图。
图571是说明命令[vxaddh Rc,Ra,Rb]的图。
图572是说明命令[vhaddh Rc,Ra,Rb]的图。
图573是说明命令[vladdh Rc,Ra,Rb]的图。
图574是说明命令[vaddhvh Rc,Ra,Rb]的图。
图575是说明命令[vxaddhvh Rc,Ra,Rb]的图。
图576是说明命令[vhaddhvh Rc,Ra,Rb]的图。
图577是说明命令[vladdhvh Rc,Ra,Rb]的图。
图578是说明命令[vsaddh Rb,Ra,I8]的图。
图579是说明命令[vaddsh Rc,Ra,Rb]的图。
图580是说明命令[vaddsrh Rc,Ra,Rb]的图。
图581是说明命令[vaddhvc Rc,Ra,Rb]的图。
图582是说明命令[vaddrhvc Rc,Ra,Rb]的图。
图583是说明命令[vaddb Rc,Ra,Rb]的图。
图584是说明命令[vsaddb Rb,Ra,I8]的图。
图585是说明命令[vaddsb Rc,Ra,Rb]的图。
图586是说明命令[vaddsrb Rc,Ra,Rb]的图。
图587是说明命令[vsubh Rc,Rb,Ra]的图。
图588是说明命令[vxsubh Rc,Rb,Ra]的图。
图589是说明命令[vhsubh Rc,Rb,Ra]的图。
图590是说明命令[vlsubh Rc,Rb,Ra]的图。
图591是说明命令[vsubhvh Rc,Rb,Ra]的图。
图592是说明命令[vxsubhvh Rc,Rb,Ra]的图。
图593是说明命令[vhsubhvh Rc,Rb,Ra]的图。
图594是说明命令[vlsubhvh Rc,Rb,Ra]的图。
图595是说明命令[vssubh Rb,Ra,I8]的图。
图596是说明命令[vsubb Rc,Rb,Ra]的图。
图597是说明命令[vssubb Rb,Ra,I8]的图。
图598是说明命令[vsubsh Rc,Rb,Ra]的图。
图599是说明命令[vsrsubh Rb,Ra,I8]的图。
图600是说明命令[vsrsubb Rb,Ra,I8]的图。
图601是说明命令[vsumh Rb,Ra]的图。
图602是说明命令[vsumh2 Rb,Ra]的图。
图603是说明命令[vsumrh2 Rb,Ra]的图。
图604是说明命令[vnegh Rb,Ra]的图。
图605是说明命令[vneghvh Rb,Ra]的图。
图606是说明命令[vnegb Rb,Ra]的图。
图607是说明命令[vabshvh Rb,Ra]的图。
图608是说明命令[vasubb Rc,Rb,Ra]的图。
图609是说明命令[vsgnh Rb,Ra]的图。
图610是说明命令[vmaxh Rc,Ra,Rb]的图。
图611是说明命令[vmaxb Rc,Ra,Rb]的图。
图612是说明命令[vminh Rc,Ra,Rb]的图。
图613是说明命令[vminb Rc,Ra,Rb]的图。
图614是说明命令[vsel Rc,Ra,Rb]的图。
图615是说明命令[vmovt Rb,Ra]的图。
图616是说明命令[vscmpeqb Ra,I5]的图。
图617是说明命令[vscmpneb Ra,I5]的图。
图618是说明命令[vscmpgtb Ra,I5]的图。
图619是说明命令[vscmpleb Ra,I5]的图。
图620是说明命令[vscmpgeb Ra,I5]的图。
图621是说明命令[vscmpltb Ra,I5]的图。
图622是说明命令[vscmpeqh Ra,I5]的图。
图623是说明命令[vscmpneh Ra,I5]的图。
图624是说明命令[vscmpgth Ra,I5]的图。
图625是说明命令[vscmpleh Ra,I5]的图。
图626是说明命令[vscmpgeh Ra,I5]的图。
图627是说明命令[vscmplth Ra,I5]的图。
图628是说明命令[vcmpeqh Ra,Rb]的图。
图629是说明命令[vcmpneh Ra,Rb]的图。
图630是说明命令[vcmpgth Ra,Rb]的图。
图631是说明命令[vcmpleh Ra,Rb]的图。
图632是说明命令[vcmpgeh Ra,Rb]的图。
图633是说明命令[vcmplth Ra,Rb]的图。
图634是说明命令[vcmpeqb Ra,Rb]的图。
图635是说明命令[vcmpneb Ra,Rb]的图。
图636是说明命令[vcmpgtb Ra,Rb]的图。
图637是说明命令[vcmpleb Ra,Rb]的图。
图638是说明命令[vcmpgeb Ra,Rb]的图。
图639是说明命令[vcmpltb Ra,Rb]的图。
图640是说明命令[vaslh Rc,Ra,Rb]的图。
图641是说明命令[vaslh Rb,Ra,I4]的图。
图642是说明命令[vaslvh Rc,Ra,Rb]的图。
图643是说明命令[vaslvh Rb,Ra,I4]的图。
图644是说明命令[vasrh Rb,Ra,I4]的图。
图645是说明命令[vasrvh Rc,Ra,Rb]的图。
图646是说明命令[vlslh Rc,Ra,Rb]的图。
图647是说明命令[vlslh Rb,Ra,I4]的图。
图648是说明命令[vlsrh Rc,Ra,Rb]的图。
图649是说明命令[vlsrh Rb,Ra,I4]的图。
图650是说明命令[vrolh Rc,Ra,Rb]的图。
图651是说明命令[vrolh Rb,Ra,I4]的图。
图652是说明命令[vrorh Rb,Ra,I4]的图。
图653是说明命令[vasrh Rc,Ra,Rb]的图。
图654是说明命令[vaslb Rc,Ra,Rb]的图。
图655是说明命令[vaslb Rb,Ra,I3]的图。
图656是说明命令[vasrb Rc,Ra,Rb]的图。
图657是说明命令[vasrb Rb,Ra,I3]的图。
图658是说明命令[vlslb Rc,Ra,Rb]的图。
图659是说明命令[vlslb Rb,Ra,I3]的图。
图660是说明命令[vlsrb Rc,Ra,Rb]的图。
图661是说明命令[vlsrb Rb,Ra,I3]的图。
图662是说明命令[vrolb Rc,Ra,Rb]的图。
图663是说明命令[vrolb Rb,Ra,I3]的图。
图664是说明命令[vrorb Rb,Ra,I3]的图。
图665是说明命令[vasl Mm,Ra,Mn,Rb]的图。
图666是说明命令[vasl Mm,Rb,Mn,I5]的图。
图667是说明命令[vaslvw Mm,Ra,Mn,Rb]的图。
图668是说明命令[vaslvw Mm,Rb,Mn,I5]的图。
图669是说明命令[vasr Mm,Ra,Mn,Rb]的图。
图670是说明命令[vasr Mm,Rb,Mn,I5]的图。
图671是说明命令[vasrvw Mm,Ra,Mn,Rb]的图。
图672是说明命令[vlsl Mm,Ra,Mn,Rb]的图。
图673是说明命令[vlsl Mm,Rb,Mn,I5]的图。
图674是说明命令[vlsr Mm,Ra,Mn,Rb]的图。
图675是说明命令[vlsr Mm,Rb,Mn,I5]的图。
图676是说明命令[vsath Mm,Rb,Mn]的图。
图677是说明命令[vsath12 Rb,Ra]的图。
图678是说明命令[vsath9 Rb,Ra]的图。
图679是说明命令[vsath8 Rb,Ra]的图。
图680是说明命令[vsath8u Rb,Ra]的图。
图681是说明命令[vrndvh Rb,Mn]的图。
图682是说明命令[vabssumb Rc,Ra,Rb]的图。
图683是说明命令[vmul Mm,Rc,Ra,Rb]的图。
图684是说明命令[vxmul Mm,Rc,Ra,Rb]的图。
图685是说明命令[vhmul Mm,Rc,Ra,Rb]的图。
图686是说明命令[vlmul Mm,Rc,Ra,Rb]的图。
图687是说明命令[vfmulh Mm,Rc,Ra,Rb]的图。
图688是说明命令[vxfmulh Mm,Rc,Ra,Rb]的图。
图689是说明命令[vhfmulh Mm,Rc,Ra,Rb]的图。
图690是说明命令[vlfmulh Mm,Rc,Ra,Rb]的图。
图691是说明命令[vfmulhr Mm,Rc,Ra,Rb]的图。
图692是说明命令[vxfmulhr Mm,Rc,Ra,Rb]的图。
图693是说明命令[vhfmulhr Mm,Rc,Ra,Rb]的图。
图694是说明命令[vlfmulhr Mm,Rc,Ra,Rb]的图。
图695是说明命令[vfmulw Mm,Rc,Ra,Rb]的图。
图696是说明命令[vxfmulw Mm,Rc,Ra,Rb]的图。
图697是说明命令[vhfmulw Mm,Rc,Ra,Rb]的图。
图698是说明命令[vlfmulw Mm,Rc,Ra,Rb]的图。
图699是说明命令[vpfmulhww Mm,Rc:Rc+1,Ra,Rb]的图。
图700是说明命令[vmac Mm,Rc,Ra,Rb,Mn]的图。
图701是说明命令[vmac M0,Rc,Ra,Rb,Rx]的图。
图702是说明命令[vxmac Mm,Rc,Ra,Rb,Mn]的图。
图703是说明命令[vxmac M0,Rc,Ra,Rb,Rx]的图。
图704是说明命令[vhmac Mm,Rc,Ra,Rb,Mn]的图。
图705是说明命令[vhmac M0,Rc,Ra,Rb,Rx]的图。
图706是说明命令[vlmac Mm,Rc,Ra,Rb,Mn]的图。
图707是说明命令[vlmac M0,Rc,Ra,Rb,Rx]的图。
图708是说明命令[vfmach Mm,Rc,Ra,Rb,Mn]的图。
图709是说明命令[vfmach M0,Rc,Ra,Rb,Rx]的图。
图710是说明命令[vxfmach Mm,Rc,Ra,Rb,Mn]的图。
图711是说明命令[vxfmach M0,Rc,Ra,Rb,Rx]的图。
图712是说明命令[vhfmach Mm,Rc,Ra,Rb,Mn]的图。
图713是说明命令[vhfmach M0,Rc,Ra,Rb,Rx]的图。
图714是说明命令[vlfmach Mm,Rc,Ra,Rb,Mn]的图。
图715是说明命令[vlfmach M0,Rc,Ra,Rb,Rx]的图。
图716是说明命令[vfmachr Mm,Rc,Ra,Rb,Mn]的图。
图717是说明命令[vfmachr M0,Rc,Ra,Rb,Rx]的图。
图718是说明命令[vxfmachr Mm,Rc,Ra,Rb,Mn]的图。
图719是说明命令[vxfmachr M0,Rc,Ra,Rb,Rx]的图。
图720是说明命令[vhfmachr Mm,Rc,Ra,Rb,Mn]的图。
图721是说明命令[vhfmachr M0,Rc,Ra,Rb,Rx]的图。
图722是说明命令[vlfmachr Mm,Rc,Ra,Rb,Mn]的图。
图723是说明命令[vlfmachr M0,Rc,Ra,Rb,Rx]的图。
图724是说明命令[vfmacw Mm,Rc,Ra,Rb,Mn]的图。
图725是说明命令[vxfmacw Mm,Rc,Ra,Rb,Mn]的图。
图726是说明命令[vhfmacw Mm,Rc,Ra,Rb,Mn]的图。
图727是说明命令[vlfmacw Mm,Rc,Ra,Rb,Mn]的图。
图728是说明命令[vpfmachww Mm,Rc:Rc+1,Ra,Rb,Mn]的图。
图729是说明指令[vmsu Mm,Rc,Ra,Rb,Mn]的图。
图730是说明指令[vmsu M0,Rc,Ra,Rb,Rx]的图。
图731是说明指令[vxmsu Mm,Rc,Ra,Rb,Mn]的图。
图732是说明指令[vxmsu M0,Rc,Ra,Rb,Rx]的图。
图733是说明指令[vhmsu Mm,Rc,Ra,Rb,Mn]的图。
图734是说明指令[vhmsu M0,Rc,Ra,Rb,Rx]的图。
图735是说明指令[vlmsu Mm,Rc,Ra,Rb,Mn]的图。
图736是说明指令[vlmsu M0,Rc,Ra,Rb,Rx]的图。
图737是说明指令[vfmsuh Mm,Rc,Ra,Rb,Mn]的图。
图738是说明指令[vfmsuh M0,Rc,Ra,Rb,Rx]的图。
图739是说明指令[vxfmsuh Mm,Rc,Ra,Rb,Mn]的图。
图740是说明指令[vxfmsuh M0,Rc,Ra,Rb,Rx]的图。
图741是说明指令[vhfmsuh Mm,Rc,Ra,Rb,Mn]的图。
图742是说明指令[vhfmsuh M0,Rc,Ra,Rb,Rx]的图。
图743是说明指令[vlfmsuh Mm,Rc,Ra,Rb,Mn]的图。
图744是说明指令[vlfmsuh M0,Rc,Ra,Rb,Rx]的图。
图745是说明指令[vfmsuw Mm,Rc,Ra,Rb,Mn]的图。
图746是说明指令[vxfmsuw Mm,Rc,Ra,Rb,Mn]的图。
图747是说明指令[vhfmsuw Mm,Rc,Ra,Rb,Mn]的图。
图748是说明指令[vlfmsuw Mm,Rc,Ra,Rb,Mn]的图。
具体实施方式
说明本发明处理器的结构。本处理器的指令与通常的微型计算机相比,排列性高,是将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构成,执行数据的算术移位(shift)(2的补数体系的移位)或逻辑移位(无符号移位)。通常,以32比特或64比特的数据作为输入输出。由其它寄存器或当前值对存储在寄存器32a、32b中的被移位数据指定移位量。对数据进行左63比特-右63比特的算术或逻辑移位,以输入比特长度进行输出。
另外,桶形移位器45可对SIMD型命令移位8、16、32、64比特的数据。例如,可并排处理4个8位数据的移位。
算术移位是2的补码体系的移位,用于加法或减法时的小数点位置的一致或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比特的signed的乘法、积和、积差运算
·32×32比特的unsigned的乘法
·16×16比特的2排signed的乘法、积和、积差运算
·32×16比特的2排signed的乘法、积和、积差运算
对整数、固定小数点格式(h1、h2、w1、w2)的数据进行这些运算。另外,对这些运算进行舍入、饱和。
图7是表示命令控制部10构成的框图。命令控制部10由命令高速缓冲存储器10a、地址管理部10b、命令缓冲器10c-10e、转移缓冲器10f及旋转部(rotation)10g构成,在平常和分支时提供命令。通过具有3个128位的命令缓冲器(命令缓冲器10c-10e),对应于最大排列执行数。就分支处理而言,在分支执行前,经转移缓冲器10f等,事先将分支目的地地址存储在后述的TAR寄存器中(settar命令)。使用存储在TAR寄存器中的分支目的地地址进行分支。
本处理器1是具有VLIW结构的处理器。这里,所谓VLIW结构是在1个指令字中存储多个命令(加载、存储、运算、分支等),并同时执行所有这些命令的结构。编程器通过将可并排执行的命令记述为1个发行组,可并排处理该发行组。在本说明书中,用“;;”表示发行组的区分。下面示出表述例。
(例1)
mov r1,0x223;;mov
该命令记述表示仅执行命令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构成作为执行对象的任务的上下文(context)的一部分,是存储数据或地址的32比特的寄存器群。通常寄存器R30和R31分别作为全程(global)指示器、堆栈指示器,硬件使用。
图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中的地址命令被存储在分支用命令缓冲器中的情况下,分支损失(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:是中断处理标志,表示在可屏蔽(maskabke)的中断处理中。[1]表示中断处理中,[0]表示不在中断处理中。若发生中断,则自动设置。为了知道通过rti命令从中断后到返回,是到其它中断处理中还是到程序处理中而使用该标志。
比特EH:是表示错误或NMI在处理中的标志。[0]表示不在错误/NMI中断处理中,[1]表示错误/NMI中断处理中。EH=1时,在发生非同步错误或NMI的情况下,进行屏蔽。另外,在激活VMP时,屏蔽VMP的板极切换。
比特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:表示未对齐(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:表示预约比特。总是读取0。在写入时必需写入0。
图12是表示条件标志寄存器(CFR)32构造的图。条件标志寄存器(CFR)32是构成作为执行对象的任务上下文的一部分的32比特的寄存器,由条件标志(condition标志)、运算标志(operation标志)、矢量条件标志(矢量condition标志)、运算命令用位位置指定字段、SIMD数据调整(data alignment)信息字段构成。
比特ALN[1:0]:表示调整(align)模式。设定valnvc命令的调整模式。
比特BP0[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的管道动作的时间图。如图17所示,本处理器1基本上由命令取出、命令分配(分派)、解码、执行、写入5段管道构成。
图18是表示本处理器1执行命令时各管道动作的时间图。在命令取出阶段,访问由程序计数器(PC)33指定地址的命令存储器,将命令传送给命令缓冲器10c-10e等。在命令分配阶段,对分支类命令输出分支目的地地址信息,输出输入寄存器控制信号,分配可变长命令,将命令传送到指令寄存器(IR)。在解码阶段,将IR输入解码部20,输出运算器控制信号、存储器访问信号。在执行阶段,执行运算,将运算结果输出到数据存储器或通用寄存器(R0-R31)30a。在写入阶段,将数据传送、运算结果存储在通用寄存器中。
处理器1通过VLIW结构,最高可并排进行3个上述处理。因此,在图18所示动作中,处理器1在图19的定时下并排执行。
下面,说明如上构成的处理器1的命令组。
下表3-表5是将处理器1执行的命令分类成不同类别的表。
表3
表4
表5
表中的[运算器]表示该命令使用的运算器。运算器的略号含义如下。即,[A]表示ALU命令,[B]表示分支命令,[C]表示变换命令,[DIV]表示除法命令,[DBGM]表示调试命令,[M]表示存储器访问命令,[S1]、[S2]表示移位命令,[X1]、[X2]表示乘法命令。
图20是表示本处理器1执行的命令格式的图。
图中略号的含义如下。即,[P]表示判定(predicate)(执行条件:指定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(算术桶形移位(barrel shift))类]的命令的图,图32是说明属于分类[BSlsr(逻辑桶形移位)类]的命令的图,图33是说明属于分类[CNVvaln(算术变换)类]的命令的图,图34是说明属于分类[CNV(一般变换)类]的命令的图,图35是说明属于分类[SATvlpk(饱和处理)类]的命令的图,图36是说明属于分类[ETC(其他)类]的命令的图。
在这些图中,项目[SIMD]表示该命令类型(SISD(SINGLE)或SIMD的区别),项目[尺寸]表示作为运算对象的各操作数的尺寸(size),项目[命令]表示该命令的操作码,项目[操作数]表示该命令的操作数,项目[CFR]表示条件标志寄存器的变化,项目[PSR]表示处理器状态寄存器的变化,项目[代表动作]表示动作示意,项目[运算器]表示使用的运算器,项目[3116]表示命令尺寸。
图37-图748是说明本处理器1执行的命令的详细功能的图。命令说明中使用的各种记号的含义如下表6-表10。
表6
表7
表8
表9
表10
图37-图119是说明[load]关联命令的图。
图120-图184是说明[store]关联命令的图。
图185-图186是说明[memory(etc)]关联命令的图。
图187-图206是说明[external register]关联命令的图。
图207-图247是说明[branch]关联命令的图。
图248-图264是说明[VMP/interupt]关联命令的图。
图265-图258是说明[program interrupt]关联命令的图。
图259-图303是说明[arithmetic]关联命令的图。
图304-图317是说明[logic]关联命令的图。
图318-图359是说明[compare]关联命令的图。
图360-图420是说明[move]关联命令的图。
图421是说明[nop]关联命令的图。
图422-图441是说明[shift(S1)]关联命令的图。
图442-图460是说明[shift(S2)]关联命令的图。
图461-图470是说明[extract]关联命令的图。
图471-图474是说明[mask]关联命令的图。
图475-图480是说明[shaturation]关联命令的图。
图481-图512是说明[conversion]关联命令的图。
图513-图516是说明[bit count]关联命令的图。
图517-图520是说明[etc]关联命令的图。
图521-图526是说明[mul(X1)]关联命令的图。
图527-图531是说明[mul(X2)]关联命令的图。
图532-图543是说明[mac(X1)]关联命令的图。
图544-图547是说明[mac(X2)]关联命令的图。
图548-图559是说明[msu(X1)]关联命令的图。
图560-图563是说明[msu(X2)]关联命令的图。
图564-图565是说明[divide]关联命令的图。
图566-图569是说明[debug]关联命令的图。
图570-图615是说明[SIMD arithmetic]关联命令的图。
图616-图639是说明[SIMD compare]关联命令的图。
图640-图664是说明[SIMD shift(S1)]关联命令的图。
图665-图675是说明[SIMD shift(S2)]关联命令的图。
图676-图680是说明[SIMD saturation]关联命令的图。
图681-图682是说明[SIMD etc]关联命令的图。
图683-图699是说明[SIMD mul(X2)]关联命令的图。
图700-图728是说明[SIMD mac(X2)]关联命令的图。
图729-图748是说明[SIMD msu(X2)]关联命令的图。
下面,说明本处理器1在几个特征命令中的动作。
(1)交叉操作数来进行SIMD2项运算的命令
首先,说明在两排SIMD运算中,将位于交叉位置关系上的操作数作为对象进行运算的命令。
[命令vxaddh]
命令vxaddh是以半字(16比特)单位将位于交叉位置关系上的两组操作数相加的SIMD型命令。例如,若为
vxaddh Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相加,将结果存储在寄存器Rc的上位16位中,与之并行,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相加,将结果存储在寄存器Rc的下位16位中。
这种命令在为了由对称型滤波器(距中心左右对称的系数)减去乘法,而将事先乘以相同系数的值彼此相加(或相减)的情况下有效。
另外,本处理器1即使对减法命令(vxsubh等)也执行与该加法命令一样的处理。
[命令vxmul]
命令vxmul是以半字(16比特)单位将位于交叉位置关系上的两组操作数相乘、并分别保留(SIMD存储)这些结果的下位半字的SIMD型命令。例如,若为
vxmul Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果的下位16位存储在寄存器Rc的上位16位中,与之并行,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中,同时,将该乘法结果的下位16位存储在寄存器Rc的下位16位中。
这种命令对复数的内积有效。取出结果的下位在处理整数数据的情况下有效(主要是图像)。
[命令vxfmulh]
命令vxfmulh是以半字(16比特)单位将位于交叉位置关系上的两组操作数相乘、并分别保留(SIMD存储)这些结果的上位半字的SIMD型命令。例如,若为
vxfmulh Rc,Ra,Rb,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果的下位16位存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中,同时,将该乘法结果的上位16位存储在寄存器Rc的下位16位中。
这种命令对复数的内积有效。取出结果的上位在处理固定小数点数据的情况下有效。可适用于称为Q31/Q15的标准格式(MSB装入)中。
[命令vxfmulw]
命令vxfmulw是以半字(16比特)单位将位于交叉位置关系上的两组操作数相乘、并仅保留(非SIMD存储)一方乘法结果的SIMD型命令。例如,若为
vxfmulw Rc,Ra,Rb,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果(字)存储在寄存器Rc中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中(不存储在寄存器Rc中)。
这种命令在精度不足16比特、不能维持SIMD的情况下有效(音频等)。
[命令vxmac]
命令vxmac是以半字(16比特)单位进行位于交叉位置关系上的两组操作数的积和运算、并分别保留(SIMD存储)这些结果的下位半字的SIMD型命令。例如,若为
vxmac Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的下位16位存储在寄存器Rc的上位16位中,与之并行,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的下位16位存储在寄存器Rc的下位16位中。
这种命令对复数的内积有效。取出结果的下位在处理整数数据的情况下有效(主要是图像)。
[命令vxfmach]
命令vxfmach是以半字(16比特)单位进行位于交叉位置关系上的两组操作数的积和运算、并分别保留(SIMD存储)这些结果的上位半字的SIMD型命令。例如,若为
vxfmach Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的上位16位存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的下位16位构成的32位区域中,同时,将该加法结果的上位16位存储在寄存器Rc的下位16位中。
这种命令对复数的内积有效。取出结果的上位在处理固定小数点数据的情况下有效。可适用于称为Q31/Q15的标准格式(MSB装入)中。
[命令vxfmacw]
命令vxfmacw是以半字(16比特)单位,将位于交叉位置关系上的两组操作数相乘、并仅保留(非SIMD存储)一方乘法结果的SIMD型命令。例如,若为
vxfmacw Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的下位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的32比特存储在寄存器Rc中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的下位16位构成的32位区域中(不存储在寄存器Rc中)。
这种命令在精度不足16比特、不能维持SIMD的情况下有效(音频等)。
另外,本处理器1即使对积差命令(vxmsu、vxmsuh、vxmsuw等)也执行与这些积和命令一样的处理。
另外,本处理器1也可具备不仅执行对以上处于交叉位置关系的两组操作数的运算(两排SIMD的加法、减法、乘法、积和、积差)、而且还执行对扩展其的n组操作数的运算(4排、8排SIMD运算等)的功能。
例如,在设寄存器Ra中存储的4个字节数据从上位开始为Ra1、Ra2、Ra3、Ra4,设寄存器Rb中存储的4个字节数据从上位开始为Rb1、Rb2、Rb3、Rb4的情况下,作为将寄存器Ra与寄存器Rb作为操作数的SIMD运算命令,也可具备对处于以下交叉位置关系上的字节数据并行执行运算的命令。即
(i)1对称交叉命令
也可具备分别将Ra1与Rb4、Ra2与Rb3、Ra3与Rb2、Ra4与Rb1作为运算对象的4排SIMD型运算命令。
(ii)2对称交叉命令
也可具备分别将Ra1与Rb2、Ra2与Rb1、Ra3与Rb4、Ra4与Rb3作为运算对象的4排SIMD型运算命令。
(iii)双重交叉命令
也可具备分别将Ra1与Rb3、Ra2与Rb4、Ra3与Rb1、Ra4与Rb2作为运算对象的4排SIMD型运算命令。
另外,这些4排SIMD型运算的种类与上述2排SIMD型运算一样,也可适用于加法、减法、乘法、积和、积差之一。并且,对乘法、积和、积差而言,与上述2排SIMD型运算命令(vxmul、vxfmulh、vxfmulw等)一样,也可具备仅将4个运算结果各自的下位字节SIMD存储在寄存器Rc等中、又仅将4个运算结果各自的上位字节SIMD存储在寄存器Rc等中、又仅将4个运算结果中的两个SIMD存储在寄存器Rc等中的命令。
对处于上述交叉位置关系的数据的3种运算一般化时,可表现如下。即,若设作为运算对象的数据组为构成第1数据群的n个数据排列中的第i个数据和构成第2数据群的n个数据排列中的第j个数据时,则
在上述(i)1对称交叉命令中,j=n-i+1成立,
在上述(ii)2对称交叉命令中,j=i-(-1)^(i mod 2)成立,
在上述(iii)双重交叉命令中,j=n-i+1+(-1)^(i mod 2)。这里,[^]表示指数,[mod]表示余数。
以上命令在复数的内积等同时运算两个复数的情况下有效。
(2)固定一方操作数来进行SIMD2项运算的命令
接着,说明在两排SIMD运算中,固定一方操作数来进行(设一方的操作数为共同的)运算命令。
[命令vhaddh]
命令vhaddh是以半字(16比特)单位将设一方操作数(寄存器中的上位16位)为共同的两组操作数相加的SIMD型命令。例如,若为
vhaddh Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相加,将结果存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相加,将结果存储在寄存器Rc的下位16位中。
这种命令在由于两个排列的要素间的加减法、使两个排列的对齐错位、难以适用SIMD的情况下有效。
另外,本处理器1即使对减法命令(vhsubh等)也执行与该加法命令一样的处理。
[命令vhmul]
命令vhmul是以半字(16比特)单位将设一方操作数(寄存器中的上位16位)为共同的两组操作数相乘、并保留(SIMD存储)这些结果的各下位半字的SIMD型命令。例如,若为
vhmul Rc,Ra,Rb,则处理器1通过乘法、积和运算器44等,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果的下位16位存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中,同时,将该乘法结果的下位16位存储在寄存器Rc的下位16位中。
这种命令在增益控制等向所有要素乘以系数的情况下,通过迭代展开循环,并由SIMD进行并列处理时,要素错位而难以适用SIMD的情况下有效。基本上,与下述下位固定命令成对使用。取出结果的下位在处理整数数据的情况下有效(主要是图像)。
[命令vhfmulh]
命令vhfmulh是以半字(16比特)单位将设一方操作数(寄存器中的上位16位)为共同的两组操作数相乘、并保留(SIMD存储)这些结果的各H位半字的SIMD型命令。例如,若为
vhfmulh Rc,Ra,Rb,则处理器1通过乘法、积和运算器44等,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果的上位16位存储在寄存器Rc的上位16位中,与之并行,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中,同时,将该乘法结果的上位16位存储在寄存器Rc的下位16位中。
这种命令与上述一样有效。取出结果的上位在处理固定小数点数据的情况下有效。可适用于称为Q31/Q15的标准格式(MSB装入)中。
[命令vhfmulw]
命令vhfmulw是以半字(16比特)单位将设一方操作数(寄存器中的上位16位)为共同的两组操作数相乘、并仅保留(非SIMD存储)一方乘法结果的SIMD型命令。例如,若为
vhfmulw Rc,Ra,Rb,则处理器1通过乘法、积和运算器44等,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,同时,将该乘法结果(字)存储在寄存器Rc中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中(不存储在寄存器Rc中)。
这种命令对确保精度有效。
[命令vhmac]
命令vhmac是以半字(16比特)单位进行设一方操作数(寄存器中的上位16位)为共同的两组操作数的积和运算、并分别保留(SIMD存储)这些结果的下位半字的SIMD型命令。例如,若为
vhmac Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的下位16位存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的下位16位构成的32位区域中,同时,将该加法结果的下位16位存储在寄存器Rc的下位16位中。
这种命令在由FIR(滤波器)等通过迭代展开循环,并由SIMD进行并列处理时,要素错位而难以适用SIMD的情况下有效。基本上,与下述下位固定命令成对(交互)使用。取出结果的下位在处理整数数据的情况下有效(主要是图像)。
[命令vhfmach]
命令vhfmach是以半字(16比特)单位进行设一方操作数(寄存器中的上位16位)为共同的两组操作数的积和运算、并分别保留(SIMD存储)这些结果的上位半字的SIMD型命令。例如,若为
vhfmach Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的上位16位存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的下位16位构成的32位区域中,同时,将该加法结果的上位16位存储在寄存器Rc的下位16位中。
这种命令与上述一样有效。取出结果的上位在处理固定小数点数据的情况下有效。可适用于称为Q31/Q15的标准格式(MSB装入)中。
[命令vhfmacw]
命令vhfmacw是以半字(16比特)单位将设一方操作数(寄存器中的上位16位)为共同的两组操作数相乘、并仅保留(非SIMD存储)一方乘法结果的SIMD型命令。例如,若为
vhfmacw Mm,Rc,Ra,Rb,Mn,则处理器1通过乘法、积和运算器44,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的上位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的上位16位构成的32位区域中,同时,将该加法结果的32比特存储在寄存器Rc中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相乘,将该乘法结果与由运算寄存器MHn及MLn的下位16位构成的32位相加,将加法结果的32比特存储在由运算寄存器MHm及MLm的下位16位构成的32位区域中(不存储在寄存器Rc中)。
这种命令对确保精度有效。
另外,本处理器1即使对积差命令(vhmsu、vhmsuh、vhmsuw等)也执行与这些积和命令一样的处理。
另外,在这些命令中,固定(共同化)寄存器中的上位16位,但即使对固定(共同化)寄存器中下位16位的命令(vladdh,vlsubh,vlmul,vlfmulh,vlfmulw,vlmac,vlmsu,vlfmach,vlmsuh,vlfmacw,vlmsuw等),本处理器1也可执行与这些运算命令一样的处理。这种命令与上述上位固定命令成对使用时有效。
另外,本处理器1也可具备不仅执行对以上设一方操作数(寄存器中的上位16位)共同的两组操作数的运算(两排SIMD的加法、减法、乘法、积和、积差)、而且还执行对扩展其的n组操作数的运算(4排、8排SIMD运算等)的功能。
例如,在设寄存器Ra中存储的4个字节数据从上位开始为Ra1、Ra2、Ra3、Ra4,设寄存器Rb中存储的4个字节数据从上位开始为Rb1、Rb2、Rb3、Rb4的情况下,作为将寄存器Ra与寄存器Rb作为操作数的SIMD运算命令,也可具备对以下设一方操作数(寄存器中的1字节)共同的字节数据并行执行运算的命令。即
(i)最上位固定命令
也可具备分别将Ra1与Rb1、Ra2与Rb1、Ra3与Rb1、Ra4与Rb1作为运算对象的4排SIMD型运算命令。
(ii)中上位固定命令
也可具备分别将Ra1与Rb2、Ra2与Rb2、Ra3与Rb2、Ra4与Rb2作为运算对象的4排SIMD型运算命令。
(iii)中下位固定命令
也可具备分别将Ra1与Rb3、Ra2与Rb3、Ra3与Rb3、Ra4与Rb3作为运算对象的4排SIMD型运算命令。
(iv)最下位固定命令
也可具备分别将Ra1与Rb4、Ra2与Rb4、Ra3与Rb4、Ra4与Rb4作为运算对象的4排SIMD型运算命令。
另外,这些4排SIMD型运算的种类与上述2排SIMD型运算一样,也可适用于加法、减法、乘法、积和、积差之一。并且,对乘法、积和、积差而言,与上述2排SIMD型运算命令(vhmul、vhfmulh、vhfmulw等)一样,也可具备仅将4个运算结果各自的下位字节SIMD存储在寄存器Rc等中、又仅将4个运算结果各自的上位字节SIMD存储在寄存器Rc等中、又仅将4个运算结果中的两个SIMD存储在寄存器Rc等中的命令。这种命令对以下情况有效。即,在将两个要素每错1要素并对每个要素进行运算的情况下有效。这是因为必需错位1个、错位2个、错位3个的运算。
若一般化表现以上固定操作数一方的运算时,则如下所述。即,本处理器1也可对于包含指定由n(≥2)个数据排列构成的第1数据群的第1操作数、和指定由n个数据排列构成的第2数据群的第2操作数的SIMD型命令,分别对i=1、2、…、n、上述j=恒定值的情况下的第1数据群的第i个数据和第2数据组的第j个数据组成组所构成的n组进行运算。
(3)执行SIMD2项运算、并位移位其结果的命令
下面,说明在两排SIMD运算中,将位于交叉位置关系上的操作数作为对象进行运算的命令。
[命令vaddsh]
命令vaddsh是以半字(16比特)单位将两组操作数相加、并将结果仅算术右移位1位的SIMD型命令。例如,若为
vaddsh Rc,Ra,Rb,则处理器1通过算术逻辑、比较运算器41,
(i)将寄存器Ra的上位16位与寄存器Rb的上位16位相加,将结果算术右移位1位后的值存储在寄存器Rc的上位16位中,同时,
(ii)将寄存器Ra的下位16位与寄存器Rb的上位16位相加,将结果算术右移位1位后的值存储在寄存器Rc的下位16位中。
这种命令在通过加法未达到16比特精度之前下移以确保精度时有效。根据情况需要舍入。在FFT(蝶形)中,由于反复加减法各复数,而被较多使用。
另外,本处理器1即使对减法(vsubsh等)也执行与该加法命令一样的处理。
另外,本处理器1也可具备不仅执行对以上两组操作数的运算(两排SIMD的加法、减法)、而且还执行对扩展其的n组操作数的运算(4排、8排SIMD运算等)的功能。
例如,在设寄存器Ra中存储的4个字节数据从上位开始为Ra1、Ra2、Ra3、Ra4,设寄存器Rb中存储的4个字节数据从上位开始为Rb1、Rb2、Rb3、Rb4的情况下,作为将寄存器Ra与寄存器Rb作为操作数的SIMD运算命令,也可具备进行以下运算和位移位的命令。即,也可具备分别将Ra1与Rb1、Ra2与Rb2、Ra3与Rb3、Ra4与Rb4作为运算对象的4排SIMD型运算命令。例如,是以字节单位将4组操作数相加,将结果仅算术右移1位的命令vaddsb等。
这种命令同样对确保精度有效。主要用于取平均的情况(纵向平均)。
另外,进行这种SIMD运算和移位的特征命令不限于上述向右仅移位1位的命令。即,移位量也可是固定及可变之一,也可是向右及向左之一。另外,也可在右移位时舍入溢出的比特(例如命令vaddsrh或命令vaddsrb等)。
(4)累加SIMD(矢量)数据后进行标量化或矢量低维化的命令
下面,说明对矢量数据进行标量化或矢量低维化的SIMD型命令。
[命令vsumh]
命令vsumh是以半字(16比特)单位将两个SIMD数据(矢量数据)相加、并标量化的SIMD型命令。例如,若为
vsumh Rb,Ra,则处理器1通过算术逻辑、比较运算器41,将寄存器Ra的上位16位与寄存器Rb的上位16位相加,将结果存储在寄存器Rb中。
这种命令可用于各种用途。可使平均(横向平均)、单独运算(积和、加法)的结果一致等。
[命令vsumh2]
命令vsumh2是以半字单位、对设两个SIMD数据(矢量数据)为1组的两组分别进行要素累加、并标量化的SIMD型命令。例如,若为
vsumh2 Rb,Ra,则处理器1通过算术逻辑、比较运算器41,
(i)将寄存器Ra的最上位字节与中上位字节累加,将结果存储在寄存器Rb的上位16位中,同时,
(ii)将寄存器Ra的中下位字节与最下位字节累加,将结果存储在寄存器Rb的下位16位中。
这种命令作为图像处理、动作补偿(MC)、半对(ペル)用命令是有效的。
另外,本处理器1也可具备不仅执行对以上两排SIMD数据标量化的运算、而且还执行标量化扩展其的n(4、8等)个要素构成的n排SIMD数据运算的功能。
例如,也可具备在设寄存器Ra中存储的4个字节数据从上位开始为Ra1、Ra2、Ra3、Ra4的情况下,累加这些Ra1、Ra2、Ra3、Ra4,将结果存储在寄存器Rb中的命令。
另外,本处理器1不仅将由多个要素数据构成的矢量变换为由1个要素数据构成的标量,而且也可进行使要素数据的个数减少的矢量低维化。
另外,运算的种类不仅限于加法,也可是算出平均值的运算。这种命令对平均、运算结果的一致等有效。
(5)其它关于SIMD的命令
下面,说明不属于以上分类的其它SIMD型命令。
[命令vexth]
命令vexth是以半字(16比特)单位、分别符号扩展两个SIMD数据的SIMD型命令。例如,若为
vexth Mm,Rb,Ra,则处理器1通过变换器47的饱和功能块(SAT)47a等,
(i)将寄存器Ra的上位16位符号扩展为32比特,将结果存储在运算寄存器MHm的上位16位和运算寄存器MLm的上位16位中,与之并行,
(iii)将寄存器Ra的上位16位符号扩展为32比特,将结果存储在运算寄存器MHm的下位16位和运算寄存器MLm的下位16位中,与之并行,
(iii)将寄存器Ra的32比特存储在寄存器Rb中。
所谓符号扩展是维持原样延长符号信息的数据长度,例如,将由半字表现的带符号数值变换为由字表现的相同数值。具体而言,是埋尽由原始数据的符号位(最上位位)值扩展的上位位的处理。
这种命令对向累加器传送SIMD数据(必需精度的情况下)有效。
[命令vasubb]
命令vasubb是以字节单位、分别减去4组SIMD数据、并将结果得到的4个符号存储在条件标志寄存器中的SIMD型命令。例如,若为
vasubb Rc,Rb,Ra,则处理器1通过算术逻辑、比较运算器41等,
(i)从寄存器Rb的最上位8位中减去寄存器Ra的最上位8位,将结果存储在寄存器Rc的最上位8位中,同时,将其符号存储在条件标志寄存器(CFR)32的VC3中,与之并行,
(ii)从寄存器Rb的中上位8位中减去寄存器Ra的中上位8位,将结果存储在寄存器Rc的中上位8位中,同时,将其符号存储在条件标志寄存器(CFR)32的VC2中,与之并行,
(iii)从寄存器Rb的中下位8位中减去寄存器Ra的中下位8位,将结果存储在寄存器Rc的中下位8位中,同时,将其符号存储在条件标志寄存器(CFR)32的VC1中,与之并行,
(iv)从寄存器Rb的最下位8位中减去寄存器Ra的最下位8位,将结果存储在寄存器Rc的最下位8位中,同时,将其符号存储在条件标志寄存器(CFR)32的VC0中。
这种命令在每次得到绝对值差的和时暂时需要9比特精度的情况下有效。
[命令vabssumb]
命令vabssumb是以字节单位、分别相加4组SIMD数据的绝对值、并将其结果与其它4字节数据相加的SIMD型命令。例如,若为
vabssumb Rc,Rb,Ra,则处理器1通过算术逻辑、比较运算器41等,将寄存器Ra的最上位8位的绝对值、中上位8位的绝对值、中下位8位的绝对值和最下位8位的绝对值相加,并将其结果与寄存器Rb的32比特相加,将所得结果存储在寄存器Rc中。另外,本处理器1通过条件标志寄存器(CFR)32的标志VC0-VC3,特定存储在寄存器Ra中的各字节的绝对值。
这种命令通过与上述命令vasubb组合使用,在对多组数据算出各组的差后,得到合计各差绝对值的值,算出图像处理动作预测的差分绝对值等情况下有效。
(6)其它关于屏蔽运算等的命令
下面,说明不是SIMD型命令、但进行特征处理的命令。
[命令addmsk]
命令addmsk是屏蔽两个操作字一方的部分比特(上位)后相加的命令。例如,若为
addmsk Rc,Rb,Ra,则处理器1通过算术逻辑、比较运算器41或变换器47等,仅在由条件标志寄存器(CFR)32的BPO指定的范围(下位比特)中存储在寄存器Ra和寄存器Rb中的数据相加后存储在寄存器Rc中,同时,对未指定的范围(上位位),将寄存器Ra的值原样存储在寄存器Rc中。
这种命令作为与模数寻址(在DSP中一般)的对应有效。由于蝶形运算的准备而事先将数据重新排列为特定图案中,必需该命令。
本处理器1即使对减法命令(submsk)也可执行与该加法命令一样的处理。
[命令mskbrvh]
命令mskbrvh是颠倒(将比特的排列变为反序)两个操作字一方的部分比特(下位)后、与另一方操作数进行比特连接的命令。例如,若为
mskbrvh Rc,Rb,Ra,则处理器1通过变换器47等,在对寄存器Rb的下位16位进行反序后,在由条件标志寄存器(CFR)32的BPO指定的位位置上,连接寄存器Ra的数据和寄存器Rb的数据,将结果存储在寄存器Rc中。此时,将寄存器Rb的上位16位中、比BPO指定的位置靠下位部分屏蔽为0。
这种命令在对应于颠倒寻址,由于蝶形运算的准备而事先将数据重新排列为特定图案中,需要该命令。
另外,本处理器1不仅对16比特进行反序,即使对将1字节等区域反序的命令(mskbrvb等),也可执行与该命令一样的处理。
[命令msk]
命令msk是将构成操作数的比特中、由指定的两个位位置夹持的区域屏蔽(为0)、或屏蔽该区域之外的命令。例如,若为
msk Rc,Rb,Ra,则处理器1通过变换器47等,
(i)在Rb[12:8]≥Rb[4:0]的情况下,
将寄存器Ra中存储的32比特中,将从由寄存器Rb的第0-4的5比特Rb[4:0]指定的位位置开始由寄存器Rb的第8-12的5比特Rb[12:8]指定的位位置保持原样不变,将其它位屏蔽(为0),存储在寄存器Rc中。
(i)在Rb[12:8]<Rb[4:0]的情况下,
将寄存器Ra中存储的32比特中,将从由寄存器Rb的第8-12的5比特Rb[12:8]指定的位位置开始由寄存器Rb的第0-4的5比特Rb[4:0]指定的位位置屏蔽(为0),将其它比特保持原样不变,存储在寄存器Rc中。
这种命令可用于比特字段的抽取、插入(组装)中。可用于由软件进行VLD/VLC的情况。
[命令bseq]
命令bseq是从操作数的MSB的下一比特开始计数连接的符号位数的命令。例如,若为
bseq Rb,Ra,则处理器1通过变换器47的BSEQ功能块47b等,
从寄存器Ra的下一比特中计数连续的符号位数,并将结果存储在寄存器Rb中。另外,在寄存器Ra的值为0的情况下,将0存储在寄存器Rb中。
这种命令可用于检测有效进位。因为动态范围取得大,所以有时进行部分浮动小数点运算。例如,在每次与排列内最有效进位多的数据一致标准化所有数据并进行运算时,可使用该命令。
[命令ldbq]
命令ldbq是符号扩展2字节数据后从存储器下载到寄存器中的命令。例如,若为
ldbq Rb:Rb+1,(Ra,D9),则处理器1通过I/F部50等,
根据将位移值(D9)加到寄存器Ra的值上的地址,符号扩展两个字节数据,分别下载到寄存器Ra和寄存器(Ra+1)中。
这种命令高速提供数据。
另外,本处理器1不仅对两个寄存器下载,即使对下载到1个寄存器的上位半字和下位半字等(1bdh等),也可执行与该下载命令一样的处理(伴随符号扩展的下载)。
[命令rde]
命令rde是读入外部寄存器的值、在读入失败时发生错误例外的命令。例如,若为
rde C0:C1,Rb,(Ra,D5),则处理器1通过I/F部50等,
将位移值(D5)加到寄存器Ra的值上的值作为外部寄存器序号,将该外部寄存器(扩展寄存器部80)的值读入寄存器Rb中,同时,将读入成功、失败输出到条件标志寄存器(CFR)32的条件标志C0及C1。在失败时,发生扩展寄存器错误例外。
这种命令作为控制硬件累加器的命令是有效的。硬件一返回错误,则发生例外,并反映到标志中。
另外,本处理器1不仅对从外部寄存器读入,即使写出到外部寄存器(命令wte),也可执行与该读取命令一样的处理(标志的设置、例外的发生)。
[命令addarvw]
命令addarvw是进行绝对值舍入(向离开零的方向舍入)相加的命令。例如,若为
addarvw Rc,Rb,Ra,则处理器1通过算术逻辑、比较运算器41等,
将寄存器Ra的32比特与寄存器Rb的32比特相加,若结果为正,则进行进位舍去比特的处理,若结果为负,则进行舍去舍入比特的处理。具体而言,将寄存器Ra和Rb的值相加,在寄存器Ra的值为正的情况下,加1。另外,在进行绝对值舍入的情况下,将由1埋置比舍入比特下位的比特的值加入寄存器Rb中。
这种命令对绝对值舍入(在离开零的方向上舍入)的加法IDCT(Inverse Discrete Cosine Transform)有效。
发明效果
如上所述,可知,本发明的处理器是执行由1个命令来运算多个数据的SIMD型命令的处理器,不仅对两个数据排列中同一顺序的数据彼此、而且对处于交叉位置关系上的数据彼此或处于对称位置关系上的数据彼此并列执行运算。因此,可高速化对数字滤波器等处于对称位置关系上的数据实施相同运算的处理,实现适于多媒体处理等的处理器。
这里,在运算的种类是乘法、积和或积差的情况下,也可又仅输出所得运算结果各自的下位部分、又仅输出上位部分、又仅输出部分运算结果。由此,对于复数的内积等,因为在运算的同时执行处理整数数据的情况或处理固定小数点数据情况下必需的比特舍去处理,所以高速化使用复数等2维数据的运算、例如使用2维坐标的图像处理或使用振幅和相位等二维表现的声音信号的处理等。
如上所述,本发明的处理器与通常的微型计算机相比,排列性高,AV媒体类信号处理高速,可作为共同的芯片处理器用作便携电话、移动AV设备、数字TV、DVD等中,在期望高性能、高性价比的多媒体设备出现的今天,实用价值极高。
表1
寄存器名 | 位宽度 | 根数 | 用途 |
R0~R31 | 32位 | 32根 | 通用寄存器。用于数据存储器的指示器,在运算命令中的数据储存等。 |
TAR | 32位 | 1根 | 分支用寄存器。用于分支时分支地址的储存。 |
LR | 32位 | 1根 | 连结用寄存器。 |
SVR | 16位 | 2根 | 保存用寄存器。保存条件标记(CRF)和多种模式。 |
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的位编号从X的位编号j到位编号i;X和Y的连结X的n次重复将X从N位幅到M位幅符号扩展。M的默认值为32。N的默认值是X的所有位幅。将X从N位幅到M位幅零扩展。M的默认值为32。N的默认值是X的所有位幅。有符号的乘法X*Y没有符号的乘法X*Y有符号的除法的商的整数部分X/Y被除数和同符号的余没有符号的除法的商X/Y。余绝对值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]R(a+1)[31:0]Rb[31:0]R(b+1)[31:0]Rc[31:0]R(c+1)[31:0]Ra2[31:0]R(a2+1)[31:0]Rb2[31:0]R(b2+1)[31:0]Rc2[31:0]R(c2+1)[31:0]Ra3[31:0]R(a3+1)[31:0]Rb3[31:0]R(b3+1)[31:0]Rc3[31:0]R(c3+1)[31:0]Rx[31:0] | 编号a的寄存器编号a+1的寄存器编号b的寄存器编号b+1的寄存器编号c的寄存器编号c+1的寄存器编号a2的寄存器编号a2+1的寄存器编号b2的寄存器编号b2+1的寄存器编号c2的寄存器编号c2+1的寄存器编号a3的寄存器编号a3+1的寄存器编号b3的寄存器编号b3+1的寄存器编号c3的寄存器编号c3+1的寄存器编号x的寄存器 | (0<=a<=31)(0<=a<=30)(0<=b<=31)(0<=b<=30)(0<=c<=31)(0<=c<=30)(0<=a2<=15)(0<=a2<=14)(0<=b2<=15)(0<=b2<=14)(0<=c2<=15)(0<=c2<=14)(0<=a3<=7)(0<=a3<=6)(0<=b3<=7)(0<=b3<=6)(0<=c3<=7)(0<=c3<=6)(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;如果没有发生错误,则为零。<- 结果的写入=> 命令的同义词(编程转换)reg#(Ra) 多用途寄存器Ra的寄存器编号(5位的简数)0x 16进数的前置语0b 2进数的前语tmp 临时变量UD 不定值(安装相关或动态变化值)Dn 置换值(n为自然数表示的位数)ln 当前值(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,RLa和RHb之间运。high RHa和RHb,RLa和RHb之间运算。low RHa和RLb,RLa和RLb之间运算。pair RH和RHb,RH和RLb之间运算。(RH为32位数据) |
Claims (28)
1、一种处理器,执行由1个指令来运算多个数据的SIMD型指令,其特征在于:具备
译码单元,译码指令;和
执行单元,根据译码单元的译码结果,执行指令,
上述执行单元在通过上述译码单元译码SIMD型指令,并且该SIMD型指令包含指定运算种类的指令代码、对由大于等于2的n个数据排列构成的第1数据群进行指定的第1操作数、和对由n个数据排列构成的第2数据群进行指定的第2操作数的情况下,对于由属于上述第1数据群的1个数据和属于上述第2数据群的1个数据而组成1组的n组,进行由上述指令代码指定的运算,
上述n组的至少1组由构成上述第1数据群的n个数据排列中的第i个数据和构成上述第2数据群的n个数据排列中的第j个数据构成,其中,j≠i,
上述指令代码指定的运算种类中包含加法、减法、乘法、积和及积差。
2、根据权利要求1所述的处理器,其特征在于:
上述n为2,
上述第1数据群由第1个数据和第2个数据构成,
上述第2数据群由第1个数据和第2个数据构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算,并对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算。
3、根据权利要求2所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含对用于存放运算结果的第3数据进行指定的第3操作数,
上述执行单元将对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算所得结果的低位部分、和对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算所得结果的低位部分,存放在上述第3数据中。
4、根据权利要求2所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定用于存放运算结果的第3数据的第3操作数,
上述执行单元将对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算所得结果的高位部分、和对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算所得结果的高位部分存放在上述第3数据中。
5、根据权利要求2所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算所得的结果、和对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算所得的结果中的一个,存放在上述第3数据中。
6、根据权利要求1所述的处理器,其特征在于:
上述n大于4,
上述i和上述j满足
j=n-i+1。
7、根据权利要求1所述的处理器,其特征在于:
上述n大于4,
上述i和上述j满足
j=i-(-1)^(i mod 2),^表示取幂,mod表示取余数。
8、根据权利要求1所述的处理器,其特征在于:
上述n大于4,
上述i和上述j满足
j=n-i+1+(-1)^(i mod 2),^表示取幂,mod表示取余数。
9、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第4个数据组成的组、上述第1数据群的第2个数据和第2数据群的第3个数据组成的组、上述第1数据群的第3个数据和第2数据群的第2个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第1个数据组成的组进行上述运算。
10、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组、上述第1数据群的第2个数据和第2数据群的第1个数据组成的组、上述第1数据群的第3个数据和第2数据群的第4个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第3个数据组成的组进行上述运算。
11、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第3个数据组成的组、上述第1数据群的第2个数据和第2数据群的第4个数据组成的组、上述第1数据群的第3个数据和第2数据群的第1个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第2个数据组成的组进行上述运算。
12、根据权利要求9-11之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得的各结果的低位部分存放在上述第3数据中。
13、根据权利要求9-11之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得的各结果的高位部分存放在上述第3数据中。
14、根据权利要求9-11之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得4个结果中的两个存放在上述第3数据中。
15、根据权利要求1所述的处理器,其特征在于:
上述执行单元对上述i=1、2、…、n、上述j=一定值的情况下的上述第1数据群的第i个数据和第2数据群的第j个数据组成一组从而构成的n组分别进行上述运算。
16、根据权利要求1所述的处理器,其特征在于:
上述n为2,
上述第1数据群由第1个数据和第2个数据构成,
上述第2数据群由第1个数据和第2个数据构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第1个数据组成的组进行上述运算,并对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算。
17、根据权利要求1所述的处理器,其特征在于:
上述n为2,
上述第1数据群由第1个数据和第2个数据构成,
上述第2数据群由第1个数据和第2个数据构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算,并对上述第1数据群的第2个数据和第2数据群的第2个数据组成的组进行上述运算。
18、根据权利要求1所述的处理器,其特征在于:
上述n为2,
上述第1数据群由第1个数据和第2个数据构成,
上述第2数据群由第1个数据和第2个数据构成,
上述指令包括第1指令和第2指令,
上述执行单元在由上述译码单元译码第1指令的情况下,对上述第1数据群的第1个数据和第2数据群的第1个数据组成的组进行上述运算,并对上述第1数据群的第2个数据和第2数据群的第1个数据组成的组进行上述运算,
在由上述译码单元译码第2指令的情况下,对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组进行上述运算,并对上述第1数据群的第2个数据和第2数据群的第2个数据组成的组进行上述运算。
19、根据权利要求16-18之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述两个组进行上述运算所得的各结果的低位部分存放在上述第3数据中。
20、根据权利要求16-18之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述两个组进行上述运算所得的各结果的高位部分存放在上述第3数据中。
21、根据权利要求16-18之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述两个组进行上述运算所得的两个结果之一存放在上述第3数据中。
22、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第1个数据组成的组、上述第1数据群的第2个数据和第2数据群的第1个数据组成的组、上述第1数据群的第3个数据和第2数据群的第1个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第1个数据组成的组进行上述运算。
23、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第2个数据组成的组、上述第1数据群的第2个数据和第2数据群的第2个数据组成的组、上述第1数据群的第3个数据和第2数据群的第2个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第2个数据组成的组进行上述运算。
24、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第3个数据组成的组、上述第1数据群的第2个数据和第2数据群的第3个数据组成的组、上述第1数据群的第3个数据和第2数据群的第3个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第3个数据组成的组进行上述运算。
25、根据权利要求1所述的处理器,其特征在于:
上述n为4,
上述第1数据群由第1个、第2个、第3个、第4个数据排列构成,
上述第2数据群由第1个、第2个、第3个、第4个数据排列构成,
上述执行单元对上述第1数据群的第1个数据和第2数据群的第4个数据组成的组、上述第1数据群的第2个数据和第2数据群的第4个数据组成的组、上述第1数据群的第3个数据和第2数据群的第4个数据组成的组、及上述第1数据群的第4个数据和第2数据群的第4个数据组成的组进行上述运算。
26、根据权利要求22-25之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得的各结果的低位部分存放在上述第3数据中。
27、根据权利要求22-25之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得的各结果的高位部分存放在上述第3数据中。
28、根据权利要求22-25之一所述的处理器,其特征在于:
上述指令代码指定的运算种类是乘法、积和或积差,
上述指令包含指定存放运算结果用第3数据的第3操作数,
上述执行单元将对上述4个组进行上述运算所得4个结果中的两个存放在上述第3数据中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002161381A JP3857614B2 (ja) | 2002-06-03 | 2002-06-03 | プロセッサ |
JP161381/2002 | 2002-06-03 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100924636A Division CN1862521A (zh) | 2002-06-03 | 2003-06-03 | 处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1467622A CN1467622A (zh) | 2004-01-14 |
CN1246772C true CN1246772C (zh) | 2006-03-22 |
Family
ID=29545630
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031385419A Expired - Lifetime CN1246772C (zh) | 2002-06-03 | 2003-06-03 | 处理器 |
CNA2005100924636A Pending CN1862521A (zh) | 2002-06-03 | 2003-06-03 | 处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100924636A Pending CN1862521A (zh) | 2002-06-03 | 2003-06-03 | 处理器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7185176B2 (zh) |
EP (2) | EP1528481A3 (zh) |
JP (1) | JP3857614B2 (zh) |
KR (1) | KR100940957B1 (zh) |
CN (2) | CN1246772C (zh) |
DE (1) | DE60313076T2 (zh) |
TW (1) | TWI285838B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3779602B2 (ja) * | 2001-11-28 | 2006-05-31 | 松下電器産業株式会社 | Simd演算方法およびsimd演算装置 |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
US20050289329A1 (en) * | 2004-06-29 | 2005-12-29 | Dwyer Michael K | Conditional instruction for a single instruction, multiple data execution engine |
US20060256854A1 (en) * | 2005-05-16 | 2006-11-16 | Hong Jiang | Parallel execution of media encoding using multi-threaded single instruction multiple data processing |
US7565514B2 (en) * | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8505002B2 (en) * | 2006-09-29 | 2013-08-06 | Arm Limited | Translation of SIMD instructions in a data processing system |
CN101163240A (zh) * | 2006-10-13 | 2008-04-16 | 国际商业机器公司 | 一种滤波装置及其方法 |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
JP5423090B2 (ja) * | 2009-03-26 | 2014-02-19 | セイコーエプソン株式会社 | 情報処理装置、演算処理方法及び電子機器 |
CN102576302B (zh) * | 2009-11-30 | 2014-10-29 | 拉科尔斯有限公司 | 微处理器及用于微处理器上增强精确度乘积和计算的方法 |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US9003170B2 (en) * | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
US9207942B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses,and methods for zeroing of bits in a data element |
US9477467B2 (en) | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
JP6492943B2 (ja) * | 2015-05-07 | 2019-04-03 | 富士通株式会社 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
GB2553783B (en) * | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
US10120680B2 (en) * | 2016-12-30 | 2018-11-06 | Intel Corporation | Systems, apparatuses, and methods for arithmetic recurrence |
US20180232627A1 (en) * | 2017-02-16 | 2018-08-16 | Intel IP Corporation | Variable word length neural network accelerator circuit |
US10108581B1 (en) | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
CN109491659B (zh) * | 2017-09-11 | 2022-06-21 | 龙芯中科技术股份有限公司 | 指令转换方法和装置 |
CN110020565B (zh) * | 2019-04-16 | 2022-02-18 | 飞依诺科技(苏州)有限公司 | 探头信息读取故障提示方法、装置、服务器和存储介质 |
US20220197595A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Efficient multiply and accumulate instruction when an operand is equal to or near a power of two |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0635695A (ja) | 1992-07-14 | 1994-02-10 | Hitachi Ltd | データ処理装置 |
EP0681236B1 (en) * | 1994-05-05 | 2000-11-22 | Conexant Systems, Inc. | Space vector data path |
CN103345380B (zh) | 1995-08-31 | 2016-05-18 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
EP0789870B1 (en) | 1995-09-01 | 2003-01-15 | Philips Electronics North America Corporation | Method and apparatus for custom operations of a processor |
JP3739797B2 (ja) | 1995-10-06 | 2006-01-25 | パトリオット サイエンティフィック コーポレイション | 縮小命令セット・コンピューター・マイクロプロセッサーの構造 |
TW364976B (en) | 1996-09-23 | 1999-07-21 | Arm Corp | Input operand control in data processing systems |
GB2317467B (en) * | 1996-09-23 | 2000-11-01 | Advanced Risc Mach Ltd | Input operand control in data processing systems |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
US5991531A (en) * | 1997-02-24 | 1999-11-23 | Samsung Electronics Co., Ltd. | Scalable width vector processor architecture for efficient emulation |
US6223277B1 (en) * | 1997-11-21 | 2001-04-24 | Texas Instruments Incorporated | Data processing circuit with packed data structure capability |
US6377970B1 (en) * | 1998-03-31 | 2002-04-23 | Intel Corporation | Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry |
JP2000020486A (ja) | 1998-06-29 | 2000-01-21 | Ricoh Co Ltd | Simd型演算器 |
JP3652518B2 (ja) | 1998-07-31 | 2005-05-25 | 株式会社リコー | Simd方式の演算器及び演算処理装置 |
JP3869947B2 (ja) | 1998-08-04 | 2007-01-17 | 株式会社日立製作所 | 並列処理プロセッサ、および、並列処理方法 |
US6546480B1 (en) * | 1999-10-01 | 2003-04-08 | Hitachi, Ltd. | Instructions for arithmetic operations on vectored data |
JP2001142695A (ja) | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 記憶場所への定数のロード方法、宛先記憶場所への定数のロード方法、レジスタへの定数のロード方法、符号ビット数の決定方法、2進数の正規化方法、及びコンピュータシステム内の命令 |
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
JP2002014806A (ja) | 2000-06-29 | 2002-01-18 | Mitsubishi Electric Corp | ディジタル信号処理プロセッサ及びこれに用いるディジタルデータを記録したコンピュータ読み取り可能な記録媒体 |
GB0024312D0 (en) * | 2000-10-04 | 2000-11-15 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
GB2367650B (en) * | 2000-10-04 | 2004-10-27 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
US20020065860A1 (en) * | 2000-10-04 | 2002-05-30 | Grisenthwaite Richard Roy | Data processing apparatus and method for saturating data values |
JP3779540B2 (ja) | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
-
2002
- 2002-06-03 JP JP2002161381A patent/JP3857614B2/ja not_active Expired - Lifetime
-
2003
- 2003-06-02 TW TW092114893A patent/TWI285838B/zh not_active IP Right Cessation
- 2003-06-02 US US10/449,788 patent/US7185176B2/en active Active
- 2003-06-03 KR KR1020030035738A patent/KR100940957B1/ko not_active IP Right Cessation
- 2003-06-03 DE DE60313076T patent/DE60313076T2/de not_active Expired - Lifetime
- 2003-06-03 CN CNB031385419A patent/CN1246772C/zh not_active Expired - Lifetime
- 2003-06-03 EP EP04027704A patent/EP1528481A3/en not_active Withdrawn
- 2003-06-03 CN CNA2005100924636A patent/CN1862521A/zh active Pending
- 2003-06-03 EP EP03012166A patent/EP1369789B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1528481A3 (en) | 2009-03-18 |
US20040078549A1 (en) | 2004-04-22 |
DE60313076T2 (de) | 2007-12-13 |
EP1369789A2 (en) | 2003-12-10 |
TWI285838B (en) | 2007-08-21 |
EP1369789B1 (en) | 2007-04-11 |
US7185176B2 (en) | 2007-02-27 |
JP3857614B2 (ja) | 2006-12-13 |
EP1369789A3 (en) | 2004-03-03 |
TW200428275A (en) | 2004-12-16 |
KR100940957B1 (ko) | 2010-02-05 |
JP2004013185A (ja) | 2004-01-15 |
CN1467622A (zh) | 2004-01-14 |
KR20030094102A (ko) | 2003-12-11 |
DE60313076D1 (de) | 2007-05-24 |
EP1528481A2 (en) | 2005-05-04 |
CN1862521A (zh) | 2006-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1246772C (zh) | 处理器 | |
CN1103961C (zh) | 协处理器的数据访问控制装置和方法 | |
CN1112635C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1135468C (zh) | 对存储设备中信号数据字执行数字信号处理的方法和装置 | |
CN1149469C (zh) | 支持分组数据的处理器 | |
CN1117316C (zh) | 采用多个向量寄存器组的单指令多数据处理方法及其装置 | |
CN1584824A (zh) | 一种基于cisc结构的微处理器构架及指令实现方式 | |
CN1497435A (zh) | 处理器 | |
CN1472646A (zh) | 适应性强具备最佳化功能的编译装置 | |
CN1186718C (zh) | 微控制器指令集 | |
CN1226323A (zh) | 数据处理装置寄存器 | |
CN1688966A (zh) | 包括对准或者广播指令的多媒体协处理器控制机制 | |
CN1482540A (zh) | 编译程序、编译程序装置和编译方法 | |
CN1107983A (zh) | 一种数据处理系统及其方法 | |
CN1409210A (zh) | 处理器、编译装置与编译方法、存储介质 | |
CN1469241A (zh) | 处理器、程序变换装置和变换方法以及计算机程序 | |
CN1103959C (zh) | 数据处理装置和操作数据处理装置的方法 | |
CN1269052C (zh) | 支持缩小代码长度的常量还原型处理器 | |
CN1653447A (zh) | 报告NxM离散余弦变换的方法 | |
CN1104679C (zh) | 数据处理装置和数据处理方法 | |
CN1152300C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1491383A (zh) | 使用协处理器的数据处理 | |
CN1226325A (zh) | 数据处理系统中的输入操作数控制 | |
CN1226324A (zh) | 数据处理系统寄存器控制 | |
CN1228711C (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: 20151117 Address after: Kanagawa Patentee after: SOCIONEXT Inc. Address before: Osaka Japan Patentee before: Matsushita Electric Industrial Co.,Ltd. |
|
CX01 | Expiry of patent term |
Granted publication date: 20060322 |
|
CX01 | Expiry of patent term |