用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的裝置和方法
【專利摘要】處理電路被提供來執(zhí)行用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的操作FRINT。控制電路控制該處理電路來執(zhí)行FRINT操作,以響應(yīng)FRINT指令。該處理電路包括:移位電路,用于通過對(duì)基值移位來生成四舍五入值;加和電路,用于將該四舍五入值加至該浮點(diǎn)值的有效位數(shù)來生成和值;掩碼生成電路,用于生成用來清除該和值的小數(shù)值位的掩碼;以及掩蔽電路,用于將該掩碼應(yīng)用于該和值來生成整數(shù)浮點(diǎn)值。
【專利說明】用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域。更具體地,本發(fā)明涉及用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的裝置和方法。
[0002]現(xiàn)有技術(shù)說明
[0003]用于對(duì)浮點(diǎn)數(shù)執(zhí)行算術(shù)操作的處理器已為人所知。在浮點(diǎn)表示法中,通過使用有效位數(shù)1.F、指數(shù)E和符號(hào)位S來表示數(shù)。符號(hào)位S表示該浮點(diǎn)數(shù)是正數(shù)或負(fù)數(shù),有效位數(shù)
1.F表示該浮點(diǎn)數(shù)的有效數(shù)字,并且,指數(shù)E表示與該有效位數(shù)相關(guān)的小數(shù)點(diǎn)(也稱為二進(jìn)制小數(shù)點(diǎn))的位置。通過改變指數(shù)值,小數(shù)點(diǎn)可以在有效位數(shù)內(nèi)向左邊和右邊“浮動(dòng)”。這就是說對(duì)于預(yù)確定數(shù)目的位,浮點(diǎn)表示法可以比定點(diǎn)表示法(在該方法中,小數(shù)點(diǎn)在有效位數(shù)內(nèi)具有固定位置)表示更寬范圍的數(shù)。然而,額外的范圍是以減少的精度為代價(jià)獲得的,因?yàn)橐恍┪挥脕泶鎯?chǔ)指數(shù)。有時(shí),浮點(diǎn)算術(shù)操作生成比用于有效位數(shù)的位的數(shù)目具有更多有效位的結(jié)果。如果發(fā)生這種情況,那么該結(jié)果被四舍五入為可以使用可用數(shù)目的有效位來表不的值。
[0004]附圖的圖1顯示了浮點(diǎn)數(shù)如何被儲(chǔ)存在寄存器或存儲(chǔ)器內(nèi)。在單精度表示法中,使用32位來存儲(chǔ)浮點(diǎn)數(shù)。I位用作符號(hào)位S,8位用來存儲(chǔ)指數(shù)E,并且,23位用來存儲(chǔ)有效位數(shù)1.F的小數(shù)部分F。小數(shù)部分的23位隨同具有值I的隱含位一起組成24位有效位數(shù)1.F。首先假設(shè)小數(shù)點(diǎn)被放置于該有效位數(shù)的隱含位和23位存儲(chǔ)的位之間。所存儲(chǔ)的指數(shù)E通過固定值127進(jìn)行偏移,使得在所表示的浮點(diǎn)數(shù)中,如果E-127是負(fù)數(shù),那么小數(shù)點(diǎn)被從其初始位置向左移位E-127位(例如,如果E-127 = -2,那么1.01的有效位數(shù)表示
0.0101),或者,如果E-127是正數(shù),那么小數(shù)點(diǎn)被從其初始位置向右移位E-127位(例如,如果E-127 = 2,那么1.01的有效位數(shù)表示101)。該偏移用來使得對(duì)兩個(gè)浮點(diǎn)值的指數(shù)的比較更簡單,因?yàn)樾?shù)點(diǎn)的正移位和負(fù)移位均可以由所存儲(chǔ)的指數(shù)E的正值來表示。如圖1 所示,所存儲(chǔ)的表達(dá)式 S[31],E[30:23],F(xiàn)[22:0]表示具有值(_1)S*1.F[22:0]*2(E_127)的數(shù)。這種形式的單精度浮點(diǎn)數(shù)被認(rèn)為是“標(biāo)準(zhǔn)的”。如果計(jì)算的浮點(diǎn)值不是標(biāo)準(zhǔn)的(例如,該值已通過將小數(shù)點(diǎn)置于不是該有效位數(shù)的最左邊兩位之間的位置來生成),那么通過將有效位數(shù)向左或向右移位并相應(yīng)地調(diào)整指數(shù)直到該數(shù)為(_l)s*l.F[22:0]*2(e_127)的形式來將其標(biāo)準(zhǔn)化。
[0005]還提供了雙精度格式,在該格式中,采用64位存儲(chǔ)位來表示有效位數(shù)和指數(shù)。這64位存儲(chǔ)位包括I位符號(hào)位、11位指數(shù)以及53位有效位數(shù)1.F的52位小數(shù)部分F。在雙精度格式中,指數(shù)通過值1023進(jìn)行偏移。因此,在雙精度格式中,所存儲(chǔ)的表達(dá)式S [63],E[62:52],F(xiàn)[51:0]表示浮點(diǎn)值(_1)S*1.F[51:0]*2(?)。
[0006]在本申請(qǐng)中,一些示例將參照單精度浮點(diǎn)格式進(jìn)行解釋。然而,應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明還可以被應(yīng)用到雙精度格式(或任意其他浮點(diǎn)格式)中,并且,在后續(xù)的圖中顯示的位值可以由適合于正被使用的浮點(diǎn)格式的值進(jìn)行替換。
[0007]—種浮點(diǎn)操作為四舍五入為整數(shù)浮點(diǎn)操作(FRINT),這種操作將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值。例如,浮點(diǎn)值6.75可以被四舍五入為相鄰整數(shù)值6.0或7.0中的一個(gè)。本技術(shù)旨在減少與執(zhí)行FRINT操作相關(guān)聯(lián)的時(shí)延。
【發(fā)明內(nèi)容】
[0008]從一個(gè)方面看,本發(fā)明提供了一種數(shù)據(jù)處理裝置,包括:
[0009]處理電路,被配置來執(zhí)行用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的四舍五入為整數(shù)浮點(diǎn)操作,所述浮點(diǎn)值具有有效位數(shù)和指數(shù);以及
[0010]控制電路,被配置來控制所述處理電路,以執(zhí)行所述四舍五入為整數(shù)浮點(diǎn)操作來響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行;
[0011]所述處理電路包括:
[0012]移位電路,被配置來通過將基值移位移位量來生成四舍五入值,其中所述移位量依賴于所述浮點(diǎn)值的所述指數(shù);
[0013]加和電路,被配置來將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)以生成和值;
[0014]掩碼生成電路,被配置來生成用于清除所述和值的具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的位的掩碼;以及
[0015]掩蔽電路,被配置來將所述掩碼應(yīng)用于所述和值來生成所述整數(shù)浮點(diǎn)值。
[0016]通常在軟件中已實(shí)現(xiàn)了四舍五入為整數(shù)浮點(diǎn)操作(FRINT)。然而,本技術(shù)認(rèn)識(shí)到,由于每條指令需要被分開獲取、解碼并運(yùn)行,因此這種方法較慢。
[0017]通過提供用于在硬件中執(zhí)行FRINT操作的處理電路和用于控制該處理電路來執(zhí)行FRINT操作以響應(yīng)對(duì)單浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令(FRINT指令)的執(zhí)行的控制電路,F(xiàn)RINT操作可以比以前的軟件實(shí)現(xiàn)更快地被執(zhí)行。
[0018]本技術(shù)還認(rèn)識(shí)到,在典型的浮點(diǎn)硬件電路中,四舍五入被限制于發(fā)生在有效位數(shù)內(nèi)的預(yù)確定的固定位置處,通常是該有效位數(shù)的最低有效位。然而,如果四舍五入只能發(fā)生在該有效位數(shù)的最低有效位,那么在經(jīng)移位的值的最低有效位上執(zhí)行四舍五入之前,將需要將該有效位數(shù)向右移位來將該浮點(diǎn)值轉(zhuǎn)換為整數(shù)浮點(diǎn)值。然后,將需要通過將該四舍五入的值向左移位以將該值轉(zhuǎn)換回標(biāo)準(zhǔn)浮點(diǎn)格式來對(duì)該四舍五入的值進(jìn)行標(biāo)準(zhǔn)化。這樣的向左移位通常對(duì)于其他浮點(diǎn)操作來說不是必需的,因此,將用于執(zhí)行這樣向左移位的硬件增加至處理電路將給處理電路增加處理周期,使得該電路復(fù)雜并且減慢了大多數(shù)其他浮點(diǎn)操作的處理。
[0019]為了避免該問題,本技術(shù)提供了移位電路和加和電路,其中,移位電路通過將基值移位移位量來生成四舍五入值,其中,所述移位量依賴于所述將要被四舍五入的浮點(diǎn)值的指數(shù),所述加和電路用于將所生成的四舍五入值加至該浮點(diǎn)值的有效位數(shù)。在和值中余留的任意小數(shù)值位值可以通過將掩碼應(yīng)用到該和值來清除。由于所述移位被應(yīng)用來生成四舍五入值,因此,不需要對(duì)有效位數(shù)進(jìn)行移位,所以,由有效位數(shù)和經(jīng)移位的四舍五入值相加得到的和值是標(biāo)準(zhǔn)化的浮點(diǎn)值。不需要執(zhí)行后續(xù)的向左移位,因此,可以實(shí)現(xiàn)用于執(zhí)行該四舍五入為整數(shù)浮點(diǎn)操作的有效硬件機(jī)制。
[0020]應(yīng)當(dāng)認(rèn)識(shí)到,沒有必要對(duì)FRINT指令的所有運(yùn)行實(shí)例使用移位電路、加和電路、掩碼生成電路以及掩蔽電路??梢杂羞@樣的情形,即浮點(diǎn)值被四舍五入后的值使得四舍五入的結(jié)果可以不需要實(shí)際執(zhí)行移位、加和以及掩蔽就能容易地被確定。例如,如果將要被四舍五入的浮點(diǎn)值已經(jīng)是一個(gè)整數(shù),那么四舍五入將不影響其值,所以,輸入值可以直接被寫進(jìn)輸出寄存器。另外,如果該浮點(diǎn)值的量值小于1,那么,四舍五入的結(jié)果將是O或1,并且,這不需要對(duì)該四舍五入為整數(shù)浮點(diǎn)操作的完全執(zhí)行便可被確定。因此,控制電路可以逐條指令地確定是否有必要使用處理電路的完整四舍五入功能。
[0021]盡管通過使用等效的向左移位來構(gòu)建四舍五入值是可能的,但是對(duì)于移位電路來說,將基值向右移位來生成四舍五入值最為方便。
[0022]有效位數(shù)的位的數(shù)值是指數(shù)的功能。通常,這些位中的一些表示大于或等于1.0的值(整數(shù)值位),并且這些位中的一些表示小于1.0的值(小數(shù)值位)。
[0023]所述四舍五入值可以在與該浮點(diǎn)值的有效位數(shù)的最高有效小數(shù)值位的位位置相對(duì)應(yīng)的位位置處具有首非零位。所述有效位數(shù)的最高有效小數(shù)值位是表示值二分之一的位。將二分之一加至有效位數(shù)并清除和值中的任意小數(shù)值位是將浮點(diǎn)值四舍五入為最接近的整數(shù)的技術(shù)。其他四舍五入技術(shù)可以通過加上大于二分之一但是小于一的值來實(shí)現(xiàn)。在這兩個(gè)情形中,四舍五入值的首非零位處于最高有效小數(shù)值位位置。
[0024]基值可以具有這樣的最聞?dòng)行唬撟盥動(dòng)行痪哂蟹橇阒?。移位電路可以被配置來將基值向右移?E-BIAS+1)位位置的移位量,其中,E表示該浮點(diǎn)值的指數(shù),并且,BIAS表示該浮點(diǎn)值的指數(shù)偏移。該移位使得首非零位被移位至與值二分之一相對(duì)應(yīng)的最高有效小數(shù)值位位置。
[0025]掩蔽電路可以包括AND門,該AND門被配置來對(duì)和值和掩碼應(yīng)用按位AND操作。掩碼在與該有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置處的位可以具有位值0,而掩碼在與該有效位數(shù)的整數(shù)值位位置相對(duì)應(yīng)的位位置處的位可以具有位值I。通過這種方式,掩碼可以用來清除和值的小數(shù)值位,以生成整數(shù)浮點(diǎn)值。
[0026]盡管可以以多種方式生成掩碼(例如,通過移位掩碼基值),但是,基于四舍五入值來生成掩碼是很方便的。這可以避免執(zhí)行進(jìn)一步移位的需要。如上述討論,該四舍五入值的首非零位位于最高有效小數(shù)值位位置,并且,該位與掩碼中的首零位相對(duì)應(yīng)。因此,該四舍五入值可以被容易地轉(zhuǎn)換為掩碼。例如,該掩碼可以通過在比該四舍五入值的首非零位更有效的位位置處采用非零位值和在該掩碼剩余位位置處采用零位值來生成。
[0027]處理電路能夠?qū)嵤┢渌↑c(diǎn)操作以及FRINT操作。在一個(gè)示例中,控制電路可以控制該處理電路來執(zhí)行浮點(diǎn)加和操作來響應(yīng)對(duì)浮點(diǎn)加和指令的執(zhí)行。移位電路和加和電路可以用于加和操作和FRINT操作二者。通過對(duì)執(zhí)行FRINT操作和加和操作共享電路,可以減少電路面積。
[0028]浮點(diǎn)值位于兩個(gè)相鄰的整數(shù)值之間??梢詫?shí)施不同的規(guī)則來確定這兩個(gè)整數(shù)值中的哪一個(gè)應(yīng)該為四舍五入結(jié)果。因此,可在至少一種四舍五入模式中提供該處理電路,用于在FRINT操作期間選擇將該浮點(diǎn)值四舍五入為哪個(gè)整數(shù)。如果該處理電路具有多種四舍五入模式,那么FRINT指令可以指定哪種四舍五入模式應(yīng)該用于該FRINT操作。例如,不同指令操作碼可以用于控制每個(gè)不同F(xiàn)RINT操作,或者,具有單個(gè)操作碼的指令可以具有指定如下字段的四舍五入模式,該字段指定將使用哪種四舍五入模式。
[0029]例如,該處理電路可以具有遠(yuǎn)離零四舍五入(RU)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)相鄰整數(shù)中具有最大絕對(duì)量值的一個(gè)。例如,在RU四舍五入模式中,值2.25將被四舍五入為整數(shù)3.0,而值-2.25將被四舍五入為整數(shù)-3.0。[0030]在RU四舍五入模式中,基值的所有位可以具有非零位值(基值Oblllllll...或一的二進(jìn)制字符串)。當(dāng)該基值被移位來生成四舍五入值時(shí),對(duì)應(yīng)于使用十進(jìn)制算術(shù)時(shí)的十進(jìn)制值0.999...,該四舍五入值將在每個(gè)小數(shù)值位位置處具有非零位值。這意味著將該四舍五入值加至有效位數(shù)并使用掩碼清除和的小數(shù)值位將得到比該浮點(diǎn)值大的相鄰整數(shù)。例如,將0.999…加至值2.2上得到和3.1999…,并且清除小數(shù)值位得到經(jīng)準(zhǔn)確四舍五入的整數(shù)浮點(diǎn)值3.0。如果對(duì)已經(jīng)是整數(shù)的值執(zhí)行四舍五入為整數(shù)浮點(diǎn)操作,那么加0.999…不改變?cè)摳↑c(diǎn)值的整數(shù)值位,因此,掩蔽該和的小數(shù)值位得到原始整數(shù)浮點(diǎn)值。
[0031]另一種四舍五入模式可以是四舍五入為最接近、靠近偶數(shù)(RNE)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)相鄰的整數(shù)浮點(diǎn)值中最接近的,同時(shí)將位于兩個(gè)整數(shù)浮點(diǎn)值正中間的浮 點(diǎn)值四舍五入為這兩個(gè)整數(shù)浮點(diǎn)值中的偶數(shù)值。例如,值2.9將被四舍五入為最接近的整數(shù)浮點(diǎn)值3.0,而值3.5和4.5都將被四舍五入為最接近的偶數(shù)整數(shù)浮點(diǎn)值
4.0。這種模式可以用來防止趨向更高整數(shù)的四舍五入偏差,如果位于兩個(gè)整數(shù)正中間的值總被向上四舍五入,那么上述情況可能會(huì)發(fā)生。
[0032]在本技術(shù)中可以通過提供基值來實(shí)現(xiàn)RNE四舍五入模式,其中,所述基值具有為非零位值的最高有效位和為零位值的剩余位(即,基值OblOOO…)。因此,當(dāng)該基值被移位來生成四舍五入值時(shí),該基值具有值二分之一。通過將二分之一加至有效位數(shù)并清除任何小數(shù)值位,該有效位數(shù)被四舍五入為最接近的整數(shù)浮點(diǎn)值。例如,將二分之一加至值2.3則產(chǎn)生和2.8,并且清除小數(shù)值位得到四舍五入的值2.0。另一方面,將二分之一加至值2.9得到和3.4,并且然后清除小數(shù)值位給出四舍五入的整數(shù)浮點(diǎn)值3.0,這是離2.9最近的整數(shù)。
[0033]在RNE四舍五入模式中,如果增加二分之一將導(dǎo)致奇數(shù)值(如果浮點(diǎn)值位于兩個(gè)整數(shù)值的正中間,并且其有效位數(shù)的最低有效整數(shù)值位有零位值,那么這種情況將會(huì)發(fā)生),那么結(jié)果值被修正來產(chǎn)生偶數(shù)值。本技術(shù)通過修正掩碼以使得將該掩碼應(yīng)用到有效位數(shù)和四舍五入值的和將清除和值的具有與該有效位數(shù)的最低有效整數(shù)值位相對(duì)應(yīng)的位位置的位,提供了保證偶數(shù)結(jié)果的方便的方法。例如,可以將掩碼向左移位一個(gè)位位置,以便現(xiàn)在有與最低有效整數(shù)值位位置相對(duì)應(yīng)的非零位值。這保證了當(dāng)掩碼被應(yīng)用于和值時(shí),最低有效位將被清除來生成偶數(shù)值。
[0034]另一種四舍五入模式可以是四舍五入至零(RZ)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)相鄰整數(shù)浮點(diǎn)值中具有最小絕對(duì)量值的一個(gè)。該四舍五入模式等同于對(duì)該浮點(diǎn)值的截?cái)?,以便在保留現(xiàn)有整數(shù)值位的同時(shí)丟棄任何小數(shù)值位。
[0035]由于在使用RZ四舍五入模式進(jìn)行四舍五入時(shí)浮點(diǎn)值的整數(shù)部分保持不變,因此,不需要將四舍五入常量加至該有效位數(shù)的整數(shù)值部分。然而,本技術(shù)認(rèn)識(shí)到,與其他四舍五入模式相比,如果相同的電路用來執(zhí)行RZ四舍五入模式,那么可以更有效地實(shí)現(xiàn)FRINT操作。因此,對(duì)于RZ四舍五入模式,四舍五入值仍可以被計(jì)算,并且,在生成該四舍五入值之后,在將置零的四舍五入值加至有效位數(shù)上來生成和值之前,該四舍五入值的所有位可以被置為零。未置零的四舍五入值對(duì)于RZ四舍五入模式中的加和來說雖然不是必需的,但是對(duì)計(jì)算四舍五入值以允許生成掩碼來說仍是有用的。
[0036]從另一個(gè)方面看,本發(fā)明提供了非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)用于控制計(jì)算機(jī)以提供與上述描述的數(shù)據(jù)處理裝置相對(duì)應(yīng)的虛擬機(jī)運(yùn)行環(huán)境的計(jì)算機(jī)程序。因此,該計(jì)算機(jī)實(shí)際上不需要具備上述描述的處理電路,但可以運(yùn)行用于提供運(yùn)行環(huán)境的虛擬機(jī)程序,所述運(yùn)行環(huán)境用于運(yùn)行程序指令使得這些指令如同正在實(shí)際電路上被運(yùn)行。
[0037]從另一個(gè)方面看,本發(fā)明可以提供一種數(shù)據(jù)處理裝置,包括:
[0038]處理裝置,用于執(zhí)行四舍五入為整數(shù)浮點(diǎn)操作,所述操作用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值,所述浮點(diǎn)值具有有效位數(shù)和指數(shù);以及
[0039]控制裝置,用于控制所述處理裝置以執(zhí)行所述四舍五入為整數(shù)浮點(diǎn)操作來響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行;
[0040]所述處理裝置包括:
[0041]移位裝置,用于通過對(duì)基值移位移位量來生成四舍五入值,所述移位量依賴于所述浮點(diǎn)值的所述指數(shù);
[0042]加和裝置,用于將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)來生成和值;
[0043]掩碼生成裝置,用于生成掩碼,所述掩碼用于清除具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的所述和值的位;以及
[0044]掩蔽裝置,用于將所述掩碼應(yīng)用到所述和值以生成所述整數(shù)浮點(diǎn)值。
[0045]從又一方面來看,本發(fā)明可以提供一種執(zhí)行四舍五入為整數(shù)浮點(diǎn)操作的方法,所述操作用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值,所述浮點(diǎn)值包括有效位數(shù)和指數(shù),所述方法包括以下步驟:
[0046]通過將基值移位移位量來生成四舍五入值,所述移位量依賴于所述浮點(diǎn)值的所述指數(shù);
[0047]將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)以生成和值;
[0048]生成用于清除所述和值的具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的位的掩碼;并且
[0049]將所述掩碼應(yīng)用到所述和值以生成所述整數(shù)浮點(diǎn)值;
[0050]其中,所述方法由處理電路執(zhí)行,以響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行。
[0051]本發(fā)明更具體的和優(yōu)選的方面在附隨的獨(dú)立權(quán)利要求和從屬權(quán)利要求中陳述。這些從屬權(quán)利要求的特征可以在適當(dāng)時(shí)結(jié)合這些獨(dú)立權(quán)利要求的特征,并且是以結(jié)合的方式,而不是在權(quán)利要求中直接陳述的。
[0052]以上描述,以及本發(fā)明的其他目的、特征和優(yōu)點(diǎn)將從對(duì)下述示例性實(shí)施例的詳細(xì)說明中變得顯而易見,結(jié)合附圖來閱讀這些實(shí)施例。
【專利附圖】
【附圖說明】
[0053]圖1示出了浮點(diǎn)數(shù)表示法;
[0054]圖2示出了用于執(zhí)行FRINT操作的處理電路;
[0055]圖3示出了執(zhí)行FRINT指令的方法;
[0056]圖4示出了當(dāng)對(duì)浮點(diǎn)值進(jìn)行移位時(shí)計(jì)算狀態(tài)標(biāo)志的示例;
[0057]圖5示出了用于執(zhí)行浮點(diǎn)操作的處理管線的一部分;
[0058]圖6示出了使用本技術(shù)的RU四舍五入的示例;
[0059]圖7示出了 RNE四舍五入的示例;[0060]圖8示出了 RZ四舍五入的示例;以及
[0061]圖9示出了虛擬機(jī)實(shí)現(xiàn)的示例。
【具體實(shí)施方式】
[0062]圖2示意性地示出了具有用于執(zhí)行FRINT操作的處理電路2的處理裝置的一部分,所述FRINT操作用于將具有有效位數(shù)1.F和指數(shù)E的浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值??刂齐娐?被提供來控制該處理電路以執(zhí)行FRINT操作??刂齐娐?響應(yīng)于對(duì)FRINT指令的執(zhí)行來生成用于控制處理電路2的各種元素來執(zhí)行FRINT操作的控制信號(hào)。應(yīng)該認(rèn)識(shí)到,處理電路2可以包括其他元素,而不是這些示出的,并且示出的用于執(zhí)行FRINT操作的元素是示意性的,以便可以使用其他硬件來完成同樣的操作。
[0063]處理電路2包括:寄存器8,用于存儲(chǔ)要被四舍五入的浮點(diǎn)值的有效位數(shù)1.F ;以及寄存器10,用于存儲(chǔ)用來構(gòu)建四舍五入常量的基值。處理電路2還包括:右移位器12,用于將基值B向右移位;以及右移位器14,用于將有效位數(shù)1.F向右移位來生成狀態(tài)標(biāo)志L、G、S。復(fù)用器16被安排來選擇由右移位器12生成的四舍五入值或零值,并且加和器18被提供來將復(fù)用器16的輸出加至未移位的有效位數(shù)1.F來生成和值。
[0064]掩碼生成電路20也被提供來基于由右移位器12生成的四舍五入值來生成掩碼,并且,掩碼修正電路22被提供來修正該掩碼以生成修正的掩碼(掩碼’)。另外的復(fù)用器24選擇由掩碼生成電路20生成的掩碼,或選擇由掩碼修正電路22生成的修正的掩碼。包括AND門26的掩蔽電路被提供來將所選的掩碼應(yīng)用到由加和器18生成的和值。AND門26的輸出是整數(shù)浮點(diǎn)值,該整數(shù)浮點(diǎn)值被置于輸出寄存器30中。
[0065]圖3示出了使用圖2中所示的處理電路2執(zhí)行FRINT指令的方法。在步驟50處,控制電路4確定當(dāng)前所執(zhí)行的指令是否為FRINT指令。如果是,那么在步驟52處,控制電路4確定(E-BIAS+1)的值,其中,E是正被四舍五入的浮點(diǎn)值的指數(shù),并且,BIAS是指數(shù)偏移(例如,127用于單精度浮點(diǎn)值)。
[0066]如果(E-BIAS+1)的值大于N,其中,N是非隱含的有效位數(shù)位F的數(shù)目(也就是說,不包括有效位數(shù)1.F的隱含位I),那么要被四舍五入的值已經(jīng)是整數(shù)。在這種情形中,在步驟54處,控制電路4控制處理電路2來輸出未改變的浮點(diǎn)值的有效位數(shù)。
[0067]替換地,如果在步驟52處(E-BIAS+1)的值小于或等于零,那么要被四舍五入的值的量值位于O和I之間,因此,四舍五入的結(jié)果將為O或I。在這種情形中,在步驟56處,控制電路4可以控制處理電路2來生成四舍五入的結(jié)果。在這種情況中,該四舍五入的結(jié)果可以基于該有效位數(shù)和當(dāng)前四舍五入模式來直接計(jì)算,不需要激活處理電路2完整的加和及掩蔽功能。
[0068]在另一方面,如果(E-BIAS+1)的值大于零且小于或等于N,那么在步驟60處,右移位器14將有效位數(shù)1.F(包括隱含位I)向右移位(N-(E-BIAS))位位置。這將該有效位數(shù)轉(zhuǎn)換成整數(shù)值,以允許在步驟62處對(duì)狀態(tài)標(biāo)志L、G、S進(jìn)行計(jì)算。狀態(tài)標(biāo)志L、G、S提供關(guān)于該浮點(diǎn)值是偶數(shù)還是奇數(shù)、以及該浮點(diǎn)值是否位于兩個(gè)整數(shù)值正中間的信息。舉例來說,這對(duì)于在RNE四舍五入模式中確定值是應(yīng)該向上還是向下四舍五入很有用。
[0069]圖4示出了可以在步驟60和62處生成狀態(tài)標(biāo)志的方式的示例。當(dāng)該浮點(diǎn)值的有效位數(shù)被轉(zhuǎn)換成整數(shù)(在圖4的示例中,通過向右移位8位位置),“最低”狀態(tài)標(biāo)志L采用經(jīng)移位的值的最低有效位的值,這與原始有效位數(shù)中的最低有效整數(shù)值位相對(duì)應(yīng)。L標(biāo)志指示該浮點(diǎn)值是偶數(shù)(如果L = O)還是奇數(shù)(如果L = I)。
[0070]“保衛(wèi)”標(biāo)志G采用從經(jīng)移位的結(jié)果移位出I位位置的位的值,這與原始有效位數(shù)的最高有效小數(shù)值位相對(duì)應(yīng)。也就是說,如果該有效位數(shù)將要被轉(zhuǎn)換為整數(shù),那么該位將由于向右移位而丟失,但是保衛(wèi)標(biāo)志G保留了該位的值來指示原始有效位數(shù)的小數(shù)值部分是位于O和0.4999…之間(如果G = O)還是位于0.5和0.9999…之間(如果G = I)。
[0071]如果除了該有效位數(shù)的最高有效小數(shù)值位的任意小數(shù)值位具有值1,那么“粘性”標(biāo)志S采用值I。因此,粘性標(biāo)志S等同于非最高有效小數(shù)值位的小數(shù)值位的OR組合。實(shí)際上,S標(biāo)志可以通過如下方式來計(jì)算:如果在對(duì)該有效位數(shù)向右移位時(shí),在移位結(jié)果中移經(jīng)S標(biāo)志位置的任意位具有值1,那么將該標(biāo)志設(shè)為1,并且之后不管任何進(jìn)一步移位出的位的值如何都保持值I。S標(biāo)志指示該浮點(diǎn)值是否正好位于整數(shù)值或半整數(shù)值(如果S =O),或者該浮點(diǎn)值是否位于該整數(shù)和半整數(shù)值之間(如果S = I)。
[0072]應(yīng)該認(rèn) 識(shí)到,為了計(jì)算L、G、S標(biāo)志,該有效位數(shù)在步驟60處被向右移位。該向右移位的有效位數(shù)不用于剩余的FRINT操作。
[0073]同時(shí)在步驟64處,控制電路4確定哪種四舍五入模式將用于該四舍五入為整數(shù)浮點(diǎn)操作。每種四舍五入模式可以提供用于為位于兩個(gè)相鄰的整數(shù)浮點(diǎn)值之間的浮點(diǎn)值確定該浮點(diǎn)值要被四舍五入為哪個(gè)整數(shù)浮點(diǎn)值的不同規(guī)則。例如,處理電路2可以提供以下四舍五入模式中的任意一種或多種;
[0074]?遠(yuǎn)離零四舍五入(RU)四舍五入模式。在RU四舍五入模式中,位于兩個(gè)整數(shù)浮點(diǎn)值之間的浮點(diǎn)值被四舍五入為這兩個(gè)整數(shù)浮點(diǎn)值中具有最大絕對(duì)量值的一個(gè)。例如,在RU四舍五入模式中,值2.9將被四舍五入為整數(shù)3.0,并且,值-3.2將被四舍五入為值-4.0。
[0075].四舍五入為最接近、靠近偶數(shù)(RNE)四舍五入模式,該模式用于將浮點(diǎn)值四舍五入為兩個(gè)相鄰的整數(shù)浮點(diǎn)值中最接近的,同時(shí),位于兩個(gè)整數(shù)浮點(diǎn)值正中間的浮點(diǎn)值被四舍五入為這些整數(shù)浮點(diǎn)值中為偶數(shù)值的那個(gè)。例如,值2.9將被四舍五入為整數(shù)3.0,而值
2.5將被四舍五入為最接近的偶數(shù)整數(shù)值2.0。
[0076].四舍五入至零(RZ)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)整數(shù)浮點(diǎn)值中具有最小絕對(duì)量值的一個(gè)。例如,值2.3和值-2.8將分別被四舍五入為整數(shù)值2.0和-2.0。
[0077].四舍五入為正無窮大(RP)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)整數(shù)浮點(diǎn)值中最靠近正無窮大的一個(gè)。例如,值2.2將被四舍五入為整數(shù)值3.0,并且,值-2.4將被四舍五入為整數(shù)值-2.0。
[0078].四舍五入為負(fù)無窮大(RM)四舍五入模式,用于將浮點(diǎn)值四舍五入為兩個(gè)相鄰整數(shù)浮點(diǎn)值中最靠近負(fù)無窮大的一個(gè)。例如,值3.2將被四舍五入為整數(shù)值3.0,并且,值-6.9將被四舍五入為整數(shù)值-7.0。
[0079]本說明書的剩余部分將只對(duì)RU、RZ和RNE四舍五入模式進(jìn)行描述。這是因?yàn)镽P和RM四舍五入模式可以通過采用針對(duì)其他四舍五入模式的處理來實(shí)現(xiàn)。RP四舍五入模式可以通過使用RU四舍五入模式(如果要被四舍五入的浮點(diǎn)值是正數(shù))和RZ四舍五入模式(如果要被四舍五入的浮點(diǎn)值是負(fù)數(shù))來實(shí)現(xiàn)。相反地,RM四舍五入模式可以通過執(zhí)行RZ四舍五入模式(如果要被四舍五入的浮點(diǎn)值是正數(shù))和RU四舍五入模式(如果要被四舍五入的浮點(diǎn)值是負(fù)數(shù))來實(shí)現(xiàn)。該浮點(diǎn)值的符號(hào)位可以用來針對(duì)RP和RM的情形選擇使用RU還是RZ四舍五入。因此,對(duì)RU和RZ四舍五入的稍后參照還隱含地描述了 RP和RM四舍五入的特征。
[0080]因此,在步驟64處確定四舍五入模式。例如,控制電路4可以基于FRINT指令的操作碼或基于在指定哪種四舍五入模式應(yīng)被使用的指令內(nèi)的字段來做這件事。替換地,如果處理電路僅支持一種四舍五入模式,那么使用該種四舍五入模式。RP或RM四舍五入模式可以通過基于要被四舍五入的值的符號(hào)位選擇RU和RZ四舍五入模式中合適的一種而被使用。如果要使用的四舍五入模式是RU,那么在步驟66處,控制電路4控制處理電路2將基值Obllllllll…存儲(chǔ)在基值寄存器10中。另一方面,如果四舍五入模式是RZ或RNE四舍五入模式,那么在步驟68處,控制電路4控制處理電路2來將基值OblOOOOOOO…載入基值寄存器10中。
[0081]在步驟70處,右移位器12將存儲(chǔ)于基值寄存器10中的基值向右移位(E-BIAS+1)位位置的移位量,以生成四舍五入值R。在步驟72處,控制電路4確定正在使用哪種四舍五入模式。如果四舍五入模式是RP或RNE,那么在步驟74處,控制電路4控制復(fù)用器16來將由右移位器12生成的四舍五入值R提供給加和電路18,加和電路18將該四舍五入值R加至有效位數(shù)1F。另一方面,如果四舍五入模式是RZ四舍五入模式,那么在步驟76處,控制電路4控制復(fù)用器16通過將零值提供給加和器18來將該四舍五入值置零,其中,加和器18將零值加至有效位數(shù)1F。由加和電路18執(zhí)行的加和的結(jié)果作為和值來輸出。 [0082]同時(shí),在步驟80處,控制電路4控制掩碼生成電路20通過使用在步驟70處由右移位器12生成的四舍五入值R來生成掩碼。即使在RZ四舍五入模式的情形中,掩碼生成器20仍使用未置零狀態(tài)的四舍五入值R。掩碼生成器20生成在比該四舍五入值R的首非零位的位置更有效的任意位位置采用位值I以及在任意剩余位位置采用位值O的掩碼。由于該四舍五入值R的首非零位在與該有效位數(shù)1.F的最高有效小數(shù)值位相對(duì)應(yīng)的位位置,因此,該掩碼將在與該有效位數(shù)1.F的整數(shù)值位位置相對(duì)應(yīng)處具有位值I,并且,在與該有效位數(shù)1.F的小數(shù)值位位置相對(duì)應(yīng)處具有位值O。
[0083]在步驟82處,控制電路4檢查該四舍五入模式是否是RNE四舍五入模式,并且檢查在步驟62處由右移位器14生成的狀態(tài)標(biāo)志L、G、S的值。如果該四舍五入模式不是RNE四舍五入模式,L標(biāo)志不等于0,G標(biāo)志不等于I,或S標(biāo)志不等于0,那么不需要修正該掩碼,因此,在步驟84處,控制電路4控制復(fù)用器24來將該未修正的掩碼傳遞給AND門26。AND門26將該掩碼應(yīng)用到由加和電路18產(chǎn)生的和。這清除了和的小數(shù)值位,以便生成整數(shù)有效位數(shù)。該整數(shù)有效位數(shù)被置于輸出寄存器30中,在該寄存器中該整數(shù)有效位數(shù)可以在執(zhí)行其他浮點(diǎn)操作時(shí)被處理電路2訪問。
[0084]另一方面,如果在步驟82處,確定RNE四舍五入模式正被使用,那么該掩碼需要被修正來保證在浮點(diǎn)值位于兩個(gè)整數(shù)正中間的情形中時(shí)該值被四舍五入為偶數(shù)值。如果狀態(tài)標(biāo)志具有值L = O, G= I, S = 0,那么,原始浮點(diǎn)值正好位于兩個(gè)整數(shù)中間,并且向上四舍五入該值將得到奇數(shù)值。因此,在這種情形中,該掩碼在步驟86處被掩碼修正電路22通過將由掩碼生成器20生成的掩碼向左移位I位位置進(jìn)行修正。這生成了這樣的掩碼,即在該掩碼中,除了小數(shù)值位位置,該有效位數(shù)的最低有效整數(shù)值位位置也與具有值O的掩碼位相對(duì)應(yīng)。復(fù)用器24將修正的掩碼提供給AND門26,AND門26將修正的掩碼應(yīng)用到由加和電路18產(chǎn)生的和。這清除了和值的所有小數(shù)值位,并且還清除了最低有效整數(shù)值位來保證按照RNE四舍五入模式的要求,四舍五入的整數(shù)浮點(diǎn)值是偶數(shù)值。該結(jié)果然后被置于輸出寄存器30中。
[0085]因此,如圖2和圖3所示,該四舍五入為整數(shù)浮點(diǎn)操作的不同四舍五入模式可以在硬件中實(shí)現(xiàn),并且從而可以比軟件實(shí)現(xiàn)更快地執(zhí)行,其中,軟件實(shí)現(xiàn)使用多條指令來執(zhí)行操作的不同階段。而且,由于該四舍五入為整數(shù)浮點(diǎn)操作的加和和掩蔽部分在原始的有效位數(shù)而不是在經(jīng)位移的有效位數(shù)上執(zhí)行,因此,由AND門26產(chǎn)生的結(jié)果已經(jīng)是標(biāo)準(zhǔn)化的,所以不需要執(zhí)行進(jìn)一步向左位移來將該浮點(diǎn)值標(biāo)準(zhǔn)化。因此,不需要將左移位器增加至處理管線的末端,從而允許使用處理電路2對(duì)浮點(diǎn)操作進(jìn)行更快速處理。
[0086]用于執(zhí)行FRINT操作的電路可以至少部分地與用于執(zhí)行其他浮點(diǎn)操作的電路共享。圖5示出了用于執(zhí)行浮點(diǎn)加和操作的處理電路的示例。當(dāng)執(zhí)行加和操作時(shí),兩個(gè)要被相加的浮點(diǎn)值被置于處理電路2的階段El中的寄存器opa和opb中。在階段E3處,這兩個(gè)操作數(shù)中的一個(gè)可以被移位依賴于這兩個(gè)值的指數(shù)間的區(qū)別的移位量,以將每個(gè)操作數(shù)中具有同樣有效性的位值對(duì)齊。在步驟E4處,經(jīng)對(duì)齊的值然后被相加以生成和值。
[0087]圖5中顯示的處理電路2中的一些可以再用于執(zhí)行FRINT操作??梢詫⒁凰纳嵛迦氲挠行粩?shù)置于與圖2的寄存器8相對(duì)應(yīng)的寄存器opa中,并且可以將基值B置于與圖2的寄存器10相對(duì)應(yīng)的寄存器opb中。圖2中顯示的右移位器12可以然后通過使用圖5處理電路2的階段E3中的右移位器來實(shí)現(xiàn)。此外,圖2的加和器18可以通過使用圖5的階段E4顯示的加和器來實(shí)現(xiàn)。在該示例中,圖2的掩碼生成和修正電路20、22,AND門26,以及右移位器14不與該加和電路共享,因此,除了圖5中顯示的加和電路外,這些也將被提供。通過在可能時(shí) 對(duì)不同處理操作共享電路,可以減少能耗和電路面積。
[0088]因此,當(dāng)執(zhí)行FRINT操作時(shí),該有效位數(shù)和基值可以在階段El和E2被輸入到電路。在階段E3處,四舍五入值可以使用右移位器12從該基值進(jìn)行構(gòu)建。在階段E4處,可以將該有效位數(shù)和四舍五入值相加來生成和值。如圖2中所示,將通過電路20、22、24、26生成掩碼并將其應(yīng)用到和值。
[0089]從圖5中將看到,處理電路的階段E4實(shí)際上產(chǎn)生該有效位數(shù)和該四舍五入值的兩個(gè)和值。這可能是針對(duì)浮點(diǎn)加和操作和FRINT操作二者的情形。兩個(gè)和值在四舍五入在和值被標(biāo)準(zhǔn)化時(shí)導(dǎo)致指數(shù)增加的情形中被計(jì)算。通過對(duì)指數(shù)的兩個(gè)可能的結(jié)果計(jì)算兩個(gè)和值,并且然后選出是正確結(jié)果的那個(gè)和值,不需要在階段E4之后對(duì)該結(jié)果值進(jìn)行標(biāo)準(zhǔn)化,因此,可以減少執(zhí)行該操作所需的處理周期數(shù)。
[0090]圖6顯示了使用本技術(shù)執(zhí)行RU四舍五入的示例。例如,四舍五入為整數(shù)浮點(diǎn)(FRINT)指令被執(zhí)行來對(duì)浮點(diǎn)值2.25執(zhí)行RU四舍五入,以給出整數(shù)浮點(diǎn)結(jié)果3.0。等于
2.25的該浮點(diǎn)值的存儲(chǔ)格式如圖6中所示。包括隱含位,該有效位數(shù)1.F為OblOOlOOOO…。由于RU四舍五入模式正被使用,因此,基值B被設(shè)置為OblllllllL...。由于L、G和S標(biāo)志與RU四舍五入模式不相關(guān),因此,對(duì)這些標(biāo)志的計(jì)算沒有在圖6中示出,盡管應(yīng)當(dāng)認(rèn)識(shí)到:即使實(shí)際上對(duì)于該四舍五入為整數(shù)浮點(diǎn)操作來說不需要這些標(biāo)志,但是仍可以計(jì)算這些標(biāo)
O
[0091]指數(shù)E是128,指數(shù)偏移是127,因此E-BIAS+1 = 2。因此,基值B被向右移位了 2位位置,以生成四舍五入值RObOOllllll...,如圖6中所示。該四舍五入值然后通過掩碼生成電路20被轉(zhuǎn)換為掩碼以得到掩碼Obl 1000000...,即該四舍五入值R中的首非零位左邊的位值具有值I并且其他位具有值O。加和電路18然后將有效位數(shù)1.F加至四舍五入值R來生成和值Obl 1001111…。然后將該掩碼應(yīng)用到該和值來清除所有小數(shù)值位,得到結(jié)果ObllOOOOOO…。然后在四舍五入的有效位數(shù)中隱含的I被刪除,并且,該有效位數(shù)的剩余部分(OblOOOO…)被存儲(chǔ)在輸出寄存器30中。如圖6的底部所示,該值與整數(shù)浮點(diǎn)值3.0相對(duì)應(yīng),該整數(shù)浮點(diǎn)值是RU四舍五入的正確四舍五入結(jié)果。
[0092]圖7顯示了使用本技術(shù)執(zhí)行RNE FRINT的示例。在該示例中,F(xiàn)RINT被應(yīng)用到值6.5。由于RNE四舍五入正被使用,并且該值介于兩個(gè)整數(shù)正中間,因此,該值被四舍五入為最接近的偶數(shù)值(整數(shù)值6.0)。所存儲(chǔ)的浮點(diǎn)值6.5的表達(dá)式在圖7的頂部示出。將該隱含的I位與所存儲(chǔ)的有效位數(shù)相結(jié)合來生成圖7中所示的有效位數(shù)1.F0bll010000-o指數(shù)E是129,指數(shù)偏移BIAS是127,并且該有效位數(shù)明確指示的位(不包括隱含的I位)的數(shù)目 N 是 23。因此,E-BIAS+1 = 3,并且,N-(E-BIAS) =21。
[0093]在RNE四舍五入中,需要狀態(tài)標(biāo)志L、G、S來確定該掩碼是否需要被修正來得到偶數(shù)值。因此,對(duì)L、G和S標(biāo)志的計(jì)算在圖7中示出。由于N-(E-BIAS) = 21,因此右移位器14將有效位數(shù)1.F向右移位21位位置來將該有效位數(shù)轉(zhuǎn)換為整數(shù)值。然后如圖4中所示的計(jì)算L、G、S標(biāo)志以得到L = O, G = I, S = O,如圖7所示。這表明原始有效位數(shù)的整數(shù)值位具有偶數(shù)值,并且小數(shù)值位具有剛好二分之一的值。
[0094]由于正在執(zhí)行RNE四舍五入,因此,基值B為OblOOOOOOO…。由于E-BIAS+1 = 3,因此,右移位器12將基值B向右移位3位位置來得到四舍五入值RObOOOlOOO0...。掩碼生成器20將該四舍五入值R轉(zhuǎn)換為掩碼OblllOOOOO0...。由于正在使用RNE四舍五入,并且L = O,G =1,S = 0,因此,需要修正掩碼來保證偶數(shù)四舍五入結(jié)果。掩碼修正電路22因而將該掩碼向左移位I位位置來得到修正的掩碼Obl 1000000…。
[0095]同時(shí),加和電路18將未位移的有效位數(shù)1.F加至四舍五入值R來生成和Obl 1100000…。然后將該修正的掩碼應(yīng)用到該和來生成四舍五入的有效位數(shù)ObllOOOOO0...,在該有效位數(shù)中,小數(shù)值位和最低有效整數(shù)值位均已被清除。首I然后被刪除,并且剩余位被作為F存儲(chǔ)在輸出寄存器30中。如圖7底部所示,所存儲(chǔ)的四舍五入的值與正確的四舍五入的值6.0相對(duì)應(yīng)。
[0096]圖8顯示了使用RZ四舍五入來將值6.75四舍五入為整數(shù)值6.0的示例,其中,整數(shù)值6.0是離零最近的相鄰整數(shù)。使用圖8頂部所示的編碼來將值6.75表示為浮點(diǎn)的形式。包括隱含的首I位,有效位1.F為ObllOllOOO…。指數(shù)E = 129,指數(shù)偏移BIAS =127,因此,E-BIAS+1 = 3。再一次沒有示出對(duì)L、G和S標(biāo)志的計(jì)算,因?yàn)檫@對(duì)于RZ四舍五入來說不需要,但是應(yīng)當(dāng)認(rèn)識(shí)到,處理電路2仍可以計(jì)算這些標(biāo)志。
[0097] 由于使用RZ四舍五入,基值BOblOOOOOO0...被載入基值寄存器10中。應(yīng)當(dāng)認(rèn)識(shí)到,如要需要,任何其他具有首非零位的基值(例如,Obllllllll…或OblOlOlOlO…)也可以用于RZ四舍五入,這是因?yàn)閷?duì)于RZ四舍五入,四舍五入值在將其加至有效位數(shù)之前將被置零,因此,為了生成正確的掩碼,重要的是該基值的首位具有值I?;礏被向右移位3位位置來生成四舍五入值0b00010000…。掩碼生成電路20使用四舍五入值R來生成用于清除和值小數(shù)值位的掩碼Obl1100000…。
[0098]由于正在使用RZ四舍五入,在將置零的四舍五入值加至有效位數(shù)1.F之前,四舍五入值R通過復(fù)用器16來置零。因此,有效位數(shù)1.F在和值中保持不變。然后由掩碼生成器20生成的掩碼被應(yīng)用到和值來生成四舍五入的整數(shù)浮點(diǎn)值。該有效位數(shù)的首位被刪除,并且,該有效位數(shù)的剩余部分被存儲(chǔ)于寄存器30中。如圖8的底部所示,該四舍五入的值的表達(dá)式與正確的整數(shù)值6.0相對(duì)應(yīng)。
[0099]圖9示出了可以用在一些實(shí)施例中的虛擬機(jī)實(shí)現(xiàn)。雖然在較早描述的實(shí)施例在用于操作支持有關(guān)技術(shù)的具體處理硬件的裝置和方法方面實(shí)現(xiàn)了本技術(shù),但是還可能提供所謂的硬件設(shè)備的虛擬機(jī)實(shí)現(xiàn)。這些虛擬機(jī)實(shí)現(xiàn)在主處理器106上運(yùn)行,該主機(jī)處理器通常運(yùn)行支持虛擬機(jī)程序102的主操作系統(tǒng)104。通常,需要大功率處理器來提供以合理速度執(zhí)行的虛擬機(jī)實(shí)現(xiàn),但是這樣的方法在某些環(huán)境中是合理的,例如,當(dāng)由于兼容性或再利用的原因,有運(yùn)行對(duì)于另一個(gè)處理器來說是本地的代碼的需要時(shí)。虛擬機(jī)程序102能夠運(yùn)行應(yīng)用程序(或操作系統(tǒng))100來給出與通過真實(shí)的硬件設(shè)備對(duì)程序的運(yùn)行將給出的結(jié)果相同的結(jié)果。因此,可以使用虛擬機(jī)程序102從應(yīng)用程序100內(nèi)運(yùn)行程序指令。
[0100]盡管本文參照附圖詳細(xì)描述了本發(fā)明的說明性的實(shí)施例,但是應(yīng)當(dāng)明白,本發(fā)明不限制于這些精確的實(shí)施例,并且本領(lǐng)域的技術(shù)人員可以在不背離由所附權(quán)利要求書所定義的本發(fā)明的范圍和精神的情況下對(duì)其實(shí)施各種變化和修改。
【權(quán)利要求】
1. 一種數(shù)據(jù)處理裝置,包括: 處理電路,被配置來執(zhí)行用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值的四舍五入為整數(shù)浮點(diǎn)操作,所述浮點(diǎn)值具有有效位數(shù)和指數(shù);以及 控制電路,被配置來控制所述處理電路,以執(zhí)行所述四舍五入為整數(shù)浮點(diǎn)操作來響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行; 所述處理電路包括: 移位電路,被配置來通過將基值移位移位量來生成四舍五入值,其中所述移位量依賴于所述浮點(diǎn)值的所述指數(shù); 加和電路,被配置來將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)以生成和值; 掩碼生成電路,被配置來生成用于清除所述和值的具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的位的掩碼;以及 掩蔽電路,被配置來將所述掩碼應(yīng)用于所述和值來生成所述整數(shù)浮點(diǎn)值。
2.如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其中,所述移位電路被配置來將所述基值向右移位來生成所述四舍五入值。
3.如權(quán)利要求1和2中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述四舍五入值在與所述浮點(diǎn)值的所述有效位數(shù)的最高有效小數(shù)值位的位位置相對(duì)應(yīng)的位位置處具有首非零位。
4.如權(quán)利要求1-3中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中: 所述基值具有非零值的最高有效位;并且 所述移位電路被配置來將所述基值向右移位(E-BIAS+1)位位置的移位量,其中,E是所述浮點(diǎn)值的所述指數(shù),并且,BIAS是所述浮點(diǎn)值的指數(shù)偏移。
5.如權(quán)利要求1-4中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述掩蔽電路包括AND門,該AND門被配置來將按位AND操作應(yīng)用到所述和值和所述掩碼。
6.如權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中,所述掩碼的位在與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置處具有位值O。
7.如權(quán)利要求6所述的數(shù)據(jù)處理裝置,其中,所述掩碼的位在與所述有效位數(shù)的整數(shù)值位位置相對(duì)應(yīng)的位位置處具有位值I。
8.如權(quán)利要求1-7中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述掩碼生成電路被配置來基于所述四舍五入值生成所述掩碼。
9.如權(quán)利要求1-8中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,響應(yīng)于對(duì)浮點(diǎn)加和指令的執(zhí)行,所述控制電路被配置來控制所述處理電路,以使用所述移位電路和所述加和電路來執(zhí)行加和操作。
10.如權(quán)利要求1-9中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述處理電路具有至少一種四舍五入模式,該模式用于在所述四舍五入為整數(shù)浮點(diǎn)操作期間,當(dāng)所述浮點(diǎn)值是介于兩個(gè)整數(shù)浮點(diǎn)值之間的值時(shí),選擇將所述浮點(diǎn)值四舍五入為所述兩個(gè)整數(shù)浮點(diǎn)值中的哪一個(gè)。
11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其中,所述處理電路具有多種四舍五入模式,所述浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令指定所述多種四舍五入模式中的哪種應(yīng)該被用于所述四舍五入為整數(shù)浮點(diǎn)操作。
12.如權(quán)利要求10和11中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述處理電路具有遠(yuǎn)離零四舍五入(RU)四舍五入模式,該模式用于將所述浮點(diǎn)值四舍五入為所述兩個(gè)整數(shù)浮點(diǎn)值中具有最大絕對(duì)量值的那一個(gè)。
13.如權(quán)利要求12所述的數(shù)據(jù)處理裝置,其中,在所述RU四舍五入模式中,所述基值的所有位具有非零位值。
14.如權(quán)利要求10-13中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所示處理電路具有四舍五入為最接近、靠近偶數(shù)(RNE)四舍五入模式,該模式用于將所述浮點(diǎn)值四舍五入為所述兩個(gè)整數(shù)浮點(diǎn)值中最接近的,同時(shí)將位于所述兩個(gè)整數(shù)浮點(diǎn)值正中間的浮點(diǎn)值四舍五入為所述兩個(gè)整數(shù)浮點(diǎn)值中是偶數(shù)值的那個(gè)。
15.如權(quán)利要求14所述的數(shù)據(jù)處理裝置,其中,在所述RNE四舍五入模式中,所述基值的最高有效位具有非零位值,并且,所述基值的剩余位具有零位值。
16.如權(quán)利要求14和15中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,在所述RNE四舍五入模式中,如果所述浮點(diǎn)值位于所述兩個(gè)整數(shù)浮點(diǎn)值正中間,并且所述有效位數(shù)的最低有效整數(shù)值位具有O位值,那么,所述掩碼生成電路被配置來修正所述掩碼,并且所述掩蔽電路被配置來將所述修正的掩碼應(yīng)用到所述和值來清除所述和值的具有與所述有效位數(shù)的所述最低有效整數(shù)值位相對(duì)應(yīng)的位位置的那一位。
17.如權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,所述掩碼生成電路被配置來通過將所述掩碼向左移位一位位置來修正所述掩碼。
18.如權(quán)利要求10-17中任意一項(xiàng)所述的數(shù)據(jù)處理裝置,其中,所述處理電路具有四舍五入至零(RZ)四舍五入模式,該模式用于將所述浮點(diǎn)值四舍五入為所述兩個(gè)整數(shù)浮點(diǎn)值中具有最小絕對(duì)量值的那個(gè)。
19.如權(quán)利要求18所述的數(shù)據(jù)處理裝置,其中,在所述RZ四舍五入模式中,在將置零的四舍五入值加至所述有效位數(shù)來生成所述和值之前,所述四舍五入值的所有位都被置零,并且所述掩碼通過使用未置零的四舍五入值來生成。
20.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)程序用于控制計(jì)算機(jī)來提供與權(quán)利要求1-19任意一項(xiàng)中所述的數(shù)據(jù)處理裝置相對(duì)應(yīng)的虛擬機(jī)運(yùn)行環(huán)境。
21.一種數(shù)據(jù)處理裝置,包括: 處理裝置,用于執(zhí)行四舍五入為整數(shù)浮點(diǎn)操作,所述操作用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值,所述浮點(diǎn)值具有有效位數(shù)和指數(shù);以及 控制裝置,用于控制所述處理裝置以執(zhí)行所述四舍五入為整數(shù)浮點(diǎn)操作來響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行; 所述處理裝置包括: 移位裝置,用于通過對(duì)基值移位移位量來生成四舍五入值,所述移位量依賴于所述浮點(diǎn)值的所述指數(shù); 加和裝置,用于將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)來生成和值; 掩碼生成裝置,用于生成掩碼,所述掩碼用于清除具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的所述和值的位;以及 掩蔽裝置,用于將所述掩碼應(yīng)用到所述和值以生成所述整數(shù)浮點(diǎn)值。
22.—種執(zhí)行四舍五入為整數(shù)浮點(diǎn)操作的方法,所述操作用于將浮點(diǎn)值四舍五入為整數(shù)浮點(diǎn)值,所述浮點(diǎn)值包括有效位數(shù)和指數(shù),所述方法包括步驟:通過將基值移位移位量來生成四舍五入值,所述移位量依賴于所述浮點(diǎn)值的所述指數(shù); 將所述四舍五入值加至所述浮點(diǎn)值的所述有效位數(shù)以生成和值; 生成用于清除所述和值的具有與所述有效位數(shù)的小數(shù)值位位置相對(duì)應(yīng)的位位置的位的掩碼;并且 將所述掩碼應(yīng)用到所述和值以生成所述整數(shù)浮點(diǎn)值; 其中,所述方法由處理電 路執(zhí)行,以響應(yīng)對(duì)浮點(diǎn)四舍五入為整數(shù)浮點(diǎn)指令的執(zhí)行。
【文檔編號(hào)】G06F7/499GK103988170SQ201280060336
【公開日】2014年8月13日 申請(qǐng)日期:2012年11月29日 優(yōu)先權(quán)日:2011年12月7日
【發(fā)明者】大衛(wèi)·雷蒙德·魯茨, 內(nèi)爾·伯吉斯, 薩布琳娜·瑪麗·羅梅洛 申請(qǐng)人:Arm有限公司