CN1512317A - 用来解码并执行指令的处理器 - Google Patents

用来解码并执行指令的处理器 Download PDF

Info

Publication number
CN1512317A
CN1512317A CNA2004100022789A CN200410002278A CN1512317A CN 1512317 A CN1512317 A CN 1512317A CN A2004100022789 A CNA2004100022789 A CN A2004100022789A CN 200410002278 A CN200410002278 A CN 200410002278A CN 1512317 A CN1512317 A CN 1512317A
Authority
CN
China
Prior art keywords
data
instruction
processor
output
negative
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
Application number
CNA2004100022789A
Other languages
English (en)
Other versions
CN100356316C (zh
Inventor
�������ɭ
森河彻
桧垣信生
三好明
隅田圭三
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Godo Kaisha IP Bridge 1
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=18121299&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN1512317(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1512317A publication Critical patent/CN1512317A/zh
Application granted granted Critical
Publication of CN100356316C publication Critical patent/CN100356316C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用来解码并执行指令的处理器,该处理器包括:正值转换及饱和运算单元,用于:a)当数据为负时,将数据变为零,并且b)当数据超过最大值时,将数据饱和为最大值,其中,转换处理及饱和处理至少两者之一由一个指令来执行。为了高速地执行把带码数据变换成无码数据的正值处理和以适当位修整的饱和运算处理,在使正值饱和运算指令“MCSSTD1”解码的情况下,积和结果专用寄存器6向总线P1输出保持值。比较电路22比较积和结果专用寄存器6的保持值和带32位码整数0x000000FF的大小。正负判断电路23判断由积和结果专用寄存器6保持的值的第8位是否为ON。多路转换器24向数据总线18输出积和结果专用寄存器6的保持值、常数发生电路21产生的最大值“0x000000F”、正值饱和运算指令“MCSST D1”产生的零值“0x0000_0000”中的任一个。

Description

用来解码并执行指令的处理器
本申请为分案申请,其母案的申请号为97107269.8,申请日为1997年11月28日。该母案的在先申请号为JP96-320423,在先申请日为1996年11月29日。
技术领域
本发明是有关根据存储在ROM等中的指令串进行处理的处理器(プロセツサ)。
背景技术
近年来,出现了可对由帧内编码、场内编码,动补偿预测等压缩的活动图象数据、静止图象数据、声音数据等各种数据对话性重放的应用软件的普及已起步。这样,对于能更高效地作象该软件开发的多媒体定向处理器的需要突然提高。所谓多媒体定向处理器是特定了的体系结构,使得更容易地作图象和声音数据等的压缩/减压处理的程序设计。在处理图象数据时尤其要求高速处理是具有N×N个行列状成分的压缩数据和具有N×N个行列状成分的系数数据的行列积运算。作为具有N×N个行列状成分的压缩数据的代表例首先可举出由在MPEG中规定的横16×纵16亮度成分组成的亮度块、由横8×纵8蓝色差成分组成的蓝色差(Cb块),由横8×纵8红色差成分组成的红色块(Cr块)。对于象这样的压缩数据的行列积运算在MPEG、JPEG的图象压缩方式中,在作逆DCT的近视计算中尤其以高频率进行。
下面对求得了行列积运算高速的已有的多媒体定向处理器进行说明。作为传统的多媒体定向处理器的基本体系结构,在硬件构成中设置积和结果专用寄存器(下面有简称MCR的情况),在指令体系中设置传输积和值的传输指令“MOV MCR,**”。
图1表示该多媒体定向处理器硬件构成图的一个例子。图1的算术运算电路61根据乘法指令使构成压缩数据的成分Fij和构成系数行列的成分Gji相乘。与此同时取出积和结果专用寄存器62保存的积和值,使乘算结果Gji*Fij和取出的积和值相加,加算后,把加算结果保存在积和结果专用寄存器62中。算术运算电路61重复上述动作,在积和结果专用寄存器62中存储达到此的积和值。若作一定次数的乘算,程序设计员发行积和值传输指令。通过传输指令的发行把积和结果专用寄存器62的存储值传输到通用寄存器中,将此作为一行一列的行列积结果利用。如果使同样的处理重复N×N次,则N×N压缩数据和N×N系数行列的行列积运算结束。
然而,在利用目前的多媒体定向处理器时,令程序设计员伤脑筋的是用于积和值补正的正值(正值化)处理及饱和运算处理。
所谓正值处理是在积和值为负数时,将此修整成零或正值的处理。一般把表示与前后数据的相对值作为带码数据表达压缩数据。因此,存在这样的情况,把压缩数据的各成分和一定系数的积和值作为负数表示。另一方面显示器、扬声器等的重放系统硬件由于仅处理无码数据,所以在利用积和值时,必须适当地作正值处理。
所谓饱和运算处理是在积和值超过规定范围情况(饱和情况)下,将此修整成规定值的处理。即在压缩数据的积和重复中,当使包括在传输时产生的错位的成分作积和的情况下,积和值大大超过逻辑值的可能性提高了。另一方面,重放系统硬件由于受到这样的物理性制约,作为无码数据可表达的有效位数例如是8位,所以为了把积和值修整成有效位,必须作饱和运算处理。
为了实现这样的正值处理及饱和运算处理,过去一直所作的是利用用于积和值补正的子程序补正积和值。下面对一例积和值补正例行程序进行说明。在该例中,寄存器幅度、运算器的运算幅度是32位。MCR虽然也有32位,但其积和值用带码16位表达。重放系统硬件可利用的数据必须用无码8位整数表达。还有,作为本例行程序(ル-ヂン)使用时的规定,在运算结果的存储中规定使用数据寄存器D0。各指令记作2个操作数(オペヲンド),左边、右边分别称为第一操作数和第二操作数。第二操作数兼作传输指令的传输目的地的指定和运算结果的存储端的指定。
指令1:MOV MCR,D0
指令2:CMP 0XFFFF_8000,D0
指令3:BCC CARRY
指令4:MOV 0X0000_0000,D0
指令5:BRA END
CARRY:
指令6:CMP 0X0000_00FF,D0
指令7:BCS END
指令8:MOV 0X0000_00FF,D0
END:(正值饱和运算处理结束)
按序说明该例行程序的各指令,首先在指令1“MOV MCR,D0”中,将积和结果专用寄存器MCR保存值传输到数据寄存器D0。指令2“CMP 0XFFFF_8000,D0”使数据寄存器D0和“0XFFFF_8000”作比较(“0X”表示16进位的数值)。其中的比较是通过从用第二操作数指示的寄存器D0保存值中减去在第一操作数中即时记述的“0XFFFF_8000”进行的。
指令2的即值“0XFFFF_8000”的第16位是带码16位整数的码位,D0寄存器的保存值大于“0XFFFF_8000”,这表示在MCR中存储的积和值用负数表达。
反之,D0寄存器的保存值小于“0XFFFF_8000”表示用正数表达MCR中存储的积和值。象这样,若积和值为正数,则引起降位,在标志寄存器中置进位标志。
指令3的“BCC”的“B”是分支指令“Branch”的意思,“CC”是“CarryClear”的意思。
比较结果,D0寄存器的值小于“0XFFFF_8000”的情况下,分路到提供标号“CARRY”的指令6。
比较结果,D0寄存器的值大于“0XFFFF_8000”的情况下,在指令4“MOV0X0000_0000,D0”中把零传输到寄存器D0,借此,把积和值补正为零。补正之后,在指令5的无条件分支指令“BRA END”中,分路到表示正值处理结束的END标号结束正值处理。
以上是寄存器D0的保存值为负数情况下的动作。接着说明寄存器D0的保存值超过“0X0000_00FF”的情况下的动作。在低下“0X0000_00FF”的情况下,在指令6“CMP 0X0000_00FF,D0”中,使D0寄存器的值与0X0000_00FF作比较。其中的比较是从第二操作数指示的寄存器D0的保存值中减去在第一操作数中作为即值记述的0X0000_00FF进行的。寄存器D0的保存值小于0X0000_00FF的情况下引起降位,放置标志存储器的进位标志(キヤリ-フラグ)。
指令7“BCS END”的“CS”是“Carry Set”的意思。若置进位标志,则从指令2向标号(ラベル)“END”分路。
若不置进位标志,则不作指令7的分路,向指令8分路,在指令8的传输指令“MOV 0X0000_00FF,D0”中,向寄存器D0传输0X0000_00FF,以此对0X0000_00F补正运算结果,结束饱和运算。
然而,所述积和值的补正中的问题在于,每次积和值的补正要插入八个指令,使码量极大地增加。当为了把软件装入信息机在ROM中预先存储好程序时,随着码量的增加ROM的安装量也加大,因此制造成本也急剧增加。虽然开发数字视频播放机、电子笔记本、文字处理器的许多家电厂商通过独立的扩展处理程序的安装,正试图与其他厂商区分开来,但目前的扩展处理程序的安装,伴随着ROM安装量的增加,制造成本也不可避免地上升,渗透度差。
还有,一次积和补正执行八个指令在时间方面有很大问题。比如象图2所示,当算出为了作反DCT近视计算由8×8成分组成的压缩数据Fij(i,j=1,2,3,4,5…8)和8×8系数行列Gji(i,j=1,2,3,4,5…8)的行列积Hij(i,j=1,2,3,4,5…8)的情况下,为了算出行列积成分H21,算术运算电路进行压缩数据的第一列成分F11,F21,F31,F41,F51,F61,F71,F81和系数行列的第一行成分G11,G12,G13,G14,G15,G16,G17,G18相乘结果的积和处理,对积和值实施正值饱和运算处理。接着,为了算出行列积成分H12,算术运算电路进行压缩数据的第二列成分F12,F22,F32,F42,F52,F62,F72,F82和系数行列的第一行成分G11,G12,G13,G14,G15,G16,G17,G18的相乘结果的积和处理,对积和值实施正值饱和运算处理。
进行同样的积和及正值饱和处理虽然必须获得其它成分H31,H41,H51,H61,H71,H81…,但是行列积Hij(i,j=1,2,3,4,5…8)的成分数由于是64个,所以用于上述正值饱和运算处理的积和值补正例行程序的执行总计还要作64次。在积和值补正例行程序中,存在分支指令(指令3、指令5、指令7),在本积和值补正例行程序执行时,由于分支的必然产生不取决于负数发生、饱和的有无,所以决不是平滑(スム-ズ)的。当规定在处理器利用流水线(パイプライン)处理的导入实施积和的高速化的情况下,由于执行上述3个分支指令,所以处理效率明显降低。
为了使行列积运算高速,认为只要内装实现行列积运算的专用电路就行。然而,若用专用电路实现了全部行列积运算,则硬件规模显著增加,同时有损于按照程序员记述的程序使进行各种处理的处理器特有的通用性。若损害了处理器特有的通用性,则会引起这样的后果,比如,即便想用独立的扩展处理程序控制处理器,对这样的需要也不会响应。
发明内容
本发明的目的在于提供一种处理器,使由正值处理及饱和运算处理组成的修处理更高速地进行,并且,用于修整处理的码量增加被控制在最低限度。
根据本发明的一种用来解码并执行指令的处理器,该处理器包括:正值转换及饱和运算单元,用于a)当数据为负时,将数据变为零,并且b)当数据超过最大值时,将数据饱和为最大值,其中,转换处理及饱和处理至少两者之一由一个指令来执行。
根据本发明的一种用来解码并执行指令的处理器,该处理器包括:正值转换及饱和运算单元,用于a)当数据为负时,将数据变为零,并且b)当数据超过最大值时,将数据饱和为最大值,其中,将转换处理及饱和处理至少两者之一在一个周期内予以执行。
根据本发明的一种用于解码并执行指令的处理器,该处理器包括:解码单元,用于解码包括某个指令的指令,该某个指令用来指定数据;以及正值转换及饱和运算单元,用于a)当数据是负时,将数据变为零;并且b)当数据超过最大值时,将数据饱和为最大值;其中,根据在解码单元所执行的关于该某个指令的解码,以选择方式执行所述转换及饱和。
根据本发明的一种用于解码并执行指令的处理器,该处理器包括:解码单元,用于解码包括某个指令的指令,该某个指令用来指定数据;运算单元,利用该某个指令所指定的数据来进行运算,从而产生输出数据;以及正值转换及饱和运算单元,用于a)当输出数据是负时,将运算单元所提供的输出数据变为零;并且b)当输出数据超过最大值时,将运算单元所提供的输出数据饱和为最大值;其中,根据在解码单元所执行的关于该某个指令的解码,执行所述运算连同所述转换或所述饱和。
根据本发明的一种用于解码并执行指令的处理器,该处理器包括:解码单元,用于检测一个将要解码的指令是否某个指令;以及舍入单元,当解码单元正测到该指令就是该某个指令时,将该某个指令所指定、在操作数上所存储的一个有符号的m位整数舍入为一个表为无符号的s位整数的数值,中s小于m。
附图说明
图1表示在已有技术中,设置积和结果存储用寄存器62的积和结果存储用的寄存器61的图;
图2是用于说明采取由8×8成分组成的行列的行列积的状态的说明图;
图3是本发明第一实施例处理器的结构图;
图4是第一实施例运算处理装置14的结构图;
图5是表示构成第一实施例的行列积子程序指令的指令串图;
图6是表示带积和功能的乘法指令“MACCB D0,D1”的形式图;
图7是表示正值饱和运算指令“MCSST”的指令形式图;
图8A是表示32位宽的乘数、被乘数、积和值、行列积成分表达的图;
图8B是表示正值饱和运算电路3怎样修整积和值的说明图;
图9是表示常数发生电路21和零值发生电路25的输出值的搭配与多路转换器(マルヂプレクサ)24输出关系的真值表图;
图10是用于说明在32×32bit的乘法积和器中作8×8bit乘法的情况下的数据流的说明图;
图11是用于说明在32×32bit的乘法积和器中作8×8bit乘法的情况下的数据流的说明图;
图12A是表示由图3所示的处理器内部所作的流水线处理的一个例子图;
图12B是表示由图3所示的处理器内部利用流水线处理执行子程序的状态图;
图13是表示第一实施例中应用例子的正值饱和运算指令“MCSST”的指令形式图;
图14是表示第一实施例应用例的运算处理装置14内部的图;
图15是表示第二实施例的运算处理装置14的结构图;
图16是表示带正值饱和运算的乘法指令“MULBSST Dm,Dn”指令形式图。
具体实施方式
(第一实施例)
下面,参照附图说明本发明第一实施例。图3是表示第一实施例处理器的内部结构图,如同图所示,本处理器由ROM11、指令读出电路12、译码器13、运算执行装置14、地址总线17、及数据总线18构成,通过地址总线17、数据总线18与RAM10连接。
RAM10预先存储由8×8行列状成分组成的压缩数据Fij(i,j=1,2,3,4,5…8)和由8×8行列状成分组成的系数数据Gji(i,j=2,3,4,5…8)。趟若读出端的i行j列地址向地址总线17输出,则在存储着的数据中,把用其地址指示的数据向数据总线18输出。并且,运算执行装置14计算出由8×8行列状成分组成的压缩数据Fij和8×8系数数据Gji的行列积Hij(i,j=1,2,3,4,5…8)的i行j列成分,当写入端的i行j列地址向地址总线17输出时,则把传输到数据总线18的i行j列成分写入用其地址指示的存储区域。通过逆DCT的近视计算使用象这样写入的行列积Hij,在实施规定的处理之后,利用未图示的重放系统硬件。并且,设定成从低位把第八位分配给码位的带码8位整数来表达Fij和Gij。
ROM11存储RAM10存储的压缩数据的扩展处理程序,当从指令读出电路12输出读出端地址时,则在存储的扩展处理程序中把用其地址指示的指令向数据总线18输出。在ROM11中存储的扩展处理程序混在传输指令、运算指令、分支指令等多种指令中。运算指令大体分成算术运算指令、带积和功能的乘法指令、逻辑运算指令。以加法指令、减法指令、乘法指令为首的算术运算指令分别具有第一操作数和第二操作数。第一操作数具有即值指定及寄存器直接指定的两种寻址状态。与此相反,第二操作数的寻址状态只是寄存器直接指定。这是由于第二操作数兼作运算结果的存储端指定的缘故。加法指令“ADD imm、D1”的一个例子是第一操作数成为即值imm,第二操作数成为寄存器名D1。通过指定作为运算结果的存储端,在“ADD D0、D1”的情况下,把寄存器D0和寄存器D1的相加结果存储在寄存器D1中变成第二操作数。
在本实施例中,扩展处理程序包括通过由8×8行列状成分组成的压缩数据Fij和由8×8行列状成分组成的系数数据Gji产生具有8×8成分的行列积Hij的行列积子程序,要特别指出的是,该行列积子程序主要由带积和功能乘法“MACCB Dm,Dn”及正值饱和运算指令“MCSST Dm”组成。
考虑到算出由8×8成分组成的压缩数据Fij(i,j=1,2,3,4,5…8)和8×8系数行列Gji(i,j=1,2,3,4,5…8)的行列积Hij的情况,在该情况下,为了算出相关行列积的1行1列成分H11,必须作以下计算。
数学式1
H11=G11*F11+G12*F21+G13*F31+G14*F41+G15*F51+G16*F61+G17*F71+G18*F81
该数学式1把“Gji*Fij(i,j=1,2,3,4,5…8)”作为单项式,虽然是取这些单项式代数和的多项式,但该单项式的运算及代数和在本行列积子程度中,用使带积和功能乘法指令“MACCB Dm,Dn”重复启动的循环语句(该循环语句称为积和循环)来表达。
图5是表示行列积子程序一例的图。还有,图5各指令的概要记在其右边相邻的注释语句(开头配有#记号的语句)中。F_ENTRY是在RAM10中付加在存储压缩数据的区域开头上的标号,G_ENTRY是在RAM10中附加在存储系数数据的区域开头上的标号,H_ENTRY是在RAM10中附加在存储行列积的区域开头上的标号。指令1:“MOV F_ENTRY,A0”、指令2:“MOV G_ENTRY,A1”、指令3:“MOV H_ENTRY,A2”是分别把地址F_ENTRY、地址G_ENTRY、地址H_ENTRY传输到地址寄存器A0、地址寄存器A1、地址寄存器A2的传输指令。
根据以上传输指令,为了指示具有8×8个成分的压缩数据、系数数据、行列积数据的读出端地址使用地址寄存器A0,A1,A2。
指令4:“MOV INIT,D2”在数据寄存器D2中设定重复次数的初期值INIT,指令5:“MOV(A0),D0”从由地址寄存器A0指示的地址中给数据寄存器D0读出系数数据Fij。指令6:“MOV(A1),D1”从由地址寄存器A1指示的地址中给数据寄存器D1读出系数数据Gji。指令7:“MACCB D0,D1”是利用数据寄存器D0、数据寄存器D1、及用于存储积和结果寄存器6的带积和功能的乘法指令,指令8:“CMP NUMBER,D2”是这样的指令,进行从在数据寄存器D2中存储的重复次数中减去重复总数NUMBER的运算,以此作重复次数的上限检验。
指令9:“BCS LP1_NEXT”是带这样条件的分支指令,若指令8:“CMPNUMBER,D2”的减法结果进位标志成为ON,则向附加标号LP1_NEXT的指令13:“ADD 1,D2”分路。
指令10:“MCSST D1”为只是进位标志在OFF情况下实施正值处理及饱和运算处理(将这些归纳称为正值饱和运算处理)的指令。
指令13:“INC D2”是加法指令,使存储在数据寄存器D2中的重复次数加1。指令14:“INC A0”是加法指令,使存储在地址寄存器A0中的系数数据的读出端地址加1。指令15:“ADD ROW1,A1”是加法指令,使存储在地址寄存器A1中的系数数据的读出端地址加一行数ROW1。指令16:“BRALP1_START”是向标号LP1_START分路的无条件分支指令。
通过由附加标号LP1_START的指令5:“MOV(A0),D0”~指令12:“BRALP1_END”组成的指令串作单项式运算,取运算结果的代数和。
通过由附加标号LP1_NEXT的指令13:“ADD 1,D2”~指令16:“BRALP1_START”组成的指令串,一行成分X一列成分的行列积一旦结束,则把压缩数据的读出端移向下一行,把系数数据的读出端移向下一列。与此同时,加数据寄存器D2中存储的重复数。
图6是表示带积和功能乘法指令“MACCB Dm,Dn”的形式图,如图6所示,带积和功能乘法指令“MACCB Dm,Dn”包括1位长积和值存储端的指定字段(フイ-ルド)、1位长代数和的运算内容指定字段、1位长单项式运算内容指定字段、2位长乘数读出端指定字段、2位长被乘数读出端指定字段。
乘数读出端指定字段及被乘数读出端指定字段通过写入“00”“01”“10”“11”,从数据寄存器D0、数据寄存器D1、数据寄存器D2以及积和结果专用寄存器6中的任一个,指定乘数Fij、被乘数Gji的读出端寄存器。
1位长单项式运算内容指定字段指定乘数Fij、被乘数Gji的单项式的运算内容。即,当在本字段上写入“1”,则指定作为乘数Fij、被乘数Gji的单项式运算内容的乘数Fij、被乘数Gji的乘法“Gji*Fij”。
积和值的存储端的指定字段设定为“1”,借此作为积和值的存储端指定MCR(是后述的积和结果专用寄存器6的部分)。1位长的代数和的运算内容指定字段通过写入“1”,指定作为乘法结果“Gji*Fij”和存储在积和结果专用寄存器6中的积和值的加法运算之代数和。
在作“G11*F11+G12*F21+G13*F31…”的积和时,应注意的是在压缩数据成分Fij的传输时产生误码,形成与象“G11*F11+G12*F21+G13*F31…”积和值在重放系统不能重放的理论值相距很运的数值。由于存在这种担心,所以,行列积子程序在使带积和功能乘法指令“MACCB D0,D1”的启动重复的循环处理结束之后,配置正值饱和运算指令“MCSST Dm”,要作对积和值分正值饱和的运算处理。
图7展示了正值饱和运算处理指令“MCSST Dm”的操作码形式。如图7所示,正值饱和运算处理指令“MCSST Dm”包括正值-饱和幅度(修整幅度)指定字段和正值饱和运算结果的存储端指定字段。
修整幅度字段利用经线写入“01”“10”“11”,把正值饱和运算处理的修整幅度指定为24位正值、16位正值、8位正值的任一个。
存储端指定字段利用写入“00”“01”“10”“11”,从数据寄存器D0、数据寄存器D1、数据寄存器D2、数据寄存器D3中任一个中指定正值饱和运算处理的存储端寄存器。
象该存储在ROM11中的扩展处理用程序由于在行列积子程序中,用带积和功能乘法指令“MACCB Dm,Dn”记述必要的多项式的单项式运算及代数和运算,用正值饱和运算处理指令“MCSST Dm”记述多项式的积和正值饱和运算处理,所以,算法严谨。由于这些指令仅用处理器表达,所以在ROM11中扩展用程序所占用的存储器的尺寸很小。
以上结束有关存储在ROM11中指令串的说明。下面再对图3所示的处理器构成要素进行说明。
图3构成的指令读出电路12备有依次产生读出端地址,向地址总线输出的程序计数器,从ROM11向译码器13读出输出到数据总线18的指令。
译码器13备有存储多个从数据总线18读出的指令的指令缓冲器,和在存储于指令缓冲器的指令中,保存成为译码对象部分的指令寄存器,使存储在指令寄存器中的指令内容译码,对运算执行装置14进行实现其指令的控制。其中在所述控制中尤其必须说明的是下面所示的寄存器输出控制(1)、运算执行控制(2)、常数产生控制(3)。
所谓寄存器输出控制(1)是控制运算执行装置14,以使得输出根据由指令读出电路12读出的算术运算指令、逻辑运算指令、带积和功能乘法指令的第一、第二操作数指示的寄存器的保持值。所谓运算执行控制(2)是控制运算执行装置14,以使得执行由算术运算指令、逻辑运算指令、带积和功能乘法指令指示的运算内容。所谓常数产生控制(3)是控制运算执行装置14,以使得产生用于执行正值饱和运算指令的最大值和零值。寄存器输出控制(1)及运算执行控制(2)是在译码器13对算术运算指令、逻辑运算指令、带积和功能乘法指令译码时进行,寄存器输出控制(1)及常数产生控制(3)是在译码器13对正值饱和运算指令译码时进行。由于是在带积和功能乘法指令译码时产生运算执行控制(2),正值饱和运算指令译码时产生常数产生控制(3),所以,运算执行控制(2)和常数产生控制(3)彼此处于排他性关系。
地址总线17具有32位宽,传输指令读出电路12输出的读出端地址。
数据总线18具有32位宽,若RAM10输出数据,一旦从RAM10输出,则传输压缩数据Fij、系数数据Gij、行列积数据Hij。
运算处理装置14备有寄存器文件、算术逻辑运算电路,根据来自译码器13的控制作运算处理。
其中应注意的是构成为,指令读出电路12实施指令读出步(ステ—ジ)、译码器13实施指令解码步,运算处理装置14实施运算执行步、存储器写入步、寄存器写入步。并且,这5步实现5级流水线。指令读出电路12不等待其前面指令执行结束,下一个指令在进入译码器13所作的解码步的阶段中,开始下个指令的读出。译码器13也一样,不等其前面指令执行结束,下面的指令在进入由运算处理装置14产生的运算执行步的阶段中,开始下个指令的解码。根据这些处理,处理器利用由如图12A所示的称为指令读出步、指令解码步、执行步、存储器存取步、寄存器写入步等5级组成的流水线处理存储在ROM11中的指令串。
以上完成了对处理器构成要素的说明。接着集中说明运算处理装置14的内部构成。图4表示运算执行装置14的内部构成。如图14所示,运算执行装置14由寄存器文件1、算术逻辑运算电路2、正值饱和运算电路3、码扩展电路4、积和结果存储用寄存器6、第一内部总线15、以及第二内部总线16组成。在这些结构要素和译码器13之间虽然布满用于上述控制(1)、(2)、(3)的控制信号线,但为了简单在图中做了省略。
寄存器文件1备有4个32位宽的数据寄存器D0~D3、3个32位宽的地址寄存器A0~A2。在寄存器输出控制(1)中,当由译码器13指示一个或二个寄存器名时,则寄存器文件1通过总线C2、C3向第一内部总线15和第二内部总线16输出所给予的寄存器名的寄存器保持值。并且,寄存器文件1通过总线C1在数据总线18上保持传输的值。
第一内部总线15具有32位宽,寄存器文件1输出的32位长的保持值传输到算术逻辑运算电路2中。
第二内部总线16具有32位宽,寄存器文件1输出的32位长的保持值传输到算术逻辑运算电路2中。
码扩展电路4当通过第一内部总线15从寄存器文件1传输过来的数据保持值为负数的情况下,作码扩展。在本实施例中,由于规定乘数、被乘数为带码8位数值,所以码扩展电路4作8位长的负数码扩展。例如从第一内部总线15传输过来的保持值如果为8位负数“0X0000_0080”,则第8位码扩展成9~32位,作为“0xFFFF_FF080”向算术逻辑运算电路2输出。
码扩展电路5通过第二内部总线16从寄存器文件1传输过来的数据寄存器保持值为负数的情况下,进行码扩展。在本实施例中,由于乘数、被乘数规定为带码32位数值,所以码扩展电路5作8位长的负数扩展。码扩展方式与码扩展电路4的一样。
算术逻辑运算电路2由32位宽的全加法器、乘法器,鼓式移位器(バレルシフタ)等组成,根据由译码器13所作的运算执行控制(2)进行运算。这里,由于算术逻辑运算电路2的输入部分与码扩展电路4、积和结果专用寄存器6的输出部分相连接,所以基于运算执行控制(2)的运算以向码扩展电路4输出的寄存器32位长的保持值,和向积和结果专用寄存器6输出的寄存器32位长的保持值为对象进行。
在带积和功能乘法指令“MACCB Dm,Dn”解码时,算术逻辑运算电路2作由码扩展电路4输出的32位长的值和由码扩展电路5输出的32位长的值的乘法,输出64位长的乘法结果。并且,作传输到总线P1的32位长值与64位乘算结果的低位32位相加,相加之后,把32位长的相加结果向总线P1输出。
并且,在带积和功能乘法指令“MACCB D0,D1”的解码时,由于在第一内部总线15和第二内部总线16中传输用带积和功能乘法指令“MACCB D0,D1”的第一操作数及第二操作数指定的读出端寄存器保持值,所以利用算术逻辑运算电路2使数据寄存器D0的保持值与数据寄存器D1的保存值相乘。而且,在带积和功能乘法指令“MACCB D0,D1”的解码时,由于在总线P1中传输积和结果专用寄存器6的保持值,所以数据寄存器D0~数据寄存器D1的乘法结果成为与总线P1的积和结果专用寄存器6的保持值的相加。象该算出的加法结果向总线P2上输出。
积和结果专用寄存器6保持好至此的积和的积和值,一旦使带积和功能乘法指令解码,则向总线P1上输出其保持值。当用算术逻辑运算电路2作总线P1上保持值和乘法结果的加法时,虽然重新向总线P2上输出相加结果,但积和结果专用寄存器6锁定输出的相加结果,将此作为新的积和值保持。还有用于积和值存储寄存器6把由算术逻辑运算电路2算出的乘数Fij、被乘数Gji的相乘结果作为带码16位数值保持。
在使正值饱和运算“MCSST”解码的情况下,积和结果专用寄存器6向线路P2输出保持值。
正值饱和运算电路3是把用带码16位数值表达的积和结果专用寄存器6的保持值修整为正8位整数的安装电路。图8A及图8B是用于说明根据正值饱和运算电路3形成的修整处理的说明图。在图8A中,上段展示了32位宽的乘数、被乘数的表达。即涂满黑色的第8位分配给码位,以此使用带影线的7位,表达-127~+127的乘数Fij、被乘数Gji。
中段显示32位宽的积和结果的表达。即通过把涂黑的第16位分配给码位,使用带影线的15位表达在-32767~+32767范围的积和值。
下段显示处理器32位宽的行列积成分的表达。即通过在无码位中使用带影线的第1~第8位,在0~+255范围内表达行列积成分Hij。
在图8B中,左端图形表示可取的寄存器保持的乘数、被乘数的范围,每达正负有8位范围。中央图形表示可取的积和结果专用寄存器6保持的积和值的范围,每逢正负有16位的范围。左端图形是行列积Fij可取的范围,即是重放系统硬件可重放的8位正数范围。
把积和值可取的范围每逢正负定为16位是为了避免修整错误的累积。即,当把取有码8位值的乘数Fij、被乘数Gji相乘结果作积和时,虽说行列积Hij的范围是8位,但每逢乘法时如果把相乘结果修整成8位,则修整错误仅位增相乘次数。意味着避免修整误差倍增,积和结果存储用寄存器6设积和结果为16位,在一行×一列相乘结束的阶段进行正值处理。
为了把中央所示的积和结果专用寄存器6的保持值修整成右端所示的8位正值,所以正值饱和运算电路3把用参照符号y1指示的范围(作为正数超过上限0x000000FF的范围)修整成0x000000FF。
并且,正值饱和运算电路3把用参照符号y2指示的范围(负数范围)修整成0x00000000。
正值饱和运算电路3内部构成如图4的虚线y8内所示。如图4的虚线y8所示,正值饱和运算电路3由常数发生电路21、比较电路22、正负判断电路23、多路转换器24、以及零值发生电路25组成。在这些构成要素中,虽然连接来自译码器13的控制线,但因会使图示烦乱,所以做了省略。
常数发生电路21当由指令读出电路12读出的指令若是正值饱和运算指令“MCSST”,在译码器13解码的情况下,根据该指令正值幅度-饱和幅度指定字段的内容,产生8位无码数值、16位无码数值、24位无码数值正的最大值。正值幅度-饱和幅度指定字段的指定内容是8位的情况下,向多路转换器24输出作为8位无码数值的最大值的带32位码整数0x000000FF;正值幅度-饱和幅度指定字段的指定内容是16位的情况下,向多路转换器24输出作为16位无码数值的最大值的带32位码整数0x0000FFFF;在正值幅度-饱和幅度指定字段的指定内容为24位的情况下,向多路转换器24输出作为24位无码数值的最大值的带32位码整数0x00FFFFFF。
比较电路22比较由积和结果专用寄存器6保持的值和由常数发生电路21输出的最大值大小。这比较是通过从保持在积和结果专用寄存器6中的值中减去由常数发生电路21输出的最大值,并检测相减结果、是否产生借位进行的。其中,当正值幅度-饱和幅度指定字段的指定内容为8位的情况下,从积和结果存储用寄存器6的保持值中减去作为8位无码数值的最大值的带32位码整数0x000000FF;还有当正值幅度-饱和幅度指定字段的指定内容为16位的情况下,从积和结果存储用寄存器6的保持值中减去作为16位无码数值的最大值的带32位码整数0x0000FFFF;当正值幅度-饱和幅度指定字段的指定内容为24位的情况下,从积和结果存储用寄存器6的保持值中减去作为24位无码数值的最大值的带32位码整数0x00FFFFFF。
检测象这样相减的借位结果,如若判定为积和值存储用寄存器6保持的值超过最大值,则向多路转换器24输出逻辑值“1”;如若判定为积和值存储用寄存器6保持的值等于最大值或小于此,则向多路转换器24输出逻辑值“0”。
正负判断电路23判定由积和结果专用寄存器6保持的值的码位是否为ON。其中在正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定中,具有24位无码数值、16位无码数值、8位无码数值三种,根据字段指定的情况改变码位的位置。于是,正负判断电路23根据正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定,变更应判定ON的位。
其中,正负判断电路23的作用是,正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定若为24位无码数值,则从下位判定第24位是否为ON;正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定若为16位无码数值,则从下位判定第16位是否为ON;正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定若为8位无码数据,则从下位判定第8位是否为ON。这种判断意味着是,在用根据正值饱和运算指令“MCSST”的正值幅度-饱和幅度指定字段的指定的值表达存储在积和结果专用寄存器6中的积和值的情况下,是否作为负数表达的判断。当为负数情况下,向多路转换器24输出逻辑值“1”。当保持的值为零或正数的情况下,向多路转换器24输出逻辑值“0”。
若解码结果为正值饱和运算处理指令“MCSST”,则零值发生电路25产生整数“0x0000_0000”。
多路转换器24根据由比较电路22及正负判断电路23输出的逻辑值的组合,选择性输出常数发生电路21产生的最大值、零值发生电路25产生的零值“0x0000_0000”、由积和结果专用寄存器6保持的寄存器文件1的保持值中的任一个。
这里,设从比较电路22输出的逻辑值为逻辑值x,设从正负判断电路23输出的逻辑值为逻辑值y,这些逻辑值的组合和多路转换器24输出值的对应关系象图9的真值表那样表达(在图9的真值表中,设常数发生电路21产生的最大值为“0x0000_00FF”)。
根据图9的真值表,在比较电路22的输出为“0”,正负判断电路23的输出为“0”的情况下、多路转换器24输出积和结果专用寄存器6的保持值。
在比较电路22的输出为“1”,正负判断电路23的输出为“0”的情况下,多路转换器24输出常数判断电路21产生的最大值“0x0000_00FF”)。
在比较电路22的输出为“0”,正负判断电路23的输出为“1”的情况下,多路转换器24输出零值发生电路25产生的零值“0x0000_0000”。在比较电路22的输出为“1”,正负判断电路23的输出为“1”的情况下,多路转换器24输出零值发生电路25产生的零值“0x0000_0000”。
图10及图11是表示运算装置14的数据流程的说明图。在图10中,规定对在乘数、被乘数的读出端上指定数据寄存器D0及数据寄存器D1的带积和功能乘法指令“MACCB D0,D1”由译码器13解码。这时,存储在寄存器文件1中的数据寄存器D0的保持值“0x0000007F”及数据寄存器D1的保持值“0x00000070”沿第一内部总线15及第二内部总线16传输,提供给码扩展电路4和码扩展电路5。在算术逻辑运算电路2(这里,由于算术逻辑运算电路2的动作是乘法,所以在图中把算术逻辑运算电路2记述成“乘法器。”)中作从码扩展电路4和码扩展电路5输出的32位数值之间的乘法,向积和结果存储用寄存器6输出作为其相乘结果的64位数值“0x0000_0000_0000_3790”的下位32位“0x0000_3790”。根据正值饱和运算指令“MCSST D1”,积和结果存储用寄存器6一旦向正值饱和运算电路3输出其保持值,则正值饱和运算电路3判断其32位“0x0000_3790”比无码8位数值的最大值“0x000000FF”要大,通过数据总线18把无码8位数值的最大值“0x000000FF”保存在寄存器文件1内的数据寄存器D1中。
在图11中,规定对在乘数、被乘数的读出端上指定数据寄存器D0及数据寄存器D1的带积和功能乘法指令“MACCB D0,D1”由译码器13解码。这时,存储在寄存器文件1中的数据寄存器D0的保持值“0x0000007F”及数据寄存器D1的保持值“0x00000080”沿第一内部总线15及第二内部总线16传输,提供给码扩展电路4和码扩展电路5。数据寄存器D1的保持值“0x00000080”由于是8位数值的负数,所以码扩展电路5把数据寄存器D1的保持值“0x00000080”的第8位的码位扩展为9~32位,形成“0xFFFF_FF80”,向算术逻辑运算电路2输出。
码扩展电路4输出的数据寄存器D0的32位长的保持值“0x0000007F”和由码扩展电路5扩展的32位数值“0xFFFF_FF80”的算术逻辑电路2中相乘,把作为其乘算结果的64位数值“0xFFFF_FFFF_FFFF_C080”的下位32位“FFFF_C080”向积和结果存储用寄存器6输出。利用正值饱和运算指令“MCSSTD1”的解码,如若积和结果存储用寄存器6将其保持值向正值饱和运算电路3输出,则正值饱和运算电路3判定其32位“FFFF_C080”是带码16位数值的负数,通过数据总线18把8位数值的零值“0x00000000”保持在寄存器文件1内的数据寄存器D1中。
下面,对如上构成的处理器,根据行列积子程序的动作状态进行说明。利用指令读出电路12把包括在行列积子程序中的传输指令向译码器13内的指令缓冲器内读出,译码器13使读出的指令5:“MOV(A0),D0”解码。该指令5:“MOV(A0),D0”利用地址寄存器A0,使用指定读出端的寄存器间接参照,作为指出通过RAM 10的数据读出的指令,据此在数据寄存器D0上读出由存储在RAM 10中的8×8行列状成份组成的压缩数据Fij的一行一列成份(F11)。根据配置在指令5:“MOV(A0),D0”之后的指令6:“MOV(A1),D1”的执行,通过数据总线18在寄存器文件1内的数据寄存器D1上读出8×8系数数据Gji的一行一列成分(G11)。
在行列积子程序中,与指令5:“MOV(A0),D0”及指令6:“MOV(A1),D1”相接续作为指令7排列好带积和功能乘法指令“MACCB D0,D1”,通过指令读出电路12将此向译码器13内的指令缓冲器内读出,译码器13使读出的带积和功能乘法指令“MACCB D0,D1”解码。根据解码结果,把保持在数据寄存器D0及数据寄存器D1中的F11,G11向第1内部总线15及第2内部总线16上传输。
在带积和功能乘法指令“MACCB D0,D1”的解码中,向第1内部总线15及第2内部总线16传输用带积和功能乘法指令“MACCB D0,D1”的第一操作数及第二操作数指定了的读出端寄存器的保持值F11,G11。将这些通过码扩展电路4及码扩展电路5输出,利用算术逻辑运算电路2使数据寄存器D0的保持值和数据寄存器D1的保持值相乘。乘算结果“G11*G11”被传输到积和结果专用寄存器6,用积和结果专用寄存器6保存。
一旦在积和结果专用寄存器6中存储乘法结果“F11*G11”,则利用指令8:“CMP NOM BER,D2”及指令9:“BCS LP1_NEXT”的执行,向标号LP1_NEXT分路,使指令13:“ADD1,D2”解码。该指令13:“ADD 1,D2”增加重复次数。在指令13:“ADD1,D2”执行之后,执行指令14:“ADD1,A0”及指令15:“ADD ROW1,A1”。指令14:“ADD1,A0”及指令15:“ADD ROW1,A1”的配置目的是使ROM11的读出端地址转移至下列及下行。利用这些指令的增加,压缩数据Fij的读出端地址成为2行1列,系数数据Gji的读出端地址成为1行2列。
在读出端地址增量之后,使指令14:“ADD1,A0”及指令15:“ADD ROW1,A1”之后配置的指令16:“BRA LP1_START”解码。
该指令16:“BRA LP1_START”的分支端地址是付加标号LP1_START的指令5:“MOV(A0),D0”,利用指令16:“BRA LP1_START”产生的分支再次读出指令5:“MOV(A0),D0”、指令6:“MOV(A1),D1”。
利用读出的传输指令在数据寄存器D0上读出由在RAM10中存储的8×8行列状成分组成的压缩数据的2行1列成分(F21),通过数据总线18在寄存器文件1内的数据寄存器D1上读出8×8系数数据的1行2列成分(G12)。
在行列积子程序上接着传输指令并列好带积和功能乘法指令“MACCB D0,D1”,对此利用指令读出电路12向译码器13内的指令缓冲内读出,利用译码器13使读出的带积和功能乘法指令“MACCB D0,D1”解码。根据解码结果向第1内部总线15及第2内部总线16上传输数据寄存器D0及数据寄存器D1的保持值。
在带积和功能乘法指令“MACCB D0,D1”解码时,向第1内部总线15及第2内部总线16传输由带积和功能乘法指令“MACCB D0,D1”的第一操作数及第二操作数指定的读出端寄存器的保持值。这些是行列成分G12,F21,用算术逻辑运算电路2作数据寄存器D0保持值G12和数据寄存器D1的保持值F21的乘算。另一方面在积和结果专用寄存器6上存储至此积和的单项式运算结果“G11*F11”。积和值存储用寄存器6通过带积和功能乘法指令“MACCB D0,D1”的解码,将其保持值向总线P1上输出。
由于在总线P1上传输积和结果专用寄存器6的保持值,所以数据寄存器D0至数据寄存器D1的乘法结果“G12*F21”成为与总线P1上的积和结果专用寄存器6的保持值的加算。加法结果向总线P2上输出。
当利用算术逻辑运算电路2作总线P1上保持值“G11*F11”和乘法结果“G12*F21”相加,则虽然在总线P2上所输出加算结果“G11*F11+G12*F21”,但积和结果专用寄存器6输出的输出加算结果,作为积和值“G11*F11+G12*F21”保持。
就有关由8×8行列状态成分组成的压缩数据Fij第一列全部成分、8×8系数据数据Gji第一行全部成分使以上处理重复。通过这种重复,结束“G11*F11+G12*F21+G13*F31+G14*F41+G15*F51+G16*F61+G17*F71+G18*F81”的积和运算,在积和结果专用寄存器6中得到积和值。其中要注意的是,在RAM10中存储着的F31,由于实际上在传输时引起错位,所以保持在积和结果专用寄存器6中保持的积和值用重放系统硬件大大超过重放可能的范围的数值(“0x000078FF”)表达。
然而,ROM11内的行列积子程序不能忽视象这样的错位,在作带积和功能乘法指令“MACCB D0,D1”的重复的循环语句之后配以正值饱和运算指令“MCSSTD1”。
在ROM 11中,循环语句后配的正值饱和运算指令“MCSST D1”一旦给译码器13内指令缓冲器读出,则利用译码器13使正值饱和运算指令“MCSST D1”解码。
在正值饱和运算指令“MCSST D1”被解码的情况下,积和结果专用寄存器6向总线P1上输出保持值(0x000078FF)。
一旦向总线P1输出,则由译码器13使比较电路22启动。比较电路22比较积和结果专用寄存器6的保持值和带32位码整数0x000000FF的大小。这时,由于积和结果专用寄存器6的保持值超过最大值0x000000FF,所以将逻辑值“1”向多路转换器24输出。
正负判断电路23从由积和结果专用寄存器6保持着的值的低位判定第16位是否ON。该判断意味着在积和结果专用寄存器6中存储着的积和值是否负数。保持值(0x000078FF)的2进数表达是(0000_0000 0000_0000 0111_10001111_1111),从下位由于第16位是“0”,所以向多路转换器24输出上述值“0”。
这时,虽然由常数发生电路21及零值发生电路25产生上限值“0x0000_0FF”及零值“0x0000_0000”,但多路转换器24通过从比较电路22及正负判断电路23输出的逻辑值组合,有选择性地输出上限值,零值、积和结果专用寄存器6的保持值的任一个。该情况下比较电路22的输出为“1”,正负判断电路23的输出为“0”,所以多路转换器24向数据总线18上输出常数发生电路21产生的最大值“0x0000_00FF”。
利用译码器13的控制,在数据总线18上输出的保持值被向由正值饱和运算指令“MCSST D1”的操作数据定的数据寄存器D1传输,由数据寄存器D1保持。保持的保持值作为行列积Hij的第一行一列的成分(H11)被写入RAM 10内。
压缩数据Fij的第一列全部成分与Gji的第一行全部成分之积和运算结束。接着进行有关压缩数据Fij的第2列全部成分和Gji的第一行全部成分的积和运算,“G11*F12+G12*F22+G13*F32+G14*F42+G15*F52+G16*F62+G17*F72+G18*F82”的积和运算结束,在积和结果专用寄存器6中得到积和值。
要注意的是,PAM 10中存储的F32实际上在传输时产生错位,在积和结果专用寄存器6中存储的积和值用重放系统硬件不可能重放的负数(“0x000086FF”)表达。
ROM 11若从ROM 11在译码器13内的指令缓冲器中读出配置在循环词句后的正值饱和运算指令“MCSST D1”,则由译码器13使正值饱和运算指令“MCSSTD1”的操作数解码。
当使正值饱和运算指令“MCSST D1”解码的情况下,积和结果专用寄存器6向总线P1上输出保持值(0x000086FF)。
一旦向总线P1输出,则由译码器13使比较电路22启动。比较电路22比较积和结果专用寄存器6的保持值和带32位码整数0x000000FF的大小。这时,由于积和结果专用寄存器6的保持值超出最大值0x000000FF,则向多路转换器24输出逻辑值“1”。
正负判断电路23判定由积和结果专用寄存器6保持的值的第16位是否ON。这判定意思是在积和结果专用寄存器6中存储的积和值是否为负数。保持值(0x000086FF)2进制表达是(0000_0000 0000_0000 1000_01101111_1111),因第16位为“1”,所以向多路转换器24输出逻辑值“1”。
这时,虽然由常数发生电路21及零值发生电路25产生上限值“0x0000_00FF”及零值“0x0000_0000”,但多路转换器24利用从比较电路22、正负判断电路23输出的逻辑值的组合有选择性地输出这些或积和结果专用寄存器6的保持值。在该情况下比较电路22的输出为“1”,正负判断电路23的输出为“1”,所以多路转换器24向数据总线18上输出常数发生电路21发生的最大值“0x0000_0000”。
利用译码器13的控制向数据总线18上输出的保持值被输送至由正值饱和运算指令“MCSST D1”的操作数指定的数据寄存器D1,由数据寄存器D1保持。被保持的值作为行列积Hij的第1行2列成分(H12)写入ROM 11内。
重复同样的行列积成分的写入,在RAM 10内得到列积结果,把该行列积结果作为反DCT近似计算结果利用,成为压缩数据的扩展处理。
图12B表示这样的状态,利用由把机器语言指令表示为指令读出步、指令解码步、执行步、存储器存取步、寄存器写入部的五级组成的流水线,处理器执行行列积例行程序。由译码器13产生的指令10“MCSST D1”的指令读出步骤与其前面的机器指令9:“BCS LP1_NEXT的指令解码步骤同时进行。在指令8:“CMP NUMBER,D2”中,作从在数据寄存器D2中存储的重复次数减总次数NUMBER的运算,所以相减的结果进位标志若为ON,则为了向指令13:“ADD1,D2”分路,中断向指令10:“MCSST D1”的执行步骤转移。
与此相反,若进位标志为OFF,则在与指令9:“BCS LP1_NEXT”执行步骤同时,作指令10:“MCSST D1”的解码。接着在与指令9:“BCS LP1_NEXT”的存储器写入步骤同时,进行指令10:“MCSST D1”的执行步骤。有关一行成分X一列成分的行列积结果的正值饱和运算处理由于在位于其前的指令的存储器写入步骤中执行,所以不打乱流水线进行,这一点是清楚的。
象这样内装正值饱和运算电路3的处理器对一行成分X一列成分的行列积结果即便必须使成分高频率进行,在机器语言程序中由于正值饱和运算修正处理作为一指令表达,所以也不打乱流水线。从而可使处理器整体处理可高速化。
如上所述,根据本实施例,利用用于积和值正值饱和运算处理的专用指令,对在积和结果专用寄存器6内得到的积和值施加正值饱和运算处理,所以在图象数据、声音数据的扩展处理中必要的行列积近似计算的应用程序可更容易地进行编码,其码量也变得非常少。由于减少该码量,在把程序装在ROM中的情况下,可减少其安装量。
还有,积和值的正值饱和运算处理由于对存储在积和结果专用寄存器6中的积和值的正值处理和饱和运算处理同时进行,所以速度高。正值饱和运算处理在行列积运算的1行成分×1列成分的计算时是必须的,在8×8行列之间的行列积中,虽然64次的正值饱和运算处理执行是必要的,但如上所述,由于正值处理及饱和运算处理非常平稳地进行,所以每次正值饱和运算处理以短时结束。象这样,由于正值饱和运算处理以短时结束,所以扩大的数的行列积重复必要的图象数据、声音数据的扩展处理可更高速地进行。
还有由于通过安装正值饱和运算电路3,不用分支指令可记述正值处理-饱和运算处理,所以在处理器内部执行根据流水线的高速化情况下,不打乱流水线,可求得指令串的高速。可谋求根据高性能流水线执行产生的指令串执行的高速化。
加之,由于不安装实现行列积运算的专用电路,进行正值饱和运算处理,所以保留处理器特有的通用性。因此可按要求用独立的扩展处理器控制处理器。
第1实施例的应用
本应用例的内容是在由正值饱和运算指令“MCSST”产生的正值饱和运算处理的读出端上指定数据寄存器D0~D2,在运算结果存储端上指定积和结果存储用寄存器6。图13表示本应用例的正值饱和运算指令“MCSST”的指令形式。图13的正值饱和运算指令MCSST具有读出端指定字段,写入“11”、“00”、“10”、“01”的值,借此可把积和值读出端变更为积和结果存储用寄存器6、数据寄存器D0、D1、D2的任一个。
存储端指定字段通过写入“11”、“00”、“01”、“10”,在存储端上指定积和结果存储用寄存器6、数据寄存器D0、D1、D2中的任一个。
由于改变正值饱和运算指令“MCSST”的指令形式,所以图4所示运算处理装置14内部作如图14所示变更。在图14中,加在运算处理装置14上的变更点是追加总线C6、C7、C8及选择器30的点。
总线C6用于把在第2内部总线15传输的数据寄存器D0、D1、D2的保持值向正值饱和运算电路3传输。
总线C7与总线C6一样用于把在第1内部总线15上传输的数据寄存器D0、D1、D2的保持值向正值饱和运算电路3传输。
选择器30根据正值饱和运算指令“MCSST”的存储端字段的指定选择性地向正值饱和运算电路3内的比较器22,输出在总线C6及C7传输的数据寄存器D0、D1、D2保持值、积和结果存储用寄存器6的保持值的任一个。
总线C8的用途是把通过总线C4从正值饱和运算电路3向数据总线18输出的正值饱和运算电路3的处理结果,传输到积和结果存储用寄存器6。
利用以上简易追补,在本应用例中可实现正值饱和运算指令“MCSST”的功能扩展。
第2实施例是这样的例子,在算术逻辑运算电路2作乘法运算时,进行对乘法结果的正值饱和运算处理。为了作乘法运算结果正值饱和运算处理,在第2实施例中,如图15的内部构成图所示,为了使算术逻辑运算电路2对输出的乘法结果作正值饱和运算,通过总线P3使正值饱和运算电路3与算术逻辑运算电路2的输出部分连接。为了使这样连接的正值饱和运算电路3启动,在本实施例中,存储于ROM 11中的压缩数据扩展程序包括以下的“MULBSST Dm,Dn”。
所谓“MULBSST Dm,Dn”是把对乘法结果的正值饱和运算处理作为扩展功能指定的乘法指令。即使用寄存器Dm和Dn的下位8位作乘算,对于作为乘法结果的带码16位数值,在正值饱和运算电路3中也称作8位正值饱和运算处理。
图16是表示带正值饱和运算乘法指令“MULBSST Dm、Dn”的形式的图,如图16所示,“MULBSST Dm,Dn”包括2位长单项式运算内容指定字段、2位长乘数读出端指定字段、2位长被乘数读出端指定字段和正值饱和运算结果的存储端指定字段。
正值饱和运算处理字段利用写入“01”、“10”、“11”,把正值饱和运算处理修整幅度指定为24位正值、16位正值和8位正值中的任一个。
乘数读出端指定字段及被乘数读出端指定字段通过写入“00”、“01”、“10”、“11”,从数据寄存器D0、D1、D2及积和结果专用寄存器6的任一个中,指定乘数Fij、被乘数Gji的读出端寄存器。
一旦执行带正值饱和运算乘法指令“MULBSST Dm,Dn”,则寄存器文件1输出用第一操作数及第二操作数指示的寄存器名的保持值。接着运算电路2使寄存器Dm和Dn之值相乘,输出其相乘结果,利用第1实施例同样正值饱和运算电路3作对其乘法结果的正值饱和运算处理,把正值饱和运算处理结果传输到由正值饱和乘法指令第二操作数指定的寄存器。
说明如上构成的处理器根据行列积子程序工作的状态。利用读出电路12向译码器13内的指令缓冲器内读出包括在行列积子程序中的传输指令,译码器13使读出的传输指令解码。据此,由在RAM 10中存储的8×8行列状成分组成的压缩数据Fij的1行1行成分(F11)在数据寄存器D0上被读出,8×8系数数据Gji的1行1列成分(G11)通过数据总线18在寄存器文件1内数据寄存器D1上被读出。
在行列积子程序中,接着传输指令并列带正值饱和运算乘法指令“MULBSSTD0,D1”,由指令读出电路12将此向译码器13内指令缓冲器内读出,译码器13使带读出的正值饱和运算乘法指令“MULBSST D0,D1”解码。根据解码结果,数据寄存器D0及D1中保持的F11,G11被传输到第1内部总线15及第2内部总线16上。
由于在带正值饱和运算乘法指令“MULBSST D0,D1”的解码时,向第1同部总线15及第2内部总线16上传输用带正值饱和运算乘法指令“MULBSST D0,D1”的第一及第二操作数指定的读出端寄存器保持值F11,G11,所以用算术逻辑运算电路2作数据寄存器D0保持值和数据寄存器D1值持值的乘法,将其结果向总线P1上输出(还有,上述F11产生错位,G11*F11的乘法结果称为“0x000078FF”,成为不能用1个字节表达的数值。)
另一方面,译码器13一旦使带正值饱和运算乘法指令“MULBSST D0,D1”解码,则译码器13使正值饱和运算电路3启动。通过该启动,与第1实施例一样由比较电路22比较积和结果专用寄存器6的保持值和带32位码整数0x000000FF的大小。这种情况下,由于积和结果专用寄存器6的保持值超过最大值0x000000FF,所以比较器22向多路转换器24输出逻辑值“1”。
正负判断电路23判断由积和结果专用寄存器6保持的值的第16位是否为ON。该判断意思是,存储在积和结果专用寄存器6中的积和值是否为负数。保持值(0x000078FF)的二进制表达为(0000_0000 0000_0000 0111_10001111_1111),第16位由于是“0”,所以向多路转换器24输出逻辑值“0”。
这时,利用常数发生电路21及零值发生电路25,虽然产生上限值“0x0000_00FF”及零值“0x0000_0000”,但多路转换器24利用由比较电路22、正负判断电路23输出的逻辑值的组合有选择性地输出上限值、零值、积和结果专用寄存器6的保持值中的任一个。该情况下的比较电路22的输出为“1”,正负判断电路23的输出为“0”,所以多路转换器24向数据总线18上输出常数发生电路21产生的最大值“0x0000-00FF”。
通过译码器13的控制,向数据总线18上输出的保持值被向由正值饱和运算指令“MULBSST D0”的操作数指定的数据寄存器D0传输,由数据寄存器D0保持。
根据上述第2实施例,利用准备同时作对带码运算结果的饱和运算处理和正值处理的运算指令,在1个步骤中可作3个运算处理、正值处理、饱和运算处理,以此,正值饱和运算处理与运算处理在同一步骤进行。因此,正值饱和运算处理执行步骤数实质为0。
此外,在本发明的第2实施例中,虽然以无码8位幅度作修整,但上限值也可设定为任意正整数值。

Claims (45)

1.一种用来解码并执行指令的处理器,该处理器包括:
正值转换及饱和运算单元,用于:
a)当数据为负时,将数据变为零,并且
b)当数据超过最大值时,将数据饱和为最大值,
其中,转换处理及饱和处理至少两者之一由一个指令来执行。
2.权利要求1的处理器,其特征在于还包包括:
用于解码包括第一指令的指令的解码单元,其中第一指令指定数据。
3.权利要求2的处理器,其特征在于,正值转换及饱和运算单元在第一指令所指定的数据既非零也未超过最大值的时候、对数据进行修整。
4.权利要求3的处理器,其特征在于,所述数据是有符号的整数,最大值及修整数据中各个都是无符号的整数,以及有符号的整数的可用范围完全包括无符号的整数的可用范围。
5.权利要求4的处理器,其特征在于,有符号的整数是m位长,并且无符号的整数是s位长,其中,s少于m。
6.权利要求2的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出有零数值的数据,以及
常数发生器,用于输出最大值的数据。
7.权利要求6的处理器,其特征在于,正值转换及饱和运算单元还包括选择单元,该选择单元用于:
在第一指令所指定的数据为负的时候,选择零发生器的输出,以及
在数据超过最大值的时候,选择常数发生器的输出。
8.权利要求7的处理器,其特征在于,在数据既非负也未超过最大值的时候,选择单元选出下列的其中之一:零发生器的输出、常数发生器的输出、以及凭藉修整由第一指令所指定的数据而得到的数值。
9.权利要求2的处理器,其特征在于,由第一指令所指定的数据是执行不同于第一指令的第二指令时的结果。
10.权利要求2的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出零值,由一个s位整数来表示,
常数发生器,用于输出最大值的数据,由一个无符号s位的整数来表示,
修整单元,用于修整由第一指令所指定、表为一个有符号的m位整数的数据,将其修整为一个无符号的s位整数,其中,s小于m,并且
选择单元,用于a)在第一指令所指定的数据为负的时候,选择零发生器的输出,b)在数据超过最大值的时候,选择常数发生器的输出,以及c)在数据既非负亦未超过最大值的时候,选择修整单元的输出。
11.权利要求10的处理器,其特征在于,正值转换及饱和运算单元还包括:
正负判断单元,用于检测由第一指令所指定的、表为有符号的m位整数的数据是否为负,以及
比较器,用于检测数据是否超过最大值,
其中,选择单元a)在正负判断单元已测出数据为负的时候,选择零发生器的输出,b)在比较器已测出数据超过最大值的时候,选择常数发生器的输出,c)在正负判断单元不但未有测出数据为负、连比较器也未有测出数据超过最大值的时候,选择修整单元的输出。
12.权利要求1的处理器,其特征在于还包括运算所用的运算单元,其中,正值转换及饱和运算单元将运算单元所提供的数据进行转换或饱和,所述计算连同所述转换及饱和至少两者之一则由一个指令来执行。
13.权利要求12的处理器,其特征在于还包括:
解码单元,用于解码包括第一指令的指令,
其中,运算单元对该第一指令所指定的数据进行运算。
14.权利要求13的处理器,其特征在于:
正值转换及饱和运算单元在运算单元所提供的数据既非负亦未超过最大值的时候,修整所述数据。
15.权利要求14的处理器,其特征在于:
所述运算单元所提供的数据是有符号的整数,最大值及修整数据中各个都是无符号的整数,以及无符号的整数的可用范围完全包括无符号的整数的可用范围。
16.权利要求15的处理器,其特征在于:
有符号的整数是m位长,并且无符号的整数是s位长,其中,s少于m。
17.权利要求13的处理器,其特征在于:
正值转换及饱和运算单元包括:
零发生器,用于输出零值,由一个s位整数来表示,
常数发生器,用于输出最大值的数据,由一个无符号的s位整数来表示,
修整单元,用于修整由运算单元所提供、表为一个有符号的m位整数的数据,将其修整为一个无符号的s位数值,其中,s小于m,并且
选择单元,用于a)在运算单元所提供定的数据为负的时候,选择零发生器的输出,b)在数据超过最大值的时候,选择常数发生器的输出,以及c)在数据既非负亦未超过最大值的时候,选择修整单元的输出。
18.权利要求17的处理器,其特征在于,正值转换及饱和运算单元还包括:
正负判断单元,用于检测由运算单元所提供的、表为有符号的m位整数的数据是否为负,以及
比较器,用于检测数据是否超过最大值,
其中,选择单元a)在正负判断单元已测出由运算单元所提供的数据为负的时候,选择零发生器的输出,b)在比较器已测出由运算单元所提供的数据超过最大值的时候,选择常数发生器的输出,c)在正负判断单元不但未有测出由运算单元所提供的数据为负、连比较器也未有测出由运算单元所提供的数据超过最大值的时候,选择修整单元的输出。
19.权利要求12的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出有零数值的数据,以及
常数发生器,用于输出最大值的数据。
20.权利要求19的处理器,其特征在于:
正值转换及饱和运算单元还包括选择单元,该选择单元用于:
a)在运算单元所提供的数据为负的时候,选择零发生器的输出,以及b)在数据超过最大值的时候,选择常数发生器的输出。
21.权利要求20的处理器,其特征在于,在运算单元所提供的数据既非负也未超过最大值的时候,选择单元选出下列的其中之一:零发生器的输出、常数发生器的输出、以及凭藉修整由运算单元所提供的数据而得到的数值。
22.一种用来解码并执行指令的处理器,该处理器包括:
正值转换及饱和运算单元,用于:
a)当数据为负时,将数据变为零,并且
b)当数据超过最大值时,将数据饱和为最大值,
其中,将转换处理及饱和处理至少两者之一在一个周期内予以执行。
23.权利要求22的处理器,其特征在于还包包括:
用于解码包括第一指令的指令的解码单元,其中第一指令指定数据。
24.权利要求23的处理器,其特征在于,正值转换及饱和运算单元在第一指令所指定的数据既非零也未超过最大值的时候、对数据进行修整。
25.权利要求24的处理器,其特征在于,所述数据是有符号的整数,最大值及修整数据中各个都是无符号的整数,以及有符号的整数的可用范围完全包括无符号的整数的可用范围。
26.权利要求25的处理器,其特征在于,有符号的整数是m位长,并且无符号的整数是s位长,其中,s少于m。
27.权利要求23的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出有零数值的数据,以及
常数发生器,用于输出最大值的数据。
28.权利要求27的处理器,其特征在于,正值转换及饱和运算单元还包括选择单元,该选择单元用于:
在第一指令所指定的数据为负的时候,选择零发生器的输出,以及
在数据超过最大值的时候,选择常数发生器的输出。
29.权利要求28的处理器,其特征在于,在数据既非负也未超过最大值的时候,选择单元选出下列的其中之一:零发生器的输出、常数发生器的输出、以及凭藉修整由第一指令所指定的数据而得到的数值。
30.权利要求23的处理器,其特征在于,由第一指令所指定的数据是执行不同于第一指令的第二指令时的结果。
31.权利要求23的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出零值,由一个s位整数来表示,
常数发生器,用于输出最大值的数据,由一个无符号s位的整数来表示,
修整单元,用于修整由第一指令所指定、表为一个有符号的m位整数的数据,将其修整为一个无符号的s位数值,其中,s小于m,并且
选择单元,用于a)在第一指令所指定的数据为负的时候,选择零发生器的输出,b)在数据超过最大值的时候,选择常数发生器的输出,以及c)在数据既非负亦未超过最大值的时候,选择修整单元的输出。
32.权利要求21的处理器,其特征在于,正值转换及饱和运算单元还包括:
正负判断单元,用于检测由第一指令所指定的、表为有符号的m位整数的数据是否为负,以及
比较器,用于检测数据是否超过最大值,
其中,选择单元a)在正负判断单元已测出数据为负的时候,选择零发生器的输出,b)在比较器已测出数据超过最大值的时候,选择常数发生器的输出,c)在正负判断单元不但未有测出数据为负、连比较器也未有测出数据超过最大值的时候,选择修整单元的输出。
33.权利要求12的处理器,其特征在于还包括运算所用的运算单元,其中,正值转换及饱和运算单元将运算单元所提供的数据进行转换或饱和,并且,把所述计算连同所述转换及饱和至少两者之一在一个周期内予以执行。
34.权利要求33的处理器,其特征在于还包括:
解码单元,用于解码包括第一指令的指令,
其中,运算单元对该第一指令所指定的数据进行运算。
35.权利要求34的处理器,其特征在于:
在运算单元所提供的数据既非负亦未超过最大值的时候,正值转换及饱和运算单元修整所述数据。
36.权利要求35的处理器,其特征在于:
所述运算单元所提供的数据是有符号的整数,最大值及修整数据中各个都是无符号的整数,以及有符号的整数的可用范围完全包括无符号的整数的可用范围。
37.权利要求36的处理器,其特征在于:
有符号的整数是m位长,并且无符号的整数是s位长,其中,s小于m。
38.权利要求34的处理器,其特征在于:
正值转换及饱和运算单元包括:
零发生器,用于输出零值,由一个s位整数来表示,
常数发生器,用于输出最大值的数据,由一个无符号的s位整数来表示,
修整单元,用于修整由运算单元所提供、表为一个有符号的m位整数的数据,将其修整为一个无符号的s位数值,其中,s小于m,并且
选择单元,用于a)在运算单元所提供定的数据为负的时候,选择零发生器的输出,b)在数据超过最大值的时候,选择常数发生器的输出,以及c)在数据既非负亦未超过最大值的时候,选择修整单元的输出。
39.权利要求38的处理器,其特征在于,正值转换及饱和运算单元还包括:
正负判断单元,用于检测由运算单元所提供的、表为有符号的m位整数的数据是否为负,以及
比较器,用于检测数据是否超过最大值,
其中,选择单元a)在正负判断单元已测出由运算单元所提供的数据为负的时候,选择零发生器的输出,b)在比较器已测出由运算单元所提供的数据超过最大值的时候,选择常数发生器的输出,c)在正负判断单元不但未有测出由运算单元所提供的数据为负、连比较器也未有测出由运算单元所提供的数据超过最大值的时候,选择修整单元的输出。
40.权利要求33的处理器,其特征在于,正值转换及饱和运算单元包括:
零发生器,用于输出有零数值的数据,以及
常数发生器,用于输出最大值的数据。
41.权利要求40的处理器,其特征在于:
正值转换及饱和运算单元还包括选择单元,该选择单元用于:
a)在运算单元所提供的数据为负的时候,选择零发生器的输出,以及b)在数据超过最大值的时候,选择常数发生器的输出。
42.权利要求41的处理器,其特征在于,在运算单元所提供的数据既非负也未超过最大值的时候,选择单元选出下列的其中之一:零发生器的输出、常数发生器的输出、以及凭藉修整由运算单元所提供的数据而得到的数值。
43.一种用于解码并执行指令的处理器,该处理器包括:
解码单元,用于解码包括某个指令的指令,该某个指令用来指定数据;以及
正值转换及饱和运算单元,用于a)当数据是负时,将数据变为零;并且b)当数据超过最大值时,将数据饱和为最大值;
其中,根据在解码单元所执行的关于该某个指令的解码,以选择方式执行所述转换及饱和。
44.一种用于解码并执行指令的处理器,该处理器包括:
解码单元,用于解码包括某个指令的指令,该某个指令用来指定数据;
运算单元,利用该某个指令所指定的数据来进行运算,从而产生输出数据;以及
正值转换及饱和运算单元,用于a)当输出数据是负时,将运算单元所提供的输出数据变为零;并且b)当输出数据超过最大值时,将运算单元所提供的输出数据饱和为最大值;
其中,根据在解码单元所执行的关于该某个指令的解码,执行所述运算连同所述转换或所述饱和。
45.一种用于解码并执行指令的处理器,该处理器包括:
解码单元,用于检测一个将要解码的指令是否某个指令;以及
舍入单元,当解码单元正测到该指令就是该某个指令时,将该某个指令所指定、在操作数上所存储的一个有符号的m位整数舍入为一个表为无符号的s位整数的数值,其中s小于m。
CNB2004100022789A 1996-11-29 1997-11-28 用来解码并执行指令的处理器 Expired - Lifetime CN100356316C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP320423/1996 1996-11-29
JP32042396 1996-11-29
JP320423/96 1996-11-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB971072698A Division CN1210647C (zh) 1996-11-29 1997-11-28 适于作由正值处理及饱和运算处理组成的修整处理的处理器

Publications (2)

Publication Number Publication Date
CN1512317A true CN1512317A (zh) 2004-07-14
CN100356316C CN100356316C (zh) 2007-12-19

Family

ID=18121299

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB2004100022789A Expired - Lifetime CN100356316C (zh) 1996-11-29 1997-11-28 用来解码并执行指令的处理器
CNB971072698A Expired - Lifetime CN1210647C (zh) 1996-11-29 1997-11-28 适于作由正值处理及饱和运算处理组成的修整处理的处理器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB971072698A Expired - Lifetime CN1210647C (zh) 1996-11-29 1997-11-28 适于作由正值处理及饱和运算处理组成的修整处理的处理器

Country Status (7)

Country Link
US (5) US5974540A (zh)
EP (2) EP0845741B1 (zh)
JP (1) JP3790619B2 (zh)
KR (1) KR100455011B1 (zh)
CN (2) CN100356316C (zh)
DE (1) DE69720922T2 (zh)
TW (1) TW448400B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101849226B (zh) * 2007-11-07 2016-06-15 三菱电机株式会社 安全控制装置
CN107861756A (zh) * 2011-12-22 2018-03-30 英特尔公司 具有独立进位链的加法指令

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69720922T2 (de) * 1996-11-29 2003-11-13 Matsushita Electric Ind Co Ltd Prozessor mit verbessertem Rundungsprozess
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
US6209017B1 (en) * 1997-08-30 2001-03-27 Lg Electronics Inc. High speed digital signal processor
US6182105B1 (en) * 1998-08-27 2001-01-30 Lucent Technologies Inc. Multiple-operand addition with intermediate saturation
US6535900B1 (en) * 1998-09-07 2003-03-18 Dsp Group Ltd. Accumulation saturation by means of feedback
US6529930B1 (en) * 1998-11-16 2003-03-04 Hitachi America, Ltd. Methods and apparatus for performing a signed saturation operation
US6314443B1 (en) 1998-11-20 2001-11-06 Arm Limited Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system
US6532486B1 (en) * 1998-12-16 2003-03-11 Texas Instruments Incorporated Apparatus and method for saturating data in register
WO2001042907A2 (en) * 1999-12-10 2001-06-14 Broadcom Corporation Apparatus and method for reducing precision of data
US6748521B1 (en) * 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
US6704820B1 (en) * 2000-02-18 2004-03-09 Hewlett-Packard Development Company, L.P. Unified cache port consolidation
US7184486B1 (en) 2000-04-27 2007-02-27 Marvell International Ltd. LDPC encoder and decoder and method thereof
US6888897B1 (en) 2000-04-27 2005-05-03 Marvell International Ltd. Multi-mode iterative detector
US7000177B1 (en) 2000-06-28 2006-02-14 Marvell International Ltd. Parity check matrix and method of forming thereof
US6965652B1 (en) 2000-06-28 2005-11-15 Marvell International Ltd. Address generator for LDPC encoder and decoder and method thereof
US7072417B1 (en) 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US7099411B1 (en) 2000-10-12 2006-08-29 Marvell International Ltd. Soft-output decoding method and apparatus for controlled intersymbol interference channels
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
KR100517971B1 (ko) * 2002-09-07 2005-09-30 엘지전자 주식회사 이동통신 시스템의 고정점 결정장치 및 방법
US7149766B1 (en) * 2002-11-12 2006-12-12 Unisys Corporation Methods for detecting overflow and/or underflow in a fixed length binary field
US7577892B1 (en) 2005-08-25 2009-08-18 Marvell International Ltd High speed iterative decoder
US7861131B1 (en) 2005-09-01 2010-12-28 Marvell International Ltd. Tensor product codes containing an iterative code
JP2010020625A (ja) * 2008-07-11 2010-01-28 Seiko Epson Corp 信号処理プロセッサ及び半導体装置
US8321769B1 (en) 2008-11-06 2012-11-27 Marvell International Ltd. Multi-parity tensor-product code for data channel
WO2013095603A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types
CN104133806A (zh) * 2014-07-31 2014-11-05 杭州康芯电子有限公司 一种十六位嵌入式芯片软核
CN112612521A (zh) * 2016-04-26 2021-04-06 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5856032A (ja) * 1981-09-29 1983-04-02 Toshiba Corp パイプライン演算装置
JPH0774989B2 (ja) * 1988-01-18 1995-08-09 株式会社東芝 符号変換回路
JP2600293B2 (ja) * 1988-06-10 1997-04-16 日本電気株式会社 オーバーフロー補正回路
JPH04309123A (ja) * 1991-04-08 1992-10-30 Nec Corp 冗長2進演算回路
US5235533A (en) * 1992-05-11 1993-08-10 Intel Corporation Store rounding in a floating point unit
JPH06175821A (ja) * 1992-12-10 1994-06-24 Fujitsu Ltd 演算装置
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
KR0179969B1 (ko) 1993-09-01 1999-05-01 김광호 안테나 입력신호의 게인 조정방법
JP3487903B2 (ja) * 1993-11-12 2004-01-19 松下電器産業株式会社 演算装置及び演算方法
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
JP2591463B2 (ja) * 1993-12-27 1997-03-19 日本電気株式会社 リミッタ装置
US5642301A (en) * 1994-01-25 1997-06-24 Rosemount Inc. Transmitter with improved compensation
JP3105738B2 (ja) 1994-06-10 2000-11-06 日本電気株式会社 情報処理装置
JP3651698B2 (ja) 1995-04-28 2005-05-25 株式会社アサヒオプティカル プラスチックレンズの製造方法
IL116210A0 (en) * 1994-12-02 1996-01-31 Intel Corp Microprocessor having a compare operation and a method of comparing packed data in a processor
GB2300054A (en) * 1995-01-17 1996-10-23 Hewlett Packard Co Clipping integers
US5801977A (en) * 1995-01-17 1998-09-01 Hewlett-Packard Company System and method for clipping integers
US5687359A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Floating point processor supporting hexadecimal and binary modes using common instructions with memory storing a pair of representations for each value
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
JPH0997178A (ja) 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JP3701401B2 (ja) 1996-08-12 2005-09-28 株式会社ルネサステクノロジ 飽和演算命令を有するマイクロプロセッサ
DE69720922T2 (de) * 1996-11-29 2003-11-13 Matsushita Electric Ind Co Ltd Prozessor mit verbessertem Rundungsprozess
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6029184A (en) * 1997-06-17 2000-02-22 Sun Microsystems, Inc. Method of performing unsigned operations with signed instructions in a microprocessor
US5870320A (en) * 1997-06-23 1999-02-09 Sun Microsystems, Inc. Method for reducing a computational result to the range boundaries of a signed 16-bit integer in case of overflow

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101849226B (zh) * 2007-11-07 2016-06-15 三菱电机株式会社 安全控制装置
CN107861756A (zh) * 2011-12-22 2018-03-30 英特尔公司 具有独立进位链的加法指令
US11080045B2 (en) 2011-12-22 2021-08-03 Intel Corporation Addition instructions with independent carry chains
CN107861756B (zh) * 2011-12-22 2022-04-15 英特尔公司 具有独立进位链的加法指令
US11531542B2 (en) 2011-12-22 2022-12-20 Intel Corporation Addition instructions with independent carry chains

Also Published As

Publication number Publication date
USRE43729E1 (en) 2012-10-09
CN1210647C (zh) 2005-07-13
EP0845741A2 (en) 1998-06-03
CN100356316C (zh) 2007-12-19
TW448400B (en) 2001-08-01
DE69720922T2 (de) 2003-11-13
US6237084B1 (en) 2001-05-22
DE69720922D1 (de) 2003-05-22
EP0845741B1 (en) 2003-04-16
JP3790619B2 (ja) 2006-06-28
JPH10214186A (ja) 1998-08-11
KR19980042913A (ko) 1998-08-17
US5974540A (en) 1999-10-26
CN1193771A (zh) 1998-09-23
EP0845741A3 (en) 2000-11-29
KR100455011B1 (ko) 2004-12-17
USRE39121E1 (en) 2006-06-06
USRE43145E1 (en) 2012-01-24
EP1306752A1 (en) 2003-05-02

Similar Documents

Publication Publication Date Title
CN1210647C (zh) 适于作由正值处理及饱和运算处理组成的修整处理的处理器
CN1114152C (zh) 适合于进行饱和运算的处理器及其控制方法
CN1153129C (zh) 用于处理器定制操作的设备
CN100339824C (zh) 高效执行特长指令字的处理器和方法
CN1088214C (zh) 用多指令集处理数据的器件和方法
CN1302380C (zh) 处理器和编译器
CN1174313C (zh) 多指令集的数据处理
CN1107905C (zh) 在分组数据上执行乘-加运算的装置
CN101046741A (zh) 处理器装置和复合条件处理方法
CN1684058A (zh) 处理器
CN1168029A (zh) 文档管理设备,数据压缩方法和数据解压缩方法
CN1303524C (zh) 可变流水线级数的数据处理装置
CN101060629A (zh) 图像压缩/解压方法及图像编/解码器和解码电路
CN1270232C (zh) 信息处理装置以及电子设备
CN1848097A (zh) 存储器地址生成装置以及具有它的处理器、存储器地址生成方法
CN1147155C (zh) Dct运算装置
CN1035190A (zh) 基于操作数长度和对位的微码转移
CN1021004C (zh) 在剩余数系统中用于编码和译码数据的方法和装置
CN1744093A (zh) 数据流图处理方法及具备可重构电路的处理装置
CN1143213C (zh) 高速处理循环的编译器和处理器
CN1286005C (zh) 微处理器
CN1734415A (zh) 分枝预测装置及分枝预测方法
CN1318905A (zh) 测链搜索装置
CN1146796C (zh) 堆栈式寄存器堆及其控制方法
CN1313918C (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
ASS Succession or assignment of patent right

Owner name: INTELLECTUAL PROPERTY BRIDGE NO. 1 CO., LTD.

Free format text: FORMER OWNER: MATSUSHITA ELECTRIC INDUSTRIAL CO, LTD.

Effective date: 20150415

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150415

Address after: Tokyo, Japan

Patentee after: GODO KAISHA IP BRIDGE 1

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co., Ltd.

CX01 Expiry of patent term

Granted publication date: 20071219