TWI522906B - 自十進制浮點格式轉換至區位格式 - Google Patents
自十進制浮點格式轉換至區位格式 Download PDFInfo
- Publication number
- TWI522906B TWI522906B TW101144557A TW101144557A TWI522906B TW I522906 B TWI522906 B TW I522906B TW 101144557 A TW101144557 A TW 101144557A TW 101144557 A TW101144557 A TW 101144557A TW I522906 B TWI522906 B TW I522906B
- Authority
- TW
- Taiwan
- Prior art keywords
- field
- operand
- sign
- location
- register
- Prior art date
Links
- 238000007667 floating Methods 0.000 title claims description 55
- 230000015654 memory Effects 0.000 claims description 172
- 238000006243 chemical reaction Methods 0.000 claims description 60
- 238000012545 processing Methods 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 35
- 230000006870 function Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 29
- 238000006073 displacement reaction Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 12
- 238000013519 translation Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 10
- 238000007792 addition Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000005764 inhibitory process Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000012884 algebraic function Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000009940 knitting Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30098—Register arrangements
Description
本發明之一態樣一般係關於在一計算環境內之處理,且詳言之,係關於將資料自一格式轉換至另一格式。
可按許多不同格式將資料儲存於內部電腦儲存器或外部儲存器中,該等格式包括擴展二進制編碼十進制交換碼(EBCDIC)、美國資訊交換標準碼(ASCII)及十進制浮點等等。
不同電腦架構支援不同資料格式,且可希望對特定格式實行操作。在此情況下,可能需要將處於一種格式下之資料轉換至所要的格式。
另外,傳統上,用以處理按EBCDIC或ASCII格式儲存於資料庫中之數字十進制資料的運算直接在儲存器上操作。被稱作儲存器至儲存器十進制運算之此等運算及此等運算之執行受到記憶體介面之延時限制。取決於來自先前運算之結果的每一運算在其可開始前必須等待,直至將結果寫出至儲存器為止。因為記憶體延時與處理器速度之間的間隙繼續增大,所以此等運算之相對執行繼續減少。
經由提供一種用於在一中央處理單元中執行一機器指令之電腦程式產品來克服先前技術之缺點及提供優勢。該電腦程式產品包括一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於由該處理電路執行以用於執行一方法之指
令。該方法包括(例如)由一處理器獲得用於執行之一機器指令,該機器指令根據一電腦架構經定義用於電腦執行,該機器指令包括:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一自十進制浮點轉換至區位函式;一第一暫存器欄位,其指明一第一暫存器,該第一暫存器包含一第一運算元;一第二暫存器欄位及一位移欄位,其中由該第二暫存器欄位指明的一第二暫存器之內容與該位移欄位之內容組合以形成一第二運算元之一位址;及一遮罩欄位,該遮罩欄位包括在該機器指令之執行期間使用之一或多個控制;及執行該機器指令,該執行包括:將一十進制浮點格式的該第一運算元之至少一部分轉換至一區位格式;及將該轉換之一結果置放於由該第二運算元之該位址指明的一位置處。
本文中亦描述及主張係關於本發明之一或多項態樣之方法及系統。另外,本文中亦描述且可主張係關於本發明之一或多項態樣的服務。
經由本發明之技術,認識到額外特徵及優勢。本發明之其他實施例及態樣在本文中得以詳細描述且被視為所主張之本發明之一部分。
本發明之一或多項態樣在本說明書之結束處之申請專利範圍中作為實例經特定指出且清楚地主張。自以下結合附圖進行之詳細描述,本發明之前述內容及目標、特徵及優勢係顯而易見的。
不同電腦架構可支援不同資料格式,且所支援之資料格式可隨時間改變。舉例而言,由International Business Machines Corporation提供之機器傳統上已支援EBCDIC及ASCII格式。後來,機器開始支援十進制浮點(DFP)格式及運算,存在針對DFP格式及運算之IEEE標準(IEEE 754-2008)。然而,為了使用DFP運算,待將EBCDIC及ASCII資料轉換至DFP。
根據本發明之一態樣,提供在EBCDIC或ASCII與十進制浮點之間轉換之一有效機制。在一項實例中,此機制在無其他技術之記憶體額外負擔之情況下實行轉換。
在本發明之一項態樣中,提供機器指令,該等機器指令自記憶體讀取EBCDIC或ASCII資料(其具有區位格式),將其轉換至適當的十進制浮點格式,且將其寫入至一目標浮點暫存器或浮點暫存器對。此等指令在本文中被稱作長的自區位轉換指令(CDZT)及擴展的自區位轉換指令(CXZT)。
在本發明之再一態樣中,提供機器指令,該等機器指令將源浮點暫存器或浮點暫存器對中之十進制浮點(DFP)運算元轉換至EBCDIC或ASCII資料,且將其儲存至目標記憶體位置。此等指令在本文中被稱作長的轉換至區位指令(CZDT)及擴展的轉換至區位指令(CZXT)。
參看圖1描述併有且使用本發明之一或多項態樣的一計算環境之一項實施例。計算環境100包括(例如)經由(例如)一或多個匯流排108及/或其他連接相互耦接之一處理器
102(例如,中央處理單元)、一記憶體104(例如,主記憶體)及一或多個輸入/輸出(I/O)器件及/或介面106。
在一項實例中,處理器102為z/Architecture®處理器,其為由International Business Machines Corporation(IBM®)(紐約Armonk)提供的系統System z®伺服器之部分。System z®伺服器實施由International Business Machines Corporation提供之z/Architecture®,其指定電腦之邏輯結構及函式運算。z/Architecture®之一項實施例描述於題為「z/Architecture Principles of Operation」的IBM®公開案(IBM®公開案第SA22-7832-08號,第九版,2010年8月)中,該公開案在此以引用的方式全部併入本文中。在一項實例中,該伺服器執行一作業系統,諸如,亦由International Business Machines Corporation提供之z/OS®。IBM®、z/Architecture®及z/OS®為International Business Machines Corporation(美國紐約Armonk)之註冊商標。本文中使用之其他名稱可為International Business Machines Corporation或其他公司之註冊商標、商標或產品名稱。
參看圖2A描述併有且使用本發明之一或多項態樣的一計算環境之另一實施例。在此實例中,計算環境200包括(例如)經由(例如)一或多個匯流排208及/或其他連接相互耦接之一原生中央處理單元202、一記憶體204及一或多個輸入/輸出器件及/或介面206。作為實例,計算環境200可包括由International Business Machines Corporation(紐約Armonk)提供之PowerPC®處理器、pSeries®伺服器或
xSeries®伺服器;由Hewlett Packard Co.(Palo Alto,California)提供的具有Intel Itanium II®處理器之HP Superdome;及/或基於由IBM®、Hewlett Packard、Intel、Sun Microsystems或其他者提供之架構的其他機器。PowerPC®、pSeries®及xSeries®為International Business Machines Corporation(美國紐約Armonk)之註冊商標。Intel®及Itanium II®為Intel Corporation(Santa Clara,California)之註冊商標。
原生中央處理單元202包括在環境內之處理期間使用的一或多個原生暫存器210,諸如,一或多個通用暫存器及/或一或多個特殊用途暫存器。此等暫存器包括表示在任何特定時間點的環境狀態之資訊。
此外,原生中央處理單元202執行儲存於記憶體204中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體204中之模擬器(emulator)程式碼212。此程式碼使在一個架構中組態之處理環境能夠模擬另一架構。舉例而言,模擬器程式碼212允許基於不同於z/Architecture®之架構的機器(諸如,PowerPC®處理器、pSeries®伺服器、xSeries®伺服器、HP Superdome伺服器或其他者)模擬z/Architecture®及執行基於z/Architecture®開發之軟體及指令。
參看圖2B描述關於模擬器程式碼212之其他細節。客體指令250包含經開發以待在不同於原生CPU 202之架構的一架構中執行之軟體指令(例如,機器指令)。舉例而言,客
體指令250可已經設計以在z/Architecture®處理器102上執行,但實情為,正在原生CPU 202(其可為(例如)Intel® Itanium II®處理器)上經模擬。在一項實例中,模擬器程式碼212包括一指令提取單元252以自記憶體204獲得一或多個客體指令250,及視情況提供用於獲得之指令的局部緩衝。其亦包括一指令轉譯常式254以判定已獲得的客體指令之類型且將客體指令轉譯成一或多個對應的原生指令256。此轉譯包括(例如)識別待由客體指令實行之函式及選擇原生指令來實行彼函式。
另外,模擬器212包括一模擬控制常式260以使原生指令被執行。模擬控制常式260可使原生CPU 202執行模擬一或多個先前獲得之客體指令的原生指令之常式,且在此執行完結時,將控制返回至指令提取常式以模擬下一個客體指令或一群客體指令之獲得。客體指令250之執行可包括將資料自記憶體204載入至暫存器;將資料自暫存器儲存回至記憶體;或實行某一類型之算術或邏輯運算(如由轉譯常式判定)。
每一常式(例如)以軟體實施,該軟體儲存於記憶體中且由原生中央處理單元202執行。在其他實例中,常式或運算中之一或多者以韌體、硬體、軟體或其某一組合實施。可使用原生CPU之暫存器210或藉由使用記憶體204中之位置來模擬模擬之處理器的暫存器。在實施例中,客體指令250、原生指令256及模擬器程式碼212可常駐於同一記憶體中或可分佈在不同記憶體器件間。
如本文中使用,韌體包括(例如)處理器之微碼、毫碼及/或巨碼。其包括(例如)在較高層級機器程式碼之實施中使用的硬體層級指令及/或資料結構。在一項實施例中,其包括(例如)通常作為微碼遞送之專有程式碼,該微碼包括特定針對基礎硬體之受信任軟體或微碼且控制作業系統對系統硬體之存取。
在一項實例中,經獲得、轉譯及執行之客體指令250為本文中描述的指令中之一者。在此實例中為z/Architecture®指令之指令自記憶體經提取、轉譯且表示為被執行之一連串原生指令256(例如,PowerPC®、pSeries®、xSeries®、Intel®等)。
在另一實施例中,在另一架構環境中執行該等指令中之一或多者,該另一架構環境包括(例如)如在以下各者中描述之架構:2006年11月之「Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1」(序號253665-022US);2006年11月之「Intel® 64 and IA-32 Architecture Software Developer's Manual Volume 2A」(序號253666-022US);2006年1月之「Intel® Itanium® Architecture Software Developer's Manual Volume 1」(文件號245317-005);2006年1月之「Intel® Itanium® Architecture Software Developer's Manual Volume 2」(文件號245318-005);及/或2006年1月之「Intel® Itanium® Architecture Software Developer's Manual Volume 3」(文件號245319-005);以上各者中之每一者在此以引用的方式全部併入本文中。
本文中描述之處理器以及其他者執行實行某些功能(諸如,在EBCDIC或ASCII與十進制浮點格式之間轉換)之指令。在一項實例中,EBCDIC或ASCII資料具有區位格式,且因此,實例指令包括(例如)如本文中描述之自區位轉換至十進制浮點指令以及自十進制浮點轉換至區位指令。
然而,在描述指令前,描述本文中提及之各種資料格式。舉例而言,在區位格式下,位元組之最右邊四個位元稱作數字位元(N)且通常包括表示十進制數位(digit)之代碼。位元組之最左邊四個位元稱作區位元(Z),惟十進制運算元之最右邊位元組除外,在該情況下,可將此等位元作為區位或作為正負號(S)來處理。
區位格式之十進制數位可為較大字元集合之部分,其亦包括字母及特殊字元。區位格式因此適合於按人可讀形式輸入、編輯及輸出數字資料。在一項實施例中,十進制算術指令不直接按區位格式對十進制數運算;此等數首先經轉換至(例如)十進制浮點格式中之一者。
可按三個資料格式中之任一者表示十進制浮點資料:短、長或擴展。每一資料格式之內容表示經編碼之資訊。指派特殊代碼以將有限數與NaN(非數)及無限數區分開。
對於有限數,按該格式使用有偏指數(biased exponent)。對於每一格式,將與用於左單元視圖(LUV)指數之有偏不同的有偏用於右單元視圖(RUV)指數。有偏指數為不帶正負號之數。藉由組合欄位中的有效數(significand)之最左邊數位(LMD)來編碼有偏指數。在經編
碼之尾有效數欄位中編碼有效數之其餘數位。
此等資料格式之實例為:
當將DFP短格式之運算元載入至浮點暫存器中時,其佔據暫存器之左半邊,且右半邊保持不變。
當將DFP長格式之運算元載入至浮點暫存器中時,其佔據整個暫存器。
DFP擴展格式之運算元佔據浮點暫存器對。最左邊之64個位元佔據該對之全部較低編號之暫存器,且最右邊之64個位元佔據全部較高編號之暫存器。
正負號位元在每一格式之位元0中,且(例如)對於正為0
且對於負為1。
對於有限數,組合欄位包括有偏指數及有效數之最左邊數位;對於NaN及無限數,此欄位包括識別其之代碼。
當該格式之位元1-5處於00000-11101之範圍中時,運算元為有限數。將有偏指數之兩個最左邊位元及有效數之最左邊數位編碼於該格式之位元1-5中。位元6至組合欄位之末尾包括有偏指數之其餘者。
當格式欄位之位元1-5為11110時,運算元為無限數。組合欄位中在該格式之位元5右邊的所有位元構成用於無限數之保留欄位。保留欄位中之非零值接受於源無限數中;在所得無限數中將保留欄位設定為0。
當該格式之位元1-5為11111時,運算元為NaN,且位元6(稱作SNaN位元)進一步將QNaN與SNaN區分開。若位元6為0,則其為QNaN;否則,其為SNaN。組合欄位中在該格式之位元6右邊的所有位元構成用於NaN之保留欄位。
保留欄位中之非零值接受於源NaN中;在所得NaN中將保留欄位設定為0。
下表總結組合欄位之編碼及佈局。在該表中,有限數之有偏指數為兩個部分之串聯:(1)自該格式之位元1-5導出兩個最左邊位元,及(2)組合欄位中之其餘位元。舉例而言,若DFP短格式之組合欄位含有10101010101二進制,則其表示10010101二進制之有偏指數及最左邊有效數數位5。
經編碼之尾有效數欄位包括一經編碼之十進制數,其表示尾有效數中之數位。尾有效數包括所有有效數數位,惟最左邊的數位除外。對於無限數,非零尾有效數數位接受於源無限數中;將所得無限數中之所有尾有效數數位設定為0,除非另有規定。對於NaN,此欄位包括稱作酬載(payload)之診斷資訊。
經編碼之尾有效數欄位為大量10位元區塊(稱作三位十進制數(declet))。三位十進制數之數目取決於格式定。每一三位十進制數表示10位元值中之三個十進制數位。
各種格式的有限數之值展示於下表中:
術語有效數用以意謂(例如)以下:
1.對於有限數,有效數包括在左邊用自組合欄位導出的有效數之最左邊位元填補之所有尾有效數數位。
2.對於無限數及NaN,有效數含有在左邊用零數位填補
之所有尾有效數數位。
對於有限數,DFP有效數位開始於最左邊的非零有效數數位,且結束於最右邊的有效數數位。
對於有限數,DFP有效數位之數目為自格式精確度減去前導零之數目的差。前導零之數目為有效數中在最左邊非零數位之左邊的零之數目。
除了以上之外,亦存在密集充填十進制(DPD)格式。3數位十進制數(000-999)至10位元值(稱作三位十進制數)之映射的實例展示於下表中。DPD項目按十六進制展示。十進制數之前兩個數位展示於最左邊行中,且沿著頂部列展示第三數位。
10位元三位十進制數至3數位十進制數之映射的實例展示於下表中。將10位元三位十進制數值分裂成在左邊行中展示之6位元索引及沿著頂部列展示之4位元索引,兩者皆按十六進制表示。
根據本發明之一態樣,提供自區位格式轉換至十進制浮點之指令。在一項實施例中,存在兩個類型之自區位轉換至十進制浮點指令,包括長的自區位轉換指令(CDZT)及擴展的自區位轉換指令(CXZT),以下描述其中之每一者。此等指令提供用於將資料自直接在記憶體中之EBCDIC或ASCII轉換至暫存器中之十進制浮點格式的有效方式。
舉例而言,參看圖3,在一項實施例中,每一機器指令自記憶體讀取EBCDIC或ASCII資料(步驟300);將其轉換至適當的十進制浮點格式(步驟302);且將其寫入至目標浮點暫存器或浮點暫存器對(步驟304)。
長的自區位轉換指令CDZT自指定記憶體位置讀取運算元資料,將其轉換至具有零指數之雙精確度DFP運算元,且將其寫入至指定目標浮點暫存器。擴展的自區位轉換指令CXZT自指定記憶體位置讀取運算元資料,將其轉換至具有零指數之擴展之精確度DFP運算元,且將其寫入至指定目標浮點暫存器對。在源記憶體位置中的位元組之數目指定於指令中,且對於CDZT可為1至16個位元組,或對於CXZT可為1至34個位元組。針對有效數位碼全部檢查源運算元之數位。指令中之正負號欄位指示源運算元之正負號半位元組(nibble)待處理。若正負號欄位經設定,則針對有效正負號代碼檢查正負號。假定其有效,則將DFP結果之正負號設定為同一正負號,如由源運算元之正負號半位元組指示。若偵測到無效數位或正負號代碼,則認識到十進制資料例外狀況。
在一項實施例中,自區位轉換指令中之每一者具有同一格式(RSL-b格式),其一實例描繪於圖4中。如在一項實施例中所描繪,自區位轉換指令之一格式400包括(例如)以下欄位:作業碼欄位402a、402b:作業碼欄位提供指示正由指令執行之函式的作業碼。作為實例,一經定義之作業碼將函式定義為長的自區位轉換指令,且另一預定義之作業碼指示其為擴展的自區位轉換指令。
長度欄位(L2)404:長度欄位404指定第二運算元之長度(例如,以位元組為單位)。作為實例,對於擴展的轉換至區位指令,長度欄位包括0至33之長度碼,且對於長的自區位轉換指令,長度欄位包括0至15之長度碼。
基底暫存器欄位(B2)406:基底暫存器欄位指明一通用暫存器,將其內容添加至位移欄位之內容以形成第二運算元位址。
位移欄位(D2)408:位移欄位包括添加至由基底暫存器欄位指明之通用暫存器的內容以形成第二運算元位址之內容。
暫存器欄位(R1)410:暫存器欄位指明一暫存器,其內容為第一運算元。包括第一運算元之暫存器有時被稱作第一運算元位置。
遮罩欄位(M3)412:遮罩欄位包括(例如)正負號(S)控制(例如,位元),在一項實例中,其為M3欄位之位元0。
當此位元為0時,第二運算元不具有正負號欄位,且將
DFP第一運算元結果之正負號位元設定為0。當為1時,第二運算元帶正負號。亦即,最右邊位元組之最左邊的四個位元為正負號。當正負號欄位指示正值時,將DFP第一運算元結果之正負號位元設定為0;且當正負號欄位指示負值時,將其設定為1。在一項實施例中,忽略M3欄位之位元1至3。
在自區位轉換指令之操作中,將區位格式之第二運算元轉換至DFP格式,且將結果置放於第一運算元位置處。在一項實例中,量為1,且用該量來表示遞送值。置放於第一運算元位置處之結果為正準的。
在一項實施例中,當在第二運算元中偵測到無效數位或正負號代碼時,認識到十進制運算元資料例外狀況。認識到一規格例外狀況,且當(例如)下列中之任一者為真時抑制該操作:對於CDZT,L2欄位大於或等於16;及對於CXZT,R1欄位指明一無效浮點暫存器對,或L2欄位大於或等於34。
在一項實施例中,當指定ASCII第二運算元時,M3欄位之位元0為0;否則,認識到十進制運算元資料例外狀況。亦即,0011二進制之正負號值並非有效的正負號。
參看圖5描述關於自區位轉換指令之執行的其他細節。在一項實例中,執行實行此邏輯之自區位轉換指令的為處理器。
最初,進行關於自區位轉換指令之作業碼是否指示其為擴展或長的格式(詢問500)。亦即,正執行之指令為長的自
區位轉換指令或擴展的自區位轉換指令。若作業碼指示其為長的自區位轉換指令,則進行關於在指令中提供之長度欄位(L2)是否指定大於15之長度之另一判定(詢問502)。若長度欄位指定大於15之長度,則提供指示其為16個以上數位(0至15)之例外狀況(步驟504)。
返回詢問502,若長度欄位未指定大於15之長度,則自記憶體讀取源區位數位(第二運算元之至少一部分)(步驟506)。其後,將自記憶體讀取之源區位數位轉換至十進制浮點格式(步驟508)。在此實例中,將其轉換至具有零指數之雙精確度DFP運算元。
另外,進行關於在遮罩欄位(M3)中指明之正負號控制(S)是否經設定為1之判定(詢問510)。若正負號控制不等於一,則強迫DFP數之正負號為正(步驟512),且用經轉換之值更新目標浮點暫存器,包括強迫之正負號(步驟514)。
返回詢問510,若正負號控制等於1,則自記憶體讀取(第二運算元之)源正負號欄位(步驟516)。其後,將DFP數之正負號設定為源之正負號(步驟518),且用經轉換之值及正負號(例如,DFP格式之位元0)更新目標浮點暫存器(步驟514)。
返回詢問500,若作業碼指示其為擴展的自區位轉換指令,則進行關於指令之長度欄位是否指定大於33之長度之判定(詢問530)。若長度欄位指定大於33之長度,則提供指示34個以上數位(0至33)之例外狀況(步驟532)。然而,若長度欄位未指定大於33之長度,則進行關於指令之R1欄位
是否指定一無效浮點暫存器對之判定(詢問534)。若指示一無效浮點暫存器對,則提供一例外狀況(步驟536)。否則,自記憶體讀取源區位數位(第二運算元之至少一部分)(步驟538)。其後,自記憶體讀取之源區位數位經轉換至十進制浮點格式(步驟540)。在此實例中,將數位(第二運算元之至少一部分)轉換至具有零指數之擴展的精確度資料浮點運算。
其後,進行關於是否將指令之遮罩欄位中的正負號(S)控制設定為1之判定(詢問542)。若正負號控制不等於1,則強迫資料浮點數之正負號為正(步驟544)。然而,若正負號控制等於1,則自記憶體讀取(第二運算元之)源正負號欄位(步驟546),且將DFP數之正負號設定為源之正負號(步驟548)。在於步驟544或步驟548中設定了正負號後,用經轉換之十進制浮點格式及正負號更新目標浮點暫存器對(步驟550)。
以上所提及為用於將自記憶體讀取之源區位數位轉換至十進制浮點格式之兩個步驟。詳言之(步驟508)將源轉換至具有零指數之雙精確度十進制浮點運算元,且步驟540將源轉換至具有零指數之擴展的精確度資料浮點運算元。關於轉換之進一步細節描述於下文以及以上提及之「z/Architecture Principles of Operation」(IBM®公開案第SA22-7832-08號,第九版,2010年8月)中,該公開案在此以引用的方式全部併入本文中。
自區位格式化之數轉換至DFP格式的程序之一項實施例
如下:自記憶體讀取源數位。若必要,源資料之每一位元組之右邊4位元中的二進制編碼十進制(BCD)數位在左邊用零填補,使得存在一共16個BCD數位用於雙精確度運算,且使得存在34個數位用於擴展的精確度運算。接著將此等BCD數位自BCD轉換至密集充填十進制(DPD),使得對於所有BCD數位(惟最左邊的BCD數位除外),在源資料之右邊開始的每隔3個BCD數位經轉換至10位元DPD群。因此,存在用於雙精確度轉換之5個DPD群及用於擴展的精確度轉換之11個DPD群。此等DPD群構成雙精確度結果之位元14-63及擴展的精確度結果之位元17-127。位元6-13為雙精確度結果之指數欄位,且將位元1-5中來自組合欄位之2個位元設定為值398用於雙精確度運算。對於擴展的精確度運算,位元6-17為指數欄位位元,且將來自組合欄位之2個位元設定為值6176用於擴展的精確度運算。
若最高有效BCD數位為「8」或「9」,則將位元1及2設定為「1」;位元3及4為指數之最高有效2個位元,且因此將被設定為「01」;且對於「8」,將位元5設定為「0」,或對於「9」,將位元5設定為「1」。若最高有效BCD數位為「0」至「7」,則位元1及2為指數之最高有效值,且因此將被設定為「01」,且將位元3-5設定為最高有效BCD數位之最右邊的3個位元。
若S=1,則源資料之最右邊的位元組之最左邊4個位元為正負號代碼。在此情況下,若正負號代碼之值為「1011」或「1101」,則將結果正負號位元(位元0)設定為1。
以上詳細描述的為提供顯著改良傳統儲存器至儲存器十進制工作負載之方式的兩個指令。在傳統儲存器至儲存器十進制工作負載中,EBCDIC或ASCII運算元首先經轉換至充填十進制格式,其剝出欄位代碼,且將兩個運算元之數字數位及正負號數位置於儲存器之另一部分中。接著藉由算術運算(諸如,加、減、乘或除)對充填之運算元運算。此等算術運算在其可開始前必須等待充填程序之儲存以完成,且此等運算接著將其結果儲存至記憶體。一旦結果儲存完成,則接著將結果解封裝回至目標格式(EBCDIC或ASCII)。記憶體與運算之相依性支配著效能。
根據本發明之一態樣,取決於目標格式,使用新的指令(例如,藉由啟用之新指令重新編譯程式碼)用CDZT或CXZT替代Pack或PKA指令。數學運算可接著由其DFP當量(例如,AD/XTR、SD/XTR、MD/XTR、DT/XTR)替代,使得不存在等待儲存任何運算元或自記憶體讀取任何運算元。此等指令在與加(AP)、減(SP)、乘(MP)或除(DP)類似之時間量中操作,但無記憶體額外負擔。當替代UNPK或UNPKA運算時,避免第二記憶體相依性,且經由以下描述之CZDT或CZXT指令將結果直接轉換至目標格式。
傳統儲存器至儲存器十進制充填操作能夠處理15個數位及一正負號,其需要3個重疊充填操作以處理通常在諸如COBOL應用之應用中發現的每個31數位(及正負號)運算元。必須將一運算元分成較小的重疊迷你運算元增加了編譯程式及經編譯之程式碼之複雜性;需要執行額外指令以
實行給定任務,諸如,處置迷你運算元之間的載運/借位;及影響效能。由於CXZT能夠將34個數位及一正負號代碼轉換成DFP運算元,因此編譯程式可將共同的31數位及正負號運算元(例如,COBOL運算元)作為1單一實體處理,從而簡化經編譯之程式碼且改良效能。
如本文中所描述,CDZT及CXZT指令提供用於將資料自記憶體中之EBCDIC或ASCII直接轉換至暫存器中之DFP格式的有效方式。其允許在單一步驟中將資料自EBCDIC或ASCII轉換至DFP格式。先前,該程序需要使用Pack或PKA操作將資料轉換至充填十進制格式。接著必須將資料載入至通用暫存器(GPR)中,但由於指令集架構中當前不存在長度受控制之負載,因此此常需要字、半字與位元組負載操作之混合。其他指令CDSTR或CXSTR可接著用以將GPR/GPR對中之充填十進制資料轉換至目標DFP格式。根據本發明之一態樣,PACK/PKA及CDSTR/CXSTR由一個指令CDZT或CXZT替代。
除了自區位轉換至十進制浮點指令外,根據本發明之再一態樣,亦提供自十進制浮點轉換至區位指令。此等指令提供將資料自保持於浮點暫存器或浮點暫存器對中之十進制浮點格式轉換至EBCDIC或ASCII資料且將其直接儲存至記憶體的有效方式。
舉例而言,參看圖6,在一項實例中,將源暫存器或源暫存器對中之DFP運算元轉換至EBCDIC或ASCII資料(步驟600)。接著將經轉換之結果儲存於目標記憶體位置中(步
驟602)。此等指令允許在單一步驟中將資料自DFP格式直接轉換至EBCDIC及ASCII。
此等指令之實例包括長的轉換至區位指令(CZDT)及擴展的轉換至區位指令(CZXT)。長的轉換至區位指令CZDT自指定FPR暫存器讀取雙精確度DFP運算元資料,將尾數轉換至區位格式,且將其寫入至目標記憶體位置。同樣地,擴展的轉換至區位指令CZXT自指定FPR暫存器對讀取擴展的精確度DFP運算元資料,且將尾數轉換至區位格式,且將其寫入至目標記憶體位置。若指定的記憶體位置之長度不足以配合源運算元之所有最左邊非零數位,則認識到十進制溢位例外狀況(假設啟用十進制溢位遮罩)。若並非所有數位皆配合至指定記憶體位置,則設定一特定條件碼(例如,3)。將DFP運算元之正負號複製至記憶體中的結果之正負號半位元組(若正負號欄位經設定)。所使用之正號編碼由以下描述的指令本文中的P欄位控制,且零運算元之結果可有條件地由亦在以下描述的指令本文之Z欄位強迫為正。在編譯程式碼中通常需要此種正負號操縱,且將此功能直接包括於指令中提供效能節省且簡化了編譯程式碼。
參看圖7描述轉換至區位指令之格式(RSL-b)之一項實施例。在一項實例中,轉換至區位指令之格式700包括以下欄位:作業碼欄位702a、702b:作業碼欄位提供指示正由指令實行之函式的作業碼。作為實例,一經定義之作業碼將
函式指定為長的轉換至區位指令,且另一預定義之作業碼指示其為擴展的轉換至區位指令。
長度欄位(L2)704:長度欄位704指定第二運算元之長度(例如,以位元組為單位)。作為實例,對於擴展的轉換至區位指令,長度欄位包括0至33之長度碼,且對於長的轉換至區位指令,長度欄位包括0至15之長度碼。另外,待轉換的第一運算元的最右邊有效數數位之數由L2指定。
基底暫存器欄位(B2)706:基底暫存器欄位指明一通用暫存器,將其內容添加至位移欄位之內容以形成第二運算元位址。
位移欄位(D2)708:位移欄位包括添加至由基底暫存器欄位指明之通用暫存器的內容以形成第二運算元位址之內容。
暫存器欄位(R1)710:暫存器欄位指明一暫存器,其內容為第一運算元。
遮罩欄位(M3)712:遮罩欄位包括(例如):正負號控制(S):M3欄位之位元0為正負號控制。當S為0時,第二運算元不具有正負號欄位。當S為1時,第二運算元具有一正負號欄位。亦即,最右邊位元組之最左邊的四個位元位置為正負號。
區位控制(Z):M3欄位之位元1為區位控制。當Z為0時,將第二運算元之每一區位欄位儲存為1111二進制。當Z為1時,將第二運算元之每一區位欄位儲存為0011二進
制。
加號代碼控制(P):M3欄位之位元2為加號代碼控制。當P為0時,將加號編碼為1100二進制。當P為1時,將加號編碼為1111二進制。當S位元為0時,忽略P位元,且假定P位元為0。
強迫加零控制(F):M3欄位之位元3為強迫加零控制。當F為0時,不採取動作。當F為1且置放於第二運算元位置處的結果之絕對值為0時,藉由由P位元指定之正負號代碼設定結果之正負號以指示加值。當S位元為0時,忽略F位元,且假定F位元為0。
在操作中,DFP第一運算元的最右邊有效數數位之指定數及第一運算元之正負號位元經轉換至區位格式,且將結果置放於第二運算元位置處。暗示具有量一的第一運算元之右單元視圖。忽略組合欄位中之指數,且在有偏前將其如同其具有零值般處理。
待轉換的第一運算元的最右邊有效數數位之數由L2指定。第二運算元之位元組的長度對於CZXT為1-34,其對應於0至33的L2中之長度碼,其意謂1-34個數位。第二運算元之位元組的長度對於CZDT為1-16,其對應於0至15的L2中之長度碼,其意謂1至16個數位。
在一項實施例中,針對任何第一個運算元(包括無限數、QNaN或SNaN)實行該操作,而不造成IEEE例外狀況。若第一運算元為無限數或NaN,則假定零數位為有效數之最左邊數位,將最右邊有效數數位之指定數及正負號
位元轉換至區位格式,將結果置放於第二運算元位置處,且執行包括一特定條件碼(例如,3)。
當失去結果之最左邊非零數位時,因為第二運算元欄位過短,所以藉由忽略溢位數位來獲得結果,設定指定條件碼(例如,3),且若十進制溢位遮罩位元為1,則十進制溢位之程式中斷發生。運算元長度單獨並非溢位之指示;在操作期間將失去非零數位。
認識到一規格例外狀況,且當(例如)下列中之任一者為真時抑制該操作:對於CZDT,L2欄位大於或等於16,其意謂17個或17個以上數位。對於CZXT,R1欄位指明無效浮點暫存器對,或L2欄位大於或等於34,其意謂35個或35個以上數位。
所得條件碼之實例包括:
0 源為0
1 源小於0
2 源大於0
3 無限數、QNan、SNaN、部分結果。
在一項實施例中,當S位元為1時,可將ASCII區位十進制運算元儲存為帶正負號。此由該程式負責,此係因為ASCII表示通常不帶正負號且為正,無最右邊區位被用作正負號之概念。另外,包括一特定條件碼(例如,0)指示第一運算元之絕對值為O。
M3控制位元對第一運算元DFP正負號與為0之所得第二運算元之絕對值之間的關係說明於下表中,將該表作為一
項實例來提供:
x 忽略
-- 不可適用
參看圖8描述關於轉換至區位指令之邏輯的進一步細節。在一項實例中,此邏輯藉由處理器執行轉換至區位機器指令來實行。
參看圖8,最初,進行關於此為擴展的轉換至區位指令或是長的轉換至區位指令之判定,如由指令之作業碼指示(詢問800)。若其為長的轉換至區位指令(如由作業碼指示),則進行關於L2欄位是否指定大於15之長度的判定(詢問802)。若L2欄位未指定大於15之長度,則由於存在16個
以上數位(0-15),因此提供一例外狀況(步驟804)。
返回至詢問802,若長度欄位未指定大於15之長度,則自在轉換指令中指明的浮點暫存器讀取DFP運算元(使用R1)(步驟806)。接著將讀取之DFP運算元的源DFP數位轉換至BCD數位(步驟808)。
在轉換後,進行關於非零數位是否配合於由L2指定之長度中的判定(詢問810)。若非零數位不配合,則指示溢位例外狀況(步驟812)。否則,進行關於遮罩欄位之Z位元是否等於1之再一判定(詢問814)。若Z等於1,則將區位欄位及正負號代碼設定為「0011」(步驟816)。否則,將區位欄位及正負號代碼設定為「1111」(步驟818)。
在設定了區位欄位及正負號代碼後,進行關於遮罩欄位之S位元是否設定為1的再一判定(詢問820)。若S位元未設定為1,則按適當格式將BCD數位、正負號欄位及欄位代碼儲存至記憶體(步驟822)。區位格式之一項實例如下:
在此實例中,位元組之最右邊四個位元稱作數字位元(N)且通常包括表示十進制數位之代碼。位元組之最左邊四個位元稱作區位元(Z),惟十進制運算元之最右邊位元組除外,在該情況下,可將此等位元作為區位或作為正負號(S)來處理。
返回至詢問820,若S位元等於1,則進行關於遮罩中之Z位元是否設定為1的再一判定(詢問824)。若Z等於1,則進
行關於結果是否等於0之判定(步驟826)。若結果等於0,則將結果正負號設定為正(步驟828)。若未設定結果等於0或Z不等於一,則將結果正負號設定為DFP正負號(步驟830)。
在設定了結果正負號後,進行關於結果正負號是否為正之判定(詢問832)。若結果正負號並不為正,則處理繼續步驟822,按適當格式將BCD數位、正負號欄位及欄位代碼儲存至記憶體。然而,若結果正負號為正(詢問832),則進行關於遮罩欄位之P位元是否設定為1的再一判定(詢問834)。若P位元經設定為1,則設定正負號等於1111;否則,設定正負號等於1100(步驟838)。在設定了正負號後,處理繼續步驟822。
返回詢問800,若此為擴展的轉換至區位指令,則進行關於長度欄位是否指定大於33之長度之判定(詢問850)。若長度欄位指定大於33之長度,則提供指示34個以上數位之例外狀況(步驟852)。否則,進行關於暫存器欄位(R1)是否指定無效浮點暫存器對之判定(詢問854)。若不,則處理繼續步驟806。否則,提供一例外狀況(步驟856)。此完成轉換至區位指令的實施例之描述。
以上所提及為用於將源DFP數位轉換至BCD數位之步驟。關於轉換之進一步細節描述於下文以及以上提及之「z/Architecture Principles of Operation」(IBM®公開案第SA22-7832-08號,第九版,2010年8月)中,該公開案在此以引用的方式全部併入本文中。以下描述亦提供關於自
DFP轉換至區位格式之程序的細節。
在一項實例中,對於雙精確度格式,組合欄位(其為源資料之位元1-5)中含有待轉換至區位格式的尾數資料之最高有效數位。位元0為正負號位元,其中藉由位元0為「1」來指示負值。位元6-13為指數連續欄位,且被此操作忽略。位元14-63為經編碼之尾有效數且含有十進制資料之其餘15個數位,且按DPD(密集充填十進制)格式編碼。
在一項實例中,對於擴展的精確度格式,組合欄位(其為源資料之位元1-5)中含有待轉換至區位格式的尾數資料之最高有效數位。位元0為正負號位元,其中藉由位元0為「1」來指示負值。位元6-17為指數連續欄位,且被此操作忽略。位元18-127為經編碼之尾有效數且含有按DPD格式編碼的十進制資料之其餘33個數位。
對於雙精確度及擴展的精確度格式兩者,為DPD編碼之數位的尾有效數數位自DPD格式轉換至BCD(二進制編碼十進制)格式,且將來自組合欄位(位元1-5)之數位預先置於彼等數位之開頭。DPD至BCD轉換僅需要少數閘,且經由此等閘,將10位元DPD資料之區塊分解成12位元BCD資料之區塊,使得每一BCD區塊包括三個4位元BCD數。針對前導零檢查該數串,且接著將該數串與指令之L2欄位比較以判定是否發生溢位情形,且若其發生,則一旦資料擴大至區位十進制格式,則其將適當最高有效數位(彼等為將不配合於由L2指定的指定記憶體長度內之數位)清零(zero
out)。
將接下來的4位元區位欄位插入至每一BCD數位之左邊,使得每一位元組(8位元)現在包括4位元區位欄位,接著為4位元BCD數位。取決於本文中之Z位元為0或是1,每一區位欄位為「0011」或「1111」。接下來,若在該指令中S=1,則來自DFP源運算元之正負號位元用以判定正負號代碼。若BCD數位皆為0且F=1,則忽略正負號且創建正的正負號代碼。否則,所產生之正負號代碼為來自位元0的DFP源運算元之正負號,且將負的正負號編碼為「1101」;若P=0,則將正的正負號編碼為「1100」,或若P=1,則將正的正負號編碼為「1111」。此正負號代碼接著替代在最低有效BCD數位左邊之欄位代碼。(在一項實施例中,正負號係與欄位代碼並行地處理,且經插入於最低有效BCD數位之左邊,代替欄位代碼。)接著將此結果寫入至記憶體。
以上詳細描述為兩個機器指令-CZDT及CZXT,其將源浮點暫存器或暫存器對中之十進制浮點運算元轉換至EBCDIC或ASCII資料且將其儲存至目標記憶體位置。此等指令提供顯著改良傳統儲存器至儲存器十進制工作負載之方式。傳統儲存器至儲存器十進制解封裝操作能夠處理15個數位及一正負號,其需要三個重疊解封裝操作以處理通常在諸如COBOL應用之應用中發現的31數位(及正負號)結果。必須將結果分成較小的重疊迷你結果增加了編譯程式之複雜性且影響效能,此係因為其需要執行額外指令以實
行給定任務。由於CZXT能夠轉換含有多達34個數位及一正負號代碼之DFP運算元且按單一指令將其儲存至記憶體,因此編譯程式可將共同的31數位及正負號結果(例如,COBOL結果)作為單一實體來處理,從而簡化經編譯之程式碼且改良效能。
先前,程序需要使用CSDTR或CSXTR將資料自DFP格式轉換至GPR中之充填十進制格式。接著必須將資料自GPR儲存至記憶體,但由於指令集架構中當前不存在長度受控制之儲存,因此此常需要字、半字與位元組儲存操作之混合。最後,需要解封裝或UNPKA操作將記憶體中之資料轉換回至EBCDIC或ASCII。此等新指令允許在單一步驟中將資料自DFP格式直接轉換至EBCDIC及ASCII。CZDT或CZXT指令替代CSDTR/CSXTR及UNPK/UNPKA指令兩者。
如熟習此項技術者將瞭解,本發明之一或多項態樣可體現為系統、方法或電腦程式產品。因此,本發明之一或多項態樣可呈完全硬體實施例、完全軟體實施例(包括韌體、常駐軟體、微碼等)或組合軟體與硬體態樣之實施例的形式,該等實施例在本文中通常皆可被稱作「電路」、「模組」或「系統」。此外,本發明之一或多項態樣可呈體現於具有體現於其上之電腦可讀程式碼之一或多個電腦可讀媒體中的電腦程式產品之形式。
可利用一或多個電腦可讀媒體之任何組合。電腦可讀媒體可為電腦可讀儲存媒體。舉例而言,電腦可讀儲存媒體可為(但不限於)電子、磁性、光學、電磁、紅外線或半導
體系統、裝置或器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例(非詳盡清單)包括以下各者:具有一或多個電線之電連接、攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、光纖、攜帶型光碟-唯讀記憶體(CD-ROM)、光學儲存器件、磁性儲存器件或前述各者之任何合適組合。在此文件之情況下,電腦可讀儲存媒體可為可含有或儲存供指令執行系統、裝置或器件使用或結合指令執行系統、裝置或器件而使用之程式的任何有形媒體。
現參看圖9,在一項實例中,電腦程式產品900包括(例如)一或多個非暫時性電腦可讀儲存媒體902以在其上儲存電腦可讀程式碼構件或邏輯904以提供及有助於本發明之一或多項態樣。
可使用適當媒體(包括(但不限於)無線、有線、光纖纜線、RF等或前述各者之任何合適組合)傳輸體現於電腦可讀媒體上之程式碼。
可用一或多個程式設計語言之任何組合來撰寫用於進行本發明之一或多項態樣之操作的電腦程式碼,該一或多個程式設計語言包括諸如Java、Smalltalk、C++或類似者之物件導向式程式設計語言及諸如「C」程式設計語言、組譯程式或類似程式設計語言之習知程序性程式設計語言。程式碼可整體地在使用者之電腦上執行、部分地在使用者之電腦上執行、作為一獨立套裝軟體而執行、部分地在使
用者之電腦上且部分地在一遠端電腦上執行或整體地在該遠端電腦或伺服器上執行。在後者情形下,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可進行至外部電腦之連接(例如,經由使用網際網路服務提供者之網際網路)。
本文中參照根據本發明之實施例之方法、裝置(系統)及電腦程式產品之流程圖說明及/或方塊圖描述本發明之一或多項態樣。應理解,可由電腦程式指令來實施流程圖說明及/或方塊圖之每一區塊及該等流程圖說明及/或方塊圖中之區塊的組合。可將此等電腦程式指令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生一機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令創建用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之構件。
此等電腦程式指令亦可儲存於一電腦可讀媒體中,其可指導電腦、其他可程式化資料處理裝置或其他器件以特定方式起作用,使得儲存於該電腦可讀媒體中之指令產生一製品,該製品包括實施該或該等流程圖及/或方塊圖方塊中所指定之功能/動作之指令。
該等電腦程式指令亦可載入至電腦、其他可程式化資料處理裝置或其他器件上以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上實行以產生一電腦實施之程序,使得在該電腦或其他可程式化裝置上執行之指令提供用於實施該或該等流程圖及/或方塊圖區塊中所指定之功
能/動作之程序。
該等圖中之流程圖及方塊圖說明根據本發明之一或多項態樣之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。在此方面,流程圖或方塊圖中之每一區塊可表示一模組、一區段或程式碼之部分,其包含用於實施指定邏輯功能之一或多個可執行指令。亦應注意,在一些替代實施中,在區塊中提到的功能可能不按圖中所提到之順序而發生。舉例而言,實際上可實質上同時執行連續展示之兩個區塊,或有時可取決於所涉及之功能性以相反順序執行該等區塊。亦應注意,方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合可由實行指定功能或動作之基於專用硬體之系統或專用硬體與電腦指令之組合來實施。
除上之外,本發明之一或多項態樣可由提出客戶環境之管理的服務提供者提供、提出、部署、管理、服務等。舉例而言,服務提供者可為一或多個客戶創建、維持、支援等實行本發明之一或多項態樣的電腦程式碼及/或電腦基礎結構。作為回報,作為實例,服務提供者可在訂用及/或收費協議下自客戶收取付款。另外或替代地,服務提供者可自廣告內容銷售至一或多個第三方而收取付款。
在本發明之一項態樣中,可部署一種用於實行本發明之一或多項態樣的應用程式。作為一項實例,應用程式之部署包含提供可操作以實行本發明之一或多項態樣的電腦基礎結構。
作為本發明之再一態樣,可部署一計算基礎結構,其包含將電腦可讀程式碼整合至計算系統內,其中與該計算系統組合之程式碼能夠實行本發明之一或多項態樣。
作為本發明之又一態樣,可提供一種用於整合計算基礎結構之程序,其包含將電腦可讀程式碼整合至電腦系統內。電腦系統包含一電腦可讀媒體,其中電腦媒體包含本發明之一或多項態樣。與該電腦系統組合之程式碼能夠實行本發明之一或多項態樣。
雖然以上描述了各種實施例,但此等實施例僅為實例。舉例而言,其他架構之計算環境可併有及使用本發明之一或多項態樣。另外,雖然描述了某些欄位及/或位元,但亦可使用其他者。另外,流程圖之一些步驟可並行地或按不同順序實行。在不脫離本發明之精神之情況下,可進行許多改變及/或添加。
另外,其他類型之計算環境可受益於本發明之一或多項態樣。作為一實例,適合於儲存及/或執行程式碼之資料處理系統為可使用的,其包括經由系統匯流排直接或間接耦接至記憶體元件之至少兩個處理器。該等記憶體元件包括(例如)在程式碼之實際執行期間使用之局部記憶體、大容量儲存器及快取記憶體,快取記憶體提供至少一些程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼的次數。
輸入/輸出或I/O器件(包括但不限於鍵盤、顯示器、指標器件、DASD、磁帶、CD、DVD、隨身碟及其他記憶體媒
體等)可直接或經由介入之I/O控制器而耦接至系統。網路配接器亦可耦接至系統以使資料處理系統能夠經由介入私用或公用網路而變得耦接至其他資料處理系統或遠端印表機或儲存器件。數據機、電纜數據機及乙太網路卡僅為可用類型網路配接器中的少數幾種。
以下描述可併有及/或使用本發明之一或多項態樣的計算環境之其他實例。
參看圖10,描繪實施本發明之一或多項態樣的主機電腦系統5000之代表性組件。代表性主機電腦5000包含與電腦記憶體(亦即,中央儲存器)5002通信之一或多個CPU 5001,以及用於與其他電腦或SAN及類似者通信的至儲存媒體器件5011及網路5010之I/O介面。CPU 5001順應具有一架構化之指令集及架構化之功能性的架構。CPU 5001可具有用於將程式位址(虛擬位址)轉變成記憶體之真實位址的動態位址轉譯(DAT)5003。DAT通常包括用於快取轉譯以使得對電腦記憶體5002之區塊的稍後存取不需要延遲位址轉譯的轉譯後援緩衝器(TLB)5007。通常,快取記憶體5009用於電腦記憶體5002與處理器5001之間。快取記憶體5009可為階層式,其具有一個以上CPU可用之大的快取記憶體及在大快取記憶體與每一CPU之間的較小、較快(較低層級)快取記憶體。在一些實施中,較低層級快取記憶體經分裂以提供用於指令提取及資料存取的分開之低層級快取記憶體。在一項實施例中,指令由指令提取單元5004經由快取記憶體5009自記憶體5002提取。指令在指令解碼單
元5006中經解碼,且經調度(在一些實施例中,藉由其他指令)至一或多個指令執行單元5008。通常使用若干指令執行單元5008,例如,算術執行單元、浮點執行單元及分支指令執行單元。指令由執行單元執行,按需要自指令指定暫存器或記憶體存取運算元。若待自記憶體5002存取(載入或儲存)運算元,則載入/儲存單元5005通常在正被執行的指令之控制下處置存取。可在硬體電路中或在內部微碼(韌體)中或由兩者之組合來執行指令。
如所指出,電腦系統包括在本端(或主)儲存器中之資訊,以及定址、保護及參考及改變記錄。定址之一些態樣包括位址之格式、位址空間之概念、各種位址類型及將一類型之位址轉譯至另一類型之位址的方式。主儲存器中之一些包括永久指派之儲存位置。主儲存器給系統提供資料之直接可定址快速存取儲存。資料及程式兩者在可經處理前將被載入至主儲存器(自輸入器件)。
主儲存器可包括一或多個較小、快速存取緩衝器儲存器,有時稱作快取記憶體。快取記憶體通常與CPU或I/O處理器實體相關聯。截然不同的儲存媒體之實體構造及用途之效應(除了對效能外)通常不可由程式觀測。
可針對指令與針對資料運算元維持分開的快取記憶體。快取記憶體內之資訊按鄰近位元組維持於稱作快取區塊或快取行(或簡稱為行)之整數邊界上。一模型可提供EXTRACT CACHE ATTRIBUTE指令,其按位元組返回快取行之大小。一模型亦可提供PREFETCH DATA及
PREFETCH DATA RELATIVE LONG指令,其實現儲存器至資料或指令快取記憶體內之預提取或資料自快取記憶體之釋放。
將儲存器看作長的水平位元串。對於多數操作,對儲存器之存取按自左至右序列進行。將該位元串細分成八個位元之單元。八位元單元稱作位元組,其為所有資訊格式之基礎建置區塊。儲存器中之每一位元組位置由一唯一非負整數識別,該唯一非負整數為彼位元組位置之位址或簡稱為位元組位址。鄰近位元組位置具有連續位址,其開始於左邊的0且按自左至右序列進行。位址為不帶正負號之二進制整數,且為24、31或64個位元。
在儲存器與CPU或通道子系統之間一次一個位元組或一群位元組地傳輸資訊。除非另有指定,否則,在(例如)z/Architecture®中,儲存器中之一群位元組由該群之最左邊位元組定址。該群中的位元組之編號經暗示或由待實行之操作明確指定。當在CPU操作中使用時,一群位元組稱作一欄位。在每一群位元組內,在(例如)z/Architecture®中,按自左至右序列對位元編號。在z/Architecture®中,最左邊位元有時被稱作「高階」位元,且最右邊位元有時被稱作「低階」位元。然而,位元編號並非儲存位址。可僅定址位元組。為了對儲存器中的位元組之個別位元操作,存取整個位元組。位元組中之位元自左至右編號為0至7(例如,在z/Architecture®中)。對於24位元位址,位址中之位元可編號為8-31或40-63,或對於31位元位址,編號
為1-31或33-63;對於64位元位址,其編號為0-63。在多個位元組之任一其他固定長度格式內,構成該格式之位元自0開始連續編號。為了錯誤偵測之目的,且較佳地為了校正,可藉由每一位元組或藉由一群位元組來傳輸一或多個檢查位元。此等檢查位元由機器自動產生,且可不直接由程式控制。按位元組之數目來表達儲存容量。當儲存運算元欄位之長度由指令之操作程式碼暗示時,將該欄位認為具有固定長度,其可為一個、兩個、四個、八個或十六個位元組。對於一些指令,可暗示較大欄位。當儲存運算元欄位之長度未暗示而明確敍述時,將該欄位認為具有可變長度。可變長度運算元可在長度上按一個位元組之增量變化(或在一些指令之情況下,按兩個位元組之倍數或其他倍數變化)。當將資訊置放於儲存器中時,替代僅包括於指明之欄位中的彼等位元組位置之內容,即使實體路徑至儲存器之寬度可能大於正儲存的欄位之長度。
某些資訊單元將在儲存器中之整數邊界上。對於一資訊單元,當其儲存位址為該單元之長度(以位元組為單位)的倍數時,將一邊界稱作整數。對整數邊界上的2、4、8及16個位元組之欄位給予特殊名稱。半字為在兩位元組邊界上的兩個連續位元組之群,且為指令之基礎建置區塊。字為四位元組邊界上的四個連續位元組之群。雙字為八位元組邊界上的八個連續位元組之群。四倍字為16位元組邊界上的16個連續位元組之群。當儲存器位址指明半字、字、雙字及四倍字時,位址之二進制表示分別含有一個、兩
個、三個或四個最右邊的零位元。指令將在兩位元組整數邊界上。多數指令之儲存運算元不具有邊界對準要求。
在針對指令及資料運算元實施分開的快取記憶體之器件上,若程式儲存至指令隨後所提取自之快取行中,則可經歷顯著延遲,而與儲存器是否更改隨後提取之指令無關。
在一項實施例中,本發明可藉由軟體(有時被稱為授權之內部程式碼、韌體、微碼、毫碼、微微碼及類似者,其中之任一者將與本發明之一或多項態樣一致)來實踐。參看圖10,體現本發明之一或多項態樣的軟體程式碼可由主機系統5000之處理器5001自長期儲存媒體器件5011(諸如,CD-ROM驅動器、磁帶驅動器或硬碟機)存取。軟體程式碼可體現於各種各樣之已知媒體中之任一者上,用於供資料處理系統(諸如,磁片、硬碟機或CD-ROM)使用。程式碼可分佈於此等媒體上,或可分佈至使用者,在網路5010上自電腦記憶體5002或一個電腦系統之儲存器至其他電腦系統,供由此等其他系統之使用者使用。
軟體程式碼包括一作業系統,其控制各種電腦組件及一或多個應用程式之功能及互動。通常將程式碼自儲存媒體器件5011分頁至相對較高速電腦儲存器5002,在該相對較高速電腦儲存器5002處,程式碼可用於由處理器5001處理。用於在記憶體中、在實體媒體上體現軟體程式碼及/或經由網路分佈軟體程式碼之技術及方法係熟知的,且將不在本文中作進一步論述。程式碼當在有形媒體(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟
(CD)、DVD、磁帶及類似者)上創建及儲存時常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳地在電腦系統中之處理電路讀取,用於由處理電路執行。
圖11說明可實踐本發明之一或多項態樣的一代表性工作站或伺服器硬體系統。圖11之系統5020包含一代表性基底電腦系統5021(諸如,個人電腦、工作站或伺服器),包括可選周邊器件。根據已知技術,基底電腦系統5021包括一或多個處理器5026,及用以連接處理器5026與系統5021之其他組件及致能處理器5026與系統5021之其他組件之間的通信之匯流排。匯流排將處理器5026連接至記憶體5025及長期儲存器5027,長期儲存器5027可包括(例如)硬碟機(例如包括磁性媒體、CD、DVD及快閃記憶體中之任一者)或磁帶驅動器。系統5021亦可包括一使用者介面配接器,使用者介面配接器經由匯流排將微處理器5026連接至一或多個介面器件,諸如,鍵盤5024、滑鼠5023、印表機/掃描器5030及/或可為諸如觸敏式螢幕、數位化之輸入板等之任何使用者介面器件的其他介面器件。匯流排亦經由顯示器配接器將諸如LCD螢幕或監視器之顯示器件5022連接至微處理器5026。
系統5021可藉由能夠與網路5029通信5028之網路配接器而與其他電腦或電腦網路通信。實例網路配接器為通信通道、符記環、乙太網路或數據機。替代地,系統5021可使用諸如CDPD(蜂巢式數位封包資料)卡之無線介面通信。系統5021可與區域網路(LAN)或廣域網路(WAN)中之此等
其他電腦相關聯,或系統5021可為具有另一電腦之用戶端/伺服器配置中的用戶端等。所有此等組態以及適當通信硬體及軟體在此項技術中為已知的。
圖12說明可實踐本發明之一或多項態樣的一資料處理網路5040。資料處理網路5040可包括複數個個別網路(諸如,無線網路及有線網路),其中之每一者可包括複數個個別工作站5041、5042、5043、5044。另外,如熟習此項技術者將瞭解,可包括一或多個LAN,其中LAN可包含耦接至主機處理器之複數個智慧工作站。
仍參看圖12,網路亦可包括大型電腦或伺服器,諸如,閘道器電腦(用戶端伺服器5046)或應用伺服器(遠端伺服器5048,其可存取資料儲存庫且亦可自工作站5045直接存取)。閘道器電腦5046充當至每一個別網路之輸入點。當將一網路連接協定連接至另一網路連接協定時,需要閘道器。閘道器5046可較佳地藉由通信鏈路耦接至另一網路(例如,網際網路5047)。亦可使用通信鏈路將閘道器5046直接耦接至一或多個工作站5041、5042、5043、5044。可利用可購自International Business Machines Corporation之IBM eServerTM System z®伺服器來實施閘道器電腦。
同時參看圖11及圖12,可體現本發明之一或多項態樣的軟體程式設計碼可由系統5020之處理器5026自長期儲存媒體5027(諸如,CD-ROM驅動器或硬碟機)存取。軟體程式設計碼可體現於各種各樣之已知媒體中之任一者上,用於供資料處理系統(諸如,磁片、硬碟機或CD-ROM)使用。
程式碼可分佈於此等媒體上,或可分佈至使用者5050、5051,在網路上自一個電腦系統之記憶體或儲存器至其他電腦系統,供由此等其他系統之使用者使用。
替代地,程式設計碼可體現於記憶體5025中,且由處理器5026使用處理器匯流排存取。此程式設計碼包括一作業系統,其控制各種電腦組件及一或多個應用程式5032之功能及互動。程式碼通常自儲存媒體5027分頁至高速記憶體5025,在高速記憶體5025處,其可用於由處理器5026處理。用於在記憶體中、在實體媒體上體現軟體程式設計碼及/或經由網路分佈軟體程式碼之技術及方法係熟知的且將不在本文中作進一步論述。程式碼當在有形媒體(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶及類似者)上創建及儲存時常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳地在電腦系統中之處理電路讀取,用於由處理電路執行。
最易於可用於處理器之快取記憶體(通常比處理器之其他快取記憶體快且小)為最低(L1或層級一)快取記憶體,且主儲存器(主記憶體)為最高層級快取記憶體(若存在3個層級,則為L3)。最低層級快取記憶體常被分成保持待執行之機器指令之一指令快取記憶體(I快取記憶體)及保持資料運算元之一資料快取記憶體(D快取記憶體)。
參看圖13,針對處理器5026描繪一例示性處理器實施例。通常,使用快取記憶體5053之一或多層級來緩衝記憶體區塊以便改良處理器效能。快取記憶體5053為保持有可
能使用的記憶體資料之快取行的高速緩衝器。典型的快取行為記憶體資料之64、128或256個位元組。常將與用於快取資料分開的快取記憶體用於快取指令。快取連貫性(記憶體及快取記憶體中的行之複本之同步)常由此項技術中熟知之各種「窺探」演算法來提供。處理器系統之主記憶體儲存器5025常被稱作快取記憶體。在具有快取記憶體5053之4個層級的處理器系統中,主儲存器5025有時被稱作層級5(L5)快取記憶體,此係因為其通常較快且僅保持可用於電腦系統的非揮發性儲存器(DASD、磁帶等)之一部分。主儲存器5025「快取」由作業系統在主儲存器5025中及之外分頁的資料頁。
程式計數器(指令計數器)5061追蹤待執行的當前指令之位址。z/Architecture®處理器中之程式計數器為64個位元,且可截短至31或24個位元以支援先前定址限制。程式計數器通常體現於電腦之PSW(程式狀態字)中,使得其在上下文切換期間持續。因此,具有程式計數器值的進行中之程式可由(例如)作業系統中斷(自程式環境至作業系統環境之上下文切換)。程式之PSW在程式不在作用中時維持程式計數器值,且在作業系統正執行時使用作業系統之程式計數器(在PSW中)。通常,程式計數器按等於當前指令之位元組數目的量來增加。RISC(精簡指令集計算)指令通常為固定長度,而CISC(複雜指令集計算)指令通常為可變長度。IBM z/Architecture®之指令為具有2、4或6個位元組之長度的CISC指令。舉例而言,程式計數器5061藉由上下
文切換操作或分支指令之分支選取操作來修改。在上下文切換操作中,將當前程式計數器值與關於正執行之程式的其他狀態資訊(諸如,條件碼)一起儲存於程式狀態字中,且載入指向待執行的新程式模組之指令的新程式計數器值。實行分支選取操作以便准許藉由將分支指令之結果載入至程式計數器5061中而使程式作決策或在程式內循環。
通常,指令提取單元5055用以代表處理器5026提取指令。提取單元提取「下一依序指令」、分支選取操作之目標指令或在上下文切換後的程式之第一指令。現代指令提取單元常使用預提取技術以基於可使用之預提取指令之可能性推測性地預提取指令。舉例而言,提取單元可提取包括下一依序指令的指令之16個位元組及其他依序指令之額外位元組。
提取之指令接著由處理器5026執行。在一實施例中,將提取之指令傳遞至提取單元之調度單元5056。調度單元解碼指令且將關於解碼之指令的資訊轉遞至適當單元5057、5058、5060。執行單元5057將通常自指令提取單元5055接收關於解碼之算術指令的資訊,且將根據指令之作業碼對運算元實行算術運算。較佳地自記憶體5025、架構化之暫存器5059或自正執行的指令之即刻欄位將運算元提供至執行單元5057。執行之結果當要儲存時儲存於記憶體5025、暫存器5059中或其他機器硬體(諸如,控制暫存器、PSW暫存器及類似者)中。
處理器5026通常具有用於執行指令之功能的一或多個單
元5057、5058、5060。參看圖14A,執行單元5057可藉由介面連接邏輯5071與架構化之通用暫存器5059、解碼/調度單元5056、載入儲存單元5060及其他5065處理器單元通信。執行單元5057可使用若干暫存器電路5067、5068、5069來保持算術邏輯單元(ALU)5066將對之操作的資訊。ALU實行算術運算(諸如,加、減、乘及除)以及邏輯函數(諸如,「及」、「或」及「互斥或(XOR)」、旋轉及位移)。較佳地,ALU支援與設計有關之專業化運算。其他電路可提供其他架構化之設施5072,包括(例如)條件碼及恢復支援邏輯。通常,將ALU運算之結果保持於輸出暫存器電路5070中,輸出暫存器電路5070可將結果轉遞至各種各樣之其他處理功能。存在處理器單元之許多配置,本描述僅意欲提供一項實施例之代表性理解。
ADD指令(例如)將在具有算術及邏輯功能性之執行單元5057中執行,而浮點指令(例如)將在具有專業化之浮點能力之浮點執行中執行。較佳地,執行單元藉由對運算元實行作業碼定義功能而對由指令識別之運算元操作。舉例而言,ADD指令可由執行單元5057對在由指令之暫存器欄位識別之兩個暫存器5059中發現的運算元執行。
執行單元5057對兩個運算元實行算術加法,且將結果儲存於第三運算元中,其中第三運算元可為第三暫存器或兩個源暫存器中之一者。執行單元較佳地利用能夠實行各種各樣之邏輯函數(諸如,位移、旋轉、及(And)、或(Or)及XOR)以及各種各樣之代數函數(包括加、減、乘、除中之
任一者)的算術邏輯單元(ALU)5066。一些ALU 5066經設計用於純量運算且一些用於浮點。取決於架構,資料可為大端序(Big Endian)(其中最低有效位元組處於最高位元組位址)或小端序(Little Endian)(其中最低有效位元組處於最低位元組位址)。IBM z/Architecture®為大端序。取決於架構,帶正負號之欄位可為正負號及量值、1的補數或2的補數。2的補數係有利的,因為ALU不需要設計減能力,此係由於在ALU內,2的補數中之負值或正值僅需要加。通常按速記法描述數,其中12位元欄位定義4,096位元組區塊之位址,且通常描述為(例如)4 Kbyte(千位元組)區塊。
參看圖14B,用於執行分支指令之分支指令資訊通常發送至分支單元5058,分支單元5058常在其他條件運算完成前使用分支預測演算法(諸如,分支歷史表5082)來預測分支之結果。當前分支指令之目標將在條件運算完成前經提取且推測性地執行。當完成條件運算時,基於條件運算之條件及推測之結果來完成或丟棄推測性執行之分支指令。若條件碼符合分支指令之分支要求,則典型分支指令可測試至目標位址之條件碼及分支,可基於若干個數(例如,包括在暫存器欄位或指令之即刻欄位中發現之數)來計算目標位址。分支單元5058可使用具有複數個輸入暫存器電路5075、5076、5077及一輸出暫存器電路5080之一ALU 5074。舉例而言,分支單元5058可與通用暫存器5059、解碼調度單元5056或其他電路5073通信。
可因包括(例如)以下各種各樣之原因而中斷一群指令之
執行:由作業系統起始之上下文切換、造成上下文切換之程式例外狀況或錯誤、造成上下文切換之I/O中斷信號或複數個程式之多線緒活動(在多線緒環境中)。較佳地,上下文切換動作儲存關於當前執行之程式的狀態資訊,且接著載入關於正調用之另一程式的狀態資訊。舉例而言,狀態資訊可儲存於硬體暫存器中或記憶體中。狀態資訊較佳地包含程式計數器值,該程式計數器值指向待執行之下一指令、條件碼、記憶體轉譯資訊及架構化之暫存器內容。上下文切換活動可由硬體電路、應用程式、作業系統程式或韌體程式碼(微碼、微微碼或授權之內部程式碼(LIC))單獨或組合地練習。
處理器根據指令定義方法來存取運算元。指令可使用指令之一部分的值提供即刻運算元,可提供明確指向通用暫存器或專用暫存器(例如,浮點暫存器)之一或多個暫存器欄位。指令可利用由作業碼欄位識別之暗示的暫存器作為運算元。指令可利用用於運算元之記憶體位置。運算元之記憶體位置可由暫存器、即刻欄位或暫存器與即刻欄位之組合提供,如由z/Architecture®長位移設施舉例說明,其中指令定義(例如)加在一起提供運算元在記憶體中之位置的一基底暫存器、一索引暫存器及一即刻欄位(位移欄位)。本文中之位置通常暗示主記憶體(主儲存器)中之位置,除非另有指示。
參看圖14C,處理器使用載入/儲存單元5060來存取儲存器。載入/儲存單元5060可藉由獲得目標運算元在記憶體
5053中之位址且在暫存器5059或另一記憶體5053位置中載入運算元來實行載入操作,或可藉由獲得目標運算元在記憶體5053中之位址且將自暫存器5059或另一記憶體5053位置獲得之資料儲存於記憶體5053中之目標運算元位置中來實行儲存操作。載入/儲存單元5060可為推測性的,且可按無序(相對於指令序列)之序列存取記憶體,然而載入/儲存單元5060將維持按次序執行指令的程式之外觀。載入/儲存單元5060可與通用暫存器5059、解碼/調度單元5056、快取記憶體/記憶體介面5053或其他元件5083通信,且包含各種暫存器電路、ALU 5085及控制邏輯5090以計算儲存位置及提供管線定序以使操作按次序。一些操作可能無序,但載入/儲存單元提供使無序操作對程式顯得為已按次序實行之功能性,如在此項技術中所熟知。
較佳地,應用程式「看到」之位址常被稱作虛擬位址。虛擬位址有時被稱作「邏輯位址」及「有效位址」。此等虛擬位址為虛擬的,因為藉由各種各樣之動態位址轉譯(DAT)技術中之一者將其重定向至實體記憶體位置,該等技術包括(但不限於)僅對具有偏移值之虛擬位址加首碼、經由一或多個轉譯表轉譯虛擬位址,轉譯表較佳地單獨或組合地包含至少一區段表及一頁表,較佳地,區段表具有指向頁表之項。在z/Architecture®中,提供轉譯之階層,包括一區域第一表、一區域第二表、一區域第三表、一區段表及一可選頁表。常藉由利用轉譯後援緩衝器(TLB)(其包含將虛擬位址映射至相關聯之實體記憶體位置的項)來
改良位址轉譯之效能。當DAT使用轉譯表轉譯虛擬位址時,創建該等項。虛擬位址之隨後使用可接著利用快速TLB之項,而非慢依序轉換表存取。可藉由包括LRU(最近最少使用)的各種各樣之替代演算法來管理TLB內容。
在處理器為多處理器系統之處理器的情況下,每一處理器具有保持共用之資訊(諸如,I/O、快取記憶體、TLB及記憶體)為了一致性而連鎖的責任。通常,在維持快取記憶體一致性過程中將利用「窺探」技術。在窺探環境中,將每一快取行標記為處於共用狀態、互斥狀態、改變狀態、無效狀態及類似者中之任一者下以便有助於共用。
I/O單元5054(圖13)給處理器提供用於附接至周邊器件(例如,包括磁帶、碟、印表機、顯示器及網路)之方式。I/O單元常由軟體驅動器呈現至電腦程式。在大型電腦(諸如,來自IBM®之System z®)中,通道配接器及開放系統配接器為大型電腦之I/O單元,該等I/O單元提供作業系統與周邊器件之間的通信。
另外,其他類型之計算環境可受益於本發明之一或多項態樣。作為一實例,如本文中所提及,環境可包括一模擬器(例如,軟體或其他模擬機制),其中模擬一特定架構(包括(例如)指令執行、架構化之功能(諸如,位址轉譯)及架構化之暫存器)或其一子集(例如,在具有一處理器及記憶體之原生電腦系統上)。在此環境中,模擬器之一或多個模擬功能可實施本發明之一或多項態樣,即使一執行該模擬器之電腦可具有一與正模擬之能力不同的架構。作為一
項實例,在模擬模式下,解碼特定指令或正模擬之操作,且一適當模擬功能經建置以實施個別指令或操作。
在一模擬環境中,主機電腦包括(例如):一記憶體,其儲存指令及資料;一指令獲取單元,其自記憶體獲取指令,且視情況,提供獲取之指令的局部緩衝;一指令解碼單元,其接收獲取之指令且判定已經獲取的指令之類型;及一指令執行單元,其執行該等指令。執行可包括將資料自記憶體載入至暫存器中;將資料自暫存器儲存回至記憶體;或實行某一類型之算術或邏輯運算(如由解碼單元判定)。在一項實例中,以軟體來實施每一單元。舉例而言,正由該等單元實行之操作經實施為模擬器軟體內之一或多個次常式。
更明確而言,在大型電腦中,架構化之機器指令由程式員(現令通常為「C」程式員)常藉由編譯應用程式來使用。儲存於儲存媒體中之此等指令可原生地在z/Architecture® IBM®伺服器中或者在執行其他架構之機器中執行。可在現有及未來IBM®大型電腦伺服器中及在IBM®之其他機器(例如,Power Systems伺服器及System x®伺服器)上將其模擬。可在於使用由IBM®、Intel®、AMDTM及其他者製造之硬體的廣泛之各種各樣之機器上執行Linux的機器中執行此等指令。除了在z/Architecture®下在彼硬體上執行外,亦可使用Linux,以及使用由Hercules、UMX或FSI(Fundamental Software,Inc)進行之模擬的機器,在該情況下,通常執行處於模擬模式下。在模擬模式
下,模擬軟體由原生處理器執行以模擬經模擬之處理器的架構。
原生處理器通常執行包含韌體或原生作業系統之模擬軟體以實行經模擬之處理器的模擬。模擬軟體負責提取及執行經模擬之處理器架構的指令。模擬軟體維持經模擬之程式計數器以追蹤指令邊界。模擬軟體可一次提取一或多個經模擬之機器指令,且將該一或多個經模擬之機器指令轉換至對應的一群原生機器指令,用於由原生處理器執行。可快取此等經轉換之指令,使得可實現較快速轉換。儘管模擬軟體將維持經模擬之處理器架構的架構規則以便確保作業系統及針對經模擬之處理器撰寫的應用程式正確地操作。此外,模擬軟體將提供由經模擬之處理器架構(包括(但不限於)控制暫存器、通用暫存器、浮點暫存器、包括(例如)區段表及頁表之動態位址轉譯功能、中斷機制、上下文切換機制、日曆(TOD)時鐘及至I/O子系統的架構化之介面)識別的資源,使得作業系統或經設計以在經模擬之處理器上執行的應用程式可在具有模擬軟體之原生處理器上執行。
解碼正被模擬之特定指令,且調用次常式以實行個別指令之功能。模擬經模擬之處理器之功能的模擬軟體功能實施(例如)於「C」次常式或驅動常式中,或在理解較佳實施例之描述後,提供用於特定硬體之驅動器之某一其他方法將在熟習此項技術者之技術內。包括(但不限於)以下各者之各種軟體及硬體模擬專利說明用以達成針對用於可用
於熟習此項技術者之目標機器之不同機器而架構化的指令格式之模擬的各種各樣之已知方式:Beausoleil等人之題為「Multiprocessor for Hardware Emulation」的美國專利證書第5,551,013號;及Scalzi等人之題為「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」的美國專利證書第6,009,261號;及Davidian等人之題為「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」的美國專利證書第5,574,873號;及Gorishek等人之題為「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System」的美國專利證書第6,308,255號;及Lethin等人之題為「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」的美國專利證書第6,463,582號;及Eric Traut之題為「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」的美國專利證書第5,790,825號(該等專利案中之每一者在此以引用的方式全部併入本文中);及許多其他者。
在圖15中,提供經模擬之主機電腦系統5092之一實例,其模擬主機架構之主機電腦系統5000'。在經模擬之主機電腦系統5092中,主機處理器(CPU)5091為經模擬之主機處
理器(或虛擬主機處理器),且包含一模擬處理器5093,模擬處理器5093具有與主機電腦系統5000'之處理器5091之指令集架構不同的原生指令集架構。經模擬之主機電腦系統5092具有可為模擬處理器5093存取之記憶體5094。在實例實施例中,將記憶體5094分割為一主機電腦記憶體5096部分及一模擬常式5097部分。根據主機電腦架構,主機電腦記憶體5096可用於經模擬之主機電腦5092之程式。模擬處理器5093執行一架構的架構化之指令集之原生指令,該等原生指令不同於經模擬之處理器5091之原生指令,該等原生指令係自模擬常式記憶體5097獲得,且可藉由使用在序列及存取/解碼常式中獲得之一或多個指令而自主機電腦記憶體5096中之程式存取用於執行之主機指令,序列及存取/解碼常式可解碼經存取之主機指令以判定用於模擬經存取之主機指令之功能的原生指令執行常式。針對主機電腦系統5000'架構定義之其他設施可由架構化之設施常式模擬,該等其他設施包括諸如通用暫存器、控制暫存器、動態位址轉譯及I/O子系統支援及處理器快取記憶體之設施。模擬常式亦可利用可用於模擬處理器5093中之功能(諸如,通用暫存器及虛擬位址之動態轉譯)以改良模擬常式之效能。亦可提供特殊硬體及卸載引擎以輔助處理器5093模擬主機電腦5000'之功能。
本文中使用之術語僅係用於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,單數形式「一」及「該」意欲亦包括複數形式,除非上下文另有清晰指
示。應進一步理解,當術語「包含」用於本說明書中時,其指定所述特徵、整體、步驟、操作、元件及/或組件之存在,但並不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若有)意欲包括用於連同如具體主張之其他所主張元件一起實行功能的任何結構、材料或動作。本發明之一或多項態樣之描述已經呈現以用於達成說明及描述之目的,但其並不意欲為詳盡的或限於所揭示之形式下的本發明。在不脫離本發明之範疇及精神之情況下,許多修改及變化對於一般熟習此項技術者將顯而易見。選擇並描述了實施例以便最佳地解釋本發明之原理及實務應用,且使其他一般熟習此項技術者能夠針對具有適合於所預期之特定用途的各種修改之各種實施例來理解本發明。
100‧‧‧計算環境
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧輸入/輸出(I/O)器件及/或介面
108‧‧‧匯流排
200‧‧‧計算環境
202‧‧‧原生中央處理單元
204‧‧‧記憶體
206‧‧‧輸入/輸出器件及/或介面
208‧‧‧匯流排
210‧‧‧原生暫存器
212‧‧‧模擬器程式碼/模擬器
250‧‧‧客體指令
252‧‧‧指令提取單元
254‧‧‧指令轉譯常式
256‧‧‧原生指令
260‧‧‧模擬控制常式
400‧‧‧格式
402a‧‧‧作業碼欄位
402b‧‧‧作業碼欄位
404‧‧‧長度欄位(L2)
406‧‧‧基底暫存器欄位(B2)
408‧‧‧位移欄位(D2)
410‧‧‧暫存器欄位(R1)
412‧‧‧遮罩欄位(M3)
700‧‧‧格式
702a‧‧‧作業碼欄位
702b‧‧‧作業碼欄位
704‧‧‧長度欄位(L2)
706‧‧‧基底暫存器欄位(B2)
708‧‧‧位移欄位(D2)
710‧‧‧暫存器欄位(R1)
712‧‧‧遮罩欄位(M3)
900‧‧‧電腦程式產品
902‧‧‧非暫時性電腦可讀儲存媒體
904‧‧‧電腦可讀程式碼構件或邏輯
5000‧‧‧主機電腦系統/主機電腦
5000'‧‧‧主機電腦系統/主機電腦
5001‧‧‧CPU
5002‧‧‧電腦記憶體
5003‧‧‧動態位址轉譯(DAT)
5004‧‧‧指令提取單元
5005‧‧‧載入/儲存單元
5006‧‧‧指令解碼單元
5007‧‧‧轉譯後援緩衝器(TLB)
5008‧‧‧指令執行單元
5009‧‧‧快取記憶體
5010‧‧‧網路
5011‧‧‧儲存媒體器件
5020‧‧‧系統
5021‧‧‧基底電腦系統
5022‧‧‧顯示器件
5023‧‧‧滑鼠
5024‧‧‧鍵盤
5025‧‧‧記憶體
5026‧‧‧處理器
5027‧‧‧長期儲存器
5028‧‧‧通信
5029‧‧‧網路
5030‧‧‧印表機/掃描器
5032‧‧‧應用程式
5040‧‧‧資料處理網路
5041‧‧‧工作站
5042‧‧‧工作站
5043‧‧‧工作站
5044‧‧‧工作站
5045‧‧‧工作站
5046‧‧‧用戶端伺服器/閘道器電腦
5047‧‧‧網際網路
5048‧‧‧遠端伺服器
5050‧‧‧使用者
5051‧‧‧使用者
5053‧‧‧快取記憶體/記憶體介面
5054‧‧‧I/O單元
5055‧‧‧指令提取單元
5056‧‧‧解碼/調度單元
5057‧‧‧執行單元
5058‧‧‧分支單元
5059‧‧‧暫存器
5060‧‧‧載入/儲存單元
5061‧‧‧程式計數器(指令計數器)
5065‧‧‧其他
5066‧‧‧算術邏輯單元(ALU)
5067‧‧‧暫存器電路
5068‧‧‧暫存器電路
5069‧‧‧暫存器電路
5070‧‧‧輸出暫存器電路
5071‧‧‧介面連接邏輯
5072‧‧‧其他架構化之設施
5073‧‧‧其他電路
5074‧‧‧ALU
5075‧‧‧輸入暫存器電路
5076‧‧‧輸入暫存器電路
5077‧‧‧輸入暫存器電路
5080‧‧‧輸出暫存器電路
5082‧‧‧分支歷史表
5083‧‧‧其他元件
5085‧‧‧ALU
5090‧‧‧控制邏輯
5091‧‧‧主機處理器(CPU)
5092‧‧‧經模擬之主機電腦系統
5093‧‧‧模擬處理器
5094‧‧‧記憶體
5096‧‧‧主機電腦記憶體
5097‧‧‧模擬常式
圖1描繪併有且使用本發明之一或多項態樣的一計算環境之一項實施例;圖2A描繪併有且使用本發明之一或多項態樣的一計算環境之另一實施例;圖2B描繪根據本發明之一態樣的圖2A之記憶體之其他細節;圖3描繪根據本發明之一態樣的自區位格式轉換至十進制浮點格式的邏輯之概述;
圖4描繪根據本發明之一態樣使用的自區位轉換指令之格式之一項實施例;圖5描繪根據本發明之一態樣的自區位轉換至十進制浮點的邏輯之其他細節;圖6描繪根據本發明之一態樣的自十進制浮點格式轉換至區位格式的邏輯之概述;圖7描繪根據本發明之一態樣使用的自十進制浮點轉換至區位指令之一項實施例;圖8描繪根據本發明之一態樣的自十進制浮點轉換至區位的邏輯之其他細節;圖9描繪併有本發明之一或多項態樣的一電腦程式產品之一項實施例;圖10描繪併有且使用本發明之一或多項態樣的一主機電腦系統之一項實施例;圖11描繪併有且使用本發明之一或多項態樣的一電腦系統之再一實例;圖12描繪併有且使用本發明之一或多項態樣的包含一電腦網路之一電腦系統之另一實例;圖13描繪併有且使用本發明之一或多項態樣的一電腦系統之各種元件之一項實施例;圖14A描繪併有且使用本發明之一或多項態樣的圖13之電腦系統之執行單元之一項實施例;圖14B描繪併有且使用本發明之一或多項態樣的圖13之電腦系統之分支單元之一項實施例;
圖14C描繪併有且使用本發明之一或多項態樣的圖13之電腦系統之載入/儲存單元之一項實施例;及圖15描繪併有且使用本發明之一或多項態樣的一模擬主機電腦系統之一項實施例。
Claims (20)
- 一種用於在一中央處理單元中執行一機器指令之電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於由該處理電路執行以用於實行一方法之指令,該方法包含:由一處理器獲得用於執行之一機器指令,該機器指令根據一電腦架構經定義用於電腦執行,該機器指令包含:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一自十進制浮點轉換至區位函式;一第一暫存器欄位,其指明一第一暫存器,該第一暫存器包含一第一運算元;一第二暫存器欄位及一位移欄位,其中由該第二暫存器欄位指明的一第二暫存器之內容與該位移欄位之內容組合以形成一第二運算元之一位址;及一遮罩欄位,該遮罩欄位包含在該機器指令之執行期間使用之一或多個控制;及執行該機器指令,該執行包含:將一十進制浮點格式之該第一運算元之至少一部分轉換至一區位格式;及將該轉換之一結果置放於由該第二運算元之該位址指明的一位置處。
- 如請求項1之電腦程式產品,其中該作業碼欄位當為一 第一值時指示一長的十進制浮點源及一區位結果。
- 如請求項1之電腦程式產品,其中該作業碼當為一第二值時指示一擴展的十進制浮點源及一區位結果。
- 如請求項1之電腦程式產品,其中該遮罩欄位包含一正負號控制,其用以指示該第二運算元具有一正負號欄位。
- 如請求項1之電腦程式產品,其中該遮罩欄位包含一區位控制,其用以判定該第二運算元之一區位欄位的一值。
- 如請求項1之電腦程式產品,其中該遮罩欄位包含一加號代碼控制,其用以編碼一加號。
- 如請求項1之電腦程式產品,其中該遮罩欄位包含一強迫加零控制,其用以判定置放於該第二運算元中的一結果之一正負號。
- 如請求項1之電腦程式產品,其中該遮罩欄位包含一區位欄位及一正負號欄位,且其中該方法進一步包含使用該區位欄位及該正負號欄位中之至少一者以判定該正負號欄位及儲存於該第二運算元中的該結果之一欄位代碼中的至少一者之一值。
- 如請求項1之電腦程式產品,其中該機器指令包含一長度欄位,其指定待轉換的該第一運算元之最右邊有效數數位之一數目及該第二運算元之一長度中的至少一者。
- 如請求項1之電腦程式產品,其中該執行包含自至少一浮點暫存器讀取該第一運算元之該至少一部分,且其中 包括該結果之該第二運算元在記憶體中。
- 一種用於在一中央處理單元中執行一機器指令之電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以實行一方法,該方法包含:獲得用於執行之一機器指令,該機器指令根據一電腦架構經定義用於電腦執行,該機器指令包含:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一自十進制浮點轉換至區位函式;一第一暫存器欄位,其指明一第一暫存器,該第一暫存器包含一第一運算元;一第二暫存器欄位及一位移欄位,其中由該第二暫存器欄位指明的一第二暫存器之內容與該位移欄位之內容組合以形成一第二運算元之一位址;及一遮罩欄位,該遮罩欄位包含在該機器指令之執行期間使用之一或多個控制;及執行該機器指令,該執行包含:將一十進制浮點格式的該第一運算元之至少一部分轉換至一區位格式;及將該轉換之一結果置放於由該第二運算元之該位址指明的一位置處。
- 如請求項11之電腦系統,其中該遮罩欄位包含一正負號控制,其用以指示該第二運算元具有一正負號欄位。
- 如請求項11之電腦系統,其中該遮罩欄位包含一區位控制,其用以判定該第二運算元之一區位欄位的一值。
- 如請求項11之電腦系統,其中該遮罩欄位包含一加號代碼控制,其用以編碼一加號。
- 如請求項11之電腦系統,其中該遮罩欄位包含一強迫加零控制,其用於判定置放於該第二運算元中的一結果之一正負號。
- 如請求項11之電腦系統,其中該遮罩欄位包含一區位欄位及一正負號欄位,且其中該方法進一步包含使用該區位欄位及該正負號欄位中之至少一者以判定該正負號欄位及儲存於該第二運算元中的該結果之一欄位代碼中的至少一者之一值。
- 如請求項11之電腦系統,其中該機器指令包含一長度欄位,其指定待轉換的該第一運算元之最右邊有效數數位之一數目及該第二運算元之一長度中的至少一者。
- 一種用於在一中央處理單元中執行一機器指令之方法,該方法包含:由一處理器獲得用於執行之一機器指令,該機器指令根據一電腦架構經定義用於電腦執行,該機器指令包含:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一自十進制浮點轉換至區位函式;一第一暫存器欄位,其指明一第一暫存器,該第一暫存器包含一第一運算元; 一第二暫存器欄位及一位移欄位,其中由該第二暫存器欄位指明的一第二暫存器之內容與該位移欄位之內容組合以形成一第二運算元之一位址;及一遮罩欄位,該遮罩欄位包含在該機器指令之執行期間使用之一或多個控制;及執行該機器指令,該執行包含:將一十進制浮點格式的該第一運算元之至少一部分轉換至一區位格式;及將該轉換之一結果置放於由該第二運算元之該位址指明的一位置處。
- 如請求項18之方法,其中該遮罩欄位包含用以指示該第二運算元是否具有一正負號欄位之一正負號控制、用以判定該第二運算元之一區位欄位的一值之一區位控制、用以編碼一加號之一加號代碼控制及用於判定置放於該第二運算元中的一結果之一正負號之一強迫加零控制。
- 如請求項18之方法,其中該機器指令包含一長度欄位,其指定待轉換的該第一運算元之最右邊有效數數位之一數目及該第二運算元之一長度中的至少一者。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/339,526 US9329861B2 (en) | 2011-12-29 | 2011-12-29 | Convert to zoned format from decimal floating point format |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201337734A TW201337734A (zh) | 2013-09-16 |
TWI522906B true TWI522906B (zh) | 2016-02-21 |
Family
ID=48695919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101144557A TWI522906B (zh) | 2011-12-29 | 2012-11-28 | 自十進制浮點格式轉換至區位格式 |
Country Status (16)
Country | Link |
---|---|
US (4) | US9329861B2 (zh) |
EP (1) | EP2798482A4 (zh) |
JP (1) | JP6115920B2 (zh) |
KR (1) | KR101589840B1 (zh) |
CN (1) | CN104025043B (zh) |
AU (1) | AU2012360180B2 (zh) |
BR (1) | BR112014016333A8 (zh) |
CA (1) | CA2852861C (zh) |
HK (1) | HK1201351A1 (zh) |
IL (1) | IL230465A0 (zh) |
MX (1) | MX2014007915A (zh) |
RU (1) | RU2560796C2 (zh) |
SG (1) | SG11201402088PA (zh) |
TW (1) | TWI522906B (zh) |
WO (1) | WO2013098668A1 (zh) |
ZA (1) | ZA201400734B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9335993B2 (en) | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
US9329861B2 (en) | 2011-12-29 | 2016-05-03 | International Business Machines Corporation | Convert to zoned format from decimal floating point format |
US20160092163A1 (en) * | 2014-09-30 | 2016-03-31 | International Business Machines Corporation | Machine instructions for converting from decimal floating point format to packed decimal format |
US10255072B2 (en) * | 2016-07-01 | 2019-04-09 | Intel Corporation | Architectural register replacement for instructions that use multiple architectural registers |
US10175946B2 (en) * | 2016-09-30 | 2019-01-08 | International Business Machines Corporation | Perform sign operation decimal instruction |
US10592208B2 (en) * | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US10963219B2 (en) | 2019-02-06 | 2021-03-30 | International Business Machines Corporation | Hybrid floating point representation for deep learning acceleration |
US11023205B2 (en) * | 2019-02-15 | 2021-06-01 | International Business Machines Corporation | Negative zero control in instruction execution |
US11099853B2 (en) | 2019-02-15 | 2021-08-24 | International Business Machines Corporation | Digit validation check control in instruction execution |
CN110688156B (zh) * | 2019-09-12 | 2021-02-02 | 无锡江南计算技术研究所 | 一种采用risc架构的cpu系统 |
US11442726B1 (en) | 2021-02-26 | 2022-09-13 | International Business Machines Corporation | Vector pack and unpack instructions |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3872442A (en) * | 1972-12-14 | 1975-03-18 | Sperry Rand Corp | System for conversion between coded byte and floating point format |
US4001570A (en) | 1975-06-17 | 1977-01-04 | International Business Machines Corporation | Arithmetic unit for a digital data processor |
US4141005A (en) | 1976-11-11 | 1979-02-20 | International Business Machines Corporation | Data format converting apparatus for use in a digital data processor |
US4462102A (en) * | 1981-11-13 | 1984-07-24 | International Business Machines Corporation | Method and apparatus for checking the parity of disassociated bit groups |
US5276891A (en) | 1990-01-11 | 1994-01-04 | Bull Hn Information Systems Inc. | Alignment of sign, data, edit byte operand results for storage in memory |
US5275891A (en) | 1990-10-04 | 1994-01-04 | Hitachi Metals, Ltd. | R-TM-B permanent magnet member having improved corrosion resistance and method of producing same |
US5268855A (en) | 1992-09-14 | 1993-12-07 | Hewlett-Packard Company | Common format for encoding both single and double precision floating point numbers |
WO1994027215A1 (en) | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6282554B1 (en) | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
US6085313A (en) | 1998-04-30 | 2000-07-04 | International Business Machines Corporation | Computer processor system for executing RXE format floating point instructions |
US6266769B1 (en) | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6463582B1 (en) | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6535898B1 (en) * | 2000-01-24 | 2003-03-18 | Microsoft Corporation | Fast floating-point truncation to integer form |
US6671796B1 (en) | 2000-02-25 | 2003-12-30 | Sun Microsystems, Inc. | Converting an arbitrary fixed point value to a floating point value |
US7006699B2 (en) * | 2002-03-27 | 2006-02-28 | Microsoft Corporation | System and method for progressively transforming and coding digital data |
US7236995B2 (en) | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
US7899855B2 (en) | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
US7167968B2 (en) | 2004-04-29 | 2007-01-23 | International Business Machines Corporation | Storage pre-alignment and EBCDIC, ASCII and unicode basic latin conversions for packed decimal data |
US7389499B2 (en) | 2004-10-21 | 2008-06-17 | International Business Machines Corporation | Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations |
US7685213B2 (en) * | 2005-03-31 | 2010-03-23 | Siebel Systems, Inc. | Conversion of floating-point numbers from binary into string format |
US7685214B2 (en) * | 2005-08-26 | 2010-03-23 | International Business Machines Corporation | Order-preserving encoding formats of floating-point decimal numbers for efficient value comparison |
US8364734B2 (en) * | 2005-09-15 | 2013-01-29 | International Business Machines Corporation | Converting from decimal floating point into scaled binary coded decimal |
US7698352B2 (en) * | 2005-09-15 | 2010-04-13 | International Business Machines Corporation | System and method for converting from scaled binary coded decimal into decimal floating point |
US7733785B2 (en) * | 2007-01-31 | 2010-06-08 | International Business Machines Corporation | Method and system for dynamically adjusting packet size to decrease delays of streaming data transmissions on noisy transmission lines |
US20080270495A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Insert/extract biased exponent of decimal floating point data |
US8190664B2 (en) * | 2007-04-26 | 2012-05-29 | International Business Machines Corporation | Employing a mask field of an instruction to encode a sign of a result of the instruction |
US8051117B2 (en) * | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Shift significand of decimal floating point data |
US8051118B2 (en) * | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Composition of decimal floating point data |
US8392489B2 (en) * | 2008-02-15 | 2013-03-05 | International Business Machines Corporation | ASCII to binary floating point conversion of decimal real numbers on a vector processor |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
US8346828B2 (en) | 2008-10-14 | 2013-01-01 | International Business Machines Corporation | System and method for storing numbers in first and second formats in a register file |
US7812757B1 (en) * | 2009-06-12 | 2010-10-12 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Hybrid analog-to-digital converter (ADC) with binary-weighted-capacitor sampling array and a sub-sampling charge-redistributing array for sub-voltage generation |
US20110004644A1 (en) | 2009-07-03 | 2011-01-06 | Via Technologies, Inc. | Dynamic floating point register precision control |
US9311049B2 (en) | 2009-12-15 | 2016-04-12 | International Business Machines Corporation | System to improve numereical conversions and associated methods |
US20110314263A1 (en) | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
US9335993B2 (en) | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
US9329861B2 (en) | 2011-12-29 | 2016-05-03 | International Business Machines Corporation | Convert to zoned format from decimal floating point format |
-
2011
- 2011-12-29 US US13/339,526 patent/US9329861B2/en active Active
-
2012
- 2012-11-13 KR KR1020147006930A patent/KR101589840B1/ko active IP Right Grant
- 2012-11-13 EP EP12863789.9A patent/EP2798482A4/en not_active Withdrawn
- 2012-11-13 BR BR112014016333A patent/BR112014016333A8/pt not_active Application Discontinuation
- 2012-11-13 CN CN201280065483.2A patent/CN104025043B/zh active Active
- 2012-11-13 SG SG11201402088PA patent/SG11201402088PA/en unknown
- 2012-11-13 WO PCT/IB2012/056368 patent/WO2013098668A1/en active Application Filing
- 2012-11-13 AU AU2012360180A patent/AU2012360180B2/en active Active
- 2012-11-13 CA CA2852861A patent/CA2852861C/en active Active
- 2012-11-13 MX MX2014007915A patent/MX2014007915A/es active IP Right Grant
- 2012-11-13 JP JP2014549565A patent/JP6115920B2/ja active Active
- 2012-11-14 RU RU2012148405/08A patent/RU2560796C2/ru active
- 2012-11-28 TW TW101144557A patent/TWI522906B/zh active
-
2014
- 2014-01-15 IL IL230465A patent/IL230465A0/en unknown
- 2014-01-30 ZA ZA2014/00734A patent/ZA201400734B/en unknown
- 2014-12-04 US US14/560,639 patent/US9335995B2/en active Active
-
2015
- 2015-02-17 HK HK15101782.3A patent/HK1201351A1/zh unknown
-
2016
- 2016-03-28 US US15/082,694 patent/US10719324B2/en active Active
- 2016-03-29 US US15/083,362 patent/US10725780B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
ZA201400734B (en) | 2015-10-28 |
SG11201402088PA (en) | 2014-06-27 |
EP2798482A4 (en) | 2016-12-07 |
JP6115920B2 (ja) | 2017-04-19 |
TW201337734A (zh) | 2013-09-16 |
AU2012360180B2 (en) | 2016-04-07 |
KR20140098051A (ko) | 2014-08-07 |
US20150089206A1 (en) | 2015-03-26 |
US9329861B2 (en) | 2016-05-03 |
AU2012360180A1 (en) | 2014-06-05 |
US20160210143A1 (en) | 2016-07-21 |
EP2798482A1 (en) | 2014-11-05 |
US20160210152A1 (en) | 2016-07-21 |
RU2012148405A (ru) | 2014-05-20 |
CA2852861C (en) | 2019-08-13 |
CA2852861A1 (en) | 2013-07-04 |
CN104025043B (zh) | 2016-09-14 |
US10725780B2 (en) | 2020-07-28 |
HK1201351A1 (zh) | 2015-08-28 |
MX2014007915A (es) | 2014-07-30 |
RU2560796C2 (ru) | 2015-08-20 |
CN104025043A (zh) | 2014-09-03 |
WO2013098668A1 (en) | 2013-07-04 |
US20130173892A1 (en) | 2013-07-04 |
US9335995B2 (en) | 2016-05-10 |
BR112014016333A8 (pt) | 2017-07-04 |
BR112014016333A2 (pt) | 2017-06-13 |
JP2015507799A (ja) | 2015-03-12 |
US10719324B2 (en) | 2020-07-21 |
KR101589840B1 (ko) | 2016-01-28 |
IL230465A0 (en) | 2014-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI515654B (zh) | 從區位格式轉換至十進制浮點格式 | |
TWI522906B (zh) | 自十進制浮點格式轉換至區位格式 | |
TWI567641B (zh) | 用於向量尋找元素相等指令的電腦程式產品、電腦系統及其方法 | |
TWI550510B (zh) | 提供向量尋找元素不相等指令之電腦程式產品、電腦系統及方法 | |
TWI614679B (zh) | 向量浮點測試資料類別立即指令 | |
TW201403467A (zh) | 將資料載入至由一指令所指示之一指定記憶體邊界之該指令 | |
TW201403462A (zh) | 計算至一指定記憶體邊界之距離之指令 | |
TW201447753A (zh) | 向量例外程式碼 |