本發(fā)明涉及浮點運算領域,尤其涉及一種實現(xiàn)浮點運算操作的方法和裝置。
背景技術:
隨著用戶需求的增加,用戶對計算機的性能的要求越來越高,浮點運算作為計算機數(shù)據(jù)處理的基本模塊,其性能決定了計算機的性能。
現(xiàn)有的浮點除法運算、浮點開方運算、定點除法運算、定點求余數(shù)運算通常采用冗余數(shù)迭代算法(srt算法)。但是,由于浮點數(shù)或者定點操作數(shù)轉化而成的浮點數(shù)基本上都會采用ieee754-2008規(guī)定的單精度和雙精度的格式,在采用srt算法進行計算的時候,只能進行固定次數(shù)的循環(huán)。例如,用基為2的srt算法,每次計算出2位商數(shù)字,單精度的浮點運算通常需要進行12次迭代,算出24位有效數(shù)字,而雙精度的浮點運算通常需要進行20多次迭代,算出53位有效數(shù)字。
當用戶對數(shù)據(jù)的精度需求較低時,現(xiàn)有的srt算法在每次執(zhí)行除法運算時會耗費較長的時間,計算出用戶并不需要的一部分結果,降低了整個應用的性能。因此,現(xiàn)有的srt算法因為只能執(zhí)行固定次數(shù)的循環(huán),導致計算靈活度差,執(zhí)行時間增加,功耗增大,造成資源浪費。
技術實現(xiàn)要素:
本發(fā)明提供一種實現(xiàn)浮點運算操作的方法和裝置,用于解決現(xiàn)有浮點運算中只能執(zhí)行固定次數(shù)的循環(huán),導致執(zhí)行時間增加,功耗增大,造成資源浪費的問題。
本發(fā)明一方面提供一種實現(xiàn)浮點運算操作的方法,包括:
接收浮點運算指令,所述浮點運算指令指示出源操作數(shù)信息和操作精度要求信息,所述操作精度要求信息指示出浮點運算處理結果的精度;
根據(jù)所述操作精度要求信息對所述源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到所述浮點運算處理結果滿足所述精度為止;
根據(jù)滿足所述精度的要求之前的每次循環(huán)時所述浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果。
如上所述的實現(xiàn)浮點運算操作的方法,所述根據(jù)所述操作精度要求信息對所述源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到所述浮點運算處理結果滿足所述精度為止,包括:
根據(jù)所述浮點運算指令,將循環(huán)次數(shù)設置為0,對所述源操作數(shù)進行浮點運算處理得到中間商和中間余數(shù),將所述循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),判斷所述新的循環(huán)次數(shù)與所述操作精度要求信息是否一致;
若否,則對所述中間余數(shù)進行所述浮點運算處理得到新的中間商和新的中間余數(shù),再次將所述循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),并再次判斷所述新的循環(huán)次數(shù)與所述操作精度要求信息是否一致,若否,則對新的中間余數(shù)重復執(zhí)行本步驟,直至新的循環(huán)次數(shù)與所述操作精度要求信息一致。
如上所述的實現(xiàn)浮點運算操作的方法,所述操作精度要求信息包括預設浮點運算處理結果精度值;則所述判斷所述新的循環(huán)次數(shù)與所述操作精度要求信息是否一致,包括:
根據(jù)所述預設浮點運算處理結果精度值獲取預設循環(huán)次數(shù),判斷所述新的循環(huán)次數(shù)與所述預設循環(huán)次數(shù)是否一致;或者,
所述操作精度要求信息包括預設循環(huán)次數(shù);則所述判斷所述新的循環(huán)次數(shù)與所述操作精度要求信息是否一致,包括:
判斷所述新的循環(huán)次數(shù)與所述預設循環(huán)次數(shù)是否一致。
如上所述的實現(xiàn)浮點運算操作的方法,在所述接收浮點運算指令之后,所述方法還包括:
根據(jù)所述源操作數(shù)信息,獲取浮點運算處理結果的精度作為所述操作精度要求信息。
如上所述的實現(xiàn)浮點運算操作的方法,所述浮點運算指令指示出源操作數(shù)信息具體為:指示出存儲所述源操作數(shù)的第一寄存器的地址信息;所述接收浮點運算指令之后,所述方法還包括:
根據(jù)所述浮點運算指令指示的存儲所述源操作數(shù)的第一寄存器的地址信息,讀取所述第一寄存器,獲取所述源操作數(shù)。
如上所述的實現(xiàn)浮點運算操作的方法,若所述浮點運算指令還指示出所述浮點運算處理為除法,則所述源操作數(shù)包括除數(shù)和被除數(shù);所述對所述中間余數(shù)進行所述浮點運算處理得到新的中間商和新的中間余數(shù),包括:
對所述中間余數(shù)和所述除數(shù)進行所述浮點運算處理得到新的中間商和新的中間余數(shù);
若所述浮點運算指令還指示出所述浮點運算處理為開方,則所述源操作數(shù)包括被開方數(shù),所述中間商為中間平方根。
如上所述的實現(xiàn)浮點運算操作的方法,所述根據(jù)滿足所述精度的要求之前的每次循環(huán)時所述浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果,包括:
根據(jù)滿足所述精度的要求之前的每次循環(huán)時所述浮點運算操作處理得到的中間商,進行規(guī)格化處理得到所述浮點運算處理結果。
如上所述的實現(xiàn)浮點運算操作的方法,所述浮點運算指令還指示出存儲所述中間商的第二寄存器的地址信息;
所述方法還包括:將每次所述浮點運算處理后得到的中間商,存儲在所述第二寄存器中;
對應的,所述根據(jù)滿足所述精度的要求之前的每次循環(huán)時所述浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果,包括:
讀取所述第二寄存器,獲取所述浮點運算處理結果。
本發(fā)明另一方面提供一種實現(xiàn)浮點運算操作的裝置,用于執(zhí)行上述實施例中的實現(xiàn)浮點運算操作的方法,具有相同的技術特征和技術效果,本發(fā)明對此不再贅述。
本發(fā)明提供一種實現(xiàn)浮點運算操作的裝置,包括:接收模塊、循環(huán)浮點運算操作處理模塊、和輸出模塊;
所述接收模塊,用于接收浮點運算指令,所述浮點運算指令指示出源操作數(shù)信息和操作精度要求信息,所述操作精度要求信息指示出浮點運算處理結果的精度;
所述循環(huán)浮點運算操作處理模塊,用于根據(jù)所述操作精度要求信息對所述源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到所述浮點運算處理結果滿足所述精度為止;
所述輸出模塊,用于根據(jù)滿足所述精度的要求之前的每次循環(huán)時所述浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果。
如上所述的實現(xiàn)浮點運算操作的裝置,所述循環(huán)浮點運算操作處理模塊包括:輸入單元、循環(huán)控制單元和浮點運算操作處理單元;
所述輸入單元用于,接收所述源操作數(shù)信息對應的源操作數(shù),將所述源操作數(shù)發(fā)送給所述浮點運算操作處理單元;
所述循環(huán)控制單元用于,接收所述操作精度要求信息,將循環(huán)次數(shù)設置為0,向所述浮點運算操作處理單元發(fā)送第一運算信號;所述操作精度要求信息指示出浮點運算處理結果的精度;
所述浮點運算操作處理單元用于,在接收到所述第一運算信號時,對所述源操作數(shù)進行浮點運算處理得到中間商和中間余數(shù),向所述循環(huán)控制單元發(fā)送完成信號,將所述中間商發(fā)送給所述輸出模塊,將所述中間余數(shù)發(fā)送給所述輸入單元;
所述循環(huán)控制單元還用于,在接收到所述完成信號時,將所述循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),判斷所述新的循環(huán)次數(shù)與所述操作精度要求信息是否一致;若一致,則向所述輸出模塊發(fā)送結束信號;若不一致,則向所述浮點運算操作處理單元發(fā)送第二運算信號;
所述輸入單元還用于,在接收到所述中間余數(shù)時,將所述中間余數(shù)發(fā)送給所述浮點運算操作處理單元;
所述浮點運算操作處理單元還用于,在接收到所述第二運算信號時,對所述中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),向所述循環(huán)控制單元發(fā)送所述完成信號,將所述新的中間商發(fā)送給所述輸出模塊,將所述新的中間余數(shù)發(fā)送給所述輸入單元。
如上所述的實現(xiàn)浮點運算操作的裝置,所述操作精度要求信息包括預設浮點運算處理結果精度值;所述循環(huán)控制單元具體用于,
根據(jù)所述預設浮點運算處理結果精度值獲取預設循環(huán)次數(shù),判斷所述新的循環(huán)次數(shù)與所述預設循環(huán)次數(shù)是否一致;和/或者,
所述操作精度要求信息包括預設循環(huán)次數(shù);所述循環(huán)控制單元具體用于,
判斷所述新的循環(huán)次數(shù)與所述預設循環(huán)次數(shù)是否一致。
如上所述的實現(xiàn)浮點運算操作的裝置,所述循環(huán)浮點運算操作處理模塊具體用于,
根據(jù)所述源操作數(shù)信息,獲取浮點運算處理結果的精度作為所述操作精度要求信息。
如上所述的實現(xiàn)浮點運算操作的裝置,所述浮點運算指令指示出源操作數(shù)信息具體為:指示出存儲所述源操作數(shù)的第一寄存器的地址信息;所述循環(huán)浮點運算操作處理模塊具體用于,
根據(jù)所述浮點運算指令指示的存儲所述源操作數(shù)的第一寄存器的地址信息,讀取所述第一寄存器,獲取所述源操作數(shù)。
如上所述的實現(xiàn)浮點運算操作的裝置,若所述浮點運算指令還指示出所述浮點運算處理為除法,則所述源操作數(shù)包括除數(shù)和被除數(shù);
對應的,所述輸入單元還用于,在接收到所述中間余數(shù)時,將所述中間余數(shù)和所述源操作數(shù)發(fā)送給所述浮點運算操作處理單元;
所述浮點運算操作處理單元還用于,在接收到所述第二運算信號時,對所述源操作數(shù)和所述中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),向所述循環(huán)控制單元發(fā)送所述完成信號,將所述新的中間商發(fā)送給所述輸出模塊,將所述新的中間余數(shù)發(fā)送給所述輸入單元;
若所述浮點運算指令還指示出所述浮點運算處理為開方,則所述源操作數(shù)包括被開方數(shù),所述中間商為中間平方根。
如上所述的實現(xiàn)浮點運算操作的裝置,所述輸出模塊具體用于,
在接收到結束信號時,對接收到的所有所述中間商,進行規(guī)格化處理得到所述浮點運算處理結果。
如上所述的實現(xiàn)浮點運算操作的裝置,所述浮點運算指令還指示出存儲所述中間商的第二寄存器的地址信息;
所述輸出模塊具體用于,將每次接收到的所述中間商,存儲在所述第二寄存器中;在接收到結束信號時,讀取所述第二寄存器,獲取所述浮點運算處理結果。
本發(fā)明另一方面提供一種處理器,包含如上所述的實現(xiàn)浮點運算操作的裝置。
本發(fā)明提供的實現(xiàn)浮點運算操作的方法和裝置,通過增加操作精度要求信息,并在進行循環(huán)浮點運算操作處理的過程中,先判斷浮點運算處理結果的精度是否滿足操作精度要求信息中指示的精度,并在精度滿足的情況下停止循環(huán),使得本發(fā)明提供的浮點運算方法可執(zhí)行任意次數(shù)的循環(huán),節(jié)約執(zhí)行時間,減少功耗。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的實現(xiàn)浮點運算操作的方法實施例一的流程示意圖;
圖2為本發(fā)明提供的實現(xiàn)浮點運算操作的裝置實施例一的結構示意圖;
圖3為本發(fā)明提供的實現(xiàn)浮點運算操作的裝置實施例二的結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明提供的實現(xiàn)浮點運算操作的方法實施例一的流程示意圖,如圖1所示,本發(fā)明實施例提供一種實現(xiàn)浮點運算操作的方法,該方法的執(zhí)行主體為實現(xiàn)浮點運算操作的裝置,該裝置可以通過軟件或硬件實現(xiàn),本發(fā)明對此不做限定。該方法包括:
s101、接收浮點運算指令,浮點運算指令指示出源操作數(shù)信息和操作精度要求信息,操作精度要求信息指示出浮點運算處理結果的精度;
s102、根據(jù)操作精度要求信息對源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到浮點運算處理結果滿足精度為止;
s103、根據(jù)滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果。
本領域技術人員可以理解,浮點運算指令用于指示進行浮點運算處理,得到浮點運算處理結果。浮點運算處理的過程包括循環(huán)浮點運算操作處理,也即,多個浮點運算操作處理構成了浮點運算處理。浮點運算操作處理的執(zhí)行次數(shù)取決于浮點運算指令指示的浮點運算處理結果的精度。
示例性的,浮點運算處理可以為浮點除法操作,也可以為浮點開方運算,還可通過在實現(xiàn)浮點運算操作的裝置中增加預處理模塊和后處理模塊,以將浮點除法運算擴展至定點除法運算和定點求余數(shù)運算。示例性的,對于定點除法運算,可將輸入的定點除數(shù)和被除數(shù)經(jīng)過預處理模塊轉為浮點數(shù),再應用本發(fā)明實施例提供的實現(xiàn)浮點運算操作的方法進行計算,在得到浮點運算處理結果后,可將浮點運算處理結果經(jīng)過后處理模塊再轉為定點數(shù),從而實現(xiàn)預設精度的定點除法運算。本發(fā)明以下各實施例中僅結合浮點運算進行實施例行說明。
具體的,在s101中,接收浮點運算指令,浮點運算指令指示出源操作數(shù)信息,源操作數(shù)信息指示待進行浮點運算的源操作數(shù)。示例性的,當浮點運算為除法運算時,源操作數(shù)包括除數(shù)和被除數(shù)??蛇x的,源操作數(shù)還包括srt算法的基數(shù)。示例性的,當浮點運算為開方運算時,源操作數(shù)包括被開方數(shù)。浮點運算指令還指示除操作精度要求信息,操作精度要求信息指示出浮點運算處理結果的精度。該精度可以由用戶根據(jù)需求設置。
可選的,在s101之后,還包括源操作數(shù)檢測步驟,用于檢測源操作數(shù)是否合法。示例性的,當浮點運算為除法運算時,源操作數(shù)中的除數(shù)不能為0。當檢測到非法源操作數(shù)時暫停浮點運算并發(fā)出告警信息。示例性的,還可在檢測到源操作數(shù)為特定數(shù)時直接輸出運算結果。如,當被除數(shù)為0時,直接輸出浮點運算處理結果為0。
具體的,在s102中,對源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到浮點運算處理結果滿足精度為止。
示例性的,循環(huán)浮點運算操作處理,具體包括:
s1021、根據(jù)浮點運算指令,將循環(huán)次數(shù)設置為0,對源操作數(shù)進行浮點運算處理得到中間商和中間余數(shù),將循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致;若否,則執(zhí)行s1022;若是,則執(zhí)行s103;
s1022、對中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),再次將循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),并再次判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致,若否,則對新的中間余數(shù)重復執(zhí)行本步驟,直至新的循環(huán)次數(shù)與操作精度要求信息一致。
具體的,在接收到浮點運算指令時,首先將計數(shù)器的設置為0,計數(shù)器的讀數(shù)成為循環(huán)次數(shù)。然后,對源操作數(shù)進行浮點運算處理得到中間商和中間余數(shù),并將循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù)。判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致。
當新的循環(huán)次數(shù)與操作精度要求信息不一致時,說明浮點運算處理結果的精度未達到用戶想要的要求,則對中間余數(shù)和源操作數(shù)再次進行浮點運算處理得到新的中間商和新的中間余數(shù)。并再次將循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),并再次判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致。當新的循環(huán)次數(shù)與操作精度要求信息仍不一致時,對新的中間余數(shù)重復執(zhí)行本步驟,直至新的循環(huán)次數(shù)與操作精度要求信息一致。
當新的循環(huán)次數(shù)與操作精度要求信息一致時,說明浮點運算處理結果的精度達到了用戶想要的要求。此時,可停止循環(huán)浮點運算操作處理,根據(jù)每次循環(huán)時得到的中間商獲取浮點運算處理結果。
具體的,在s103中,在浮點運算處理結果滿足精度時,停止循環(huán),根據(jù)每次浮點運算操作處理得到的中間浮點值,如中間商,獲取浮點運算處理結果。
值得注意的是,上述s103中的滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間浮點值,既包括之前每次循環(huán)時浮點運算操作處理得到的中間浮點值,也包括本次浮點運算操作處理得到的中間浮點值。也即還包括當循環(huán)次數(shù)與操作精度要求信息一致時,最后一次循環(huán)所得到的中間中間浮點值。
本發(fā)明提供的實現(xiàn)浮點運算操作的方法,通過增加操作精度要求信息,并在進行循環(huán)浮點運算操作處理的過程中,先判斷浮點運算處理結果的精度是否滿足操作精度要求信息中指示的精度,并在精度滿足的情況下停止循環(huán),使得本發(fā)明提供的浮點運算方法可執(zhí)行任意次數(shù)的循環(huán),節(jié)約執(zhí)行時間,減少功耗。
可選的,在圖1所示實施例的基礎上,對于操作精度要求信息的具體內(nèi)容進行詳細說明。操作精度要求信息示例性的可以為以下三種可行的實現(xiàn)方式:
第一種可行的實現(xiàn)方式:
操作精度要求信息包括預設浮點運算處理結果精度值;此時,判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致,具體包括:
根據(jù)預設浮點運算處理結果精度值獲取預設循環(huán)次數(shù),判斷新的循環(huán)次數(shù)與預設循環(huán)次數(shù)是否一致。
示例性的,當操作精度要求信息包括預設浮點運算處理結果精度值,則需根據(jù)預設浮點運算處理結果精度值獲取預設循環(huán)次數(shù)。在獲取了預設循環(huán)次數(shù)之后,可比較每次循環(huán)之后得到的循環(huán)次數(shù)是否達到預設循環(huán)次數(shù)。
第二種可行的實現(xiàn)方式:
操作精度要求信息可以直接包括預設循環(huán)次數(shù)。此時,判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致,具體包括:
判斷新的循環(huán)次數(shù)與預設循環(huán)次數(shù)是否一致。
第三種可行的實現(xiàn)方式:
根據(jù)源操作數(shù)信息,獲取浮點運算處理結果的精度作為操作精度要求信息。
示例性的,在接收浮點運算指令之后,可根據(jù)浮點運算指令指示的源操作數(shù)信息對應的源操作數(shù),獲取浮點運算處理結果的精度。例如,獲取源操作數(shù)的精度,將源操作數(shù)的精度作為浮點運算處理結果的精度,也即操作精度要求信息指示的精度。
示例性的,在接收到源操作數(shù)時,還可直接根據(jù)源操作數(shù)獲取預設循環(huán)次數(shù)。獲取預設循環(huán)次數(shù)的方式具體如下所示:
假設源操作數(shù)中被除數(shù)是a,除數(shù)是b,a與b均為m位的無符號數(shù),m為大于1的正整數(shù),a除以b得到一個無符號數(shù)的結果。假設a是00…01…,a的前導0(首次出現(xiàn)的1之前的0為前導0)的個數(shù)記為za;b是000…01…,b的前導0的個數(shù)為zb。
則根據(jù)
(1)當za>zb時,結果一定為0,因此可以得知預設循環(huán)次數(shù)為0。
(2)當za=zb時,如果a>=b,則預設循環(huán)次數(shù)為1;如果a<b,則預設循環(huán)次數(shù)為0。
(3)當za<zb時,如果a>=b,則得到的商為zb-za+1位,因此預設循環(huán)次數(shù)為
示例性的,當應用本發(fā)明實施例提供的浮點運算方法進行浮點運算時:
當根據(jù)源操作數(shù)確定的商大于預設數(shù)值(即商為規(guī)格化浮點數(shù))時,單精度除法浮點運算循環(huán)
當根據(jù)源操作數(shù)確定的商小于預設數(shù)值時(即商為非規(guī)格化浮點數(shù)),假設算得的商為1.c×2exp,其中c為商的小數(shù)部分,對于雙精度格式的浮點數(shù),指數(shù)偏移量bias=-1023,對于單精度格式的浮點數(shù),指數(shù)偏移量bias=-127,為了將浮點操作的結果直接化為非規(guī)格化浮點數(shù)的格式,由于1.c×2exp=1.c×2exp+bias-1×2-bias+1,且exp<-bias+1,因此需要將1.c右移|exp+bias-1|位。因此結果中的商有效位數(shù)為:雙精度時為53-|exp+bias-1|位,單精度時為24-|exp+bias-1|位。因此雙精度時的預設循環(huán)次數(shù)為
進一步的,在上述任一實施例的基礎上,浮點運算指令指示出源操作數(shù)信息具體為:指示出存儲源操作數(shù)的第一寄存器的地址信息;接收浮點運算指令之后,方法還包括:
根據(jù)浮點運算指令指示的存儲源操作數(shù)的第一寄存器的地址信息,讀取第一寄存器,獲取源操作數(shù)。
示例性的,浮點運算指令指示中指示的源操作數(shù)信息為源操作數(shù)的存儲地址,即存儲源操作數(shù)的第一寄存器的地址信息。從而可減少浮點運算指令的長度。
可選的,若浮點運算指令還指示出浮點運算處理為除法,則源操作數(shù)包括除數(shù)和被除數(shù)。對中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),包括:
對中間余數(shù)和除數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù)。
當進行除法浮點運算時,除第一次循環(huán)時,根據(jù)源操作獲取中間商和中間余數(shù),之后的每次循環(huán)中,根據(jù)除數(shù)和中間余數(shù)來獲取新的中間商和新的中間余數(shù)。
可選的,若浮點運算指令還指示出浮點運算處理為開方,則源操作數(shù)包括被開方數(shù),中間商為中間平方根。
可選的,在上述任一實施例的基礎上,根據(jù)滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果,包括:
根據(jù)滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間商,進行規(guī)格化處理得到浮點運算處理結果。
示例性的,根據(jù)每次循環(huán)浮點運算操作處理得到的中間商,進行規(guī)格化處理得到浮點運算處理結果。所有的中間商,按從前到后的順序排列,再結合符號信息、指數(shù)信息等,即可得到浮點運算處理結果。
可選的,結合上述實施例,浮點運算指令還指示出存儲中間商的第二寄存器的地址信息;上述實現(xiàn)浮點運算操作的方法還包括:將每次浮點運算處理后得到的中間商,存儲在第二寄存器中;
對應的,根據(jù)滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果,包括:
讀取第二寄存器,獲取浮點運算處理結果。
示例性的,浮點運算指令還可指示出存儲中間商的第二寄存器的地址信息。當每次循環(huán)得到中間商時,將中間商存儲在第二寄存器中,使得在循環(huán)結束后,可直接去第二寄存器中讀取浮點運算處理結果。其中,第二寄存器的位數(shù)可根據(jù)操作精度要求信息決定。
本發(fā)明另一方面提供一種實現(xiàn)浮點運算操作的裝置,用于執(zhí)行上述實施例中的實現(xiàn)浮點運算操作的方法,具有相同的技術特征和技術效果。
圖2為本發(fā)明提供的實現(xiàn)浮點運算操作的裝置實施例一的結構示意圖。如圖2所示,浮點運算器包括:接收模塊201、循環(huán)浮點運算操作處理模塊202和輸出模塊203;
接收模塊201,用于接收浮點運算指令,浮點運算指令指示出源操作數(shù)信息和操作精度要求信息,操作精度要求信息指示出浮點運算處理結果的精度;
循環(huán)浮點運算操作處理模塊202,用于根據(jù)操作精度要求信息對源操作數(shù)信息對應的源操作數(shù)進行循環(huán)浮點運算操作處理,直到浮點運算處理結果滿足精度為止;
輸出模塊203,用于根據(jù)滿足精度的要求之前的每次循環(huán)時浮點運算操作處理得到的中間浮點值獲取浮點運算處理結果。
可選的,在圖2所示實施例的基礎上,圖3為本發(fā)明提供的實現(xiàn)浮點運算操作的裝置實施例二的結構示意圖。如圖3所示,循環(huán)浮點運算操作處理模塊202包括:輸入單元2021、循環(huán)控制單元2022和浮點運算操作處理單元2023;
輸入單元2021用于,接收源操作數(shù)信息對應的源操作數(shù),將源操作數(shù)發(fā)送給浮點運算操作處理單元;
循環(huán)控制單元2022用于,接收操作精度要求信息,將循環(huán)次數(shù)設置為0,向浮點運算操作處理單元發(fā)送第一運算信號;操作精度要求信息指示出浮點運算處理結果的精度;
浮點運算操作處理單元2023用于,在接收到第一運算信號時,對源操作數(shù)進行浮點運算處理得到中間商和中間余數(shù),向循環(huán)控制單元2022發(fā)送完成信號,將中間商發(fā)送給輸出模塊203,將中間余數(shù)發(fā)送給輸入單元2021;
循環(huán)控制單元2022還用于,在接收到完成信號時,將循環(huán)次數(shù)加1,得到新的循環(huán)次數(shù),判斷新的循環(huán)次數(shù)與操作精度要求信息是否一致;若一致,則向輸出模塊203發(fā)送結束信號;若不一致,則向浮點運算操作處理單元2023發(fā)送第二運算信號;
輸入單元2021還用于,在接收到中間余數(shù)時,將中間余數(shù)發(fā)送給浮點運算操作處理單元2023;
浮點運算操作處理單元2023還用于,在接收到第二運算信號時,對中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),向循環(huán)控制單元2022發(fā)送完成信號,將新的中間商發(fā)送給輸出模塊203,將新的中間余數(shù)發(fā)送給輸入單元2021。
其中,循環(huán)控制單元2022向輸出模塊203發(fā)送結束信號之后,此次浮點運算處理結束,循環(huán)控制單元2022不再向浮點運算操作處理單元2023發(fā)送第二運算信號。
可選的,操作精度要求信息包括預設浮點運算處理結果精度值;循環(huán)控制單元2022具體用于,
根據(jù)預設浮點運算處理結果精度值獲取預設循環(huán)次數(shù),判斷新的循環(huán)次數(shù)與預設循環(huán)次數(shù)是否一致;和/或者,
操作精度要求信息包括預設循環(huán)次數(shù);循環(huán)控制單元2022具體用于,
判斷新的循環(huán)次數(shù)與預設循環(huán)次數(shù)是否一致。
可選的,循環(huán)浮點運算操作處理模塊202具體用于,
根據(jù)源操作數(shù)信息,獲取浮點運算處理結果的精度作為操作精度要求信息。
可選的,浮點運算指令指示出源操作數(shù)信息具體為:指示出存儲源操作數(shù)的第一寄存器的地址信息;循環(huán)浮點運算操作處理模塊202具體用于,
根據(jù)浮點運算指令指示的存儲源操作數(shù)的第一寄存器的地址信息,讀取第一寄存器,獲取源操作數(shù)。
可選的,若浮點運算指令還指示出浮點運算處理為除法,則源操作數(shù)包括除數(shù)和被除數(shù);
對應的,輸入單元2021還用于,在接收到中間余數(shù)時,將中間余數(shù)和源操作數(shù)發(fā)送給浮點運算操作處理單元2023;
浮點運算操作處理單元2023還用于,在接收到第二運算信號時,對源操作數(shù)和中間余數(shù)進行浮點運算處理得到新的中間商和新的中間余數(shù),向循環(huán)控制單元2022發(fā)送完成信號,將新的中間商發(fā)送給輸出模塊203,將新的中間余數(shù)發(fā)送給輸入單元2021;
若浮點運算指令還指示出浮點運算處理為開方,則源操作數(shù)包括被開方數(shù),中間商為中間平方根。
可選的,輸出模塊203具體用于,
在接收到結束信號時,對接收到的所有中間商,進行規(guī)格化處理得到浮點運算處理結果。
可選的,浮點運算指令還指示出存儲中間商的第二寄存器的地址信息;
輸出模塊具體用于,將每次接收到的中間商,存儲在第二寄存器中;在接收到結束信號時,讀取第二寄存器,獲取浮點運算處理結果。
本發(fā)明另一方面提供一種處理器,包含如圖2或圖3所示的實現(xiàn)浮點運算操作的裝置。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。