專(zhuān)利名稱(chēng):最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于浮點(diǎn)數(shù)的數(shù)學(xué)運(yùn)算,更是關(guān)于執(zhí)行高速x87浮點(diǎn)加法運(yùn)算 的方法與系統(tǒng)。
背景技術(shù):
浮點(diǎn)數(shù), 一般來(lái)說(shuō),由符號(hào)位、指數(shù)及包含該浮點(diǎn)數(shù)值中有效數(shù)字的尾 數(shù)(故亦稱(chēng)為有效數(shù))所表示。舉例而言,以該IEEE標(biāo)準(zhǔn)754對(duì)二進(jìn)制浮點(diǎn)運(yùn) 算的定義,當(dāng)表示歸一化的浮點(diǎn)數(shù)時(shí),其尾數(shù)包括整數(shù)1及在二進(jìn)制小數(shù)點(diǎn) 之后的分?jǐn)?shù)。
x87架構(gòu)為執(zhí)行浮點(diǎn)運(yùn)算的常用架構(gòu)。該x87架構(gòu)描述于IA-32英特爾 架構(gòu)軟件開(kāi)發(fā)者手冊(cè)第1集-基本架構(gòu)(2006年6月)之中(并入全文中對(duì)各種 議題的參考文獻(xiàn),在此簡(jiǎn)稱(chēng)為「英特爾手冊(cè)J)。特別的是,其第4. 8節(jié),描 述實(shí)數(shù)在各種浮點(diǎn)數(shù)形式中的表示法;第8章大體描述其如何以x87浮點(diǎn)運(yùn) 算單元(Floating Point Unit, FPU)進(jìn)行程序設(shè)計(jì);而第5.2節(jié)描述特定的 x87 FPU指令。
x87 FPU共支持三種不同的浮點(diǎn)運(yùn)算形式單精度形式數(shù)字為32位,其 又包括l位表示正負(fù)號(hào)、8位表示指數(shù)、以及23位表示尾數(shù);雙精度形式數(shù) 字為64位,其又包括l位表示正負(fù)號(hào)、ll位表示指數(shù)、以及52位表示尾數(shù); 雙擴(kuò)充精度形式數(shù)字為80位,其包括l位表示正負(fù)號(hào)、15位表示指數(shù)、l整 數(shù)字元、以及63位表示尾數(shù)。浮點(diǎn)數(shù)字的精度定為其尾數(shù)的位數(shù)。因此,若 在該單精度和雙精度形式中,給定隱含整數(shù)l的位至該二進(jìn)制小數(shù)點(diǎn)的左側(cè), 及在該雙擴(kuò)充精度形式中給定確實(shí)整數(shù)1的位至該二進(jìn)制小數(shù)點(diǎn)的左側(cè)時(shí), 則該單精度形式的浮點(diǎn)數(shù)限制至24位,該雙精度形式的浮點(diǎn)數(shù)字限制至53 位,而該雙擴(kuò)充精度形式被系統(tǒng)默認(rèn)的浮點(diǎn)數(shù)字則限制至64位。然而,執(zhí)行 于雙擴(kuò)充精度形式浮點(diǎn)數(shù)的精度計(jì)算法可能被限制少于64位,且該精度限制 乃由程序設(shè)計(jì)者所決定。x87 FPU包括精度控制(Precision Control, PC)場(chǎng) 以改變x87 FPU執(zhí)行浮點(diǎn)計(jì)算的精度。舉例而言,若該程序?qū)懼猎揚(yáng)C場(chǎng)指定 為單精度,就算一個(gè)或一個(gè)以上的加數(shù)可能具有大于該24位的精度,而該 x87 FPU仍以24位精度表示其結(jié)果。按此,該FPU會(huì)將該結(jié)果的有效值中、 小于該P(yáng)C場(chǎng)所指定精度的位數(shù)予以舍去(即將該位數(shù)化為零)。
x87 FPU最常執(zhí)行的浮點(diǎn)運(yùn)算指令即加法(含減法)指令。浮點(diǎn)加法指令 執(zhí)行Ra+Rb的計(jì)算,其中Ra和Rb為浮點(diǎn)加數(shù)。Ra的尾數(shù)于此標(biāo)示為A而Rb 的尾數(shù)于此標(biāo)示為B。假設(shè)Ra為較大的加數(shù)而Rb為較小的加數(shù),例如,Ra 具有較Rb大的指數(shù)。x87 FPU按照Ra與Rb指數(shù)的差值移動(dòng)B數(shù)個(gè)位,以校 準(zhǔn)較小加數(shù)的尾數(shù)以配合較大加數(shù)的尾數(shù)。然后,該x87 FPU將尾數(shù)A與校 準(zhǔn)后的尾數(shù)B予以相加而產(chǎn)生總和。該FPU于是歸一化該總和以移除任何前 置的零值。最后,該FPU對(duì)該歸一化總和執(zhí)行舍入運(yùn)算。
對(duì)于x87 FPU執(zhí)行浮點(diǎn)加法指令的時(shí)機(jī)而言,該舍入運(yùn)算可說(shuō)相當(dāng)重要。 FPU依照具有頻率及周期的頻率以執(zhí)行指令。對(duì)已知的半導(dǎo)體制程技術(shù)和FPU 設(shè)計(jì)(例如,需要多少門(mén)延遲(gate delay)以執(zhí)行該加法運(yùn)算)而言,其可能 必需延長(zhǎng)該頻率周期以調(diào)整該舍入運(yùn)算的時(shí)機(jī),以完成指令的執(zhí)行。否則, FPU常需更多頻率周期以執(zhí)行加法運(yùn)算。在此情況下,對(duì)FPU的效能而言, 若能以最少的頻率周期執(zhí)行浮點(diǎn)加法指令(常有已知的頻率周期、FPU設(shè)計(jì)以 執(zhí)行該指令的門(mén)延遲、以及使用的該半導(dǎo)體制程技術(shù)等),則可說(shuō)是十分理想。
舍入運(yùn)算可判斷執(zhí)行浮點(diǎn)加法指令時(shí)是否需要額外的頻率周期,例如 該FPU執(zhí)行浮點(diǎn)加法指令是在N個(gè)頻率周期,還是N+l個(gè)頻率周期。這是因 為x87 FPU執(zhí)行加法指令的舍入運(yùn)算判斷(例如該等加數(shù)的總和是否需要進(jìn)位) 會(huì)隨著該等加數(shù)與該FPCW的PC場(chǎng)的指定精度而改變。更特別的是,程序設(shè) 計(jì)者可通過(guò)該P(yáng)C場(chǎng)指定一個(gè)與該等加數(shù)相異的精度,此將導(dǎo)致在某些情況 下,耗費(fèi)較多的時(shí)間以進(jìn)行舍入運(yùn)算判斷。而在那些情況下,耗費(fèi)較長(zhǎng)的時(shí) 間來(lái)進(jìn)行舍入運(yùn)算判斷將會(huì)使整個(gè)指令的執(zhí)行耗費(fèi)額外的頻率周期。因此, 舉例而言,x87 FPU若在第一情況下(對(duì)應(yīng)該等加數(shù)的精度、以及PC場(chǎng)的指 定精度)執(zhí)行浮點(diǎn)加法運(yùn)算時(shí)需費(fèi)時(shí)三個(gè)頻率周期,在第二情況下(同樣對(duì)應(yīng) 該等加數(shù)的精度,以及PC場(chǎng)的指定精度),若該FPU因?yàn)檫M(jìn)行舍入運(yùn)算判斷 需耗費(fèi)較多時(shí)間,則在此第二情況下可能要四個(gè)頻率周期方可完成指令的執(zhí) 行。以下是加數(shù)精度對(duì)應(yīng)PC場(chǎng)的指定精度的某些情況下、又在該情況下所造 成的影響的特殊例子。
假設(shè)該P(yáng)C場(chǎng)指定精度與該等加數(shù)的精度皆相同,則僅較小的加數(shù)會(huì)因?yàn)?上述討論的尾數(shù)校準(zhǔn)的機(jī)制,對(duì)舍入運(yùn)算貢獻(xiàn)位(于此稱(chēng)做固著位)。在此情 況下,簡(jiǎn)單檢視其中較小加數(shù)的固著位即可進(jìn)行舍入運(yùn)算判斷,而最低有效 位數(shù)在校準(zhǔn)期間則會(huì)向右移位。而此情況下,進(jìn)行舍入運(yùn)算判斷的時(shí)間大部 分將包括于對(duì)兩加數(shù)尾數(shù)進(jìn)行實(shí)質(zhì)加法運(yùn)算的時(shí)間之內(nèi)。
然而,假設(shè)其中較大加數(shù)的精度大于該P(yáng)C場(chǎng)指定精度,則該較大加數(shù)也
可能對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。在此情況下,x87 FPU必須將該兩加數(shù)所 貢獻(xiàn)的所有固著位加入,以進(jìn)行舍入運(yùn)算判斷。而對(duì)固著位進(jìn)行加法運(yùn)算所 耗時(shí)間,可能與對(duì)尾數(shù)中非固著位的部分進(jìn)行加法運(yùn)算相當(dāng),例如,其中較 上位在該P(yáng)C場(chǎng)指定精度之內(nèi)。該x87 FPU在執(zhí)行該等尾數(shù)加法的后檢視該等 固著位的和,以進(jìn)行舍入運(yùn)算判斷。在此情況下,很重要的是,與其它情況 下只有較小加數(shù)貢獻(xiàn)固著位不同,該FPU無(wú)法僅由較大加數(shù)的尾數(shù)及校準(zhǔn)后 的較小加數(shù)的尾數(shù)來(lái)進(jìn)行舍入運(yùn)算判斷。此外,該FPU尚須等該等固著位的 加法運(yùn)算完成后始可執(zhí)行上述舍入運(yùn)算判斷。
已有不少努力是為了增進(jìn)執(zhí)行快速浮點(diǎn)加法運(yùn)算。舉例而言,如Seidel 等所著的「0N THE DESIGN OF FAST IEEE FLOATING-POINT ADDERS」,參照 IEEE計(jì)算機(jī)協(xié)會(huì)的第15屆IEEE計(jì)算機(jī)運(yùn)算討論會(huì)公報(bào)(ARITH, 01)。在該 商業(yè)可行的x87 FPU當(dāng)中,程序設(shè)計(jì)者通過(guò)PC場(chǎng)指定浮點(diǎn)運(yùn)算精度的能力仍 存有問(wèn)題,然而,該論文卻未將此需求列入考慮。更特別的是,該論文假設(shè) 僅有一加數(shù)會(huì)對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。然而,如上所述,該x87架構(gòu)的 特質(zhì),即該P(yáng)C場(chǎng)的特質(zhì),會(huì)產(chǎn)生同時(shí)對(duì)兩加數(shù)進(jìn)行舍入運(yùn)算判斷的情形。一 些因素如微處理器的頻率、x87 FPU中各電路(力口法器、移位器、及控制邏 輯電路)的門(mén)延遲、以及在某些情況下進(jìn)行舍入運(yùn)算判斷需要額外的時(shí)間(例 如兩加數(shù)皆貢獻(xiàn)固著位),都會(huì)在某些設(shè)計(jì)中造成頻率周期不必要的延長(zhǎng),或 增加x87執(zhí)行浮點(diǎn)加法指令時(shí)額外的頻率周期。
解決此問(wèn)題的方法之一為使該FPU以可變的頻率周期執(zhí)行浮點(diǎn)加法指 令。然而,此方法在指令調(diào)度,特別是在超量且失序執(zhí)行的微處理中并不理 想。另外的方法則是簡(jiǎn)單地用 一致但較原本多的頻率周期(在上述例子中為四 個(gè)頻率周期)去執(zhí)行所有的浮點(diǎn)加法指令,而不考慮其它情況。然而,此方法 明顯不是一個(gè)高效能的方案。
因此,希望能有一種方法,能夠使x87在執(zhí)行相對(duì)耗時(shí)的浮點(diǎn)加法指令
(例如進(jìn)行舍入運(yùn)算判斷時(shí),兩加數(shù)皆貢獻(xiàn)固著位時(shí))后產(chǎn)生正確的結(jié)果;且
不會(huì)影響執(zhí)行相對(duì)省時(shí)的浮點(diǎn)加法指令(例如當(dāng)舍入運(yùn)算判斷時(shí),僅有一加數(shù) 貢獻(xiàn)固著位)的時(shí)間。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝 置,包括x87浮點(diǎn)控制字(Floating Point Control Word, FPCW)、指令調(diào)度 器(Instruction Dispatcher)。其中該x87浮點(diǎn)控制字包括精度控制 (Precision Control, PC)場(chǎng),其可編程以指定浮點(diǎn)單元(Floating Point, FPU)執(zhí)行浮點(diǎn)運(yùn)算的精度;該指令調(diào)度器用以將x87浮點(diǎn)加法指令(Floating Point Addition Instruction, FPADD)調(diào)度至該FPU,而該FPADD具有第一 及第二浮點(diǎn)加數(shù),其中該第一及第二浮點(diǎn)加數(shù)的尾數(shù)的有效位數(shù)的位較該P(yáng)C 場(chǎng)的指定精度少;其中該FPU用以將該第一及第二加數(shù)相加以產(chǎn)生總和、決 定一組預(yù)設(shè)條件是否存于該第一及第二加數(shù)中,其中該等加數(shù)對(duì)總和的舍入 運(yùn)算判斷有所貢獻(xiàn),且與該P(yáng)C場(chǎng)的指定精度有關(guān);若該組預(yù)設(shè)條件并不存在, 則依照該第一和第二加數(shù)中較小者的尾數(shù)的位以及該P(yáng)C場(chǎng)的指定精度來(lái)進(jìn) 行舍入運(yùn)算判斷、及依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算, 以產(chǎn)生該FPADD的結(jié)果;以及若該組預(yù)設(shè)條件存在,則儲(chǔ)存該總和及由該第 一和第二加數(shù)所導(dǎo)出的舍入信息、通知該指令調(diào)度器重新調(diào)度該FPADD至該 FPU、以及對(duì)該指令調(diào)度器重新調(diào)度該FPADD至該FPU之舉作出下列回應(yīng)依 照該儲(chǔ)存的舍入信息和該P(yáng)C場(chǎng)的指定精度作出舍入運(yùn)算判斷、以及依照該舍 入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該結(jié)果。
本發(fā)明還提供一種用于微處理器中處理x87浮點(diǎn)加法指令的方法,其中 該微處理器包括浮點(diǎn)單元、指令調(diào)度器及x87浮點(diǎn)控制字,而該FPCW具有可 編程以指定該FPU浮點(diǎn)運(yùn)算精度的精度控制場(chǎng),該方法包括于首次調(diào)度x87 的FPADD至該FPU,該FPADD具有第一及第二浮點(diǎn)加數(shù),其中該第一及第二 浮點(diǎn)加數(shù)的尾數(shù)的有效位數(shù)的位較PC場(chǎng)的指定精度少;將該第一及第二加數(shù) 相加以產(chǎn)生總和;判斷一組預(yù)設(shè)條件是否存于該第一及第二加數(shù)中,其中該 等加數(shù)對(duì)總和的舍入運(yùn)算判斷有所貢獻(xiàn),且與該P(yáng)C場(chǎng)的指定精度有關(guān);若該 組預(yù)設(shè)條件并不存在,則依照該第 一和第二加數(shù)中較小者的尾數(shù)的位以及該 PC場(chǎng)的指定精度來(lái)進(jìn)行舍入運(yùn)算判斷;及依照該舍入運(yùn)算判斷,對(duì)該總和選
擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該FPADD的結(jié)果;以及若該組預(yù)設(shè)條件存在, 則儲(chǔ)存該總和及由該第一和第二加數(shù)所導(dǎo)出的舍入信息,通知該指令調(diào)度器 重新調(diào)度該FPADD至該FPU;以及對(duì)該指令調(diào)度器重新調(diào)度該FPADD至該FPU 之舉作出下列回應(yīng)依照該儲(chǔ)存的舍入信息和該P(yáng)C場(chǎng)的指定精度作出舍入運(yùn) 算判斷;以及依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn) 生該結(jié)果。
為使本發(fā)明的上述目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí) 施例并配合所附圖式做詳細(xì)說(shuō)明。
圖1為依照本發(fā)明的一微處理器方塊示意圖。
圖2為依照本發(fā)明圖1的該執(zhí)行單元的方塊示意圖。
圖3為依照本發(fā)明圖1的微處理器的x87 FPU的方塊示意圖。
圖4a、 4b、 4c、 4d為兩加凄1在x87浮點(diǎn)加法指令中對(duì)應(yīng)該P(yáng)C場(chǎng)308指 定精度的四種可能組合關(guān)系的區(qū)塊示意圖。
圖5為依照本發(fā)明一實(shí)施例發(fā)生于浮點(diǎn)加法指令的加數(shù)上的一組預(yù)設(shè)條 件(關(guān)于對(duì)應(yīng)至圖3該FPCW的PC場(chǎng)的指定精度的舍入運(yùn)算判斷)說(shuō)明圖。
圖6A和圖6B為圖l微處理器依照本發(fā)明執(zhí)行x87浮點(diǎn)加法指令的操作 方法流程圖。
100-微處理器,104 x86的巨指令,106~微指令,108~翻譯器,112-微指令存儲(chǔ)器,116 ~寄存器配置表,120 ~指令調(diào)度器,124 ~執(zhí)行單元,126 ~ 退回單元,128~記錄緩沖器,204 媒介A單元,206 -媒介B單元,212 ~ SINT, 216-MOV/BR, 220 ~LD, 224 -STA, 228 -STD, 304 -浮點(diǎn)控制字,308 -精度控制場(chǎng),312-舍入控制場(chǎng),316 加數(shù)A, 320 -加數(shù)B, 324A 加法器, 324B ~加法器,328 ~控制邏輯單元,388 ~浮點(diǎn)運(yùn)算單元,392 ~多工器,394 ~ 多工器,396 ~多工器,398 ~多工器,346 -儲(chǔ)存總和,348~儲(chǔ)存的累計(jì)固 著位,402 ~較大加數(shù)的尾數(shù)的精度,404 ~較小加數(shù)的尾數(shù)的精度
具體實(shí)施例方式
一加數(shù)在進(jìn)行浮點(diǎn)加法指令的校準(zhǔn)操作之后(例如校準(zhǔn)較小的加數(shù)),其
有效位數(shù)中小于圖3中該精度控制(Precision Control, PC)場(chǎng)308的指定精 度的位稱(chēng)之為-r固著位」。換句話(huà)說(shuō),該固著位即加數(shù)中比該P(yáng)C場(chǎng)308指 定的結(jié)果所能呈現(xiàn)最小位數(shù)還少的有效位數(shù)。
請(qǐng)參照?qǐng)D1,其表示依照本發(fā)明的微處理器100的方塊示意圖。該微處 理器100包括翻i奪器108,其耦接至孩i指令存儲(chǔ)器(Microinstruction ROM) 112。該翻譯器108接收x86的巨指令104并將其翻譯成一個(gè)以上的微指 令106。在一實(shí)施例中,該x86巨指令104包括眾所周知的IA-32架構(gòu)指令, 諸如被英特爾手冊(cè)所指定的指令,此外,該巨指令104尚包括x87浮點(diǎn)加法 巨指令。該x87浮點(diǎn)加法巨指令104可包括(但不限至于)下述常用的指令 FADD、 FADDP、 FIADD、 FSUB、 FSUBP、 FISUB、 FSUBR、 FSUBRP、 FC0M、 FC0MP、 FC0MPP、 FCOMI、 F0MIP、 FUCOMI、 FUCOMIP、 FIC0M、 FIC0MP、 FILD、 FIST、 FISTP、 FISTTP、 FST、 FSTP、 FISUBR、 FUC0M、 FUCOMP、及FUCOMPP。該樣t指 令存儲(chǔ)器112包括微指令序列,而該翻譯器108呼叫該微指令存儲(chǔ)器112以 響應(yīng)那些復(fù)雜、(且/或)偶爾被執(zhí)行的x86巨指令,此與直接將該x86巨指令 翻譯成微指令有別。在一實(shí)施例中,該微處理器100的微架構(gòu)為RISC式微架 構(gòu),其用以執(zhí)行微指令106,其一般來(lái)說(shuō)較該x86巨指令簡(jiǎn)單,且遵守該RISC 式的載入/儲(chǔ)存典范。
該微處理器100管線也包括耦接至該翻譯器108的寄存器配置表 (Register Allocation Table, RAT) RAT 116、耦接至該RAT 116的指令調(diào)度 器120(或指令調(diào)度器120)、耦接至該指令調(diào)度器120的執(zhí)行單元124、以及 耦接至該執(zhí)行單元124的退回單元126。該執(zhí)行單元124包括媒介A單元(圖 2) 204,其又包括x87浮點(diǎn)運(yùn)算單元(Floating Point Unit, FPU) 388 (圖3), 將詳細(xì)描述于后。該微處理器100也包4舌的一記錄緩沖器(Recorder Buffer, ROB) 128,其又耦接至該RAT 116、指令調(diào)度器120、執(zhí)行單元124和退回單 元126。
在一實(shí)施例中,該微處理器100為失序執(zhí)行(out-of-order execution) 微處理器。此即為該執(zhí)行單元124不依照程序來(lái)執(zhí)行該纟鼓指令106。然而, 該ROB 128用以保證該微指令106以及其對(duì)應(yīng)的巨指令104將按程序退回。 更有甚者,該翻譯器108以程序翻譯該巨指令104并以程序產(chǎn)生微指令106。 此夕卜RAT 116以程序配置入口 (entry)。該ROB 128為循環(huán)先進(jìn)先出(First In First Out, FIFO)緩沖器,其可以程序從RAT 116接收樣i指令106,且可被 退回單元126以程序退回微指令106及其關(guān)聯(lián)的巨指令104。
RAT 116從翻譯器108接收微指令106,并檢測(cè)該等微指令106間的相依。 特別的是,RAT 116判斷微處理指令原始操作數(shù)間(如其它微指令的結(jié)果中x87 浮點(diǎn)加法指令的加數(shù))的相依情況。當(dāng)RAT 116將其配置于ROB 128中的下一 有效入口的指令予以接收,并將微指令106及其對(duì)應(yīng)相依信息儲(chǔ)存于該配置 的ROB 128入口。
指令調(diào)度器120從RAT116接收微指令106及相依信息。指令調(diào)度器120 將翻譯器108中尚未被調(diào)度的微指令106調(diào)度至適當(dāng)?shù)膱?zhí)行單元124。特別 的是,指令調(diào)度器120將微指令(例如由x87浮點(diǎn)加法指令翻譯來(lái)的微指令) 調(diào)度至媒介A單元204 (圖2),因?yàn)槠浒ㄔ揦87 FPU 388 (圖3)。每個(gè)執(zhí)行 單元124包括保留站(圖未示),其作為微指令106對(duì)其各自執(zhí)行單元124的 緩沖。當(dāng)指令調(diào)度器120判斷ROB 128具有微指令106,且其尚未被調(diào)度而 欲被執(zhí)行單元124以空的保留站執(zhí)行時(shí),則指令調(diào)度器120將微指令106調(diào) 度至適當(dāng)?shù)膱?zhí)行單元124,并更新ROB 128,以指出已被調(diào)度的微指令106。 一旦微指令106所依附的所有的原始操作數(shù)皆可取得時(shí),發(fā)送邏輯單元?jiǎng)t從 該保留站發(fā)出微指令106至執(zhí)行該指令的執(zhí)行單元的部分。
在一實(shí)施例中,ROB 128包括48個(gè)入口。各ROB 128入口具有索引或巻 標(biāo)。該巻標(biāo)作為該ROB入口中的微指令106的識(shí)別。當(dāng)執(zhí)行單元124執(zhí)行完 微指令106時(shí),執(zhí)行單元124將已執(zhí)行完成的微指令106的巻標(biāo)提供給ROB 128 及退回單元126。 ROB 128于是在已被執(zhí)行的微指令106的對(duì)應(yīng)入口處更新旗 標(biāo),以標(biāo)示出該微指令106已可被退回。如上所述,退回單元126從ROB 128 中以程序退回那些已完成的微指令106及其對(duì)應(yīng)的巨指令104。
有利的是,當(dāng)任何一組預(yù)設(shè)條件(關(guān)于對(duì)應(yīng)圖3該浮點(diǎn)控制字(Floating Point Control Word, FPCW) FPCW 304的PC場(chǎng)308指定精度的舍入運(yùn)算判斷) 發(fā)生于浮點(diǎn)加法指令的加數(shù)上時(shí)(如圖5所示),X87 FPU 388具有請(qǐng)求指令 調(diào)度器120及ROB 128重新執(zhí)行x87浮點(diǎn)運(yùn)算微指令106的功能。
參照?qǐng)D2,此為依照本發(fā)明的圖1的執(zhí)行單元124方塊示意圖。在一實(shí) 施例中,共有七個(gè)不同的執(zhí)行單元124,分別標(biāo)示為204 - 228,其被設(shè)計(jì)以 用來(lái)彼此互相配合或各自獨(dú)立執(zhí)行。第一執(zhí)行單元標(biāo)示為媒介A單元204, 執(zhí)行浮點(diǎn)微指令,且具有圖3的X87 FPU 388。第二執(zhí)行單元標(biāo)示為媒介B 單元208,執(zhí)行多重操作。第三個(gè)執(zhí)行單元標(biāo)示為SINT(簡(jiǎn)單整數(shù),Simple
Integer) 212,執(zhí)行整數(shù)ALU操作。第四執(zhí)行單元標(biāo)示為M0V/BR (移動(dòng)/分支, Move/Branch) 216,執(zhí)行移動(dòng)或分支微指令,以及該SINT也能執(zhí)行簡(jiǎn)單ALU 操作。第五執(zhí)行單元標(biāo)示為L(zhǎng)D(加載數(shù)據(jù),Load Data) 220,其從存儲(chǔ)器中將 諸如欲進(jìn)行浮點(diǎn)加法運(yùn)算的加數(shù)等數(shù)據(jù)加載微處理器100的移位寄存器中。 第六個(gè)執(zhí)行單元標(biāo)示為STA(儲(chǔ)存位置,Store Address) 224,用以計(jì)算儲(chǔ)存 操作的終端位置,并為該儲(chǔ)存操作配置儲(chǔ)存緩沖器。第七個(gè)執(zhí)行單元標(biāo)示為 STD(儲(chǔ)存數(shù)據(jù),Store Data) 208,用以從該等移位寄存器中將計(jì)算結(jié)果儲(chǔ)存 至該儲(chǔ)存位置執(zhí)行單元224所指定存儲(chǔ)器的地址上。
請(qǐng)參照?qǐng)D3,此為依照本發(fā)明的圖1的^f敖處理器100的X87 FPU 388的 方塊示意圖。在一實(shí)施例中,該X87 FPU 388包含于圖2的i某介A單元204 當(dāng)中。ROB 128和RAT 116耦接至圖1中的指令調(diào)度器120,而指令調(diào)度器 120又耦接至X87 FPU 388。指令調(diào)度器120起先將接收自ROB 128的微指令 調(diào)度,如將翻譯自x87浮點(diǎn)巨指令中的x87浮點(diǎn)加法微指令調(diào)度至X87 FPU 388。當(dāng)該等指令加數(shù)滿(mǎn)足至少一組預(yù)定情況(關(guān)于對(duì)應(yīng)至該FPCW 304的PC 場(chǎng)308的指定精度的舍入運(yùn)算判斷)(與圖5相關(guān),將于后討論),指令調(diào)度器 120也可重新將接收自ROB 128的x87浮點(diǎn)加法^f效指令調(diào)度至X87 FPU 388。 指令調(diào)度器120控制兩個(gè)可提供操作數(shù)給X87 FPU 388的多工器392、多工 器394。多工器392接收加數(shù)A 316及已儲(chǔ)存的總和346 (從X87 FPU 388中 接收,將于后討論)。多工器394接收加數(shù)B 320及儲(chǔ)存總和346。當(dāng)指令調(diào) 度器120對(duì)X87 FPU 388執(zhí)行一指令其首次調(diào)度時(shí),指令調(diào)度器120控制多 工器392及多工器394選取加數(shù)316或320,而當(dāng)指令調(diào)度器120對(duì)X87FPU 388重新調(diào)度x87浮點(diǎn)加法微指令時(shí),則指令調(diào)度器120控制多工器392及 多工器394選擇儲(chǔ)存總和346 (關(guān)于圖6的區(qū)塊628,將于該處詳述)。X87 FPU 388包括用以執(zhí)行x87的所有浮點(diǎn)指令的電路系統(tǒng);然而,圖3只表示用以 執(zhí)行浮點(diǎn)加法指令的部分電路。X87 FPU 388包括雙輸入舍入計(jì)算加法器324A 及雙輸入非舍入計(jì)算加法器324B、雙輸入多工器396、雙輸入多工器398、 控制邏輯單元328,及浮點(diǎn)控制字FPCW 304,而該FPCW 304又包括x87的PC 場(chǎng)308及舍入控制(Rounding Control, RC)場(chǎng)312。程序設(shè)計(jì)者可以設(shè)計(jì)各 種數(shù)值的程序于該RC場(chǎng)312中來(lái)控制X87 FPU 388所進(jìn)行的舍入模式,以得 到所需的舍入運(yùn)算結(jié)果。
多工器398于其輸入端上接收加法器324A及加法器324B的輸出。假使
沒(méi)有任何一組預(yù)設(shè)條件存在,(關(guān)于圖6的區(qū)塊612,容后再述),則控制邏 輯單元328產(chǎn)生控制信號(hào)以使多工器398依照?qǐng)D6區(qū)塊614所做出的舍入運(yùn) 算判斷,選取該等輸入端之一作為結(jié)果336輸出,如圖6區(qū)塊616所示。假 使至少一組預(yù)設(shè)條件存在于該浮點(diǎn)加法指令的首次調(diào)度上,如區(qū)塊612所示, 則控制邏輯單元328產(chǎn)生控制信號(hào)以使多工器398選擇加法器324B的非舍 入總和,并儲(chǔ)存總和346于移位寄存器中,如圖6區(qū)塊622所述。X87 FPU 388 接收該儲(chǔ)存總和346以響應(yīng)指令調(diào)度器120對(duì)其浮點(diǎn)加法指令的重新調(diào)度, 如圖6區(qū)塊628所示。為了響應(yīng)浮點(diǎn)加法指令的重新調(diào)度,控制邏輯單元328 產(chǎn)生控制信號(hào),以使多工器398依照?qǐng)D6區(qū)塊632所示的舍入運(yùn)算判斷而選 擇其中一輸入作該結(jié)果336而輸出,如圖6區(qū)塊634所示。值得注意的是, 名詞「總和」除非另有說(shuō)明,在此皆指實(shí)質(zhì)加法或減法運(yùn)算的結(jié)果。實(shí)質(zhì)加 法運(yùn)算包括該等加數(shù)316、 320的符號(hào)位同號(hào),且該浮點(diǎn)加法指令指定對(duì)該 等加數(shù)實(shí)施加法運(yùn)算;或是該等加數(shù)316、 320的符號(hào)位互為異號(hào),且該浮點(diǎn) 加法指令對(duì)該等加數(shù)實(shí)施減法運(yùn)算。而實(shí)質(zhì)減法運(yùn)算為該等加數(shù)316、 320
的符號(hào)位互為異號(hào),且該浮點(diǎn)加法指令指定對(duì)該等加數(shù)實(shí)施加法運(yùn)算;或是 該等加數(shù)316、 320的符號(hào)位同號(hào),且該浮點(diǎn)加法指令對(duì)該等加數(shù)實(shí)施減法運(yùn)算。
加法器324A、 324B分別從其輸入端上接收多工器392及多工器396的輸 出。多工器394于其一輸入端接收加數(shù)B 320及其另一輸入端接收已儲(chǔ)存的 總和346。多工器396于其一輸入端接收多工器394的輸出(例如加數(shù)B 320 或已儲(chǔ)存的總和346),并于其另一輸入端接收64位的零值。控制邏輯單元 328產(chǎn)生控制信號(hào)以使多工器396選擇其輸入端之一以輸出至加法器3MA、 324B,如下所述。此外,加法器324A接收二進(jìn)制值為1的進(jìn)位位,而加法 器324B接收二進(jìn)制值為Q的進(jìn)位位。因此,加法器324A在其浮點(diǎn)加法指令 的首次調(diào)度下,產(chǎn)生該加數(shù)A 316與加數(shù)B 320的舍入總和,或是在浮點(diǎn)加 法指令的重新調(diào)度下,產(chǎn)生舍入儲(chǔ)存總和346,如下所述。相似地,加法器324B 在其浮點(diǎn)加法指令的首次調(diào)度下,產(chǎn)生加數(shù)A 316與加數(shù)B 320的非舍入總 和,或在浮點(diǎn)加法指令的重新調(diào)度下,產(chǎn)生非舍入儲(chǔ)存總和346,如下所述。 在一實(shí)施例中,加法器324A與加法器324B為64位加法器,其接收64位的 加凄t并產(chǎn)生64位之和。
加數(shù)316、 320可能來(lái)自多個(gè)來(lái)源。 一來(lái)源是該IA-32架構(gòu)浮點(diǎn)寄存器組 的寄存器、 一來(lái)源是將圖1的ROB 128中將儲(chǔ)存的指令結(jié)果予以?xún)?chǔ)存的更名 寄存器、 一來(lái)源是微處理器100的臨時(shí)寄存器、而另一來(lái)源是由各種執(zhí)行單 元124所執(zhí)行并直接傳送至X87 FPU 388的指令結(jié)果。
如上所述,PC場(chǎng)308的值決定X87FPU 388的精度為64、 53或是24位; 然而X87 FPU 388可能使其于內(nèi)部計(jì)算當(dāng)中即采用較PC場(chǎng)308指定精度更高 的精度。 一程序可寫(xiě)入PC場(chǎng)308以改變X87 FPU 388的浮點(diǎn)運(yùn)算精度。舉例 而言,若寫(xiě)至PC場(chǎng)308中的程序指定為雙精度,則X87 FPU 388產(chǎn)生精度為 53位的結(jié)果,不論是否有加數(shù)其精度超出53位。該FPU將位數(shù)較低且未使 用的位(換句話(huà)說(shuō),有效位數(shù)少于PC場(chǎng)308指定精度的位)補(bǔ)零,并得到配合 條件而增量至53位的結(jié)果。
控制邏輯單元328接收的輸入為PC場(chǎng)308的值、多工器392與多工器 396的輸出、以及加法器324A及加法器324B的輸出。控制邏輯單元328利 用該等輸入來(lái)判斷是否至少一組預(yù)設(shè)條件(關(guān)于對(duì)應(yīng)至該FPCW 304的PC場(chǎng) 308的指定精度的舍入運(yùn)算判斷)發(fā)生在該第一加數(shù)316和第二加數(shù)320上。 此外,控制邏輯單元328利用該等輸入以產(chǎn)生累計(jì)固著位338,如圖6區(qū)塊 622所示。控制邏輯單元328也利用該等輸入及已儲(chǔ)存的累計(jì)固著位348進(jìn) 行舍入運(yùn)算判斷,如圖6的區(qū)塊632所示??刂七壿媶卧?28包括邏輯電路 的操作(圖未示),其決定浮點(diǎn)加法指令的加數(shù)316、 320的精度,如圖6區(qū)塊 608所示。
假如其中一預(yù)設(shè)條件存在,則控制邏輯單元328也產(chǎn)生信號(hào)340至指令 調(diào)度器120及ROB 128以請(qǐng)求重新進(jìn)行浮點(diǎn)加法運(yùn)算,如圖6區(qū)塊624所示。 控制邏輯單元328也從指令調(diào)度器120接收表示指令調(diào)度器120正重新調(diào)度 浮點(diǎn)加法指令的信號(hào)344,如圖6區(qū)塊628所示。
X87 FPU 388也包括移位器(圖未示),其將較小加數(shù)的尾數(shù)按照兩加數(shù) 的指數(shù)的差值移動(dòng)相同數(shù)量的位,以校準(zhǔn)較小加數(shù)的尾數(shù)以配合較大加數(shù)的 尾數(shù),之后才將該等加數(shù)提供至加法器324A及加法器324B。較大加數(shù)為兩 加數(shù)316、 320中具有最大指數(shù)者。假設(shè)兩加數(shù)的指數(shù)相同,X87 FPU 388則 隨機(jī)選擇其中一加數(shù)作為該較大加數(shù),如上述隨機(jī)選擇的作法并不正確,則 其后尚須修改該結(jié)果336的符號(hào)。X87 FPU 388也包括移位器(圖未示),其 接收多工器398的輸出,并將所選擇的輸入移位以歸一化該結(jié)果336。 一旦 X87 FPU 388完成浮點(diǎn)加法指令,則X87 FPU 388將該結(jié)果336提供給退回
單元126,退回單元126隨后將該結(jié)果336退回至浮點(diǎn)加法指令所指定的該 IA-32架構(gòu)浮點(diǎn)寄存器。
在一實(shí)施例中,X87 FPU 388包括兩相異路徑,分別是r遠(yuǎn)程路徑」及 r近程路徑」,或稱(chēng)「舍入路徑」及「歸一化路徑」,其為本領(lǐng)域技術(shù)人員所 熟知。該兩路徑, 一般來(lái)說(shuō),與論文「 ON THE DESIGN OF FAST IEEE FLOATING-POINT ADDERS」(在此并入全文中對(duì)各種議題的參考文獻(xiàn),IEEE計(jì) 算機(jī)協(xié)會(huì)的第15屆IEEE計(jì)算機(jī)運(yùn)算討論會(huì)公報(bào)(ARITH , 01), Seidel等人 所著)所描述的安排近似。近程路近計(jì)算實(shí)質(zhì)減法(加法指令中,兩操作數(shù)具 有相異符號(hào),或是減法指令中,兩操作數(shù)具有相同符號(hào))時(shí),其操作數(shù)間的指 數(shù)差小于或等于l,而該舍入路徑則計(jì)算其它情況。舍入路徑表示于圖3,但 其未標(biāo)示近程路徑。各路徑同時(shí)執(zhí)行浮點(diǎn)加法運(yùn)算,而控制邏輯單元328選 擇其中一路徑的結(jié)果作為結(jié)果336。
參照?qǐng)D4a至圖4d,其兩加數(shù)在x87浮點(diǎn)加法指令中對(duì)應(yīng)該P(yáng)C場(chǎng)308指 定精度的四種可能組合關(guān)系的區(qū)塊示意圖。四個(gè)區(qū)塊分別標(biāo)示為圖4a、圖4b、 圖4c及圖4d。這些組合乃關(guān)于判斷是否有一組預(yù)設(shè)條件(關(guān)于該等加數(shù)對(duì)其 中間和的舍入運(yùn)算判斷的貢獻(xiàn)度,亦關(guān)于PC場(chǎng)308所指定的精度)發(fā)生于該 等加數(shù)316、 320之上,請(qǐng)參考圖5的描述。在此處,加數(shù)316或320的精度 指其尾數(shù)中介于(包含)第一個(gè)二進(jìn)制值為1的位及最后一個(gè)二進(jìn)制值為1的 位間的位數(shù)目。在一實(shí)施例中,圖3的控制邏輯單元328包括精度判斷邏輯 單元,其可于該等加數(shù)316、 320被接收時(shí)判斷其精度??刂七壿媶卧?28利 用從該精度判斷邏輯單元取得的精度數(shù)據(jù),并配合該最小加數(shù)于校準(zhǔn)運(yùn)算時(shí) 的位移量,來(lái)判斷該等加數(shù)316、 320是否必須對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。 值得注意的是,此處勿將該精度判斷與判斷加數(shù)大小混淆(較大加數(shù)如第4圖 的402,而較小加數(shù)為第4圖的404),而判斷加數(shù)大小乃通過(guò)比較該等加數(shù) 316、 320的指數(shù),其為X87 FPU 388所執(zhí)行,如圖6區(qū)塊604所述。
圖4a描述的情況為較大加數(shù)402的尾數(shù)的精度及較小加數(shù)404的尾數(shù) 的精度都與圖3FPCW 304的PC場(chǎng)308的指定精度相等或較小。在此情況下, 較大加數(shù)402不會(huì)對(duì)舍入運(yùn)算判斷貢獻(xiàn)任何固著位。然而,較小加數(shù)404的 尾數(shù)在校準(zhǔn)后,會(huì)依照其校準(zhǔn)時(shí)向右位移量,對(duì)舍入運(yùn)算判斷貢獻(xiàn)出固著位。
圖4b描述的情況為較小加數(shù)404的尾數(shù)的精度與PC場(chǎng)308的指定精 度相等或較小,但較大加數(shù)402的尾數(shù)的精度則較PC場(chǎng)308的指定精度為大。
16
在此情況下,較大加數(shù)402的尾數(shù)會(huì)對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。然而,較 小加數(shù)404的尾數(shù)于校準(zhǔn)之后,會(huì)依照其校準(zhǔn)時(shí)向右位移量,對(duì)舍入運(yùn)算判 斷貢獻(xiàn)出固著位。因此,在此情況下,該等加數(shù)402/404皆有可能影響舍入 運(yùn)算判斷。更特別的是,該等加數(shù)402/404 (316、 320)皆有可能需要于相加 后才進(jìn)行舍入運(yùn)算判斷。
圖4c描述的情況為較大加數(shù)402的尾數(shù)的精度與PC場(chǎng)308的指定精 度相等或較小,而較小加數(shù)402的尾數(shù)的精度則較PC場(chǎng)308的指定精度為大。 在此情況下,較大加數(shù)402的尾數(shù)不會(huì)對(duì)舍入運(yùn)算判斷貢獻(xiàn)任何固著位。然 而,較小加數(shù)404在校準(zhǔn)后可對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。
圖4d描述的情況為較大加數(shù)402的尾數(shù)的精度及較小加數(shù)404的尾數(shù) 的精度都較圖3FPCW 304的PC場(chǎng)308的指定精度為大。在此情況中,較大加 數(shù)的尾數(shù)402及較小加數(shù)的尾數(shù)404皆會(huì)對(duì)舍入運(yùn)算判斷貢獻(xiàn)固著位。
參照?qǐng)D5,此為依照本發(fā)明一實(shí)施例發(fā)生于浮點(diǎn)加法指令的加數(shù)上的一 組預(yù)設(shè)條件(關(guān)于對(duì)應(yīng)至圖3該FPCW 304的PC場(chǎng)308的指定精度的舍入運(yùn)算 判斷)說(shuō)明圖。圖3的X87 FPU 388當(dāng)檢測(cè)任何一組預(yù)設(shè)條件(關(guān)于對(duì)應(yīng)至圖 3該P(yáng)C場(chǎng)308指定精度的貢獻(xiàn))發(fā)生于加數(shù)316、 320的尾數(shù)位時(shí),會(huì)請(qǐng)求重 新執(zhí)行浮點(diǎn)加法指令。圖5的實(shí)施例包括兩預(yù)設(shè)條件。
第一預(yù)設(shè)條件是(1)該指令指示X87 FPU 388去執(zhí)行實(shí)質(zhì)加法運(yùn)算,或 該等加數(shù)316、 320的指數(shù)差值大于1;以及(2)較大加數(shù)的尾數(shù)的精度較PC 場(chǎng)308的指定精度大。當(dāng)該第一預(yù)設(shè)條件被滿(mǎn)足,該等加數(shù)316、 320的尾數(shù) 皆可能對(duì)實(shí)質(zhì)加法或?qū)嵸|(zhì)減法運(yùn)算貢獻(xiàn)出固著位,該固著位的加法或減法需 要先被執(zhí)行,才能進(jìn)行舍入運(yùn)算判斷,依照該微處理器100制程技術(shù)及X87 FPU 388的設(shè)計(jì)的一實(shí)施例,這將耗費(fèi)額外的頻率周期以執(zhí)行浮點(diǎn)加法指令。結(jié) 果,當(dāng)控制邏輯單元328檢測(cè)該第一預(yù)設(shè)條件在區(qū)塊612上被滿(mǎn)足,則控制 邏輯單元328及其它東西,請(qǐng)求將該指令重新執(zhí)行,如圖6區(qū)塊所述。
第二預(yù)設(shè)條件是(1)該指令指示X87FPU 388去執(zhí)行實(shí)質(zhì)減法運(yùn)算;(2) 該等加數(shù)316、 320的指數(shù)差值小于或等于1;且(3)至少一加數(shù)316、 320的 尾數(shù)較PC場(chǎng)308指定精度為大。當(dāng)該第二預(yù)設(shè)條件被滿(mǎn)足,且該等指數(shù)316、 320相等,則實(shí)際的減法運(yùn)算有可能使該等加數(shù)316、 320的尾數(shù)的多個(gè)較高 位數(shù)被取消掉(有時(shí)稱(chēng)其做「大量取消」),造成結(jié)果中間差值出現(xiàn)前置的零 值,其可能需要左移數(shù)個(gè)位以將該結(jié)果差值歸一化。因?yàn)橄蜃笪灰频臄?shù)量在
該減法運(yùn)算執(zhí)行前無(wú)法得知,控制邏輯單元328無(wú)法知道該結(jié)果差值中何位 會(huì)是貢獻(xiàn)給舍入運(yùn)算判斷的固著位,此妨礙了控制邏輯單元328進(jìn)行實(shí)質(zhì)減 法運(yùn)算的同時(shí)進(jìn)行舍入運(yùn)算判斷。結(jié)果,當(dāng)控制邏輯單元328檢測(cè)該第二預(yù) 設(shè)條件于區(qū)塊612被滿(mǎn)足,控制邏輯單元328及其它東西將會(huì)請(qǐng)求重新執(zhí)行 該指令,如圖6區(qū)塊624所示。
當(dāng)該第二預(yù)設(shè)條件被滿(mǎn)足,且該被減數(shù)與減數(shù)的指數(shù)差值的絕對(duì)值等于 1時(shí),較小操作數(shù)會(huì)被向右移一個(gè)位。無(wú)論如何,該被減數(shù)會(huì)被選為具有較 大指數(shù)的操作數(shù)。不論一開(kāi)始的次序,較小操作數(shù)都會(huì)是被移位的操作數(shù)。 假使被移位的操作數(shù)的最小位數(shù)的二進(jìn)制值為l,則有可能產(chǎn)生65位的差值, 而其最小位數(shù)的二進(jìn)制值為1,其可能為僅有的固著位且需要被中間差值舍 入。然而,控制邏輯單元328在該減法運(yùn)算被執(zhí)行前無(wú)法進(jìn)行舍入運(yùn)算判斷, 此將妨礙控制邏輯單元328進(jìn)行實(shí)質(zhì)減法運(yùn)算的同時(shí)進(jìn)行舍入運(yùn)算判斷。結(jié) 果,當(dāng)控制邏輯單元328檢測(cè)該第二預(yù)設(shè)條件在區(qū)塊612被滿(mǎn)足,控制邏輯 單元328及其它東西,會(huì)請(qǐng)求重新執(zhí)行該命令,如圖6區(qū)塊624所示。在此 情況下,控制邏輯單元328選擇由歸一化路徑所產(chǎn)生的結(jié)果。然而,該較大 操作數(shù)的精度可能與PC場(chǎng)308的指定精度相等或較小,在一實(shí)施例中,此情 況下該舍入路徑能夠于理想時(shí)間內(nèi)產(chǎn)生正確結(jié)果336(舉例而言,在兩個(gè)頻率 周期之內(nèi))。因此,該舍入路徑優(yōu)先于該歸一化路徑,使得控制邏輯單元328 由該舍入路徑提供結(jié)果336,而非通過(guò)發(fā)出該信號(hào)340以請(qǐng)求重新執(zhí)行。
在一實(shí)施例中,預(yù)設(shè)條件又包括圖5所述的兩種情況。然而,在其它實(shí) 施例中,預(yù)設(shè)條件可能有所不同。預(yù)設(shè)條件依照設(shè)計(jì)目標(biāo),包括執(zhí)行目標(biāo)、 以及微處理器100和X87 FPU 388的設(shè)計(jì)特性等而不同,例如,使用特殊半 導(dǎo)體制程科技、門(mén)延遲的等級(jí)、信號(hào)傳播時(shí)間等等。舉例而言,可被觀察到 的是,為了因應(yīng)更高的復(fù)雜性,其可能代價(jià)即是采用較圖5所述的實(shí)施例更 為細(xì)致的預(yù)設(shè)條件,而其整體效能亦可能增加(于需要重行執(zhí)行的程序中減少 浮點(diǎn)加法指令)。本發(fā)明者亦觀察到微處理器100的一實(shí)施例使用圖5的預(yù) 設(shè)條件,其在一些商用軟件應(yīng)用程序及基準(zhǔn)程序中會(huì)顯著地改善效能,而原 因顯然是對(duì)該軟件應(yīng)用程序及基準(zhǔn)程序整體運(yùn)作時(shí)間予以觀之,浮點(diǎn)加法 指令加數(shù)及PC場(chǎng)308值無(wú)法滿(mǎn)足任何一組預(yù)設(shè)條件的個(gè)案比例、與可滿(mǎn)足至 少一組預(yù)設(shè)條件的時(shí)間比例相較而言大的多,預(yù)設(shè)條件使前者有較快的執(zhí)行 時(shí)間(一實(shí)施例中可快2頻率周期),可掩后者執(zhí)行時(shí)間較慢(重新執(zhí)行浮點(diǎn)加
法運(yùn)算之故)之弊。
請(qǐng)參照?qǐng)D6,此為圖1微處理器100依照本發(fā)明執(zhí)行x87浮點(diǎn)加法指令 的操作方法流程圖。圖6中的步驟次序及并行關(guān)系可能與流程圖不同。舉例 而言,在一實(shí)施例中,區(qū)塊604及608的操作大體并行于圖3X87 FPU 388的 路徑之一。此流程從區(qū)塊602開(kāi)始。
在區(qū)塊602中,圖1的指令調(diào)度器120開(kāi)始調(diào)度x87浮點(diǎn)加法指令及其 操作數(shù)至圖3的X87 FPU 388。之后流程進(jìn)入?yún)^(qū)塊604。
在區(qū)塊604中,指令調(diào)度器120控制多工器394選擇加數(shù)B 320、控制 多工器392選擇加數(shù)A 316。此外,圖3的控制邏輯單元328控制多工器396 選擇多工器394的輸出,換句話(huà)說(shuō),選擇加數(shù)B 320??刂七壿媶卧?28計(jì) 算該等加數(shù)316、 320的指數(shù)差值,并從該差值判斷該等加數(shù)何為較大加數(shù)何 為較小加數(shù)。控制邏輯單元328按該差值將該較小加數(shù)的尾數(shù)右移,以校準(zhǔn) 該較小加數(shù)的尾數(shù)以配合較大加數(shù)的尾數(shù)。該較小加數(shù)右移之后,其前頭空 出的位將被補(bǔ)入零值。之后流程進(jìn)入?yún)^(qū)塊606及區(qū)塊608。
在區(qū)塊606中,加法器324A和加法器324B開(kāi)始將該較大加數(shù)與校準(zhǔn)后 的較小加數(shù)相加以分別產(chǎn)生舍入總和與非舍入總和。之后流程從區(qū)塊606進(jìn) 入?yún)^(qū)塊612。
在區(qū)塊608中,控制邏輯單元328分析該等加數(shù)316、 320對(duì)應(yīng)PC場(chǎng)308 指定精度時(shí)對(duì)舍入運(yùn)算判斷的貢獻(xiàn)度,以判斷是否存在任何一組預(yù)設(shè)條件。 在一實(shí)施例中,該預(yù)設(shè)條件如圖5所示。然而,其它實(shí)施例中的預(yù)設(shè)條件可 能有所不同。在區(qū)塊608中,控制邏輯單元328對(duì)該等加數(shù)316、 320進(jìn)行分 析,于此同時(shí),在區(qū)塊606中,加法器324A與加法器324B分別產(chǎn)生總和。 之后流程^v區(qū)塊608進(jìn)入?yún)^(qū)塊612。
如區(qū)塊612所示,控制邏輯單元328判斷是否任何一組預(yù)設(shè)條件成立。 若是,則流程進(jìn)入?yún)^(qū)塊622;若否,則流程進(jìn)入?yún)^(qū)塊614。
區(qū)塊614中,控制邏輯單元328依照校準(zhǔn)后的較小加數(shù)所貢獻(xiàn)的固著位、 以及PC場(chǎng)308指定的精度值,來(lái)作出舍入運(yùn)算判斷??刂七壿媶卧?28判斷 由加法器324A產(chǎn)生的舍入總和及由加法器324B產(chǎn)生的非舍入總和是否應(yīng) 被多工器398所選出,其乃依照校準(zhǔn)后的較小加數(shù)的固著位值、以及從FPCW 304的RC場(chǎng)312所指定的舍入模式的角度來(lái)進(jìn)行判斷。控制邏輯單元328執(zhí) 行區(qū)塊614的舍入運(yùn)算判斷(判斷于區(qū)塊612),大約于此同時(shí),在區(qū)塊606
中,該加法器324A與加法器324B分別產(chǎn)生的總和。之后流程進(jìn)入至區(qū)塊 616。
區(qū)塊616中,控制邏輯單元328,依照區(qū)塊614中的舍入運(yùn)算判斷,控 制多工器398由加法器324A產(chǎn)生的舍入總和或加法器324B產(chǎn)生的非舍入總 和中選出適當(dāng)者??刂七壿媶卧?28判斷該總和需要舍入,則控制邏輯單元 328控制多工器398選擇加法器324A產(chǎn)生的舍入總和;否則,控制邏輯單元 328控制多工器398選擇加法器324B產(chǎn)生的非舍入總和。之后流程進(jìn)入至區(qū) 塊618。
區(qū)塊618中,當(dāng)X87 FPU 388需要產(chǎn)生浮點(diǎn)加法指令的結(jié)果336時(shí),其 將區(qū)塊616中選出的適當(dāng)舍入運(yùn)算的總和予以歸一化。X87 FPU 388執(zhí)行歸 一化的方式是將其二進(jìn)制數(shù)值為1的最高位向左移到位左邊的位端點(diǎn),此為 本領(lǐng)域技術(shù)人員所熟知。此外,該歸一化的結(jié)果336的有效位較PC場(chǎng)308指 定精定為小,則X87 FPU 388會(huì)對(duì)有效位之后的位補(bǔ)零。退回單元126將該 結(jié)果336退回至浮點(diǎn)加法指令所指定的IA-32架構(gòu)浮點(diǎn)寄存器中。 一實(shí)施例 中,在65奈米CMOS制程技術(shù)的微處理器100以2GHz的內(nèi)頻運(yùn)作時(shí),X87 FPU 388有能力依照區(qū)塊602到區(qū)塊606、以及區(qū)塊612到區(qū)塊618的步驟,在兩 個(gè)頻率周期之內(nèi)執(zhí)行浮點(diǎn)加法指令(換句話(huà)說(shuō),當(dāng)不需要重新執(zhí)行時(shí)),此舉 將十分有利。之后流程結(jié)束于區(qū)塊618。
在區(qū)塊622中,控制邏輯單元328依照校準(zhǔn)后的較小加數(shù)的尾數(shù)的最末 位(其不能直接表現(xiàn)于中間的64位形式上)而產(chǎn)生累計(jì)固著位338。 一實(shí)施例 中,加法器324A和加法器324B為64位加法器,假如任何校準(zhǔn)后的較小加 數(shù)的尾數(shù)中低于第64位位置的位值為1,則控制邏輯單元328產(chǎn)生二進(jìn)制值 為1的累計(jì)固著位338;否則,控制邏輯單元328產(chǎn)生二進(jìn)制值為0的累計(jì) 固著位338??刂七壿媶卧?28產(chǎn)生累計(jì)固著位338于區(qū)塊622中(其判斷于 區(qū)塊612中),大約于此同時(shí),加法器324A及加法器324B于區(qū)塊606中分 別產(chǎn)生出總和。此外,控制邏輯單元328控制多工器398以選擇由加法器324B 所產(chǎn)生的非舍入總和。最后,X87 FPU 388將該累計(jì)固著位338儲(chǔ)存于寄存 器,并存入由加法器324B所產(chǎn)生的非舍入總和。該儲(chǔ)入的寄存器及由加法 器324B產(chǎn)生的非舍入總和中有效位數(shù)小于PC場(chǎng)308指定精度的位中,包括 了已儲(chǔ)存的舍入信息,而該信息隨后將^皮X87 FPU 388用于重新執(zhí)行浮點(diǎn)加 法指令上,以作出舍入運(yùn)算判斷。在一實(shí)施例中,X87FPU 388將加法器324B
產(chǎn)生的非舍入總和儲(chǔ)存于被浮點(diǎn)加法指令分配的更名寄存器上。在一實(shí)施例
中,X87 FPU 388將加法器324B所產(chǎn)生的非舍入總和儲(chǔ)存于微處理器100的 臨時(shí)寄存器中。之后流程進(jìn)入?yún)^(qū)塊624。
在區(qū)塊624中,X87 FPU 388通過(guò)該重新執(zhí)行請(qǐng)求信號(hào)340通知指令調(diào) 度器120及ROB 128該浮點(diǎn)加法指令需要被重新執(zhí)行。在一實(shí)施例中,當(dāng)X87 FPU 388宣告該重新執(zhí)行請(qǐng)求信號(hào)340時(shí),其也提供ROB 128浮點(diǎn)加法指令 的巻標(biāo),在區(qū)塊628,當(dāng)指令調(diào)度器120重新調(diào)度該浮點(diǎn)加法指令時(shí),指令 調(diào)度器120儲(chǔ)存并隨后輸出該標(biāo)簽。流程進(jìn)入?yún)^(qū)塊626。
在區(qū)塊626中,為了回應(yīng)區(qū)塊624中重新執(zhí)行請(qǐng)求信號(hào)340的宣告,ROB 128清除執(zhí)行單元124管線中所有未退回的指令,以避免那些與浮點(diǎn)加法指 令結(jié)果相依的指令接收到不正確的來(lái)源操作數(shù)值,因?yàn)橛蒟87 FPU 388產(chǎn)生 的結(jié)果336尚不正確。換句話(huà)說(shuō),因?yàn)槿孕鑼?duì)浮點(diǎn)加法指令的重新執(zhí)行作判 斷,判斷其結(jié)果336是否需要進(jìn)行舍入運(yùn)算。在執(zhí)行單元124管線被清空后, ROB 128會(huì)一直等,直到該浮點(diǎn)加法指令成為ROB 128中最舊的指令,換句 話(huà)說(shuō),即所有其它較該浮點(diǎn)加法指令更舊的指令都已退出程序。然后,ROB 128 重新執(zhí)行所有未退出的指令,開(kāi)始處理浮點(diǎn)加法指令。特別的是,ROB 128 更新每個(gè)未退出指令的狀態(tài),以指示其仍需被調(diào)度。流程進(jìn)入?yún)^(qū)塊628。
于區(qū)塊628中,指令調(diào)度器120檢驗(yàn)ROB 128,并檢測(cè)得浮點(diǎn)加法指令 需要被調(diào)度。為了響應(yīng),指令調(diào)度器120重新調(diào)度浮點(diǎn)加法指令至X87 FPU 388,并同時(shí)宣告圖3的重新調(diào)度信號(hào)344以通知X87 FPU 388這些為該被重 新執(zhí)行、且先前于區(qū)塊624中被請(qǐng)求重新執(zhí)行的浮點(diǎn)加法指令。在一實(shí)施例 中,指令調(diào)度器120知道其需要宣告重新調(diào)度信號(hào)344,因?yàn)椋?dāng)其從ROB128
標(biāo)簽做比較,并檢測(cè)得知該標(biāo)簽相符。流程進(jìn)入?yún)^(qū)塊632。
在區(qū)塊632中,控制邏輯單元328依照儲(chǔ)存的舍入信息(例如,儲(chǔ)存的累 計(jì)固著位348,及儲(chǔ)存總和346的固著位,換句話(huà)說(shuō),儲(chǔ)存總和346有效位 數(shù)中較PC場(chǎng)308指定精度小的位)、PC場(chǎng)308指定的精度、以及RC場(chǎng) 指定的舍入模式來(lái)進(jìn)行舍入運(yùn)算判斷??刂七壿媶卧?28依照儲(chǔ)存的舍入信 息的值、以FPCW 304的RC場(chǎng)312中指定的舍入模式,來(lái)判斷加法器324A 產(chǎn)生的舍入總和與加法器324B產(chǎn)生的非舍入總和是否應(yīng)被多工器398所選 取。在一實(shí)施例中,X87 FPU 388響應(yīng)從指令調(diào)度器120而來(lái)的該信號(hào)340,
修正浮點(diǎn)加法微指令成不同的微指令形式,而其指示X87 FPU 388去轉(zhuǎn)換該 儲(chǔ)存總和346成PC場(chǎng)308的指定精度,并指示其依照該儲(chǔ)存的舍入信息及 RC場(chǎng)312進(jìn)行舍入運(yùn)算。流程進(jìn)入?yún)^(qū)塊634。
在區(qū)塊634中控制邏輯單元328控制多工器398依照區(qū)塊632做出的舍 入運(yùn)算決定,來(lái)選取加法器324A產(chǎn)生的適當(dāng)舍入總和或加法器324B產(chǎn)生的 非舍入總和。此外,X87 FPU 388將該舍入運(yùn)算后的總和(換句話(huà)說(shuō),被選取 的總和)予以歸一化,以產(chǎn)生浮點(diǎn)加法指令的結(jié)果336。此外,X87 FPU 388 將該歸一化的結(jié)果336中有效位數(shù)較PC場(chǎng)308指定精度小的位補(bǔ)零。退回單 元126退回該結(jié)果336至浮點(diǎn)加法指令所指定的該IA-32架構(gòu)浮點(diǎn)寄存器。 流程結(jié)束于區(qū)塊634。
雖然本發(fā)明及其對(duì)象、特征及優(yōu)點(diǎn)已詳述于上,其它實(shí)施例仍包含于本 發(fā)明中。舉例而言,雖然實(shí)施例中以x87 FPU為背景,其它實(shí)施例中采用其 它浮點(diǎn)架構(gòu)者也可適用,而其中,在上述其它實(shí)施例中的浮點(diǎn)架構(gòu)所創(chuàng)造的 條件下,F(xiàn)PU無(wú)法在執(zhí)行浮點(diǎn)加法指令時(shí)同步進(jìn)行舍入運(yùn)算判斷,妨礙了 FPU 在理想的頻率周期內(nèi)執(zhí)行指令,且使用此處所述選^H"生重新執(zhí)行指令的技巧。 此外,雖然實(shí)施例以正的邏輯來(lái)描述,在本發(fā)明的其它實(shí)施例中亦可實(shí)施負(fù) 的邏輯。
雖然本發(fā)明以前述的較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明。 本發(fā)明所屬技術(shù)領(lǐng)域中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi), 當(dāng)可做些許的更動(dòng)與潤(rùn)飾。舉例而言,本發(fā)明也包括實(shí)施于各種硬件之上, 如實(shí)施于中央處理器(Central Processing Unit, CPU)、微處理器、孩i控制 器、數(shù)字信號(hào)處理器(Digital Signal Processor, DSP)、處理器核心、系統(tǒng) 芯片(System On Chip, S0C)、以及任何其它裝置等。本發(fā)明亦可實(shí)施于軟件 中,如配置于計(jì)算機(jī)可用(可讀取)媒體中的計(jì)算機(jī)可讀碼、程序碼、以各種 形式配置的指令(又如原始碼、目標(biāo)碼或機(jī)器語(yǔ)言)。這些軟件可運(yùn)作本發(fā)明 的裝置及方法的功能、建構(gòu)、模型化、仿真、描述、及(或)測(cè)試。舉例而言, 通過(guò)使用常用的程序語(yǔ)言如C、 C++、硬件描述語(yǔ)言(Hardware Description Languages, HDL)如Veri log HDL、 VHDL及其它程序,本發(fā)明可以軟件方式實(shí) 施。這些軟件可配置于任何已知的計(jì)算機(jī)可讀取儲(chǔ)存媒體如半導(dǎo)體、碟碟及 光盤(pán)(如CD-ROM、 DVD-ROM等)中。值得注意的是,本發(fā)明的裝置及方法包含 于半導(dǎo)體智慧財(cái)產(chǎn)權(quán)核心,如微處理器核心(以HDL實(shí)施),且被轉(zhuǎn)換成集成
22
電路形式的硬件產(chǎn)品。并且,本發(fā)明的裝置及方法也可為硬件及軟件的組合。 因此,本發(fā)明不限于此處所述的范例,其保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍 所界定者為準(zhǔn)。
最后,本發(fā)明所屬技術(shù)領(lǐng)域中具有通常知識(shí)者,在不脫離本發(fā)明所附權(quán) 利要求范圍的精神下,可以本發(fā)明所揭露的概念及實(shí)施例為基礎(chǔ),輕易地設(shè) 計(jì)及修改其它用以達(dá)成與本發(fā)明目標(biāo)相同的架構(gòu)。
權(quán)利要求
1. 一種最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置,包括:x87浮點(diǎn)控制字,包括精度控制場(chǎng),其可編程以指定浮點(diǎn)單元執(zhí)行浮點(diǎn)運(yùn)算的精度;指令調(diào)度器,用以將x87浮點(diǎn)加法指令調(diào)度至該浮點(diǎn)單元,而該浮點(diǎn)加法指令具有第一及第二浮點(diǎn)加數(shù),其中該第一及第二浮點(diǎn)加數(shù)的尾數(shù)的有效位數(shù)的位較該精度控制場(chǎng)的指定精度少;該浮點(diǎn)單元,用以:將該第一及第二加數(shù)相加以產(chǎn)生總和;決定一組預(yù)設(shè)條件是否存于該第一及第二加數(shù)中,其中該等加數(shù)對(duì)總和的舍入運(yùn)算判斷有所貢獻(xiàn),且與該精度控制場(chǎng)的指定精度有關(guān);若該組預(yù)設(shè)條件并不存在:(1)依照該第一和第二加數(shù)中較小者的尾數(shù)的位以及該精度控制場(chǎng)的指定精度來(lái)進(jìn)行舍入運(yùn)算判斷;及(2)依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該浮點(diǎn)加法指令的結(jié)果;以及若該組預(yù)設(shè)條件存在:(1)儲(chǔ)存該總和及由該第一和第二加數(shù)所導(dǎo)出的舍入信息;(2)通知該指令調(diào)度器重新調(diào)度該浮點(diǎn)加法指令至該浮點(diǎn)單元;以及(3)對(duì)該指令調(diào)度器重新調(diào)度該浮點(diǎn)加法指令至該浮點(diǎn)單元之舉作出下列回應(yīng):(a)依照該儲(chǔ)存的舍入信息和該精度控制場(chǎng)的指定精度作出舍入運(yùn)算判斷;以及(b)依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該結(jié)果。
2. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中該組預(yù)設(shè)條件包括實(shí)質(zhì)加法運(yùn)算乃由該浮點(diǎn)單元響應(yīng)該浮點(diǎn)加法指令而執(zhí)行;及 該第一及第二加數(shù)的較大者的精度較該精度控制場(chǎng)的指定精度大。
3. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中該預(yù)設(shè)條件包括該第一和第二加數(shù)的指數(shù)差大于1;及該第 一及第二加數(shù)的較大者的精度較該精度控制場(chǎng)的指定精度大。
4. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中該預(yù)設(shè)條件包括實(shí)質(zhì)減法運(yùn)算乃由該浮點(diǎn)單元響應(yīng)該浮點(diǎn)加法指令而執(zhí)行;該第一及第二加數(shù)的指數(shù)差小于或等于1;及該第 一及第二加數(shù)中至少 一者的精度較該精度控制場(chǎng)的指定精度大。
5. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中當(dāng)該指令調(diào)度器重新發(fā)送至該浮點(diǎn)加法指令至該浮點(diǎn)單元時(shí),該指令調(diào) 度器也提供指令至該浮點(diǎn)單元,其中該指令表示該浮點(diǎn)加法指令已被重新調(diào) 度,以與前先被指令調(diào)度器調(diào)度至該浮點(diǎn)單元之舉作出區(qū)別。
6. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中該儲(chǔ)存的舍入信息包括該總和中有效位數(shù)中較該精度控制場(chǎng)的指定精度少的位;及 累計(jì)固著位,該累計(jì)固著位基于該第一及第二加數(shù)中較小者校準(zhǔn)后的尾 數(shù)中最低有效位,且其不被包括于用以產(chǎn)生總合的第一及第二加數(shù)的相加。
7. 根據(jù)權(quán)利要求1所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置, 其中若該組預(yù)設(shè)條件不存在時(shí),該浮點(diǎn)單元用以依照該第 一及第二加數(shù)中較 小者的尾數(shù)在經(jīng)校準(zhǔn)后的有效位數(shù)中較該精度控制場(chǎng)的指定精度小的位來(lái)進(jìn) 行舍入運(yùn)算判斷。
8. —種最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方法,其中該微處理器 包括浮點(diǎn)單元、指令調(diào)度器及x87浮點(diǎn)控制字,而該浮點(diǎn)控制字具有可編程 以指定該浮點(diǎn)單元浮點(diǎn)運(yùn)算精度的精度控制場(chǎng),該方法包括首次調(diào)度x87的浮點(diǎn)加法指令至該浮點(diǎn)單元,該浮點(diǎn)加法指令具有第一 及第二浮點(diǎn)加數(shù),其中該第一及第二浮點(diǎn)加數(shù)的尾數(shù)的有效位數(shù)的位較精度 控制場(chǎng)的指定精度少;將該第 一及第二加數(shù)相加以產(chǎn)生總和;判斷一組預(yù)設(shè)條件是否存于該第一及第二加數(shù)中,其中該等加數(shù)對(duì)總和 的舍入運(yùn)算判斷有所貢獻(xiàn),且與該精度控制場(chǎng)的指定精度有關(guān); 若該組預(yù)設(shè)條件并不存在(1) 依照該第一和第二加數(shù)中較小者的尾數(shù)的位以及該精度控制場(chǎng)的指定精度來(lái)進(jìn)行舍入運(yùn)算判斷;及(2) 依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該 浮點(diǎn)加法指令的結(jié)果;以及若該組預(yù)設(shè)條件存在(1) 儲(chǔ)存該總和及由該第一和第二加數(shù)所導(dǎo)出的舍入信息;(2) 通知該指令調(diào)度器重新調(diào)度該浮點(diǎn)加法指令至該浮點(diǎn)單元;以及(3) 對(duì)該指令調(diào)度器重新調(diào)度該浮點(diǎn)加法指令至該浮點(diǎn)單元之舉作出 下列回應(yīng)(a) 依照該儲(chǔ)存的舍入信息和該精度控制場(chǎng)的指定精度作出舍入運(yùn) 算判斷;以及(b) 依照該舍入運(yùn)算判斷,對(duì)該總和選擇性地進(jìn)行舍入運(yùn)算,以產(chǎn)生該結(jié)果。
9. 根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方法, 其中該組預(yù)設(shè)條件包括實(shí)質(zhì)加法運(yùn)算乃由該浮點(diǎn)單元響應(yīng)該浮點(diǎn)加法指令而執(zhí)行;及 該第一及第二加數(shù)的較大者的精度較該精度控制場(chǎng)的指定精度大。
10. 根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方 法,其中該組預(yù)設(shè)條件包括該第一和第二加數(shù)的指數(shù)差大于1;及該第二及第二加數(shù)的較大者的精度較該精度控制場(chǎng)的指定精度大。
11. 根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方 法,其中該組預(yù)設(shè)條件包括實(shí)質(zhì)減法運(yùn)算乃由該浮點(diǎn)單元響應(yīng)該浮點(diǎn)加法指令而執(zhí)行;該第一及第二加數(shù)的指數(shù)差小于或等于1;及該第 一及第二加數(shù)中至少 一者的精度較該精度控制場(chǎng)的指定精度大。
12. 根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方 法,其中當(dāng)該指令調(diào)度器重新發(fā)送至該浮點(diǎn)加法指令至該浮點(diǎn)單元時(shí),該指 令調(diào)度器也提供指令至該浮點(diǎn)單元,其中該指令表示該浮點(diǎn)加法指令已被重 新調(diào)度,以與前先被指令調(diào)度器調(diào)度至該浮點(diǎn)單元之舉作出區(qū)別。
13. 根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方 法,其中該儲(chǔ)存的舍入信息包括該總和中有效位數(shù)中較該精度控制場(chǎng)的指定精度少的位;及累計(jì)固著位,該累計(jì)固著位基于該第 一及第二加數(shù)中較小者校準(zhǔn)后的尾 數(shù)中最低有效位,且其不被包括于用以產(chǎn)生總合的第一及第二加數(shù)的相加。
14.根據(jù)權(quán)利要求8所述的最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的方 法,其中若該組預(yù)設(shè)條件不存在時(shí),該浮點(diǎn)單元用以依照該第一及第二加數(shù) 中較小者的尾數(shù)在經(jīng)校準(zhǔn)后的有效位數(shù)中較該精度控制場(chǎng)的指定精度小的位 來(lái)進(jìn)行舍入運(yùn)算判斷。
全文摘要
本發(fā)明提供了一種最佳化微處理器執(zhí)行x87浮點(diǎn)加法指令的裝置及方法,其中該微處理器具有精度控制場(chǎng)、指令調(diào)度器及浮點(diǎn)單元。該浮點(diǎn)單元從該指令調(diào)度器接收浮點(diǎn)加法指令,從其加數(shù)中產(chǎn)生總和。該浮點(diǎn)單元判斷是否有任何條件存在于該等加數(shù)上,該等條件關(guān)于該精度控制場(chǎng)的精度及該等加數(shù)對(duì)舍入運(yùn)算的貢獻(xiàn)。若無(wú)條件存在,該浮點(diǎn)單元依舍入運(yùn)算判斷做舍入運(yùn)算判斷。若任何條件存在,該浮點(diǎn)單元將該總和及由該等加數(shù)所導(dǎo)出的舍入信息予以?xún)?chǔ)存,并通知該指令調(diào)度器重新調(diào)度該指令。于重新調(diào)度指令時(shí),該浮點(diǎn)單元依該儲(chǔ)存的舍入信息及該精度控制場(chǎng)做舍入運(yùn)算判斷,并依舍入運(yùn)算判斷選擇性地舍入運(yùn)算該總和。
文檔編號(hào)G06F7/499GK101377733SQ20081016945
公開(kāi)日2009年3月4日 申請(qǐng)日期2008年10月22日 優(yōu)先權(quán)日2008年4月10日
發(fā)明者湯姆·艾爾摩, 泰瑞·派克斯 申請(qǐng)人:威盛電子股份有限公司