專利名稱:精度受控的迭代算術邏輯單元的制作方法
技術領域:
本揭示案大體上涉及處理器,且特定來說,涉及在處理器中執(zhí)行亞精度迭代算術運算。
MM
常規(guī)的處理器包括用于執(zhí)行例如除法、平方根和超越(例如,SIN、 COS)運算的 迭代運算的一個或一個以上算術邏輯單元。常規(guī)上執(zhí)行迭代算術運算,直到產生具有固 定、經定義的位精度的結果為止。B卩,以迭代方式處理運算數以產生具有全精度(即, 例如與結果寄存器相關聯的精度或與開始運算數相關聯的精度的目標精度)的結果。舉 例來說,電氣電子工程師學會(正EE)己定義了與二進制浮點算術相關聯的標準,常被 稱為IEEE 754。IEEE 754標準規(guī)定關于單精度和雙精度浮點運算的數字格式、基本運算、 轉換和異常條件。
IEEE 754相符的浮點數包括三個基本成分符號位、指數和尾數。所述尾數進一步 被分解為整數部分和小數部分。僅小數位以編碼方式存儲。對于正規(guī)數來說,整數部分 隱含地等于值l。 IEEE 754相符的單精度數由符號位、8位指數和23位小數表示,而雙 精度數由符號位、11位指數和52位小數表示。同樣,IEEE 754相符的浮點數的迭代處 理產生具有24位精度(對于單精度運算數來說)和53位精度(對于雙精度運算數來說) 的結果。舉例來說,裝備有單精度IEEE 754相符的ALU的處理器產生具有24位的全 精度的結果。然而,某些應用(例如openGL相符的圖形應用)可不要求具有全24位的 單精度的結果。同樣,對于可容許小于全單精度的精度(例如,16位精度)的應用來說 將結果計算到全24位單精度引起不必要的功率和處理循環(huán)消耗。
一些常規(guī)處理器產生具有小于目標格式的精度的精度的結果。然而,僅在所作用于 的運算數具有小于目標格式的精度時,這些處理器才終止達不到目標格式的迭代算術運 算。舉例來說,即使在目標寄存器格式為雙精度值的格式時,雙精度處理器也可對單精 度運算數執(zhí)行單精度運算,從而產生單精度結果。同樣, 一些常規(guī)算術處理是視運算數 精度而定的,且因此,產生具有等效于運算數的精度的全精度的結果。結果,可能會不 必要地消耗功率和處理器循環(huán)以產生具有大于某些應用可容許或可接受的精度的精度的結果。
發(fā)明內容
根據本文所教示的方法和裝置,包括在處理器中的精度受控的迭代算術邏輯單元 (IALU)產生亞精度結果,即,具有小于全精度的位精度的結果。在一個或一個以上實 施例中,精度受控的IALU包含算術邏輯電路和精度控制電路。所述算術邏輯電路經配 置而以迭代方式處理第一位精度的運算數以獲得一結果。所述精度控制電路經配置以在 所述結果實現小于所述第一位精度的經編程第二位精度時終止所述迭代運算數處理。如 對于全精度運算的情況,降低的精度運算可產生多于最終結果中所需的位的位以實現適 當的舍入。這些"舍入位"通常被稱為保護、舍入和粘性位。在一實施例中,響應于由 所述控制電路接收到的指示符,所述精度控制電路致使算術邏輯電路終止迭代運算數處 理。精度受控的IALU進-一步包含舍入邏輯,所述舍入邏輯經配置以基于舍入模式、亞 精度結果的最低有效位(LSB)和舍入位在所述LSB處有條件地遞增所述結果。在-一實 施例中,舍入邏輯經配置以通過使舍入值與所述結果的LSB對準和有條件地將所述對準 的舍入值加到所述結果而舍入所述結果。
因此,在至少一實施例中,在處理器中通過以迭代方式處理第一位精度的運算數以 獲得一結果且在所述結果實現小于所述第一位精度的經編程第二位精度時終止迭代運 算數處理來產生亞精度結果。此外,可通過填補所述結果而調整所述亞精度結果的寬度, 使得所述經填補的結果具有對應于所述第一位精度的位寬度。
在另一實施例中, 一種處理器包含精度受控的IALU。所述處理器進一歩包含經配 置以將所述經編程第二位精度存儲為固定值或存儲為動態(tài)可變值的存儲元件。如果將所 述經編程第二位精度存儲為動態(tài)可變值,則可響應于由所述處理器接收到的一個或一個 以上指令而對其進行修改。所述精度受控的IALU經配置以響應于由所述處理器接收到 的指示符而終止迭代運算數處理。在一實施例中,所述指示符為存儲于包括在所述處理 器中的寄存器中的旗標位。
當然,本揭示案不限于上述特征。所屬領域的技術人員在閱讀以下詳細描述后和檢 視附圖后將認識到額外特征。
圖1為說明包括精度受控的迭代算術邏輯單元(IALU)的處理器的一實施例的方框圖。圖2為說明圖1的精度受控的IALU的一實施例的方框圖。
圖3為說明用于執(zhí)行迭代算術運算的程序邏輯的一實施例的邏輯流程圖。
圖4為說明進一步包含舍入電路的圖1的精度受控的IALU的一實施例的方框圖。
圖5為說明用于舍入由圖4的精度受控的IALU產生的亞精度結果的程序邏輯的一
實施例的邏輯流程圖。
圖6為說明用于舍入由圖4的精度受控的IALU產生的亞精度結果的程序邏輯的另
一實施例的邏輯流程圖。
具體實施例方式
圖1說明包括一個或一個以上精度受控的迭代算術邏輯單元(IALU) 12的處理器 10的一實施例。在包括于IALU 12中的或與IALU 12相關聯的精度控制電路14的控制 下,精度受控的IALU 12經配置以在由IALU 12產生的結果獲得全精度之前終止迭代算 術處理。即,響應于由精度控制電路14接收到的經編程位精度(PBP)值,控制電路 14致使IALU 12產生亞精度結果,即,具有小于例如與結果寄存器相關聯的精度或與開 始運算數相關聯的精度的目標精度的位精度的結果。所述PBP值指示與由IALU 12產 生的結果相關聯的所要位精度。同樣,響應于所述PBP值,精度控制電路14可致使IALU 12在所述結果獲得全精度之前終止運算數處理。由IALU 12產生的亞精度結果因此具有 對應于所述PBP值且非全精度的位精度。所述PBP值可保存在包括于處理器IO中的存 儲元件中,例如,專用或通用寄存器16或數據高速緩沖存儲器18。在一實施例中,所 述PBP值為硬連線的且因此不可重新編程。在另一實施例中,所述PBP值為存儲在PBP 寄存器16或數據高速緩沖存儲器18中的動態(tài)可變值,且因此是可修改的??蓪⑺鯬BP 值提供到處理器IO作為一指令或指令系列的部分,例如,作為超長指令字的部分。
不管所述PBP值如何產生、存儲或修改,精度控制電路14使用所述PBP值以控制 精度受控的IALU12是否較早地(即,在結果實現全精度之前)終止迭代算術運算。不 像常規(guī)技術,精度控制電路14可致使IALU 12不管運算數精度而在結果獲得全精度之 前終止迭代算術運算。而是,精度控制電路14使其較早終止邏輯基于所述PBP值,此 與運算數的精度并非直接相關聯。因此,精度受控的IALU 12能夠產生與運算數精度無 關的亞精度結果,借此減少功率消耗且在處理器10執(zhí)行可容許亞精度結果的應用(例 如,圖形應用)時改進處理器10的性能。
處理器10進一步包括指令單元20、 一個或一個以上載入/存儲單元22和指令高速
緩沖存儲器24。指令單元20提供對到例如載入/存儲單元22和精度受控的IALU 12的各種執(zhí)行單元的指令流的集中式控制。所述執(zhí)行單元可并行執(zhí)行多個指令。同樣,處理 器10可為超標量和/或超管線化的。指令和數據高速緩沖存儲器18、 24啟用系統(tǒng)寄存器
(未圖示)和執(zhí)行單元以快速地存取指令和數據。此外,可經由執(zhí)行單元中的一者(例
如,載入/存儲單元22)而在數據高速緩沖存儲器18與系統(tǒng)寄存器之間移動數據。
圖2說明精度受控的IALU12的一實施例。在此實施例中,IALU12包括算術邏輯 電路26。算術邏輯電路26經配置以執(zhí)行例如除法、平方根和超越函數的迭代算術運算。 算術邏輯電路26從包括于處理器10中的寄存器28、 30接收運算數。在一實例中,所 述運算數為正EE 754單精度相容,且因此,每一寄存器28、 30存儲一符號位、一8位 指數和一23位小數。在另一實例中,所述運算數為IEEE 754雙精度相容,且因此,每 一寄存器28、 30存儲一符號位、一 11位指數和一 52位小數。在其它實例中,所述運 算數具有不同于IEEE 754標準的全精度,例如足夠用于叩enGL標準或自定義應用的運 算數。
僅為便于解釋,接下來參考具有對應于IEEE 754單精度(本文中通常被稱為單精 度)的全精度的運算數來描述精度受控的IALU 12的詳細操作。然而,所屬領域的技術 人員將易于理解,精度受控的IALU 12的一個或一個以上實施例完全能夠處理具有任何 位精度的運算數,且因此,可在達不到全精度的情況下終止迭代算術運算,無不管哪一 精度界定全精度。
返回到圖2,算術邏輯電路26以迭代方式處理從運算數寄存器28、 30接收到的單 精度運算數,如圖3的步驟100所示。響應于PBP寄存器16的內容或者一個或一個以 上的指令,精度控制電路14將允許算術邏輯電路26不中斷地完成迭代處理,或將如圖 3的步驟102所示,通過在獲得全精度結果之前終止迭代處理來致使算術邏輯電路26執(zhí) 行"提早終止"。作為從PBP寄存器16接收的信息的一部分或由一個或一個以上指令提 供時,精度控制電路14接收確定算術邏輯電路26是否較早終止處理(即,產生亞精度 結果)的指示符(RDP)。在一實施例中,所述指示符為設定于PBP寄存器16中的旗標 位。如果所述指示符未經設定,則如圖3的步驟104所示,精度控制電路14允許算術 邏輯電路26迭代到全單精度,借此產生全精度結果。然而,如果所述指示符經設定, 則精度控制電路14啟動控制信號(CTRL),從而致使算術邏輯電路26在為所要亞精度 產生包括所需的任何舍入位在內的足夠位時停止迭代,借此產生亞精度結果,如圖3的 步驟106所示。
PBP值指示精度控制電路14致使算術邏輯電路26終止處理時所述結果的位精度。
舉例來說,如果PBP值指示16位的位精度,則精度控制電路14致使算術邏輯電路26在中間結果具有足夠位以產生具有16位的位精度的經適當舍入的結果時停止迭代。
在一實施例中,使用不具有PDP值的RDP位來產生預定大小的亞精度結果。在一 替代實施例中,使用所述不具有RDP位的PDP值以也實現降低精度的運算。
在一實施例中,精度控制電路14包含狀態(tài)機或計數器以跟蹤所執(zhí)行的算術迭代的 數目。同樣,精度控制電路14監(jiān)控算術邏輯電路處理。在算術邏輯電路26產生具有足 夠位以產生具有匹配PBP值的位精度的經適當舍入的結果的中間結果時,精度控制電路 14啟動控制信號,借此使算術邏輯電路26終止處理。舉例來說,精度控制電路14計數 由算術邏輯電路26執(zhí)行的處理循環(huán)的數目,從而使算術邏輯電路26在計數指示最終結 果的位精度將匹配PBP值的位精度時終止處理。
精度受控的IALU 12將所產生的結果存儲于包括在處理器10中的結果寄存器32中。 結果寄存器32具有足夠用于存儲全精度結果的位寬度。對于單精度結果來說,寄存器 32含有用于存儲全精度小數結果的23位位置(其中x-23)。算術邏輯電路26在將結果 存儲于寄存器32中時可填補亞精度結果,因此確保寄存器32的內容具有對應于全精度 的經填補位寬度。在一實施例中,算術邏輯電路26通過將足夠數量的邏輯0位附加到 亞精度結果而填補所述結果,使得所述經填補的亞精度結果具有等效于全精度的位寬 度。IALU12可將亞精度結果存儲在結果寄存器32中,然而,x-n寄存器位將并非有效 的,其中11=大于PBP值的有效位的位位置?;蛘?,IALU 12將亞精度結果存儲在另一 結果寄存器(未圖示)中,其中另一寄存器的位寬度對應于PBP值。
算術邏輯電路26可舍位一個或一個以上運算數最低有效位(LSB),使得經舍位的 運算數具有小于全運算數精度且大于或等于與PBP值相關聯的精度的位精度。算術邏輯 電路26響應于從精度控制電路14接收的舍位值(TRUNC)而舍位一個或一個以上運算 數LSB。精度控制電路14從PBP寄存器16或從一個或一個以上指令獲得舍位值。在一 實例中,算術邏輯電路26通過掩蔽一個或一個以上運算數LSB來舍位所述運算數LSB。
圖4說明精度受控的IALU 12的另一實施例,其中IALU 12進一步包括用于舍入由 算術邏輯電路26產生的舍入結果的舍入邏輯34。在此實施例中,算術邏輯電路26包含 單精度除法器36和用于臨時保持商結果的商寄存器38。常規(guī)舍入邏輯實施用于刪除結 果的LSB并調整所保留位的一個或一個以上舍入算法。舉例來說,常規(guī)舍入邏輯實施以 下舍入算法中的一者或一者以上舍入到最接近的偶數、舍入到0、向上舍入和/或向下 舍入。保護、舍入和粘性位可用于輔助舍入過程。然而,常規(guī)舍入電路難以舍入亞精度 結果。在與亞精度結果相關聯的位精度改變(例如,響應于PBP值的動態(tài)變化)、因此 致使所述結果的LSB、保護、舍入和粘性位移動位置時,此尤其如此。包括于精度受控的IALU 12中的舍入邏輯34通過識別特定亞精度結果的LSB來計 及包括動態(tài)可變位精度在內的與亞精度結果相關聯的位精度。舍入邏輯34通過使舍入 值與亞精度結果的LSB對準,因此實現所述結果的適當舍入來計及所述LSB。舍入邏輯 34包括舍入電路40和加法器42。舍入電路40處理PBP值以確定與特定結果相關聯的 哪一位位置將被有條件地遞增。舉例來說,響應于PBP值,舍入電路40識別存儲于商 寄存器38中的將被有條件地遞增的結果的LSB。在一實施例中,舍入電路40包含移位 器。如圖5的步驟200所說明,所述移位器移動或移位舍入值,使得所述舍入值與特定 亞精度結果的LSB對準??赏ㄟ^將邏輯1值移位到對應于PBP值的LSB的位位置而對 準所述舍入值。同樣,所述舍入值包含除了對應于對應結果的LSB的位位置以外具有所 有邏輯0的位模式。接著將經移位的舍入值提供到加法器42作為運算數。由算術邏輯 電路26產生的亞精度結果充當另一運算數,例如,存儲于商寄存器38中的結果。如圖 5的步驟202所說明,加法器42有條件地將經移位的舍入值加到由算術邏輯電路26產 生的結果以產生精確舍入的結果。所屬領域的技術人員將了解,可基于LSB、保護、舍 入和粘性位結合使用各種已知有條件遞增技術中的一者的舍入模式來對結果進行舍入, 所述有條件遞增技術中的每一者屬于本文所揭示的實施例的范圍內。
在另一實施例中,舍入電路40包含用于使舍入值與亞精度結果的LSB對準因此實 現所述結果的適當舍入的解碼器。如圖6的步驟300所說明,所述解碼器接收PBP值并 產生對應于PBP值的舍入值。在一實施例中,舍入值包含除了對應于PBP值的LSB的 位位置外具有所有邏輯0的位模式。對應子PBP值的LSB的舍入值的位位置包含邏輯1。 接著將所述舍入值提供到加法器42作為運算數,Fl由算術邏輯電路26產生的結果充當 另一運算數。如圖6的步驟302所說明,加法器42有條件地將所述舍入值加到由算術 邏輯電路26產生的結果以產生精確舍入結果。因此,通過適當地移位舍入值或解碼PBP 值以產生舍入運算數且有條件地將所述舍入運算數加到對應結果,精度受控的IALU 12 能夠產生精確的亞精度結果。
牢記上述范圍的變化和應用,應理解,本揭示案不受前述描述限制,也不受附圖限 制。而是,本揭示案僅受所附權利要求書和其法定等效物限制。
權利要求
1. 一種在處理器中執(zhí)行迭代算術運算的方法,其包含以迭代方式處理第一位精度的運算數以獲得一結果;以及在所述結果實現小于所述第一位精度的經編程第二位精度時終止所述迭代處理。
2. 根據權利要求1所述的方法,其進一步包含填補所述結果,使得所述經填補的結果 具有對應于所述第一位精度的位寬度。
3. 根據權利要求2所述的方法,其中填補所述結果以使得所述經填補的結果具有對應 于所述第一位精度的位寬度包含將一個或一個以上邏輯O位附加到所述結果。
4. 根據權利要求1所述的方法,其進一步包含將所述結果存儲在具有小于所述第一位 精度的位寬度的寄存器中。
5. 根據權利要求1所述的方法,其進一步包含在開始所述迭代處理之前舍位所述運算 數的一個或一個以上最低有效位(LSB),使得所述經舍位的運算數具有小于所述 第一位精度且大于或等于所述經編程第二位精度的位精度。
6. 根據權利要求5所述的方法,其中舍位所述運算數LSB中的一者或一者以上包含 掩蔽所述運算數LSB中的一者或一者以上。
7. 根據權利要求1所述的方法,其進一步包含舍入所述結果。
8. 根據權利要求7所述的方法,其中舍入所述結果包含-使舍入值與所述結果的最低有效位(LSB)對準;以及 有條件地將所述經對準的舍入值加到所述結果。
9. 根據權利要求8所述的方法,其中使所述舍入值與所述結果的所述LSB對準包含 移位所述舍入值以使得所述舍入值具有位于對應于所述結果的所述LSB的位位置 處的邏輯1。
10. 根據權利要求8所述的方法,其中使所述舍入值與所述結果的所述LSB對準包含 解碼所述第二經編程位精度以產生舍入運算數。
11. 根據權利要求1所述的方法,其進一步包含響應于包括在所述處理器中的寄存器的 內容的改變來修改所述經編程第二位精度。
12. 根據權利要求1所述的方法,其進一步包含響應于由所述處理器接收到的一個或一 個以上指令來修改所述經編程第二位精度。
13. —種用于處理器中的迭代算術邏輯單元,其包含算術邏輯電路,其經配置而以迭代方式處理第一位精度的運算數以獲得一結果;以及精度控制電路,其經配置以在所述結果實現小于所述第一位精度的經編程第二位 精度時終止所述迭代處理。
14. 根據權利要求13所述的迭代算術邏輯單元,其中所述算術邏輯電路進一步經配置 以填補所述結果,使得所述經填補的結果具有對應于所述第一位精度的位寬度。
15. 根據權利要求14所述的迭代算術邏輯單元,其中所述算術邏輯電路經配置以通過 將一個或一個以上邏輯O位附加到所述結果而填補所述結果,使得所述經填補的結 果具有對應于所述第一位精度的位寬度。
16. 根據權利要求13所述的迭代算術邏輯單元,其中所述算術邏輯電路進一步經配置 以舍位所述運算數的一個或一個以上最低有效位(LSB),使得所述經舍位的運算 數具有小于所述第一位精度且大于或等于所述經編程第二位精度的位精度。
17. 根據權利要求16所述的迭代算術邏輯單元,其中所述算術邏輯電路經配置以通過 掩蔽所述運算數LSB中的一者或一者以上來舍位所述運算數LSB中的一者或一者 以上。
18.根據權利要求13所述的迭代算術邏輯單元,其進一步包含經配置以舍入所述結果 的舍入邏輯。
19. 根據權利要求18所述的迭代算術邏輯單元,其中所述舍入邏輯經配置以通過使舍 入值與所述結果的最低有效位(LSB)對準以及有條件地將所述經對準的舍入值加 到所述結果來舍入所述結果。
20. 根據權利要求19所述的迭代算術邏輯單元,其中所述舍入邏輯經配置以通過移位 所述舍入值來使所述舍入值與所述結果的所述LSB對準,使得所述舍入值具有位 于對應于所述結果的所述LSB的位位置處的邏輯1。
21. 根據權利要求19所述的迭代算術邏輯單元,其中所述舍入邏輯經配置以通過解碼 所述第二經編程位精度以產生舍入運算數來使所述舍入值與所述結果的所述LSB 對準。
22. 根據權利要求13所述的迭代算術邏輯單元,其中所述精度控制電路經配置以響應 于由所述精度控制電路接收到的指示符而終止所述迭代處理。
23. —種處理器,其包含迭代算術邏輯單元,所述迭代算術邏輯單元經配置而以迭代方 式處理第一位精度的運算數以獲得一結果,且在所述結果實現小于所述第一位精度 的經編程第二位精度時終止所述迭代處理。
24. 根據權利要求23所述的處理器,其中所述迭代算術邏輯單元進一步經配置以填補 所述結果,使得所述經填補的結果具有對應于所述第一位精度的位寬度。
25. 根據權利要求23所述的處理器,其進一步包含用于存儲所述結果的寄存器,所述 寄存器具有小于所述第一位精度的位寬度。
26. 根據權利要求23所述的處理器,其中所述迭代算術邏輯單元進一步經配置以舍入 所述結果。
27. 根據權利要求26所述的處理器,其中所述迭代算術邏輯單元經配置以通過使舍入 值與所述結果的最低有效位(LSB)對準以及有條件地將所述經對準的舍入值加到 所述結果而舍入所述結果。
28. 根據權利要求27所述的處理器,其中所述迭代算術邏輯單元經配置以通過移位所 述舍入值來使所述舍入值與所述結果的所述LSB對準,使得所述舍入值具有位于 對應于所述結果的所述LSB的位位置處的邏輯1。
29. 根據權利要求27所述的處理器,其中所述迭代算術邏輯單元經配置以通過解碼所 述第二經編程位精度以產生舍入運算數來使所述舍入值與所述結果的所述LSB對 準。
30. 根據權利要求23所述的處理器,其進一步包含存儲元件,所述存儲元件經配置以 將所述經編程第二位精度存儲為固定值或存儲為動態(tài)可變值。
31. 根據權利要求30所述的處理器,其中響應于由所述處理器接收到的一個或一個以 上指令而修改所述存儲的動態(tài)可變值。
32. 根據權利要求23所述的處理器,其中所述算術邏輯單元響應于由所述處理器接收 到的指示符而終止所述迭代處理。
33. 根據權利要求32所述的處理器,其中所述指示符包含存儲于包括在所述處理器中 的寄存器中的旗標位。
全文摘要
一種包括在處理器中的精度受控的迭代算術邏輯單元(IALU)產生亞精度結果,即,具有小于全精度的位精度的結果。在一實施例中,所述精度受控的IALU包含算術邏輯電路和精度控制電路。所述算術邏輯電路經配置而以迭代方式處理第一位精度的運算數以獲得一結果。所述精度控制電路經配置以在所述結果達到小于所述第一位精度的經編程第二位精度時終止所述迭代運算數處理。在一實施例中,所述精度控制電路響應于由所述控制電路接收到的指示符而致使所述算術邏輯電路終止所述迭代運算數處理。所述精度受控的IALU進一步包含經配置以舍入所述亞精度結果的舍入邏輯。
文檔編號G06F7/499GK101432689SQ200780015639
公開日2009年5月13日 申請日期2007年4月20日 優(yōu)先權日2006年5月5日
發(fā)明者肯尼思·艾倫·多克塞爾 申請人:高通股份有限公司