适合于进行饱和运算的处理器及其控制方法技术

技术编号:2890349 阅读:175 留言:0更新日期:2012-04-11 18:40
算术运算电路2及饱和运算修正电路3并列连接在寄存器与数据总线之间,分别由各自的运算指令起动。当饱和运算修正电路起动时,判断寄存文件1的输出是否超过预先设定的上限值、下限值,根据该判断结果,选择输出运算结果、前述上限值、前述下限值其中的一个值。(*该技术在2016年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及用于信息处理器的处理程序,特别涉及饱和运算的改进。饱和运算用于图像处理、伺服控制等各种
所谓饱和运算就是判断运算结果是否落在予置的运算幅度之内,或者是否超过预置的运算幅度,在超过的情况下,对运算结果进行修正运算。之所以需要这种饱和运算是为防止出现因运算发生使正负号反转而输出背离逻辑值的运算结果。在整数运算中,把最高位分配作符号用,而代表数值的正负。以16位运算为例,最高位的第15位变成符号位(此处,把最低位作为第0位)。一旦把最高位作这样的分配,运算中的进位最好停留在第14位之内,一旦出现从第14位向第15位的进位,“正数+正数”的计算结果就变成为“负数”而出现。通过校验是否使符号位以上有变化,则可以检测有没有发生上述现象。在32位运算器中进行16位整数运算的情况下,第15位变成符号位,而第16位~第31位应该不变动。故,其上限值就变成32位带符号的整数0×00007FFF。另外,将其反演带符号的整数0×FFFF8000变为下限。当运算结果超过由此上限值和下限值构成的范围时,可以认为输出了不能以16位运算幅度代表的运算结果(对于运算结果超出预定的运算幅度的,在本说明书中,称作“运算结果已饱和”,对于运算结果落在预定的运算结果之内的,在本说明书中,称作“运算结果不饱和”)。当进行这种饱和运算时,在处理过程中,在运算指令之后,首先举出插入修正程序的方法。下面示出修正程序之一例,将它作为第1已有技术加以说明。再有,作为使用本程序时的规定,要把数据寄存器用于运算结果的存贮。在本程序中的指令是2操作数的标记,将左边、右边的操作数分别称作第1操作数、第2操作数。将第2操作数兼作传送指令的传送地址的指定和运算结果的存贮地址的指定。指令1CMP 上限值,D1指令2BCS NOT_CARRY指令3MOV 上限值,D1指令4BRA ENDNOT_CARRY指令5CMP 下限值,D1指令6BCC END指令7MOV 下限值,D1END对此程序的各指令按顺序加以说明,首先在指令1“CMP 上限值,D1”中,将D1寄存器的值与上限值做比较。从由第2操作数所指示的寄存器D1的保持值减去在第1操作数中作为立即值所记述的上限值。在D1寄存器的保持值比上限值小的情况下,出现退位,使标志寄存器中的进位标志置位。指令2中的“BCS”的“B”是指分支指令,“CS”是指“进位置位(Carry Set)”。一旦进位标志置位,从指令2执行向标记“NOT-CARRY”的分支。比较的结果,当D1寄存器的值超过上限值时,转移到指令3,根据指令3“MOV 上限值,D1”,将上限值传送到寄存器D1,对运算结果用上限值来修正。修正后,在指令4的无条件分支指令“BRA END”中,在代表饱和运算终止的END标记,结束通过分支的饱和运算。以上是当寄存器D1的保持值超过上限值时的操作。接下来对于寄存器D1的保持值低于上限值的情况加以说明。当低于上限值时,在指令5“CMP 下限值,D1”中,将D1寄存器的值与下限值做比较。此时的比较,是从由第2操作数所指示的寄存器D1的保持值减去在第1操作数中作为立即值所记述的下限值。在D1寄存器的保持值小于下限值时,发生退位,使标志寄存器中的进位标志置位。由指令6,根据进位标志的置位,复位进行分支,在指令7的传送命令“MOV 下限值,D1”中,由于将下限值传送给寄存器D1,对运算结果由下限值来修正,结束饱和运算。以上就是修正程序中饱和运算的全部内容,但是在这种第1已有技术中的问题是一次饱和运算要插入七条指令而使编码量增大。在把程序预先存储在ROM的情况下,使ROM的数量跟着编码量的增多而增加,从而提高了制造成本。这种编码量的多少,当然也使执行时间成为问题。上述修正程序中存在分支指令(指令2、指令4、指令6),在执行本修正程序时,不管是否饱和而必定发生分支,因此在引入流水线处理时,其处理效率显著降低。由于在程序内设置了专用电路,而力图降低编码量并提高执行速度的技术,在特开平7-210368号公报中已有介绍。本说明中所介绍的技术作为第2已有技术,在下面加以说明。附图说明图1是由本说明书所揭示的程序的内部结构,具备锁存电路51、52、54,存储着运算数据和运算结果并根据指令解读结果将其输出的寄存文件71,采用寄存文件71的输出进行运算的算术运算电路72,在这些方面,它与已有程序结构没有不同之处。在本图中作为专用电路而设置的是饱和运算修正电路70,它位于算术运算电路72与数据总线之间。饱和运算修正电路70的内部结构示于图2。如图2所示,饱和运算修正电路70由判断算术运算电路72的输出单元所表示的运算结果是饱和还是不饱和的饱和判断电路73、产生运算判断上限值及下限值的常数发生电路74、选择输出算术运算电路72的结果、由常数发生电路74所产生的上限值和下限值之中的一个值的多路转换器75构成。如上所述,由于饱和运算电路70设置在算术运算电路72的输出单元与数据总线之间,算术运算电路72的运算结果被锁存电路51锁存并由饱和判断电路73立刻判断该值是饱和还是不饱和,假若饱和,则输出上限值、下限值以替代运算结果的输出。由于起动饱和运算修正电路70,本程序在图3提供了以一览表表示的指令置位。在该一览表的指令中“ADD D0,D1”、“SUB D0,D1”、“MUL D0,D1”是通常的运算指令,而其余的“ADDS 16 D0,D1”、“SUBS 16 D0,D1”、“MULS 16 D0,D1”、“ADDS 24 D0,D1”、“SUBS 24 D0,D1”、“MULS 24 D0,D1”完全是为饱和运算修正电路70而准备的指令。“ADDS 16 D0,D1”、“SUBS 16 D0,D1”、“MULS 16 D0,D1”是在算术运算电路72进行加法、减法、乘法的算术运算,并对其运算结果由饱和运算修正电路70进行16位幅度的饱和运算的带饱和运算的算术运算指令的命令。“ADDS 24 D0,D1”、“SUBS 24 D0,D1”、“MULS 24 D0,D1”是由算术运算电路72进行加法、减法、乘法的算术运算,并对其运算结果由饱和运算修正电路70进行24位幅度的饱和运算的带饱和运算的算术运算指令的命令。例如,“ADDS 16 D0,D1”是在算术运算电路72中由算术运算电路72执行寄存器D0,寄存器D1的保持值的加法运算,并对其运算结果由饱和运算修正电路70执行16位幅度的饱和运算。“SUBS 16D0,D1”是在算术运算电路72中由算术运算电路72执行寄存器D0、寄存器D1的保持值的减法运算,并对其运算结果由饱和运算修正电路70执行16位幅度的饱和运算。在第1种已有技术中,每一次饱和运算必须使用包含分支指令的7条指令,在第2种已有技术中,由使用图3中所记载的指令中的某一条,在程序中可以一次完成算术运算和其运算结果的饱和运算。如此,在程序中可以用一条指令指示运算及对其运算结果的饱和运算,因而第2已有技术可以大幅度减少编码量。参照定时图来说明,会加深对以上程序组成内容的操作的理解。参照图4所示的定时图,简单说明其操作。解读结果若是带饱和运算的运算指令,首先在时刻T11由锁存电路51、锁存电路52锁存寄存文件71的保本文档来自技高网...

【技术保护点】
一种处理器,包括以下各装置: 解读装置,用于解读指令中所含的待操作值的读出地址的指示、其操作内容的指示、操作后的结果的存储地址的指示; 第1数据传送装置,用于根据解读出的读出地址的指示来传送来自该读出地址待操作值; 操作装置,用于根据解读出的操作内容的指示对待操作值进行所指示的内容的操作; 第2数据传送装置,用于根据解读出的存储地址的指示向读存储地址传送操作后的结果; 这里,在由解读装置解读的指令中,有含第1操作内容的指示的第1指令及含第2操作内容指示的第2指令, 前述操作装置包括以下各装置: 运算装置,一旦由解读装置解读出第1操作内容的指示,对由第1数据传送装置所传送的待操作值进行运算并输出运算结果; 饱和运算装置,一旦由解读装置解读出第2操作内容的指示,对由第1数据传送装置所传送的待操作值进行是否超过预置范围的判断,若超过,则输出预置值,若未超过,则依旧输出由第1数据传送装置所传送的值; 前述第2数据传送装置,将运算装置所输出的运算结果及饱和运算装置所输出的值之一传送到其存储地址。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:小椋里宫地信哉桧垣信生铃木正人
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1