TWI763757B - 用於處理機器無關數字格式之方法及設備 - Google Patents
用於處理機器無關數字格式之方法及設備Info
- Publication number
- TWI763757B TWI763757B TW106144005A TW106144005A TWI763757B TW I763757 B TWI763757 B TW I763757B TW 106144005 A TW106144005 A TW 106144005A TW 106144005 A TW106144005 A TW 106144005A TW I763757 B TWI763757 B TW I763757B
- Authority
- TW
- Taiwan
- Prior art keywords
- format
- processor
- digits
- intermediate products
- circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本發明揭示一種用於將以一機器無關格式所格式化之數字轉換為一機器相容格式之處理管線的實施例。回應於一轉換指令之執行,該處理管線可轉換呈一機器無關格式數字之一數字之各數位以產生經轉換數位。使用該等經轉換數位,該處理管線可產生多個中間產品。接著,該處理管線可組合該等中間產品以產生用一機器相容格式所格式化之一結果數字。
Description
本發明係關於積體電路,且更特定言之係關於處理器及浮動點數字單元。
處理器或處理器核心用於自桌上型電腦至蜂巢式電話之範圍內的多種應用中。在一些應用中,多個處理器或處理器核心可經連接在一起使得運算任務可在各種處理器當中共用。無論是單獨使用還是用作群組之部分,處理器皆利用順序邏輯電路、內部記憶體及類似者來執行程式指令且對輸入資料進行操作,該輸入資料可以一二進位數字系統表示。
其中使用處理器或處理器核心之一個特定應用係資料庫處理。由一處理器或處理器核心執行之軟體指令可容許分析一資料庫中之大量資料,舉例而言,諸如財務資料。此等資料庫可儲存於包含於一運算系統中之一或多個儲存裝置中,且可包含數字(舉例而言,諸如金額或類似者)以及其他相關資訊。取決於一特定資料庫之特性,不同資料庫可依不同格式儲存數字。
在分析包含於一資料庫中之資料時,一處理器或處理器核心可自該資料庫擷取資料之部分、格式化經擷取資料且將經格式化資料儲存於運算系
統之記憶體中以進行額外處理。為有利於此擷取、格式化及分析,一些處理器或處理器核心可採用協同處理器或其他專用硬體來執行更複雜的算術運算,舉例而言,諸如浮動點乘法。此等協同處理器可製造於一單獨積體電路晶片上,或可作為一單獨功能區塊包含於一處理器內。雖然在一些資料庫應用中,使用專用算術硬體可導致改良的運算效能,但所處理之數字之格式可專用於一特定資料庫。在此等情況中,可需要額外程式指令以容許不同處理器或處理器核心硬體組態對包含於一特定資料庫中之資料進行操作。
本發明揭示一種用於處理機器無關數字格式之設備及方法的各種實施例。廣泛而言,預期一種方法及設備,其中包含於一處理器中之一指令提取單元可經組態以接收複數個程式指令,且包含於該處理器中之一載入儲存單元可經組態以回應於該複數個程式指令之一或多者之一執行而自一儲存系統擷取一數字,其中該數字包含各自具有一第一格式之複數個數位。包含於該處理器中之一邏輯電路管線可經組態以回應於包含於該複數個程式指令中之一轉換指令之一執行而將該複數個數位自該第一格式轉換為一第二格式以產生複數個經轉換數位,且使用該複數個經轉換數位產生複數個中間產品。該邏輯電路管線可進一步經組態以組合該複數個中間產品以產生用一第三格式所格式化之一結果數字。
在一非限制性實施例中,該邏輯電路管線可進一步經組態以回應於判定該數字小於0而對該結果數字執行一二進位補碼運算。
在一項實施方案中,該邏輯電路管線可進一步經組態以回應於偵測到一溢位或反向溢位(underflow)狀況而用一常數值取代該結果數字。
100:運算系統
101:儲存系統/儲存裝置
102:處理器
103:記憶體
104:機器無關格式數字/數字
105:機器相容格式數字
106:數字轉換管線
107:資料庫
201:正負號/指數區塊
202:數位區塊
203:數位區塊
204:數位區塊
300:處理器
310a至310h:處理器核心
330:L3快取區
340:記憶體介面
350:輸入/輸出(I/O)介面
360:同調單元
370:同調/延展性介面
400:核心
410:指令提取單元(IFU)
414:指令快取區
420:記憶體管理單元(MMU)
430:執行單元
440:浮動點/圖形單元(FGU)
445:數字轉換管線
450:載入儲存單元(LSU)
452:資料快取區
490:L2快取記憶體/L2快取區
500:數字轉換管線
501:轉換電路
502:對準電路
503:乘法器電路
504A:節省進位加法器(CSA)
504B:節省進位加法器(CSA)
504C:節省進位加法器(CSA)
505:進位傳播加法器(CPA)
506:二進位補碼電路
507:多工電路
508:常數/常數值
509:結果數字
510:輸入數字
601:方塊
602:方塊
603:方塊
604:方塊
701:方塊
702:方塊
703:方塊
704:方塊
705:方塊
706:方塊
707:方塊
708:方塊
709:方塊
710:方塊
711:方塊
圖1係一運算系統之一實施例之一方塊圖。
圖2係描繪一數字格式之一實施例之一方塊圖。
圖3係一處理器之一實施例之一方塊圖。
圖4係一處理器核心之一實施例之一方塊圖。
圖5繪示一數字轉換管線之一實施例之一方塊圖。
圖6繪示描繪用於處理一資料庫之一方法之一實施例之一流程圖。
圖7繪示描繪用於將資料庫數字轉換成與一處理器或處理器核心一起使用之一格式之一方法之一實施例的一流程圖。
特定實施例在圖式中以實例方式展示且將在本文中詳細描述。然而,應瞭解,圖式及詳細描述並不意欲將申請專利範圍限於所揭示之特定實施例,即使其中僅關於一特定特徵描述一單一實施例。相反地,意欲涵蓋獲益於本發明的熟習此項技術者將明白之全部修改、等效物及替代物。除非另有陳述,否則本發明中提供之特徵之實例意欲為闡釋性的而非限制性的。
如在本申請案各處所使用,字詞「可」以一允許意義(即,意謂具有可能性以)而非以強制性意義(即,意謂必須)使用。類似地,字詞「包含(include/including/includes)」意謂包含但不限於。
各種單元、電路或其他組件可描述為「經組態以」執行一或多個任務。在此等內容背景中,「經組態以」係結構之一廣泛敘述,其一般意謂「具有電路以」在操作期間執行該一或多個任務。因而,單元/電路/組件可經組態以甚至在該單元/電路/組件當前並未運行時執行任務。一般而言,形成對應於「經組態以…」的結構之電路可包含硬體電路。類似地,為便於描述,各種單元/電路/組件可被描述為執行一或多個任務。此等描述應解
釋為包含片語「經組態以」。敘述經組態以執行一或多個任務之一單元/電路/組件明確意欲並不針對該單元/電路/組件援引35 U.S.C.§ 112規定第六段落之解釋。
在一運算系統中,可使用位元型樣之各種編碼來儲存且處理數值。因而,不同處理器實施方案可具有一給定數值之不同表示。此外,一些處理器可容許數字之多重表示且各種表示在不同運算系統之間可能不相容。
在一些運算應用(舉例而言,諸如資料庫處理)中,可依與處理器架構無關之一格式儲存數字使得可跨不同硬體平台使用資料庫。當存取依此一機器無關格式儲存數字之一資料庫時,一處理器可將機器無關格式轉換成原生於(native to)處理器之一格式。在一些情況中,透過執行程式指令而處置格式變化。當自一資料庫擷取呈一機器無關格式之一數字時,執行多個程式指令以將該數字轉換成用於處理器之一原生格式。接著,可將結果數字儲存於記憶體中以容許進一步處理,舉例而言,諸如對自資料庫擷取之數字執行算術運算。
「執行」之概念係廣泛的,且可指代:1)透過一執行管線(例如,透過提取、解碼、執行及淘汰(retire)階段)處理一指令;及2)在此一管線之一執行單元或執行子系統(例如,一整數執行單元或一載入儲存單元)處處理一指令。後者含義亦可稱為「執行」指令。因此,「執行」一加法指令指代將兩個運算元相加以產生一結果,在一些實施例中,此可藉由一管線之一執行階段處之一電路(例如,一執行單元)來完成。相反地,「執行」加法指令可指代作為加法指令之結果而發生在整個管線之操作之整體。類似地,「執行」一「載入」指令可包含(例如,自一快取區、記憶體或另一指
令之儲存結果)擷取一值且將該經擷取值儲存至一暫存器或其他位置中。
雖然執行程式指令以將一機器無關數字轉換成用於一特定處理器之一原生格式,但處理器關於可執行之其他運算任務可受限,藉此限制處理器及任何相關聯運算系統之總體效能。此外,在轉換數字時使用之程式指令之重複執行可增加功率消耗。在圖式中繪示且在下文描述之實施例可提供用於在不損耗運算效能及限制與轉換相關聯之功率消耗之情況下將數字自一機器無關格式轉換為用於一特定處理器之一原生數字格式的技術。
圖1中描繪之方塊圖中繪示能夠處理一資料庫之一運算系統。在所繪示實施例中,運算系統100包含處理器102,該處理器102耦合至記憶體103及儲存資料庫107之儲存系統101。
儲存系統101可根據各種設計方法之一者進行設計。例如,在一些實施例中,儲存系統101可包含多個硬碟機、快閃隨身碟或大容量儲存組件之任何其他適合組合。
在各項實施例中,儲存系統101可經組態以儲存待由運算系統100使用或產生之資料。例如,在本實施例中,資料庫107經儲存於儲存系統101上。資料庫107表示任何適合類型之資料庫(諸如,一賬務或財務資料庫)且可儲存多個數值。如下文更詳細描述,包含於資料庫107中之數值可依一機器無關格式儲存以容許資料庫107由具有與處理器102不同之內部架構之處理器或處理器核心使用。
如下文更詳細描述,處理器102可為經組態以執行程式指令之一通用處理器或任何其他專用處理電路。處理器102包含數字轉換管線106。在各項實施例中,數字轉換管線106可經組態以回應於藉由處理器102執行一指令而將一數字自一機器無關格式轉換為一機器相容格式,且將結果儲存於
記憶體103中。例如,在本實施例中,數字轉換管線106可將包含於資料庫107中之機器無關格式數字104轉換為機器相容格式數字105,且將機器相容格式數字105儲存於記憶體103中。在各項實施例中,機器相容格式數字105可與包含於處理器102中之算術電路相容。
熟知一處理器「管線」之概念,且其指代將一處理器對指令執行之「工作」分成多個階段之概念。在一項實施例中,指令解碼、調度、執行(即,履行)及淘汰可為不同管線階段之實例。許多不同管線架構可能具有元件/部分之變化的排序。各種管線階段在一或多個處理器時脈週期期間對一指令執行此等步驟,接著將該指令及/或與該指令相關聯之操作傳遞至其他階段以進行進一步處理。
記憶體103可包含任何適合類型之一或多個記憶體裝置,其經組態以儲存資料,諸如機器相容格式數字105。另外,記憶體103可儲存待由處理器102執行之多個程式指令。在一些實施例中,此等程式指令可包含一轉換指令,該轉換指令在由處理器102執行時引起數字轉換管線106將一數字自一機器無關格式轉換為一機器相容格式。
應注意,圖1中描繪之實施例僅為一實例。在其他實施例中,不同組件及組件之不同配置係可行的且預期的。
當數字(諸如(舉例而言)如圖1中繪示之機器無關格式數字104)被儲存於資料庫中時,該等數字係儲存為通常被稱為一電腦數字格式之一位元群組。一數值與一對應位元型樣之間的各種編碼係可行的,且可取決於一特定資料庫或與包含於一特定處理器或處理器核心中之電路相容。因而,不同資料庫針對相同數字可具有不同位元表示。
一些處理器可容許數字之多重表示(在本文中亦被稱為數字格式)。選
擇如何在一處理器內表示一給定數字可受控於軟體。例如,一使用者可選擇將一軟體程式內之一特定變數儲存為一定點數,其中使用固定數目個位元來儲存一數字之整數及小數部分。例如,在一32位元寬處理器中,16位元可用以儲存一數字之整數部分,且16位元可用以儲存該數字之小數部分。
為容許在一處理器內表示較大範圍之數字,可採用一浮動點數字格式。一浮動點數字格式可包含編碼一尾數(或有效數)之一系列位元、編碼一指數之一系列位元及一正負號位元。一起使用尾數、指數及正負號,可在一處理器內表示廣範圍之精度數字。各種浮動點數字格式係可行的,諸如電機電子工程師學會(IEEE)754-2008標準。
在一些情況中,儲存於一資料庫中之數字可呈與一處理器中之電路不相容之一格式。可需要將該等數字轉換成一處理器中之電路可透過多個軟體指令之執行而適應之一格式。為補救此等問題,可針對資料庫中之數字採用一硬體無關數字格式。圖2中繪示描繪一機器無關數字格式之一實施例之一方塊圖。在所繪示實施例中,藉由若干尾數位元組(數位區塊202至數位區塊204)及正負號/指數位元組(正負號/指數區塊201)表示一數值。可將數位區塊之數目儲存於與數字分離之一資料位元組中(未展示)。數位區塊及正負號/指數區塊之各者佔據多個有序位元組位置之一各自者。儘管在圖2之實施例中描繪20個位元組位置,然在其他實施例中,可採用任何適合數目個有序位元組位置。
各尾數位元組(在本文中亦稱為一「數位」或「尾數數位」)可編碼數值尾數之介於0與99之間的一單一數位。應注意,各尾數數位可包含所採用之編碼方案可能需要之任何適合數目個資料位元,且一隱含基數存在於佔據位元組位置1與位元組位置2之數位之間。在各項實施例中,各數位可分
別對應於介於0與99之間的一百進位(base-100)值,而導致在各尾數位元組中固有地加一。依此一格式編碼之一負數可包含呈一補碼形式且具有介於2與101之間的值之數位。在一些實施例中,自一值102減去數位可產生一數位之一補碼。
圖2中描繪之數字格式可提供浮動點數字之一機器無關表示。依此一方式格式化之數字可被處理為一位元組串流且被移送至不同處理器同時保留其等實值,藉此確保一特定運算在多個不同硬體平台上將具有相同結果。在一些實施例中,使用一數字(諸如圖2之方塊圖所描繪之數字)可容許數字在一資料庫中之高儲存密度,以及容許在一位元組基礎上排序且比較數字。
應注意,圖2中繪示之方塊圖僅為一實例。在其他實施例中,可採用不同數目個數位及不同編碼方案。
圖3中展示繪示一多執行緒處理器300之一項實施例之一方塊圖。在一些實施例中,處理器300可對應於如圖1中描繪之處理器102。在所繪示實施例中,處理器300包含複數個處理器核心310a至310h,其等亦被標示為「核心0」至「核心7」。應注意,儘管展示8個核心,然在各項實施例中,可採用任何適合數目個處理器核心。核心310之各者耦合至L3快取區300。L3快取區330耦合至同調單元360,該同調單元360繼而耦合至輸入/輸出(I/O)介面350、同調/延展性介面370。另外,同調單元360耦合至一或多個記憶體介面340,該一或多個記憶體介面340繼而耦合至系統記憶體之一或多個記憶體庫(未展示)。在各項實施例中,此系統記憶體可包含任何適合類型之記憶體,舉例而言,諸如全緩衝雙直列記憶體模組(FB-DIMM)、雙倍資料速率或雙倍資料速率2同步動態隨機存取記憶體(DDR/DDR2
SDRAM)或Rambus® DRAM(RDRAM®)。
如下文更詳細描述,I/O介面350可將處理器300耦合至周邊裝置及一網路。同調/延展性介面370可將處理器300耦合至啟動及/或服務裝置。在一些實施例中,包含於處理器300中之元件可製造為例如一單一半導體晶粒上之一單一積體電路(IC)之部分。
核心310a至310h可經組態以根據一特定指令集架構(ISA)執行指令及處理資料。在一項實施例中,核心210可經組態以實施SPARC® V9 ISA。在所繪示實施例中,核心310a至310h之各者可經組態以彼此獨立地操作,使得全部核心310a至310h可並行執行。另外,在一些實施例中,核心310a至310h之各者可經組態以同時執行多個執行緒,其中一給定執行緒可包含可獨立於來自另一執行緒之指令執行之一指令集。(例如,一個別軟體程序(諸如一應用程式)可由可經排程以藉由一運算系統執行之一或多個執行緒組成)。此一核心亦可稱為一多執行緒(MT)核心。在一項實施例中,核心310a至310h之各者可經組態以同時執行來自八個執行緒之指令而跨處理器300同時執行總共64個執行緒。然而,在其他實施例中,預期可提供其他數目個核心310a至310h,且核心310a至310h可同時處理不同數目個執行緒。
L3快取區330可經組態以快取指令及資料以供核心310a至310h使用。在所繪示實施例中,L3快取區330可組織成各自可獨立存取之八個可各別定址的記憶體庫,使得在無衝突之情況下,各記憶體庫可同時將資料返回至核心310a至310h之一各自者。在一些實施例中,各個別記憶體庫可使用集相聯或直接映射技術來實施。例如,在一項實施例中,L3快取區330可為一48百萬位元組(MB)快取區,其中各記憶體庫係與一64位元組線大小
16向集相聯,但其他快取區大小及幾何結構係可行的且預期的。在一些實施例中,L3快取區230可實施為一回寫快取區,其中無法將經寫入(已變更)資料寫入至系統記憶體,直至一對應快取線被收回。
記憶體介面340可經組態以例如回應於L3滿足請求及資料收回而管理資料在L3快取區330與系統記憶體之間的傳送。在一些實施例中,可實施記憶體介面340之多個例項,其中各例項經組態以控制系統記憶體之一各自記憶體庫。記憶體介面340可經組態以介接至任何適合類型之系統記憶體(諸如上文描述)。在一些實施例中,記憶體介面340可經組態以支援介接至多種不同類型之系統記憶體。
在所繪示實施例中,處理器300亦可經組態以自除系統記憶體以外之來源接收資料。I/O介面350可經組態以對此等來源提供一中央介面以經由同調單元360與核心310a至310h及/或L3快取區330交換資料。在一些實施例中,I/O介面350可經組態以協調資料經由同調單元260及記憶體介面240在外部周邊設備與系統記憶體之間的直接記憶體存取(DMA)傳送。
I/O介面350可經組態以協調處理器300與一或多個周邊裝置之間的資料傳送。此等周邊裝置可包含(但不限於):一儲存系統,其包含一或多個儲存裝置(例如,基於磁性或光學媒體之儲存裝置,包含硬碟機、磁帶機、CD機、DVD機等);顯示裝置(例如,圖形子系統);多媒體裝置(例如,音訊處理子系統);或任何其他適合類型之周邊裝置。在一項實施例中,I/O介面350可實施諸如快速周邊組件介面(PCI ExpressTM)之一介面之一或多個例項,但預期可採用任何適合介面標準或標準組合。例如,在一些實施例中,I/O介面250可經組態以實施通用串列匯流排(USB)協定或IEEE 1394(Firewire®)協定之一版本(除PCI ExpressTM之外或代替PCI ExpressTM)。
I/O介面350亦可經組態以協調處理器200與經由一網路耦合至處理器200之一或多個裝置(例如,其他電腦系統)之間的資料傳送。在一項實施例中,I/O介面350可經組態以執行資料處理以實施一乙太網路(IEEE 802.3)網路連結標準(舉例而言,諸如十億位元乙太網路或百億位元乙太網路),但預期可實施任何適合網路連結標準。在一些實施例中,I/O介面350可經組態以實施多個離散網路介面埠。
應注意,圖3中繪示之實施例僅為一實例。在其他實施例中,可採用不同數目個電路區塊及電路區塊之不同組態。
圖4中繪示一處理器核心之一可能實施例。在所繪示實施例中,核心400包含一指令提取單元(IFU)410,其耦合至一記憶體管理單元(MMU)420、一L2快取記憶體490及執行單元430。執行單元430耦合至一浮動點/圖形單元(FGU)440及一載入儲存單元(LSU)450兩者。該浮動點/圖形單元(FGU)440及該載入儲存單元(LSU)450之各者亦經耦合以將資料發送回至執行單元430。FGU 440亦耦合至數字轉換管線445。
指令提取單元410可經組態以將指令提供至核心400之其餘部分以進行執行。在所繪示實施例中,IFU 410可經組態以執行與以下各者有關之各種操作:自快取區或記憶體提取指令;自各種執行緒選擇指令以進行執行;及在將指令發出至各種功能單元以執行之前解碼此等指令。指令提取單元410進一步包含一指令快取區414。在一項實施例中,IFU 410可包含用以維持對應於由核心400執行之各執行緒之(例如,自程式計數器導出之)提取位址且用以根據該等提取位址協調自指令快取區414擷取指令的邏輯。
執行單元430可經組態以執行自IFU 410發出之特定類型之指令且針對該等指令提供結果。在一項實施例中,執行單元430可經組態以執行經實
施ISA中所定義之特定整數型指令,諸如算術、邏輯及移位指令。預期在一些實施例中,核心400可包含一個以上執行單元430,且該等執行單元之各者在功能性上可對稱或可不對稱。最後,在所繪示實施例中,目的地為FGU 440或LSU 450之指令通過執行單元430。然而,在替代實施例中,預期此等指令直接自IFU 410發出至其等各自單元而不通過執行單元430。
浮動點/圖形單元440可經組態以執行經實施ISA中所定義之特定浮動點及圖形導向指令且針對該等指令提供結果。例如,在一項實施例中,FGU 440可實施符合二進位浮動點算術之電機電子工程師學會(IEEE)754標準(更簡單稱為IEEE 754標準)之一版本的單精度及雙倍精度浮動點算術指令,諸如加法、減法、乘法、除法及特定超越函數。又,在一項實施例中,FGU 440可實施SPARC®可視指令集(VISTM)架構之一版本(諸如VISTM 2.0)所定義之分區算術及圖形導向指令。另外,在一項實施例中,FGU 440可實施特定整數指令(諸如整數乘法、除法及總數計數指令),且可經組態以執行乘法運算。取決於FGU 440之實施方案,一些指令(例如,一些超越指令或擴展精度指令)或指令運算元或結果分析藍本(例如,特定非正規運算元或預期結果)可由軟體捕獲且處置或模擬。
在所繪示實施例中,FGU 440可經組態以將各執行緒之浮動點暫存器狀態資訊儲存於一浮動點暫存器檔案中。在一項實施例中,FGU 440可針對浮動點加法/乘法、除法/平方根及圖形操作實施各別執行管線,而在其他實施例中,由FGU 440實施之指令可經不同地分區。在各項實施例中,取決於指令類型,由FGU 440實施之指令可經完全管線化(即,FGU 440可能夠每執行週期開始一個新指令)、經部分管線化,或可阻止發出直至完成。
如下文更詳細描述,數字轉換管線445可經組態以回應於包含於經實
施ISA中之一轉換指令之執行而執行及提供結果。在各項實施例中,轉換指令可針對處理固定長度及可變長度機器無關數字兩者,且取代意欲轉換數字格式之高階軟體副常式之執行。此等數字可用於各種應用(舉例而言,諸如資料庫)中以容許跨不同硬體平台共用數字。數字轉換管線445可包含於FGU 440內,或在其他實施例中,數字轉換管線445可為一分離功能區塊。
在一些實施例中,特殊指令可容許一目標指數(TE)引數,其指定一所要百進位輸出指數使得滿足方程式1。藉由提供一TE引數,可將多個數字轉換成各具有一共同指數值之機器特定數字。在各項實施例中,TE之一0值可導致格式轉換而無需調整輸出指數。
output_value×100 TE =input_value (1)
在所繪示實施例中,數字轉換管線445可經組態以改變機器無關數字內之個別尾數位元組之格式或清除該等個別尾數位元組(即,將其等設定為0)。數字轉換管線445可包含用於執行加法、乘法及類似者之專用邏輯電路。在其他實施例中,數字轉換管線445可與另一浮動點單元(舉例而言,諸如FGU 440)共用算術電路。
載入儲存單元450可經組態以處理資料記憶體參考(諸如整數及浮動點載入項)且儲存指令以及其他記憶體請求。在一些實施例中,LSU 450亦可經組態以幫助處理源自於IFU 410之指令快取區414遺失(miss)。LSU 450可包含一資料快取區452以及經組態以偵測快取遺失且據此回應而請求來自L2快取區490之資料的邏輯。在一項實施例中,資料快取區452可組態為一直寫式快取區,其中將全部儲存項寫入至L2快取區490而不管其等是否命中資料快取區452。
L2快取記憶體490可經組態以快取指令及資料以供執行單元430使
用。在所繪示實施例中,L2快取記憶體490可組織成各自可獨立存取之多個可各別定址的記憶體庫。在一些實施例中,各個別記憶體庫可使用集相聯或直接映射技術來實施。
在一些實施例中,L2快取記憶體490可實施為一回寫快取區,其中無法將經寫入(已變更)資料寫入至系統記憶體,直至一對應快取線被收回。L2快取記憶體490可不同地實施為單埠的或多埠的(即,能夠處理多個並行讀取及/或寫入存取)。在任一情況中,L2快取記憶體490可實施仲裁邏輯以在各種快取讀取及寫入請求程式中確定快取存取優先級。若發生L2快取記憶體490上之快取遺失,則可將請求轉送至一較高階快取區,舉例而言,諸如圖3中繪示之L3快取區330。
MMU 420可經組態以管理儲存於系統記憶體中之一或多個位址轉譯表,且回應於對一位址轉譯之一請求(諸如因一ITLB或DTLB遺失)而遍歷此等表(其等在一些實施例中可經階層式組織)。在一些實施例中,若MMU 420無法導出一有效位址轉譯(例如,若包含一分頁表之記憶體頁之一者未駐留在實體記憶體中(即,一頁遺失)),則MMU 420可經組態以產生一陷阱以容許一記憶體管理軟體常式處置該轉譯。
應注意,圖4中描繪之實施例僅為一實例,且為清楚起見已省略一些電路區塊。在其他實施例中,不同電路區段及電路區塊之不同配置係可行的且預期的。
圖5之方塊圖中描繪一數字轉換管線之一實施例。在所繪示實施例中,數字轉換管線500包含四個階段,各階段包含經組態以執行轉換程序之一特定部分之電路。藉由採用一管線結構,在轉換多個數字時,管線之不同階段可並行作用於不同數字而容許轉換電路之高利用率。
階段1包含耦合至對準電路502之轉換電路501。在各項實施例中,轉換電路501可包含經組態以將輸入數字510之各數位轉換成一中間格式之電路。例如,在一些實施例中,轉換電路501可將輸入數字510之數位自Oracle數字格式轉換為二進位寫碼的百進位數(binary coded centimal(BCC))。在此等情況中,轉換電路501可經組態以補充包含於輸入數字510中之負數位以及自各數位減去一個1。
另外,轉換電路501可清除包含於輸入數字510中之未用位元組,此係因為此等位元組在自記憶體擷取之後可具有一未知值。在一些情況中,轉換電路501可清除一終止102位元組(若存在)。儘管圖5中將轉換電路501描繪為產生包含10個位元組之一中間格式數字,然在其他實施例中,轉換電路501可基於輸入數字510之一大小產生包含任何適合數目個位元組之一中間格式數字。
如本文中所使用及描述,BCC係其中將兩個十進位數位儲存於一單一二進位位元組中之一編碼方案。二進位位元組之一值可表示在自0至255之範圍內之一數字,因此該二進位位元組可用以將自0至99之兩個十進位數位儲存為一個百進位值。
一旦將輸入數字510轉換成中間格式,對準電路502便可經組態以使用一移位計數值執行一移位以依數字之中間格式對準數字之尾數。在各項實施例中,對準電路502可包含經組態以依數字之中間格式對數字之尾數數位執行一右移位之一移位暫存器或其他適合電路。應注意,由對準電路502輸出之位元組之一數目取決於包含於自轉換電路501輸出之中間格式數字中的位元組之一數目。
在階段2中,乘法器電路503進一步轉換中間數字之數位。在一些實施
例中,乘法器電路503將10個百進位尾數數位轉換成二進位整數大小值(magnitude value)以產生10個中間產品。該轉換可藉由將各數位乘以100之一對應冪(在本文中亦稱為一對應「權重」)而完成。
乘法器電路503可包含個別乘法器電路,其等之各者可根據各種設計風格之一者來設計,舉例而言,諸如一布思(Booth)乘法器。儘管在圖5之實施例中明確涉及乘法器電路,然在其他實施例中,可採用乘法之任何適合方法,舉例而言,諸如連續相加。
在一些情況中,乘法器電路503可經組織以改良效能及減小與電路相關聯之面積及功率消耗。例如,由於BCC數位不能超過一值99(值100至255無效),故可僅對7個位元而非包含於一給定數位中之全部8個位元執行乘法。另外,最高有效BCC數位不能超過一值9,因此最高有效BCC數位可藉由4個位元而非7個位元或8個位元來表示。
基於乘以對應權重,一些中間產品可具有已知為0之最低有效位元。在知道此之情況下,可如圖5中展示般合併在一起之一些中間產品可利用此等最低有效位元所佔據之空間。例如,具有權重1001之乘法器之輸出可與具有權重1007之乘法器之輸出合併。應注意,此一合併僅為一實例,且在其他實施例中,不同中間產品可以不同方式合併以達成乘法器電路503之所要面積及效能目標。
在數字轉換管線500之階段3中,使用節省進位加法器(CSA)進一步組合中間產品。明確言之,CSA 504A及CSA 504B各自組合四個中間產品以產生各自總和及進位值。藉由CSA 504C進一步組合結果總和及進位值以產生另一總和及進位值,而將中間產品之數目有效地減少為兩個。
如本文中所使用及描述,一CSA係經組態以對兩個數字執行二進位加
法且輸出因該加法所得之所得總和以及進位值之一加法器電路。本文中描述之CSA電路可根據各種設計風格之一者來設計,且可包含動態及/或靜態邏輯閘之任何適合組合。
在數字轉換管線500之階段4中,使用一進位傳播加法器(CPA)組合CSA 504C之輸出以產生一單一中間產品。如本文中所使用及描述,一CPA係其中來自兩個加數之一對特定位元之一總和取決於來自一對較低階位元之一總和之一進位值的一加法器。在所繪示實施例中,CPA 505將CSA 504C之輸出組合成一單一中間產品。
接著,二進位補碼電路506可根據輸入數字510之正負號而處理CPA 505之輸出。若輸入數字510為負,則二進位補碼電路506可使CPA 505之輸出之各位元反相且加1,以產生CPA 505之輸出之一二進位補碼版本。在各項實施例中,二進位補碼電路506可包含邏輯閘、鎖存器、正反器及經組態以執行二進位補碼運算之類似者之任何適合組合。應注意,在將轉換一10位元組輸入數字時之情況中,二進位補碼電路506之輸出可為一64位元數字。
階段4亦包含用於處理溢位及反向溢位情況之一電路區塊。多工電路507可選擇性地在二進位補碼電路506之輸出與常數508之間選取。例如,若不存在一反向溢位或溢位狀況,則多工電路507可將二進位補碼電路506之輸出傳遞至結果數字509,該結果數字509可為一有正負號的64位元二進位整數。或者,若在轉換程序期間已偵測到一溢位或反向溢位狀況,則多工電路507可選擇性地將常數508傳遞至結果數字509。在各項實施例中,常數值508可對應於指示一溢位或反向溢位狀況之一指定值。
應注意,圖5中描繪之實施例僅為一實例。在其他實施例中,不同電
路區塊及電路區塊之不同配置係可行的且預期的。
參考圖6,其繪示描繪用於處理一資料庫之一方法之一實施例的一流程圖。共同參考圖1以及圖6之流程圖,該方法在方塊601中開始。
可自儲存於儲存裝置101上之一資料庫擷取一數字(舉例而言,諸如數字104)(方塊602)。在各項實施例中,可回應於藉由處理器102執行之一或多個程式指令之執行而擷取數字,且可用一機器無關格式來格式化該數字。此等指令可儲存於記憶體103中且可包含為一應用程式或其他軟體程式之部分。
接著,可使用一轉換指令來將經擷取數字之格式轉換成一替代格式(方塊603)。在各項實施例中,數字轉換管線106可回應於包含於處理器102之ISA中的一轉換指令之執行而將經擷取數字自一機器無關格式轉換為與包含於處理器102內的一浮動點單元相容之一格式。例如,可將數字轉換為二進位整數格式使得處理器102可容易處理該數字。藉由具有使用專門電路觸發格式轉換之一專用指令,在各項實施例中,處理器102可運用最小數目個程式指令之執行來執行格式轉換,藉此節省執行時間及功率消耗。
一旦經轉換數字已經產生,便可將其儲存於記憶體103中(方塊604)。接著,可回應於執行程式指令而使經轉換數字可用於藉由處理器102之額外處理。由於數字已經轉換成一相容數字格式,故可在無進一步格式改變之情況下繼續進行額外處理,直至準備將任何處理之一結果儲存至儲存裝置101中,此時可將該結果轉換成機器無關格式。
應注意,圖6之流程圖中描繪之方法之實施例僅為一實例。在其他實施例中,可採用不同操作及不同操作順序。
參考圖7,其繪示描繪用於改變數字格式之一方法之一實施例的一流程圖。共同參考圖5以及圖7之流程圖,該方法在方塊701中開始。應注意,在以下流程圖之描述之部分中,出於繪示之目的而假定特定數目個尾數數位。在其他實施例中,可採用任何適合數目個尾數數位。
轉換電路501可接收以一機器無關格式所格式化之一運算元(即,來自一資料庫之一數字)且將數字之個別數位轉換為一不同格式(方塊702)。在各項實施例中,機器格式可為Oracle數字格式,且轉換電路501將Oracle數字轉換為一BCC數字。在一些實施例中,轉換可包含補充負數位,及減去包含於根據Oracle數字格式予以格式化之一數位中的固有+1值。
接著,轉換電路510可清除最近格式化之數字中的未用數位(方塊703)。未用數位在自記憶體載入時可具有一未知值,且許多軟體程式或應用程式在執行一運算之前可能不清除此等數位。在一些情況中,若存在一終止102數位,則亦可將其清除。
接著,對準電路502可對準經格式化數字之尾數(方塊704)。為對準尾數,對準電路502可執行一或多個右移位運算。在一些情況中,尾數數位可右移位達0至9個位元組。
接著,乘法器電路503可產生多個中間產品(方塊705)。在各項實施例中,接著可將尾數數位自百進位值轉換至二進位整數值,此產生多個中間產品。例如,若存在10個尾數數位,則藉由將各尾數數位乘以一對應權重將產生10個中間產品。與各尾數數位相關聯之權重之一實例展示於表1中。
在一些情況中,可減少所得中間產品之數目。例如,在10個中間產品之情況中,可藉由識別未用之最低有效位元中的區域且將來自一不同中間產品之其他位元合併至該等未用位元中而將該10個中間產品減少至8個中間產品。
接著,可使用CSA 504A、CSA 504B及CSA 504C進一步減少中間產品之數目(方塊706)。在各項實施例中,CSA 504A、504B及504C將中間產品之群組相加在一起以產生一組新的中間產品。例如,在8個中間產品之情況中,可將該8個中間產品組合成一組新的2個中間產品。
接著,CPA 505可組合新的中間產品以產生一結果數字(方塊707)。在各項實施例中,可用所要格式(舉例而言,諸如二進位整數)格式化結果數字。接著,方法可判定原始運算元之正負號(方塊708)。
若原始運算元為正(即,大於或等於0),則多工電路508可在溢位或反向溢位之事件中選擇一適當常數來取代結果數字(方塊709)。在一些實施例中,若在結果數字中偵測到一反向溢位,則多工電路508可選擇可與處理器中之反向溢位狀況相關聯之一特定常數值。或者,若存在一溢位狀況,則多工電路508可選擇與溢位狀況相關聯之一不同常數。接著,方法可在方塊710中結束。
或者,若原始運算元為負,則二進位補碼電路507可對結果數字執行一二進位補碼運算(方塊711)。在各項實施例中,二進位補碼運算可包含自2 N 減去結果數字,其中N係指定結果數字中之位元之總數目之一正整數。一旦已執行二進位補碼運算,方法便可自方塊709繼續,如上文描述。
應注意,圖7之流程圖中描繪之方法僅為一實例。在其他實施例中,不同操作及不同操作順序係可行的且預期的。
儘管上文已描述特定實施例,然此等實施例即使在關於一特定特徵僅描述一單一實施例之情況下亦不意欲限制本發明之範疇。本發明中提供之特徵之實例意欲具闡釋性而非限制性,除非另有陳述。上文描述意欲涵蓋如獲益於本發明之熟習此項技術者將明白之此等替代例、修改及等效物。
本發明之範疇包含本文中(明確地或隱含地)揭示之任何特徵或特徵組合,或其等之任何概括,無論其是否減輕本文中所探討之任何或全部問題。因此,可在本申請案(或主張本申請案的優先權之一申請案)之審查期間針對任何此特徵組合表述新的申請專利範圍。特定言之,參考隨附申請專利
範圍,來自附屬請求項之特徵可與獨立請求項之特徵組合,且來自各自獨立請求項之特徵可以任何適當方式組合且不僅僅在隨附申請專利範圍中所列舉之特定組合中。
100:運算系統
101:儲存系統/儲存裝置
102:處理器
103:記憶體
104:機器無關格式數字
105:機器相容格式數字
106:數字轉換管線
107:資料庫
Claims (14)
- 一種用於處理機器無關數字格式之方法,其包括:回應於藉由一處理器執行一或多個程式指令而藉由該處理器自一儲存裝置擷取一數字,其中該數字包含複數個數位(digit),該複數個數位之各者用一第一格式格式化;藉由包含在該處理器中之一轉換電路將該複數個數位之各數位自該第一格式轉換為包含複數個經轉換數位之一第二格式;藉由包含在該處理器中之一乘法器電路使用該複數個經轉換數位產生複數個中間產品;及藉由包含在該處理器中之複數個節省進位加法器電路組合該複數個中間產品以產生一結果數字,該結果數字以原生於該處理器之一格式格式化。
- 如請求項1之方法,其進一步包括回應於判定該數字小於0而對該結果數字執行一二進位補碼運算。
- 如請求項1之方法,其進一步包括回應於偵測到一溢位或反向溢位狀況而選擇用一常數值取代該結果數字。
- 如請求項1之方法,其中組合該複數個中間產品包含:對該複數個中間產品之一第一子集執行一第一加法運算,及對該複數個中間產品中不同於該第一子集之一第二子集執行一第二加法運算。
- 如請求項1之方法,其中該第二格式包括二進位寫碼的百進位數,且原生於該處理器之該格式包括二進位整數。
- 如請求項1之方法,其中將該複數個數位自該第一格式轉換為該第二格式包含:執行一移位運算以對準該數字之一尾數。
- 如請求項1之方法,其中將該複數個數位自該第一格式轉換為該第二格式包含:回應於判定一特定數位未使用而清除該特定數位。
- 如請求項1之方法,其中該數字包含於儲存於該儲存裝置上之一資料庫中。
- 一種用於處理機器無關數字格式之設備,其包括:一處理器,其經組態以接收以具有複數個數位之一第一格式之一數字,該複數個數位之各者以該第一格式格式化,其中該處理器包括:一轉換電路,其經組態以將該複數個數位之各數位自該第一格式轉換為包含複數個經轉換數位之一第二格式;一乘法器電路,其經組態以使用該複數個經轉換數位產生複數個中間產品;及複數個節省進位加法器電路,其經組態以組合該複數個中間產品以產生一結果數字,該結果數字以原生於該處理器之一格式格式化。
- 如請求項9之設備,其中該處理器進一步包含一補碼電路,該補碼電路經組態以回應於判定該數字小於0而對該結果數字執行一二進位補碼運算。
- 如請求項9之設備,其中該處理器進一步包含一乘法器電路,該乘法器電路經組態以回應於偵測到一溢位或反向溢位狀況而用一常數值取代該結果數字。
- 如請求項9之設備,其中該處理器進一步包含一對準電路,該對準電路經組態以使用該複數個經轉換數位執行一移位運算以對準該數字之一尾數。
- 如請求項9之設備,其中該複數個節省進位加法器電路之一第一節省進位加法器電路經組態以對該複數個中間產品之一第一子集執行一第一加法運算,且該複數個節省進位加法器電路之一第二節省進位加法器電路經組態以對該複數個中間產品中不同於該第一子集之一第二子集執行一第二加法運算。
- 如請求項9之設備,其中該第二格式包括二進位寫碼的百進位數,且原生於該處理器之該格式包括二進位整數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/378,701 | 2016-12-14 | ||
US15/378,701 US10228939B2 (en) | 2016-12-14 | 2016-12-14 | Efficient conversion of numbers from database floating point format to binary integer format |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201830233A TW201830233A (zh) | 2018-08-16 |
TWI763757B true TWI763757B (zh) | 2022-05-11 |
Family
ID=62487902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106144005A TWI763757B (zh) | 2016-12-14 | 2017-12-14 | 用於處理機器無關數字格式之方法及設備 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10228939B2 (zh) |
TW (1) | TWI763757B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10228939B2 (en) * | 2016-12-14 | 2019-03-12 | Oracle International Corporation | Efficient conversion of numbers from database floating point format to binary integer format |
US11663004B2 (en) | 2021-02-26 | 2023-05-30 | International Business Machines Corporation | Vector convert hexadecimal floating point to scaled decimal instruction |
US11360769B1 (en) * | 2021-02-26 | 2022-06-14 | International Business Machines Corporation | Decimal scale and convert and split to hexadecimal floating point instruction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684232B1 (en) * | 2000-10-26 | 2004-01-27 | International Business Machines Corporation | Method and predictor for streamlining execution of convert-to-integer operations |
TW200524411A (en) * | 2003-11-10 | 2005-07-16 | Samsung Electronics Co Ltd | Storage medium storing text-based subtitle data including style information, and apparatus and method of playing back the storage medium |
US8977663B2 (en) * | 2012-03-13 | 2015-03-10 | Oracle International Corporation | Converting binary values into binary-coded-centimal values |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764548A (en) | 1995-09-29 | 1998-06-09 | Intel Corporation | Fast floating-point to integer conversion |
KR19980082906A (ko) | 1997-05-09 | 1998-12-05 | 김영환 | 부동 소수점 숫자의 정수형으로의 변환 방법 |
US6292815B1 (en) | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6633895B1 (en) * | 2000-02-22 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US7707233B2 (en) | 2005-05-19 | 2010-04-27 | Intel Corporation | Coverting a number from a first base to a second base |
US9081608B2 (en) | 2012-05-19 | 2015-07-14 | Digital System Research Inc. | Residue number arithmetic logic unit |
US9747073B2 (en) * | 2014-03-06 | 2017-08-29 | Oracle International Corporation | Floating point unit with support for variable length numbers |
US9507564B2 (en) * | 2014-04-14 | 2016-11-29 | Oracle International Corporation | Processing fixed and variable length numbers |
US10228939B2 (en) * | 2016-12-14 | 2019-03-12 | Oracle International Corporation | Efficient conversion of numbers from database floating point format to binary integer format |
-
2016
- 2016-12-14 US US15/378,701 patent/US10228939B2/en active Active
-
2017
- 2017-12-14 TW TW106144005A patent/TWI763757B/zh active
-
2019
- 2019-03-11 US US16/299,073 patent/US10552150B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684232B1 (en) * | 2000-10-26 | 2004-01-27 | International Business Machines Corporation | Method and predictor for streamlining execution of convert-to-integer operations |
TW200524411A (en) * | 2003-11-10 | 2005-07-16 | Samsung Electronics Co Ltd | Storage medium storing text-based subtitle data including style information, and apparatus and method of playing back the storage medium |
US8977663B2 (en) * | 2012-03-13 | 2015-03-10 | Oracle International Corporation | Converting binary values into binary-coded-centimal values |
Also Published As
Publication number | Publication date |
---|---|
US10552150B2 (en) | 2020-02-04 |
US20180165093A1 (en) | 2018-06-14 |
US10228939B2 (en) | 2019-03-12 |
US20190205133A1 (en) | 2019-07-04 |
TW201830233A (zh) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643228B (zh) | 用于浮点乘加运算的低能耗尾数乘法 | |
US10474628B2 (en) | Processor with variable rate execution unit | |
CN111680789B (zh) | 神经网络单元 | |
US9141131B2 (en) | Methods and systems for performing exponentiation in a parallel processing environment | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
US9086890B2 (en) | Division unit with normalization circuit and plural divide engines for receiving instructions when divide engine availability is indicated | |
US8452831B2 (en) | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations | |
US8356160B2 (en) | Pipelined multiple operand minimum and maximum function | |
US10353670B2 (en) | Floating point unit with support for variable length numbers | |
US11262980B2 (en) | Computing accelerator using a lookup table | |
US10180819B2 (en) | Processing fixed and variable length numbers | |
US10552150B2 (en) | Efficient conversion of numbers from database floating point format to binary integer format | |
US6341300B1 (en) | Parallel fixed point square root and reciprocal square root computation unit in a processor | |
CN104823153B (zh) | 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备 | |
US7774393B1 (en) | Apparatus and method for integer to floating-point format conversion | |
US10289386B2 (en) | Iterative division with reduced latency | |
US20150378726A1 (en) | Implementation for a high performance bcd divider | |
Makino et al. | The performance of GRAPE-DR for dense matrix operations | |
Lu et al. | ARM Cortex-A* Series Processors |