《用于将浮点值四舍五入为整数浮点值的装置和方法.pdf》由会员分享,可在线阅读,更多相关《用于将浮点值四舍五入为整数浮点值的装置和方法.pdf(24页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103988170 A (43)申请公布日 2014.08.13 C N 1 0 3 9 8 8 1 7 0 A (21)申请号 201280060336.6 (22)申请日 2012.11.29 13/313,062 2011.12.07 US G06F 7/499(2006.01) (71)申请人 ARM有限公司 地址英国剑桥 (72)发明人大卫雷蒙德鲁茨 内尔伯吉斯 萨布琳娜玛丽罗梅洛 (74)专利代理机构北京东方亿思知识产权代理 有限责任公司 11258 代理人李晓冬 (54) 发明名称 用于将浮点值四舍五入为整数浮点值的装置 和方法 (57) 摘要 处理电路。
2、被提供来执行用于将浮点值四舍五 入为整数浮点值的操作FRINT。控制电路控制该 处理电路来执行FRINT操作,以响应FRINT指令。 该处理电路包括:移位电路,用于通过对基值移 位来生成四舍五入值;加和电路,用于将该四舍 五入值加至该浮点值的有效位数来生成和值;掩 码生成电路,用于生成用来清除该和值的小数值 位的掩码;以及掩蔽电路,用于将该掩码应用于 该和值来生成整数浮点值。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.06.06 (86)PCT国际申请的申请数据 PCT/GB2012/052938 2012.11.29 (87)PCT国际申请的公布数据 WO2013/。
3、083957 EN 2013.06.13 (51)Int.Cl. 权利要求书3页 说明书11页 附图9页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书11页 附图9页 (10)申请公布号 CN 103988170 A CN 103988170 A 1/3页 2 1.一种数据处理装置,包括: 处理电路,被配置来执行用于将浮点值四舍五入为整数浮点值的四舍五入为整数浮点 操作,所述浮点值具有有效位数和指数;以及 控制电路,被配置来控制所述处理电路,以执行所述四舍五入为整数浮点操作来响应 对浮点四舍五入为整数浮点指令的执行; 所述处理电路包括: 移位电路,被配置来。
4、通过将基值移位移位量来生成四舍五入值,其中所述移位量依赖 于所述浮点值的所述指数; 加和电路,被配置来将所述四舍五入值加至所述浮点值的所述有效位数以生成和值; 掩码生成电路,被配置来生成用于清除所述和值的具有与所述有效位数的小数值位位 置相对应的位位置的位的掩码;以及 掩蔽电路,被配置来将所述掩码应用于所述和值来生成所述整数浮点值。 2.如权利要求1所述的数据处理装置,其中,所述移位电路被配置来将所述基值向右 移位来生成所述四舍五入值。 3.如权利要求1和2中任意一项所述的数据处理装置,其中,所述四舍五入值在与所述 浮点值的所述有效位数的最高有效小数值位的位位置相对应的位位置处具有首非零位。 。
5、4.如权利要求1-3中任意一项所述的数据处理装置,其中: 所述基值具有非零值的最高有效位;并且 所述移位电路被配置来将所述基值向右移位(E-BIAS+1)位位置的移位量,其中,E是 所述浮点值的所述指数,并且,BIAS是所述浮点值的指数偏移。 5.如权利要求1-4中任意一项所述的数据处理装置,其中,所述掩蔽电路包括AND门, 该AND门被配置来将按位AND操作应用到所述和值和所述掩码。 6.如权利要求5所述的数据处理装置,其中,所述掩码的位在与所述有效位数的小数 值位位置相对应的位位置处具有位值0。 7.如权利要求6所述的数据处理装置,其中,所述掩码的位在与所述有效位数的整数 值位位置相对应的。
6、位位置处具有位值1。 8.如权利要求1-7中任意一项所述的数据处理装置,其中,所述掩码生成电路被配置 来基于所述四舍五入值生成所述掩码。 9.如权利要求1-8中任意一项所述的数据处理装置,其中,响应于对浮点加和指令的 执行,所述控制电路被配置来控制所述处理电路,以使用所述移位电路和所述加和电路来 执行加和操作。 10.如权利要求1-9中任意一项所述的数据处理装置,其中,所述处理电路具有至少一 种四舍五入模式,该模式用于在所述四舍五入为整数浮点操作期间,当所述浮点值是介于 两个整数浮点值之间的值时,选择将所述浮点值四舍五入为所述两个整数浮点值中的哪一 个。 11.如权利要求10所述的数据处理装置。
7、,其中,所述处理电路具有多种四舍五入模式, 所述浮点四舍五入为整数浮点指令指定所述多种四舍五入模式中的哪种应该被用于所述 四舍五入为整数浮点操作。 12.如权利要求10和11中任意一项所述的数据处理装置,其中,所述处理电路具有远 权 利 要 求 书CN 103988170 A 2/3页 3 离零四舍五入(RU)四舍五入模式,该模式用于将所述浮点值四舍五入为所述两个整数浮 点值中具有最大绝对量值的那一个。 13.如权利要求12所述的数据处理装置,其中,在所述RU四舍五入模式中,所述基值的 所有位具有非零位值。 14.如权利要求10-13中任意一项所述的数据处理装置,其中,所示处理电路具有四舍 五。
8、入为最接近、靠近偶数(RNE)四舍五入模式,该模式用于将所述浮点值四舍五入为所述 两个整数浮点值中最接近的,同时将位于所述两个整数浮点值正中间的浮点值四舍五入为 所述两个整数浮点值中是偶数值的那个。 15.如权利要求14所述的数据处理装置,其中,在所述RNE四舍五入模式中,所述基值 的最高有效位具有非零位值,并且,所述基值的剩余位具有零位值。 16.如权利要求14和15中任意一项所述的数据处理装置,其中,在所述RNE四舍五入 模式中,如果所述浮点值位于所述两个整数浮点值正中间,并且所述有效位数的最低有效 整数值位具有0位值,那么,所述掩码生成电路被配置来修正所述掩码,并且所述掩蔽电路 被配置来。
9、将所述修正的掩码应用到所述和值来清除所述和值的具有与所述有效位数的所 述最低有效整数值位相对应的位位置的那一位。 17.如权利要求16所述的数据处理装置,其中,所述掩码生成电路被配置来通过将所 述掩码向左移位一位位置来修正所述掩码。 18.如权利要求10-17中任意一项所述的数据处理装置,其中,所述处理电路具有四舍 五入至零(RZ)四舍五入模式,该模式用于将所述浮点值四舍五入为所述两个整数浮点值 中具有最小绝对量值的那个。 19.如权利要求18所述的数据处理装置,其中,在所述RZ四舍五入模式中,在将置零的 四舍五入值加至所述有效位数来生成所述和值之前,所述四舍五入值的所有位都被置零, 并且所述。
10、掩码通过使用未置零的四舍五入值来生成。 20.一种存储计算机程序的计算机可读存储介质,所述计算机程序用于控制计算机来 提供与权利要求1-19任意一项中所述的数据处理装置相对应的虚拟机运行环境。 21.一种数据处理装置,包括: 处理装置,用于执行四舍五入为整数浮点操作,所述操作用于将浮点值四舍五入为整 数浮点值,所述浮点值具有有效位数和指数;以及 控制装置,用于控制所述处理装置以执行所述四舍五入为整数浮点操作来响应对浮点 四舍五入为整数浮点指令的执行; 所述处理装置包括: 移位装置,用于通过对基值移位移位量来生成四舍五入值,所述移位量依赖于所述浮 点值的所述指数; 加和装置,用于将所述四舍五入值。
11、加至所述浮点值的所述有效位数来生成和值; 掩码生成装置,用于生成掩码,所述掩码用于清除具有与所述有效位数的小数值位位 置相对应的位位置的所述和值的位;以及 掩蔽装置,用于将所述掩码应用到所述和值以生成所述整数浮点值。 22.一种执行四舍五入为整数浮点操作的方法,所述操作用于将浮点值四舍五入为整 数浮点值,所述浮点值包括有效位数和指数,所述方法包括步骤: 权 利 要 求 书CN 103988170 A 3/3页 4 通过将基值移位移位量来生成四舍五入值,所述移位量依赖于所述浮点值的所述指 数; 将所述四舍五入值加至所述浮点值的所述有效位数以生成和值; 生成用于清除所述和值的具有与所述有效位数的小。
12、数值位位置相对应的位位置的位 的掩码;并且 将所述掩码应用到所述和值以生成所述整数浮点值; 其中,所述方法由处理电路执行,以响应对浮点四舍五入为整数浮点指令的执行。 权 利 要 求 书CN 103988170 A 1/11页 5 用于将浮点值四舍五入为整数浮点值的装置和方法 技术领域 0001 本发明涉及数据处理领域。更具体地,本发明涉及用于将浮点值四舍五入为整数 浮点值的装置和方法。 0002 现有技术说明 0003 用于对浮点数执行算术操作的处理器已为人所知。在浮点表示法中,通过使用有 效位数1.F、指数E和符号位S来表示数。符号位S表示该浮点数是正数或负数,有效位数 1.F表示该浮点数的。
13、有效数字,并且,指数E表示与该有效位数相关的小数点(也称为二进 制小数点)的位置。通过改变指数值,小数点可以在有效位数内向左边和右边“浮动”。这 就是说对于预确定数目的位,浮点表示法可以比定点表示法(在该方法中,小数点在有效 位数内具有固定位置)表示更宽范围的数。然而,额外的范围是以减少的精度为代价获得 的,因为一些位用来存储指数。有时,浮点算术操作生成比用于有效位数的位的数目具有更 多有效位的结果。如果发生这种情况,那么该结果被四舍五入为可以使用可用数目的有效 位来表示的值。 0004 附图的图1显示了浮点数如何被储存在寄存器或存储器内。在单精度表示法中, 使用32位来存储浮点数。1位用作符。
14、号位S,8位用来存储指数E,并且,23位用来存储有 效位数1.F的小数部分F。小数部分的23位随同具有值1的隐含位一起组成24位有效位 数1.F。首先假设小数点被放置于该有效位数的隐含位和23位存储的位之间。所存储的 指数E通过固定值127进行偏移,使得在所表示的浮点数中,如果E-127是负数,那么小数 点被从其初始位置向左移位E-127位(例如,如果E-127-2,那么1.01的有效位数表示 0.0101),或者,如果E-127是正数,那么小数点被从其初始位置向右移位E-127位(例如, 如果E-1272,那么1.01的有效位数表示101)。该偏移用来使得对两个浮点值的指数的 比较更简单,因。
15、为小数点的正移位和负移位均可以由所存储的指数E的正值来表示。如图 1所示,所存储的表达式S31,E30:23,F22:0表示具有值(-1) S *1.F22:0*2 (E-127) 的 数。这种形式的单精度浮点数被认为是“标准的”。如果计算的浮点值不是标准的(例如, 该值已通过将小数点置于不是该有效位数的最左边两位之间的位置来生成),那么通过将 有效位数向左或向右移位并相应地调整指数直到该数为(-1) S *1.F22:0*2 (E-127) 的形式来 将其标准化。 0005 还提供了双精度格式,在该格式中,采用64位存储位来表示有效位数和指数。这 64位存储位包括1位符号位、11位指数以及5。
16、3位有效位数1.F的52位小数部分F。在双 精度格式中,指数通过值1023进行偏移。因此,在双精度格式中,所存储的表达式S63, E62:52,F51:0表示浮点值(-1) S *1.F51:0*2 (E-1023) 。 0006 在本申请中,一些示例将参照单精度浮点格式进行解释。然而,应当认识到,本发 明还可以被应用到双精度格式(或任意其他浮点格式)中,并且,在后续的图中显示的位值 可以由适合于正被使用的浮点格式的值进行替换。 0007 一种浮点操作为四舍五入为整数浮点操作(FRINT),这种操作将浮点值四舍五入 为整数浮点值。例如,浮点值6.75可以被四舍五入为相邻整数值6.0或7.0中的。
17、一个。本 说 明 书CN 103988170 A 2/11页 6 技术旨在减少与执行FRINT操作相关联的时延。 发明内容 0008 从一个方面看,本发明提供了一种数据处理装置,包括: 0009 处理电路,被配置来执行用于将浮点值四舍五入为整数浮点值的四舍五入为整数 浮点操作,所述浮点值具有有效位数和指数;以及 0010 控制电路,被配置来控制所述处理电路,以执行所述四舍五入为整数浮点操作来 响应对浮点四舍五入为整数浮点指令的执行; 0011 所述处理电路包括: 0012 移位电路,被配置来通过将基值移位移位量来生成四舍五入值,其中所述移位量 依赖于所述浮点值的所述指数; 0013 加和电路,。
18、被配置来将所述四舍五入值加至所述浮点值的所述有效位数以生成和 值; 0014 掩码生成电路,被配置来生成用于清除所述和值的具有与所述有效位数的小数值 位位置相对应的位位置的位的掩码;以及 0015 掩蔽电路,被配置来将所述掩码应用于所述和值来生成所述整数浮点值。 0016 通常在软件中已实现了四舍五入为整数浮点操作(FRINT)。然而,本技术认识到, 由于每条指令需要被分开获取、解码并运行,因此这种方法较慢。 0017 通过提供用于在硬件中执行FRINT操作的处理电路和用于控制该处理电路来执 行FRINT操作以响应对单浮点四舍五入为整数浮点指令(FRINT指令)的执行的控制电路, FRINT操。
19、作可以比以前的软件实现更快地被执行。 0018 本技术还认识到,在典型的浮点硬件电路中,四舍五入被限制于发生在有效位数 内的预确定的固定位置处,通常是该有效位数的最低有效位。然而,如果四舍五入只能发生 在该有效位数的最低有效位,那么在经移位的值的最低有效位上执行四舍五入之前,将需 要将该有效位数向右移位来将该浮点值转换为整数浮点值。然后,将需要通过将该四舍五 入的值向左移位以将该值转换回标准浮点格式来对该四舍五入的值进行标准化。这样的向 左移位通常对于其他浮点操作来说不是必需的,因此,将用于执行这样向左移位的硬件增 加至处理电路将给处理电路增加处理周期,使得该电路复杂并且减慢了大多数其他浮点操。
20、 作的处理。 0019 为了避免该问题,本技术提供了移位电路和加和电路,其中,移位电路通过将基值 移位移位量来生成四舍五入值,其中,所述移位量依赖于所述将要被四舍五入的浮点值的 指数,所述加和电路用于将所生成的四舍五入值加至该浮点值的有效位数。在和值中余留 的任意小数值位值可以通过将掩码应用到该和值来清除。由于所述移位被应用来生成四舍 五入值,因此,不需要对有效位数进行移位,所以,由有效位数和经移位的四舍五入值相加 得到的和值是标准化的浮点值。不需要执行后续的向左移位,因此,可以实现用于执行该四 舍五入为整数浮点操作的有效硬件机制。 0020 应当认识到,没有必要对FRINT指令的所有运行实例。
21、使用移位电路、加和电路、掩 码生成电路以及掩蔽电路。可以有这样的情形,即浮点值被四舍五入后的值使得四舍五入 的结果可以不需要实际执行移位、加和以及掩蔽就能容易地被确定。例如,如果将要被四舍 说 明 书CN 103988170 A 3/11页 7 五入的浮点值已经是一个整数,那么四舍五入将不影响其值,所以,输入值可以直接被写进 输出寄存器。另外,如果该浮点值的量值小于1,那么,四舍五入的结果将是0或1,并且,这 不需要对该四舍五入为整数浮点操作的完全执行便可被确定。因此,控制电路可以逐条指 令地确定是否有必要使用处理电路的完整四舍五入功能。 0021 尽管通过使用等效的向左移位来构建四舍五入值是。
22、可能的,但是对于移位电路来 说,将基值向右移位来生成四舍五入值最为方便。 0022 有效位数的位的数值是指数的功能。通常,这些位中的一些表示大于或等于1.0 的值(整数值位),并且这些位中的一些表示小于1.0的值(小数值位)。 0023 所述四舍五入值可以在与该浮点值的有效位数的最高有效小数值位的位位置相 对应的位位置处具有首非零位。所述有效位数的最高有效小数值位是表示值二分之一的 位。将二分之一加至有效位数并清除和值中的任意小数值位是将浮点值四舍五入为最接近 的整数的技术。其他四舍五入技术可以通过加上大于二分之一但是小于一的值来实现。在 这两个情形中,四舍五入值的首非零位处于最高有效小数值位。
23、位置。 0024 基值可以具有这样的最高有效位,该最高有效位具有非零值。移位电路可以被 配置来将基值向右移位(E-BIAS+1)位位置的移位量,其中,E表示该浮点值的指数,并且, BIAS表示该浮点值的指数偏移。该移位使得首非零位被移位至与值二分之一相对应的最高 有效小数值位位置。 0025 掩蔽电路可以包括AND门,该AND门被配置来对和值和掩码应用按位AND操作。掩 码在与该有效位数的小数值位位置相对应的位位置处的位可以具有位值0,而掩码在与该 有效位数的整数值位位置相对应的位位置处的位可以具有位值1。通过这种方式,掩码可以 用来清除和值的小数值位,以生成整数浮点值。 0026 尽管可以以。
24、多种方式生成掩码(例如,通过移位掩码基值),但是,基于四舍五入 值来生成掩码是很方便的。这可以避免执行进一步移位的需要。如上述讨论,该四舍五入 值的首非零位位于最高有效小数值位位置,并且,该位与掩码中的首零位相对应。因此,该 四舍五入值可以被容易地转换为掩码。例如,该掩码可以通过在比该四舍五入值的首非零 位更有效的位位置处采用非零位值和在该掩码剩余位位置处采用零位值来生成。 0027 处理电路能够实施其他浮点操作以及FRINT操作。在一个示例中,控制电路可以 控制该处理电路来执行浮点加和操作来响应对浮点加和指令的执行。移位电路和加和电路 可以用于加和操作和FRINT操作二者。通过对执行FRIN。
25、T操作和加和操作共享电路,可以 减少电路面积。 0028 浮点值位于两个相邻的整数值之间。可以实施不同的规则来确定这两个整数值中 的哪一个应该为四舍五入结果。因此,可在至少一种四舍五入模式中提供该处理电路,用于 在FRINT操作期间选择将该浮点值四舍五入为哪个整数。如果该处理电路具有多种四舍五 入模式,那么FRINT指令可以指定哪种四舍五入模式应该用于该FRINT操作。例如,不同指 令操作码可以用于控制每个不同FRINT操作,或者,具有单个操作码的指令可以具有指定 如下字段的四舍五入模式,该字段指定将使用哪种四舍五入模式。 0029 例如,该处理电路可以具有远离零四舍五入(RU)四舍五入模式,。
26、用于将浮点值四 舍五入为两个相邻整数中具有最大绝对量值的一个。例如,在RU四舍五入模式中,值2.25 将被四舍五入为整数3.0,而值-2.25将被四舍五入为整数-3.0。 说 明 书CN 103988170 A 4/11页 8 0030 在RU四舍五入模式中,基值的所有位可以具有非零位值(基值0b1111111或一 的二进制字符串)。当该基值被移位来生成四舍五入值时,对应于使用十进制算术时的十进 制值0.999,该四舍五入值将在每个小数值位位置处具有非零位值。这意味着将该四舍五 入值加至有效位数并使用掩码清除和的小数值位将得到比该浮点值大的相邻整数。例如, 将0.999加至值2.2上得到和3.。
27、1999,并且清除小数值位得到经准确四舍五入的整数 浮点值3.0。如果对已经是整数的值执行四舍五入为整数浮点操作,那么加0.999不改变 该浮点值的整数值位,因此,掩蔽该和的小数值位得到原始整数浮点值。 0031 另一种四舍五入模式可以是四舍五入为最接近、靠近偶数(RNE)四舍五入模式, 用于将浮点值四舍五入为两个相邻的整数浮点值中最接近的,同时将位于两个整数浮点 值正中间的浮点值四舍五入为这两个整数浮点值中的偶数值。例如,值2.9将被四舍五入 为最接近的整数浮点值3.0,而值3.5和4.5都将被四舍五入为最接近的偶数整数浮点值 4.0。这种模式可以用来防止趋向更高整数的四舍五入偏差,如果位于。
28、两个整数正中间的值 总被向上四舍五入,那么上述情况可能会发生。 0032 在本技术中可以通过提供基值来实现RNE四舍五入模式,其中,所述基值具有为 非零位值的最高有效位和为零位值的剩余位(即,基值0b1000)。因此,当该基值被移位 来生成四舍五入值时,该基值具有值二分之一。通过将二分之一加至有效位数并清除任何 小数值位,该有效位数被四舍五入为最接近的整数浮点值。例如,将二分之一加至值2.3则 产生和2.8,并且清除小数值位得到四舍五入的值2.0。另一方面,将二分之一加至值2.9 得到和3.4,并且然后清除小数值位给出四舍五入的整数浮点值3.0,这是离2.9最近的整 数。 0033 在RNE四。
29、舍五入模式中,如果增加二分之一将导致奇数值(如果浮点值位于两 个整数值的正中间,并且其有效位数的最低有效整数值位有零位值,那么这种情况将会发 生),那么结果值被修正来产生偶数值。本技术通过修正掩码以使得将该掩码应用到有效位 数和四舍五入值的和将清除和值的具有与该有效位数的最低有效整数值位相对应的位位 置的位,提供了保证偶数结果的方便的方法。例如,可以将掩码向左移位一个位位置,以便 现在有与最低有效整数值位位置相对应的非零位值。这保证了当掩码被应用于和值时,最 低有效位将被清除来生成偶数值。 0034 另一种四舍五入模式可以是四舍五入至零(RZ)四舍五入模式,用于将浮点值四 舍五入为两个相邻整数。
30、浮点值中具有最小绝对量值的一个。该四舍五入模式等同于对该浮 点值的截断,以便在保留现有整数值位的同时丢弃任何小数值位。 0035 由于在使用RZ四舍五入模式进行四舍五入时浮点值的整数部分保持不变,因此, 不需要将四舍五入常量加至该有效位数的整数值部分。然而,本技术认识到,与其他四舍五 入模式相比,如果相同的电路用来执行RZ四舍五入模式,那么可以更有效地实现FRINT操 作。因此,对于RZ四舍五入模式,四舍五入值仍可以被计算,并且,在生成该四舍五入值之 后,在将置零的四舍五入值加至有效位数上来生成和值之前,该四舍五入值的所有位可以 被置为零。未置零的四舍五入值对于RZ四舍五入模式中的加和来说虽然。
31、不是必需的,但是 对计算四舍五入值以允许生成掩码来说仍是有用的。 0036 从另一个方面看,本发明提供了非暂时计算机可读存储介质,该非暂时计算机可 读存储介质存储用于控制计算机以提供与上述描述的数据处理装置相对应的虚拟机运行 说 明 书CN 103988170 A 5/11页 9 环境的计算机程序。因此,该计算机实际上不需要具备上述描述的处理电路,但可以运行用 于提供运行环境的虚拟机程序,所述运行环境用于运行程序指令使得这些指令如同正在实 际电路上被运行。 0037 从另一个方面看,本发明可以提供一种数据处理装置,包括: 0038 处理装置,用于执行四舍五入为整数浮点操作,所述操作用于将浮点值。
32、四舍五入 为整数浮点值,所述浮点值具有有效位数和指数;以及 0039 控制装置,用于控制所述处理装置以执行所述四舍五入为整数浮点操作来响应对 浮点四舍五入为整数浮点指令的执行; 0040 所述处理装置包括: 0041 移位装置,用于通过对基值移位移位量来生成四舍五入值,所述移位量依赖于所 述浮点值的所述指数; 0042 加和装置,用于将所述四舍五入值加至所述浮点值的所述有效位数来生成和值; 0043 掩码生成装置,用于生成掩码,所述掩码用于清除具有与所述有效位数的小数值 位位置相对应的位位置的所述和值的位;以及 0044 掩蔽装置,用于将所述掩码应用到所述和值以生成所述整数浮点值。 0045 。
33、从又一方面来看,本发明可以提供一种执行四舍五入为整数浮点操作的方法,所 述操作用于将浮点值四舍五入为整数浮点值,所述浮点值包括有效位数和指数,所述方法 包括以下步骤: 0046 通过将基值移位移位量来生成四舍五入值,所述移位量依赖于所述浮点值的所述 指数; 0047 将所述四舍五入值加至所述浮点值的所述有效位数以生成和值; 0048 生成用于清除所述和值的具有与所述有效位数的小数值位位置相对应的位位置 的位的掩码;并且 0049 将所述掩码应用到所述和值以生成所述整数浮点值; 0050 其中,所述方法由处理电路执行,以响应对浮点四舍五入为整数浮点指令的执行。 0051 本发明更具体的和优选的方。
34、面在附随的独立权利要求和从属权利要求中陈述。这 些从属权利要求的特征可以在适当时结合这些独立权利要求的特征,并且是以结合的方 式,而不是在权利要求中直接陈述的。 0052 以上描述,以及本发明的其他目的、特征和优点将从对下述示例性实施例的详细 说明中变得显而易见,结合附图来阅读这些实施例。 附图说明 0053 图1示出了浮点数表示法; 0054 图2示出了用于执行FRINT操作的处理电路; 0055 图3示出了执行FRINT指令的方法; 0056 图4示出了当对浮点值进行移位时计算状态标志的示例; 0057 图5示出了用于执行浮点操作的处理管线的一部分; 0058 图6示出了使用本技术的RU四。
35、舍五入的示例; 0059 图7示出了RNE四舍五入的示例; 说 明 书CN 103988170 A 6/11页 10 0060 图8示出了RZ四舍五入的示例;以及 0061 图9示出了虚拟机实现的示例。 具体实施方式 0062 图2示意性地示出了具有用于执行FRINT操作的处理电路2的处理装置的一部 分,所述FRINT操作用于将具有有效位数1.F和指数E的浮点值四舍五入为整数浮点值。控 制电路4被提供来控制该处理电路以执行FRINT操作。控制电路4响应于对FRINT指令的 执行来生成用于控制处理电路2的各种元素来执行FRINT操作的控制信号。应该认识到, 处理电路2可以包括其他元素,而不是这些。
36、示出的,并且示出的用于执行FRINT操作的元素 是示意性的,以便可以使用其他硬件来完成同样的操作。 0063 处理电路2包括:寄存器8,用于存储要被四舍五入的浮点值的有效位数1.F;以 及寄存器10,用于存储用来构建四舍五入常量的基值。处理电路2还包括:右移位器12,用 于将基值B向右移位;以及右移位器14,用于将有效位数1.F向右移位来生成状态标志L、 G、S。复用器16被安排来选择由右移位器12生成的四舍五入值或零值,并且加和器18被 提供来将复用器16的输出加至未移位的有效位数1.F来生成和值。 0064 掩码生成电路20也被提供来基于由右移位器12生成的四舍五入值来生成掩码, 并且,掩。
37、码修正电路22被提供来修正该掩码以生成修正的掩码(掩码 )。另外的复用器 24选择由掩码生成电路20生成的掩码,或选择由掩码修正电路22生成的修正的掩码。包 括AND门26的掩蔽电路被提供来将所选的掩码应用到由加和器18生成的和值。AND门26 的输出是整数浮点值,该整数浮点值被置于输出寄存器30中。 0065 图3示出了使用图2中所示的处理电路2执行FRINT指令的方法。在步骤50处, 控制电路4确定当前所执行的指令是否为FRINT指令。如果是,那么在步骤52处,控制电 路4确定(E-BIAS+1)的值,其中,E是正被四舍五入的浮点值的指数,并且,BIAS是指数偏 移(例如,127用于单精度。
38、浮点值)。 0066 如果(E-BIAS+1)的值大于N,其中,N是非隐含的有效位数位F的数目(也就是 说,不包括有效位数1.F的隐含位1),那么要被四舍五入的值已经是整数。在这种情形中, 在步骤54处,控制电路4控制处理电路2来输出未改变的浮点值的有效位数。 0067 替换地,如果在步骤52处(E-BIAS+1)的值小于或等于零,那么要被四舍五入的值 的量值位于0和1之间,因此,四舍五入的结果将为0或1。在这种情形中,在步骤56处,控 制电路4可以控制处理电路2来生成四舍五入的结果。在这种情况中,该四舍五入的结果 可以基于该有效位数和当前四舍五入模式来直接计算,不需要激活处理电路2完整的加和。
39、 及掩蔽功能。 0068 在另一方面,如果(E-BIAS+1)的值大于零且小于或等于N,那么在步骤60处,右移 位器14将有效位数1.F(包括隐含位1)向右移位(N-(E-BIAS)位位置。这将该有效位数 转换成整数值,以允许在步骤62处对状态标志L、G、S进行计算。状态标志L、G、S提供关 于该浮点值是偶数还是奇数、以及该浮点值是否位于两个整数值正中间的信息。举例来说, 这对于在RNE四舍五入模式中确定值是应该向上还是向下四舍五入很有用。 0069 图4示出了可以在步骤60和62处生成状态标志的方式的示例。当该浮点值的有 效位数被转换成整数(在图4的示例中,通过向右移位8位位置),“最低”状。
40、态标志L采用 说 明 书CN 103988170 A 10 7/11页 11 经移位的值的最低有效位的值,这与原始有效位数中的最低有效整数值位相对应。L标志指 示该浮点值是偶数(如果L0)还是奇数(如果L1)。 0070 “保卫”标志G采用从经移位的结果移位出1位位置的位的值,这与原始有效位数 的最高有效小数值位相对应。也就是说,如果该有效位数将要被转换为整数,那么该位将由 于向右移位而丢失,但是保卫标志G保留了该位的值来指示原始有效位数的小数值部分是 位于0和0.4999之间(如果G0)还是位于0.5和0.9999之间(如果G1)。 0071 如果除了该有效位数的最高有效小数值位的任意小数值。
41、位具有值1,那么“粘性” 标志S采用值1。因此,粘性标志S等同于非最高有效小数值位的小数值位的OR组合。实 际上,S标志可以通过如下方式来计算:如果在对该有效位数向右移位时,在移位结果中移 经S标志位置的任意位具有值1,那么将该标志设为1,并且之后不管任何进一步移位出的 位的值如何都保持值1。S标志指示该浮点值是否正好位于整数值或半整数值(如果S 0),或者该浮点值是否位于该整数和半整数值之间(如果S1)。 0072 应该认识到,为了计算L、G、S标志,该有效位数在步骤60处被向右移位。该向右 移位的有效位数不用于剩余的FRINT操作。 0073 同时在步骤64处,控制电路4确定哪种四舍五入模。
42、式将用于该四舍五入为整数浮 点操作。每种四舍五入模式可以提供用于为位于两个相邻的整数浮点值之间的浮点值确定 该浮点值要被四舍五入为哪个整数浮点值的不同规则。例如,处理电路2可以提供以下四 舍五入模式中的任意一种或多种; 0074 远离零四舍五入(RU)四舍五入模式。在RU四舍五入模式中,位于两个整数浮点 值之间的浮点值被四舍五入为这两个整数浮点值中具有最大绝对量值的一个。例如,在RU 四舍五入模式中,值2.9将被四舍五入为整数3.0,并且,值-3.2将被四舍五入为值-4.0。 0075 四舍五入为最接近、靠近偶数(RNE)四舍五入模式,该模式用于将浮点值四舍五 入为两个相邻的整数浮点值中最接近。
43、的,同时,位于两个整数浮点值正中间的浮点值被四 舍五入为这些整数浮点值中为偶数值的那个。例如,值2.9将被四舍五入为整数3.0,而值 2.5将被四舍五入为最接近的偶数整数值2.0。 0076 四舍五入至零(RZ)四舍五入模式,用于将浮点值四舍五入为两个整数浮点值中 具有最小绝对量值的一个。例如,值2.3和值-2.8将分别被四舍五入为整数值2.0和-2.0。 0077 四舍五入为正无穷大(RP)四舍五入模式,用于将浮点值四舍五入为两个整数浮 点值中最靠近正无穷大的一个。例如,值2.2将被四舍五入为整数值3.0,并且,值-2.4将 被四舍五入为整数值-2.0。 0078 四舍五入为负无穷大(RM)。
44、四舍五入模式,用于将浮点值四舍五入为两个相邻整 数浮点值中最靠近负无穷大的一个。例如,值3.2将被四舍五入为整数值3.0,并且,值-6.9 将被四舍五入为整数值-7.0。 0079 本说明书的剩余部分将只对RU、RZ和RNE四舍五入模式进行描述。这是因为RP 和RM四舍五入模式可以通过采用针对其他四舍五入模式的处理来实现。RP四舍五入模式 可以通过使用RU四舍五入模式(如果要被四舍五入的浮点值是正数)和RZ四舍五入模式 (如果要被四舍五入的浮点值是负数)来实现。相反地,RM四舍五入模式可以通过执行RZ 四舍五入模式(如果要被四舍五入的浮点值是正数)和RU四舍五入模式(如果要被四舍 五入的浮点值。
45、是负数)来实现。该浮点值的符号位可以用来针对RP和RM的情形选择使用 说 明 书CN 103988170 A 11 8/11页 12 RU还是RZ四舍五入。因此,对RU和RZ四舍五入的稍后参照还隐含地描述了RP和RM四舍 五入的特征。 0080 因此,在步骤64处确定四舍五入模式。例如,控制电路4可以基于FRINT指令的 操作码或基于在指定哪种四舍五入模式应被使用的指令内的字段来做这件事。替换地,如 果处理电路仅支持一种四舍五入模式,那么使用该种四舍五入模式。RP或RM四舍五入模式 可以通过基于要被四舍五入的值的符号位选择RU和RZ四舍五入模式中合适的一种而被使 用。如果要使用的四舍五入模式是。
46、RU,那么在步骤66处,控制电路4控制处理电路2将基 值0b11111111存储在基值寄存器10中。另一方面,如果四舍五入模式是RZ或RNE四舍 五入模式,那么在步骤68处,控制电路4控制处理电路2来将基值0b10000000载入基值 寄存器10中。 0081 在步骤70处,右移位器12将存储于基值寄存器10中的基值向右移位(E-BIAS+1) 位位置的移位量,以生成四舍五入值R。在步骤72处,控制电路4确定正在使用哪种四舍五 入模式。如果四舍五入模式是RP或RNE,那么在步骤74处,控制电路4控制复用器16来 将由右移位器12生成的四舍五入值R提供给加和电路18,加和电路18将该四舍五入值R。
47、 加至有效位数1F。另一方面,如果四舍五入模式是RZ四舍五入模式,那么在步骤76处,控 制电路4控制复用器16通过将零值提供给加和器18来将该四舍五入值置零,其中,加和器 18将零值加至有效位数1F。由加和电路18执行的加和的结果作为和值来输出。 0082 同时,在步骤80处,控制电路4控制掩码生成电路20通过使用在步骤70处由右 移位器12生成的四舍五入值R来生成掩码。即使在RZ四舍五入模式的情形中,掩码生成 器20仍使用未置零状态的四舍五入值R。掩码生成器20生成在比该四舍五入值R的首非 零位的位置更有效的任意位位置采用位值1以及在任意剩余位位置采用位值0的掩码。由 于该四舍五入值R的首非。
48、零位在与该有效位数1.F的最高有效小数值位相对应的位位置, 因此,该掩码将在与该有效位数1.F的整数值位位置相对应处具有位值1,并且,在与该有 效位数1.F的小数值位位置相对应处具有位值0。 0083 在步骤82处,控制电路4检查该四舍五入模式是否是RNE四舍五入模式,并且检 查在步骤62处由右移位器14生成的状态标志L、G、S的值。如果该四舍五入模式不是RNE 四舍五入模式,L标志不等于0,G标志不等于1,或S标志不等于0,那么不需要修正该掩码, 因此,在步骤84处,控制电路4控制复用器24来将该未修正的掩码传递给AND门26。AND 门26将该掩码应用到由加和电路18产生的和。这清除了和的。
49、小数值位,以便生成整数有 效位数。该整数有效位数被置于输出寄存器30中,在该寄存器中该整数有效位数可以在执 行其他浮点操作时被处理电路2访问。 0084 另一方面,如果在步骤82处,确定RNE四舍五入模式正被使用,那么该掩码需要被 修正来保证在浮点值位于两个整数正中间的情形中时该值被四舍五入为偶数值。如果状态 标志具有值L0,G1,S0,那么,原始浮点值正好位于两个整数中间,并且向上四舍 五入该值将得到奇数值。因此,在这种情形中,该掩码在步骤86处被掩码修正电路22通过 将由掩码生成器20生成的掩码向左移位1位位置进行修正。这生成了这样的掩码,即在该 掩码中,除了小数值位位置,该有效位数的最低有效整数值位位置也与具有值0的掩码位 相对应。复用器24将修正的掩码提供给AND门26,AND门26将修正的掩码应用到由加和 电路18产生的和。这清除了和值的所有。