两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

快速檢測(cè)浮點(diǎn)單元中的移位的機(jī)制的制作方法

文檔序號(hào):6348642閱讀:234來源:國知局
專利名稱:快速檢測(cè)浮點(diǎn)單元中的移位的機(jī)制的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及處理器,特別涉及處理器的浮點(diǎn)運(yùn)算。
背景技術(shù)
在計(jì)算系統(tǒng)中,浮點(diǎn)數(shù)是有理數(shù)的數(shù)字表示。一般來說,“浮點(diǎn)”一詞是指與該數(shù)的有效位相比,基數(shù)或小數(shù)點(diǎn)可以被移到任意地方的想法。位置信息可以分開表示。有一些方式來表示浮點(diǎn)數(shù),但最普遍的標(biāo)準(zhǔn)是由電氣和電子工程師學(xué)會(huì)(IEEE) 7M標(biāo)準(zhǔn)定義的。浮點(diǎn)運(yùn)算提供了超越定點(diǎn)運(yùn)算的明顯優(yōu)勢(shì),因?yàn)楦↑c(diǎn)數(shù)可以表示更廣泛范圍的值。然而,浮點(diǎn)運(yùn)算可能計(jì)算慢。因此,在考慮處理器的總體性能時(shí),計(jì)算系統(tǒng)可以執(zhí)行浮點(diǎn)算術(shù)運(yùn)算的速度的措施是第一位關(guān)切的。因此,當(dāng)計(jì)算系統(tǒng)執(zhí)行諸如乘加操作(FMA)之類浮點(diǎn)運(yùn)算時(shí),以盡可能及時(shí)的方式地檢測(cè)“過移位”(overshift)條件可能是重要的。例如,當(dāng)執(zhí)行FMA時(shí),加數(shù)必須被移位以與積有效對(duì)齊。要做到這一點(diǎn),就計(jì)算移位量。作為計(jì)算的一部分,過移位條件的檢測(cè)是在關(guān)鍵路徑上。在許多傳統(tǒng)的系統(tǒng)中,邏輯電路可以在一個(gè)常數(shù)和一個(gè)右移數(shù)之間執(zhí)行比較操作。這種比較是在關(guān)鍵時(shí)序路徑上,作比較的門數(shù)可以很多,從而有一個(gè)比可接受的時(shí)序路徑延遲更大的時(shí)序路徑延遲。

發(fā)明內(nèi)容
公開了過移位檢測(cè)機(jī)制的各種實(shí)施例。在一個(gè)實(shí)施例中,例如可在處理器中使用的一個(gè)浮點(diǎn)單元包括一個(gè)浮點(diǎn)加法器,該加法器被配置為在有第一指數(shù)和第一尾數(shù)的第一浮點(diǎn)數(shù)和有第二指數(shù)和第二尾數(shù)的第二浮點(diǎn)數(shù)之間執(zhí)行浮點(diǎn)加法運(yùn)算。該浮點(diǎn)單元還包括可以計(jì)算相應(yīng)于一些位位置的移位值以移位第二尾數(shù)使得該第二指數(shù)值與該第一指數(shù)值相同的對(duì)齊移位器。該對(duì)齊移位器可檢測(cè)移位值大于或等于選定的過移位閾值的過移位條件(overshift condition) 0另外,該對(duì)齊移位器可以響應(yīng)檢測(cè)過移位條件提供過移位指示。該選定的過移位閾值由在包括最小過移位閾值和最大過移位閾值的過移位值范圍內(nèi)的基數(shù)為2的、有數(shù)目最多的在最低有效位以零開始的連續(xù)位的數(shù)構(gòu)成。


圖1是說明通用處理器核心的一個(gè)實(shí)施例的廣義化的框圖。圖2是圖1的浮點(diǎn)單元12 的實(shí)施例的一部分的框圖。圖3是示出了一些不同長(zhǎng)度的加數(shù)移位的圖。圖4是示出了過移位檢測(cè)邏輯簡(jiǎn)化實(shí)現(xiàn)的圖。由于本發(fā)明可承受各種修改和替換形式,所以其具體實(shí)施例在附圖中是以舉例的示出的,將在此詳細(xì)介紹。但是,應(yīng)當(dāng)認(rèn)識(shí)到,附圖及其詳細(xì)說明不是為了將本發(fā)明限制到所公開的特定形式,與此相反,其意圖是涵蓋在由所附權(quán)利要求書所界定的本發(fā)明的精神和范圍內(nèi)的所有的修改、等同物和替代物。請(qǐng)注意,在整個(gè)本申請(qǐng)中是在寬容的意義上(即有潛在可能、能夠)而不是在強(qiáng)制性的意義上(即必須)使用“可以”一詞的。
具體實(shí)施例方式現(xiàn)在翻到圖1,所示為處理器10的一個(gè)實(shí)施例的廣義化的框圖。其它實(shí)施例是可能的和考慮過的。如圖1所示,處理器10包括預(yù)取/預(yù)解碼單元12、分支預(yù)測(cè)單元14、指令高速緩存16、指令對(duì)齊單元18、解碼單元20、保留站22、功能單元對(duì)、加載/存儲(chǔ)單元沈、 數(shù)據(jù)高速緩存28、寄存器文件30、重排序緩沖區(qū)32、MROM單元34、總線接口單元37和L2 高速緩存39。請(qǐng)注意,在不同的實(shí)施例中,在解碼單元20、保留站22、和功能單元M中的每一個(gè)可以包括任何數(shù)目的獨(dú)立單位,因?yàn)樵诔瑯?biāo)量處理器中可以有其每一個(gè)有各自的解碼單元、保留站和功能單元的多個(gè)管道。因此,在所示實(shí)施例中,功能單元M包括整數(shù)單元 lMa、124b和浮點(diǎn)單元(FPU)12k。然而,在其它實(shí)施例中,可使用其它數(shù)目的整數(shù)單元和 FPU 124c0預(yù)取/預(yù)解碼單元12被耦合以接收來自總線接口單元37的指令,并進(jìn)一步被耦合到指令高速緩存16和分支預(yù)測(cè)單元14。類似地,分支預(yù)測(cè)單元14被耦合到指令高速緩存16。再進(jìn)一步,分支預(yù)測(cè)單元14被耦合到解碼單元20和功能單元M。指令高速緩存16 進(jìn)一步被耦合到MROM單元34和指令對(duì)齊單元18。指令對(duì)齊單元18接著被耦合到解碼單元20。解碼單元20被耦合到加載/存儲(chǔ)單元沈和保留站22。保留站22進(jìn)一步被耦合到各自的功能單元對(duì)。此外,解碼單元20和保留站22被耦合到寄存器文件30和重排序緩沖區(qū)32。功能單元M被耦合到加載/存儲(chǔ)單元26、寄存器文件30以及重排序緩沖區(qū)32。 數(shù)據(jù)高速緩存觀被耦合到加載/存儲(chǔ)單元26和總線接口單元37??偩€接口單元37進(jìn)一步被耦合到L2高速緩存39和總線。最后,MROM單元34被耦合到解碼單元20。指令高速緩存16是被提供來存儲(chǔ)指令的高速緩存存儲(chǔ)器。指令取自指令高速緩存16,并派送到解碼單元20。在一個(gè)實(shí)施例中,指令高速緩存16被配置為在具有64字節(jié)線(1個(gè)字節(jié)由8個(gè)二進(jìn)制位構(gòu)成)的2路組相聯(lián)結(jié)構(gòu)中存儲(chǔ)高達(dá)64k字節(jié)的指令??商鎿Q地,可以采用任何其它期望的配置和大小。例如,值得注意的是,指令高速緩存16可以作為完全關(guān)聯(lián)的、集關(guān)聯(lián)的或直接映射的配置來實(shí)現(xiàn)。指令被預(yù)取/預(yù)解碼單元12存儲(chǔ)到指令高速緩存16。指令和/或數(shù)據(jù)可按照預(yù)取計(jì)劃在其向指令高速緩存16或加載/存儲(chǔ)單元沈的請(qǐng)求之前預(yù)取??梢杂山獯a單元20 直接解碼的指令被稱作“快速路徑”指令。根據(jù)一個(gè)實(shí)施例,其余的x86指令被稱作MROM 指令。MROM指令是確定為對(duì)解碼單元20來說解碼太復(fù)雜的指令。MROM指令通過調(diào)用MROM 單元34來執(zhí)行。更具體地說,當(dāng)遇到一個(gè)MROM指令,MROM單元34就將該指令解析和發(fā)布為定義的快速路徑指令的子集以執(zhí)行所需的操作。MROM單元34將快速路徑指令的子集分派到解碼單元20。在所示實(shí)施例中,處理器10采用分支預(yù)測(cè)推測(cè)提取條件分支指令之后的指令。包括分支預(yù)測(cè)單元14來執(zhí)行分支預(yù)測(cè)操作。解碼單元20和功能單元M可以為分支預(yù)測(cè)單元14提供更新信息。解碼單元20可以檢測(cè)未被分支預(yù)測(cè)單元14預(yù)測(cè)的分支指令。功能單元M執(zhí)行該分支指令并確定預(yù)測(cè)的分支指令是否不正確。分支方向可以是從分支指令的目標(biāo)地址取后續(xù)指令的“取”。相反地,分支方向可以是從與該分支指令連續(xù)的存儲(chǔ)器位置取后續(xù)指令的“不取”。當(dāng)檢測(cè)到未預(yù)測(cè)的分支指令時(shí),在該未預(yù)測(cè)的分支指令之后的指令都將被從處理器10的各單元擯棄。在一個(gè)可替換的配置中,分支預(yù)測(cè)單元14可被耦合到重排序緩沖區(qū)32而不是解碼單元20和功能單元24,并且可以從重排序緩沖區(qū)32接收分支未預(yù)測(cè)的信息??梢杂煞种ьA(yù)測(cè)單元14采用多種合適的分支預(yù)測(cè)算法。從指令高速緩存16提取的指令被傳達(dá)到指令對(duì)齊單元18。由于指令是從指令高速緩存16中提取的,所以相應(yīng)的預(yù)解碼數(shù)據(jù)被掃描以便為指令對(duì)齊單元18(和MROM單元 34)提供與被提取的指令有關(guān)的信息。指令對(duì)齊單元18利用所述掃描數(shù)據(jù)將指令與解碼單元20的每一個(gè)單元對(duì)齊。在一個(gè)實(shí)施例中,指令對(duì)齊單元1 8將來自三套8指令字節(jié)的指令與解碼單元20對(duì)齊。解碼單元20被配置為解碼從指令對(duì)齊單元18接收的指令。寄存器操作數(shù)信息被檢測(cè)并傳送到寄存器文件30和重排序緩沖區(qū)32。此外,如果指令需要一個(gè)或多個(gè)存儲(chǔ)器操作來執(zhí)行,解碼單元20就將存儲(chǔ)器操作調(diào)度到加載/存儲(chǔ)單元26。每一指令都被解碼為用于功能單元M的一系列控制值,這些控制值與可以與指令包括的操作數(shù)地址信息和移位或即時(shí)數(shù)據(jù)一起被分派到保留站22。在一個(gè)特定的實(shí)施例中,每一個(gè)指令被解碼成可以由功能單元lMa_124b分別執(zhí)行的兩個(gè)操作。處理器10支持亂序(out of order)執(zhí)行,從而采用重排序緩沖區(qū)32來跟蹤用于寄存器讀和寫操作的原始程序序列、執(zhí)行寄存器重命名、允許預(yù)測(cè)指令執(zhí)行和分支預(yù)測(cè)錯(cuò)誤恢復(fù)以及便于精確異常。在解碼單元20的輸出提供的指令控制值和即時(shí)或移位數(shù)據(jù)被直接發(fā)送到各自的保留站22。在一個(gè)實(shí)施例中,保留站22的每一個(gè)單元都能為多達(dá)六項(xiàng)待簽發(fā)給相應(yīng)功能單元的待執(zhí)行指令保持指令信息(即,指令控制值以及操作數(shù)的值、操作數(shù)的標(biāo)簽和/或即時(shí)數(shù)據(jù))。一個(gè)特定的指令解碼后,如果需要的操作數(shù)是寄存器的位置,就使寄存器地址信息同時(shí)向重排序緩沖區(qū)32和寄存器文件30發(fā)去。本領(lǐng)域技術(shù)人員會(huì)明白,x86寄存器文件包括8個(gè)32位實(shí)寄存器(即通常稱為EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。在采用x86處理器結(jié)構(gòu)也稱為IA-32結(jié)構(gòu)的處理器10的實(shí)施例中,寄存器文件30包括用于32 位實(shí)寄存器的每一個(gè)的存儲(chǔ)位置。另外的存儲(chǔ)位置可以包括在寄存器文件30中供MROM單元;34使用。如前所述,保留站22在指令由相應(yīng)的功能單元lMa、124b或12 執(zhí)行之前一直存儲(chǔ)指令。如果(i) 一個(gè)指令的操作數(shù)已經(jīng)被提供;和(ii)操作數(shù)尚未提供給同一保留站22內(nèi)的、在程序順序上在該指令之前的那些指令,該指令就被選擇執(zhí)行。要說明的是,當(dāng)一條指令被功能單元M內(nèi)的單元中的一個(gè)執(zhí)行時(shí),那條指令的結(jié)果被直接傳遞到等待結(jié)果的任一保留站22,在同一時(shí)間結(jié)果被傳遞來更新重排序緩沖區(qū)32 (這項(xiàng)技術(shù)通常被稱作 “結(jié)果轉(zhuǎn)送”)。在相關(guān)的結(jié)果被轉(zhuǎn)送的時(shí)鐘周期,一個(gè)指令可以被選擇執(zhí)行并傳遞給功能單元M。在這種情況下,保留站22將轉(zhuǎn)發(fā)的結(jié)果發(fā)送給功能單元M。在指令可以解碼為待由功能單元M執(zhí)行的多個(gè)操作的實(shí)施例中,操作可以被安排為彼此分開。在一個(gè)實(shí)施例中,整數(shù)單元12 和124b中的每一個(gè)被配置為執(zhí)行加法和減法的整數(shù)運(yùn)算以及移位、旋轉(zhuǎn)、邏輯運(yùn)算和分支運(yùn)算。所述運(yùn)算是響應(yīng)由解碼單元20為特定指令解碼的控制值而執(zhí)行的。應(yīng)指出,F(xiàn)PU 12 也可以被用來執(zhí)行浮點(diǎn)運(yùn)算。因此,F(xiàn)PU 124c 包括浮點(diǎn)乘加(FMA)單元125。該FPU 12 可以作為協(xié)處理器工作,接收來自MROM單元 34或重排序緩沖區(qū)32的指令,并隨后與重排序緩沖區(qū)32通訊以完成指令。此外,整數(shù)單元12 和124b可以被配置為為加載/存儲(chǔ)單元沈執(zhí)行的加載和存儲(chǔ)存儲(chǔ)器的操作執(zhí)行地址生成。在一個(gè)特定的實(shí)施例中,整數(shù)單元12 和124b可以包括用于生成地址的地址生成單元和用于執(zhí)行其余功能的執(zhí)行單元。在一個(gè)時(shí)鐘周期中,這兩個(gè)單元可以根據(jù)不同的指令或操作而獨(dú)立運(yùn)作。如下文更詳細(xì)說明的那樣,在一個(gè)實(shí)施例中,F(xiàn)PU 12 包含可包括可以檢測(cè)在速度比常規(guī)的浮點(diǎn)單元更快的浮點(diǎn)運(yùn)算期間的過移位的對(duì)齊移位器控制邏輯210的FMA單元125。特別地,在一個(gè)實(shí)施例中,對(duì)齊移位器控制邏輯210可以通過為將要被加到另一個(gè)加數(shù)或兩個(gè)數(shù)的乘積的加數(shù)計(jì)算過移位值、然后將計(jì)算值與選定的過移位閾值比較來檢測(cè)過移位。在各個(gè)實(shí)施例中,所選定的過移位閾值是一個(gè)在包括最小過移位閾值和最大過移位閾值的過移位值范圍內(nèi)的基數(shù)為2的、有數(shù)目最多的在最低有效位以零開始的連續(xù)位的數(shù)。這一選定的過移位值應(yīng)實(shí)現(xiàn)在FMA單元125的關(guān)鍵時(shí)序路徑中的一個(gè)上有最少數(shù)目的門延遲的過移位檢測(cè)邏輯電路。加載/存儲(chǔ)單元沈在功能單元M和數(shù)據(jù)高速緩存觀之間提供了接口。在一個(gè)實(shí)施例中,加載/存儲(chǔ)單元26可以由具有用于未訪問數(shù)據(jù)高速緩存觀的待加載或待存儲(chǔ)的數(shù)據(jù)和地址信息的存儲(chǔ)位置的一個(gè)加載/存儲(chǔ)緩沖區(qū)和具有用于已訪問數(shù)據(jù)高速緩存 28的加載或存儲(chǔ)的數(shù)據(jù)和地址信息的存儲(chǔ)位置的另一個(gè)加載/存儲(chǔ)緩沖區(qū)配置。數(shù)據(jù)高速緩存觀是一個(gè)被提供來暫時(shí)存儲(chǔ)在加載/存儲(chǔ)單元沈和主存儲(chǔ)器子系統(tǒng)之間傳輸?shù)臄?shù)據(jù)的高速的高速緩存存儲(chǔ)器。在一個(gè)實(shí)施例中,數(shù)據(jù)高速緩存觀可以是集關(guān)聯(lián)結(jié)構(gòu)。應(yīng)理解,數(shù)據(jù)高速緩存觀可以用多種特定的存儲(chǔ)器配置實(shí)現(xiàn),包括集關(guān)聯(lián)配置、 全關(guān)聯(lián)配置、直接映射配置以及任何合適的大小或其它配置。在采用x86處理器結(jié)構(gòu)的處理器10的一個(gè)具體實(shí)施例中,指令高速緩存16和數(shù)據(jù)緩存28被線性尋址和物理標(biāo)記。該線性地址通過由指令指定的移位量和由x86地址轉(zhuǎn)換機(jī)制的段部分指定的基址形成。線性地址可以可選地轉(zhuǎn)換成用于訪問主存儲(chǔ)器的物理地址。線性到物理的轉(zhuǎn)換是由x86地址轉(zhuǎn)換機(jī)制的頁部分指定的。將物理地址與物理標(biāo)簽進(jìn)行比較來確定命中/錯(cuò)失狀態(tài)??偩€接口單元37可配置為在處理器10和計(jì)算機(jī)系統(tǒng)的其它組件之間通過系統(tǒng)總線通訊。例如,總線可以與數(shù)字設(shè)備公司(Digital Equipment Corporation)開發(fā)的EV-6 總線兼容??商鎿Q地,可以使用包括基于分組的、單向或雙向連接等的任何合適的互連結(jié)構(gòu)??偩€接口單元37可以進(jìn)一步與L2高速緩存39通訊。在一個(gè)實(shí)施中,L2高速緩存39可以是既存儲(chǔ)指令又儲(chǔ)存數(shù)據(jù)的二級(jí)緩存。例如, L2高速緩存39的大小可以是例如256千字節(jié)、512千字節(jié)或1兆字節(jié)。在其它實(shí)施例中, 可以使用更小或更大的尺寸。L2緩存39可能采用直接映射或設(shè)置關(guān)聯(lián)配置。值得注意的是,雖然圖1的處理器10在x86結(jié)構(gòu)中是作為處理器實(shí)現(xiàn)的,但預(yù)期在其它實(shí)施例中,處理器10可以用任何其它結(jié)構(gòu)實(shí)施。另外,處理器10可以作為多核處理器的一部分或作為專用集成電路(ASIC)內(nèi)的嵌入式處理器或類似物來實(shí)現(xiàn)。參考圖2,圖2示出了圖1的FMA單元125的一個(gè)實(shí)施例的一部分的框圖。值得注意的是,為簡(jiǎn)明起見,在圖2中各個(gè)組成部分都被省略了,僅示出了與討論有密切關(guān)系的 FMA單元125的一部分。在所示的實(shí)施例中,F(xiàn)MA 125是作為由側(cè)標(biāo)題FXl至FX6所示的流水線單元示出的,但預(yù)期在其它實(shí)施例中,可以實(shí)施非流水線的設(shè)計(jì)。還應(yīng)注意,由FMA 125的所示出的部分提供的數(shù)據(jù)通路被配置為處理正常情況。也就是說,是加數(shù)的尾數(shù)的MSB 始終是邏輯值1的情況。事實(shí)上,在加數(shù)尾數(shù)的MSB為0的非正常情況和都為0的情況是由一個(gè)或多個(gè)不同的數(shù)據(jù)通路及相應(yīng)的電路處理的。如圖所示,F(xiàn)MA 125包括多個(gè)寄存器來存儲(chǔ)傳入的加數(shù)‘C’和被乘數(shù)‘A’和‘B’。 更具體地說,‘A’、‘B’和‘C’的指數(shù)可存儲(chǔ)在寄存器指定指數(shù)201中,而加數(shù)‘C’和被乘數(shù) ‘A,和‘B’的尾數(shù)可以作為64位值分別存儲(chǔ)在寄存器202、203和204中。此外,指數(shù)201 寄存器被耦合到一個(gè)指數(shù)加法器和對(duì)齊移位器控制單元210以及在下一流水線級(jí)FX2中的第二指數(shù)寄存器212。第二指數(shù)寄存器212被耦合到下一流水線級(jí)FX3中的指數(shù)寄存器 214,它被耦合到一個(gè)多路復(fù)用器(mux) 218。 mux 218的輸出被耦合到指數(shù)遞減寄存器 (decrementer)219、指數(shù)遞增寄存器(incrementer) 220和mux 221的一個(gè)輸入。指數(shù)遞減寄存器219和指數(shù)遞增寄存器220的輸出都各自被耦合到mux 221的其它輸入。mux 221 的輸出被耦合到在流水線級(jí)FX5的開始的指數(shù)寄存器。指數(shù)寄存器225的輸出可用于在流水線級(jí)FX6的在規(guī)格化和舍入單元250內(nèi)的最后的總和計(jì)算,產(chǎn)生最終結(jié)果并將其存儲(chǔ)到結(jié)果寄存器255。規(guī)格化和舍入單元250也可存儲(chǔ)例外/狀態(tài)寄存器沈0內(nèi)的任何異常和 /或狀態(tài)位。返回參考FXl級(jí),尾數(shù)寄存器203的輸出被耦合到布思(booth)編碼器206,布思編碼器206被耦合到乘數(shù)208的部分積部分207的一個(gè)輸入。尾數(shù)寄存器204的輸出被耦合到乘數(shù)208的部分積部分207的另一輸入。乘數(shù)208的輸出被耦合到進(jìn)位存貯加法器 (CSA)213。對(duì)齊移位器控制210的輸出被耦合以提供用于使用前導(dǎo)零預(yù)測(cè)器單元223的指示指定的“用LZA”211。對(duì)齊移位器控制210的輸出也被耦合到右移位器單元209,右移位器單元209接著被耦合到CSA 213和可配置為保存一個(gè)對(duì)齊的、移位的加數(shù)‘C’的對(duì)齊寄存器215。對(duì)齊寄存器215的輸出被耦合遞增寄存器222,遞增寄存器222被耦合到194位總和寄存器227,194位總和寄存器227其輸出被耦合到規(guī)格化和舍入單元250。返回參考FX3級(jí),CSA 213的輸出被耦合到總和寄存器216和進(jìn)位寄存器217,總和寄存器216和進(jìn)位寄存器217被依次耦合到前導(dǎo)零預(yù)測(cè)器223和進(jìn)位傳播加法器224。 前導(dǎo)零預(yù)測(cè)器223的輸出被耦合到規(guī)格化控制寄存器226,而進(jìn)位傳播加法器2M的輸出被耦合到總和寄存器227。如上所述,在操作過程中,根據(jù)‘A’和‘B’的積的指數(shù)值(即積的值)和加數(shù)‘C’ 的指數(shù)值,加數(shù)‘C’(即加數(shù)值)的尾數(shù)可能需要移位以使積值和加數(shù)值的指數(shù)是相同的, 用于以后的加法運(yùn)算。相應(yīng)地,對(duì)齊移位器控制210可以計(jì)算合適的移位值并將它提供給右移位器209。此外,如下面結(jié)合圖3和圖4的說明更具體地說明的那樣,對(duì)齊移位器控制 210可以確定計(jì)算的移位值會(huì)產(chǎn)生不足移位(imdershift)或過移位。此外,如果對(duì)齊移位器控制210確定過移位已經(jīng)發(fā)生,對(duì)齊移位器控制210就可能會(huì)導(dǎo)致粘滯位(sticky bit) 被設(shè)置。圖3是示出了一些不同長(zhǎng)短的加數(shù)移位的圖。參考圖2和圖3,如圖2所示的實(shí)施例支持64位尾數(shù)值。因此,積將是1 位。如圖3所示,積的左側(cè)的66位被稱作增量區(qū), 因?yàn)楫?dāng)加數(shù)和積相加時(shí),對(duì)該區(qū)中的位的影響是最多再加一個(gè)單元。積的右側(cè)的63位被稱作粘滯區(qū)(sticky region)。粘滯區(qū)是指如果加數(shù)被移位以使任何加數(shù)位在該粘滯區(qū)疊合,那么這些位在邏輯上是‘或’(OR)在一起以產(chǎn)生在舍入操作中可以使用的粘滯位。粘滯區(qū)的寬度可以定義為尾數(shù)寬度(Mw)減1。如上所述,在將加數(shù)加到積之前,加數(shù)可能需要移位以使積和加數(shù)的指數(shù)是相同的。在實(shí)際中,移位量可以限于其中移位加數(shù)至少有一個(gè)位與積重疊的移位、加上需要作為左對(duì)齊加數(shù)的保護(hù)區(qū)的幾位(比積更有效)。在這一例示的實(shí)施例中,保護(hù)位數(shù)(( )選為 2。相應(yīng)地,在將64位加數(shù)加到1 位積(例如,兩個(gè)64位尾數(shù)的乘數(shù))之前,如圖 3的加數(shù)302所示,其位在126:63的范圍的零的移位將離開加數(shù)。左移加數(shù)將被限制在67 位移位,以便在加數(shù)的LSB和積的MSB位之間有兩個(gè)保護(hù)位。除此之外,不足移位條件會(huì)存在,使得如圖3的未過移位加數(shù)301所示,沒有加數(shù)位與積位對(duì)齊。在實(shí)踐中認(rèn)為只在一個(gè)方向移位是簡(jiǎn)單的??梢约右粋€(gè)常數(shù)來偏置移位量以使不足移位被編碼為零的移位和移位器總是右移。例如加數(shù)指數(shù)等于積的指數(shù)的加數(shù)302將產(chǎn)生67位右移。本文此后對(duì)移位量的所有引用是指這一偏置的表示。右移位超過2Mw+Gb但在移位范圍內(nèi)的加數(shù)由移位加數(shù)303示出,其中移位加數(shù) 303的一些位在積內(nèi),一些位在粘滯范圍內(nèi)。移位邊界可以被定義為例如3Mw+Gb-l。用于例示的數(shù)據(jù)通路的移位邊界是193,這是最大的右移,因?yàn)檫@樣的移位將使加數(shù)的最高有效位(MSB)與積的最低有效位(LSB)對(duì)齊。值得說明的是,粘滯范圍必須包括至少M(fèi)w-I位, 以便對(duì)這一最大右移位而言積的LSB以下的所有尾數(shù)位都被包括在該粘滯中。大于該最大值的右移位被認(rèn)為是過移位。因?yàn)榧訑?shù)的MSB始終為1,所以任一過移位都導(dǎo)致粘滯被設(shè)置。然而,因?yàn)榧訑?shù)的MSB在此實(shí)現(xiàn)中總是1,并且因?yàn)榱愫头钦?guī)數(shù)是在不同的數(shù)據(jù)通路上處理的,將加數(shù)的MSB置于粘滯范圍的移位值將正確地設(shè)置粘滯位,而與過移位指令的過移位無關(guān),因?yàn)榧訑?shù)MSB會(huì)導(dǎo)致正常的粘滯邏輯設(shè)置粘滯指示。相應(yīng)地,不是計(jì)算在確切邊界處的移位(移位量大于最大右移)的移位,而是使用在最小移位閾值和最大移位閾值之間的任意處選擇的過移位閾值來設(shè)置過移位檢測(cè)電路。最小移位閾值可表示為移位器寬度,它在這一結(jié)合的乘法實(shí)施中是(ib+3Mw。最大移位閾值是4Mw+Gb-2,或者對(duì)( = 2 而言簡(jiǎn)單地為4(Mw)。值得說明的是,在純加法器中,最小移位閾值可表示為(ib+2MW,最大移位閾值可表示為3Mw+Gb-2。對(duì)于圖3的64位FMA實(shí)現(xiàn),最小移位閾值和最大移位閾值分別為194和256。在所示的實(shí)施例中,如過移位加數(shù)305所示,移位閾值被選定為256個(gè)或更多,因?yàn)槿缦旅孢M(jìn)一步說明的那樣,實(shí)施過移位檢測(cè)的邏輯可以有更少的邏輯級(jí)和因而更少的門延遲。當(dāng)如圖所示存在這樣的過移位條件時(shí),被迫設(shè)置了粘滯位,這是因?yàn)樵谡硿秶鷥?nèi)沒有留下加數(shù)位來邏輯“或”。參考圖4,圖中示出了描繪基于圖3所示的移位的過移位檢測(cè)邏輯簡(jiǎn)化實(shí)現(xiàn)的框圖。如上所述,右移位量(即移位值)可以如圖所示計(jì)算。在所示的實(shí)施例中,指數(shù)表示為 18位無符號(hào)數(shù)(例如,ExpA[17:0]),但移位值占用為負(fù)的不足移位值,從而移位器包含一個(gè)附加的符號(hào)位S[18]。為了檢測(cè)過移位,檢測(cè)邏輯將移位量和過移位閾值進(jìn)行比較。在傳統(tǒng)的系統(tǒng)中,過移位閾值>=194。在本實(shí)施例中,移位閾值>=256。在圖4中的描述示出了為檢測(cè)如過移位410示出的移位值> =194和為檢測(cè)如過移位425示出的移位值> =256而必須進(jìn)行檢查的位。例如,如圖所示,兩個(gè)數(shù)字X和Y被定義。如果符號(hào)位是邏輯值0并且位[17:8] 的任一個(gè)是邏輯值1,X值就評(píng)估為真。如果符號(hào)位是邏輯值0并且第7位和第6位都是邏輯值1并且位[5:1]的至少一個(gè)是邏輯值1,Y值就評(píng)估為真。相應(yīng)地,為檢測(cè)過移位條件 >=194,X和Y的邏輯“或”操作必須實(shí)現(xiàn)。然而,為檢測(cè)過移位條件>=256,只有數(shù)字X 必須實(shí)現(xiàn)。因此,為檢測(cè)>=256,可以比較較少的位,比較它們的邏輯有較少的邏輯電平和因而較少的時(shí)序路徑延遲。作為另一個(gè)例子,在支持M位數(shù)據(jù)通路和因而M位尾數(shù)和2位保護(hù)區(qū)位的系統(tǒng)中,可以選擇在74和96的范圍中的過移位閾值,其中數(shù)字74來自(ib+3Mw (例如,2+3 (24)) 以及數(shù)字96來自4Mw (例如,4 (24))。相應(yīng)地,在使用上述技術(shù)的實(shí)現(xiàn)中,選擇過移位閾值為 >=96可以產(chǎn)生最少的邏輯電平和從而在過移位檢測(cè)時(shí)序路徑中的最小數(shù)目的門延遲。相反,在又一使用53位數(shù)據(jù)通路的例中,最大過移位閾值可能不是最佳選擇。在這一例中,過移位閾值范圍將為>=161和>=212。在這一例中,212的過移位值并不提供最佳的邏輯電平實(shí)現(xiàn)。事實(shí)上,可以顯示,>=192將提供在過移位檢測(cè)邏輯的關(guān)鍵時(shí)序路徑中的與該范圍內(nèi)的其它選擇相比的最小的門延遲,因?yàn)?92在LSB開始的位位置已經(jīng)有多位連續(xù)的零,并且左移到第一個(gè)位位置的是1。因此,可以選擇在最小移位閾值和最大移位閾值之間的和有數(shù)目最多的自該值的 LSB以零開始的連續(xù)位的移位閾值。更具體地,在上面的使用161和212作為最小移位閾值和最大移位閾值的例子中,21 對(duì)應(yīng)于IlOlOlOOb,而19 對(duì)應(yīng)于11000000b。值得說明的是,雖然上述實(shí)施例是以乘加器為上下文說明的,但可以設(shè)想,在其它實(shí)施例中,過移位檢測(cè)邏輯可以用任何浮點(diǎn)加法器實(shí)現(xiàn)。在這樣的實(shí)施方案中將有兩個(gè)加數(shù)而不是一個(gè)積和一個(gè)加數(shù),如上所述,移位器的寬度將為(Λ+2 (Mw),最大移位閾值將為 3 (Mw) ο進(jìn)一步指出的是,上面所述的浮點(diǎn)單元可以在能夠執(zhí)行浮點(diǎn)運(yùn)算功能的任何類型的處理單元中實(shí)施。雖然已經(jīng)相當(dāng)詳細(xì)地說明了上面的實(shí)施例,但對(duì)本領(lǐng)域技術(shù)人員,一旦充分理解了上述公開,大量的變形和修改就將是明顯的。下面的權(quán)利要求書被解釋為其本意包括所有這樣的變形和修改。
權(quán)利要求
1.浮點(diǎn)單元,其包括浮點(diǎn)加法器,其配置為在有第一指數(shù)和第一尾數(shù)的第一浮點(diǎn)數(shù)和有第二指數(shù)和第二尾數(shù)的第二浮點(diǎn)數(shù)之間執(zhí)行浮點(diǎn)加法運(yùn)算;對(duì)齊移位器,其配置為計(jì)算相應(yīng)于一些位位置的移位值以移位所述第二尾數(shù)使得所述第二指數(shù)值與所述第一指數(shù)值相同;其中所述對(duì)齊移位器配置為檢測(cè)所述移位值大于或等于選定過移位閾值的過移位條件;其中所述對(duì)齊移位器還配置為響應(yīng)檢測(cè)所述過移位條件提供過移位指示;其中所述選定過移位閾值由在包括最小過移位閾值和最大過移位閾值的過移位值范圍內(nèi)的基數(shù)為2的、有數(shù)目最多的在最低有效位以零開始的連續(xù)位的數(shù)構(gòu)成。
2.如權(quán)利要求1所述的浮點(diǎn)單元,其中,所述對(duì)齊移位器配置為移位到右側(cè),所述第二尾數(shù)配置為由所述移位值表示的位位置的數(shù)目。
3.如權(quán)利要求1所述的浮點(diǎn)單元,其中,所述最小移位閾值對(duì)應(yīng)于來自使所述第二尾數(shù)右移使得所述第二尾數(shù)的MSB在所述第一尾數(shù)的LSB右側(cè)和對(duì)應(yīng)于加來使所述第一尾數(shù)的數(shù)據(jù)通路中的位數(shù)成倍的保護(hù)區(qū)位數(shù)的移位值。
4.如權(quán)利要求1所述的浮點(diǎn)單元,其中,在所述第一尾數(shù)的最低有效位(LSB)右側(cè)的位數(shù)對(duì)應(yīng)于粘滯區(qū),其中所述粘滯區(qū)包括其值等于比在所述第一尾數(shù)的數(shù)據(jù)通路中的位數(shù)少 1的位數(shù)。
5.如權(quán)利要求4所述的浮點(diǎn)單元,其中,響應(yīng)被右移位的所述第二尾數(shù),使得在所述第一尾數(shù)的LSB右側(cè)的所述第二尾數(shù)的任意LSB在邏輯上“或”在一起以生成粘滯位。
6.如權(quán)利要求5所述的浮點(diǎn)單元,其中,所述對(duì)齊移位器進(jìn)一步配置為導(dǎo)致所述粘滯位響應(yīng)檢測(cè)到所述過移位條件而設(shè)置。
7.如權(quán)利要求5所述的浮點(diǎn)單元,其中,所述最大移位閾值對(duì)應(yīng)于來自使所述第二尾數(shù)右移使得所述第二尾數(shù)的所述MSB與所述粘滯區(qū)的所述LSB對(duì)齊的移位值。
8.如權(quán)利要求1所述的浮點(diǎn)單元,還包括配置為使第三浮點(diǎn)數(shù)乘以第四浮點(diǎn)數(shù)生成一個(gè)積值并加第五浮點(diǎn)數(shù)到所述積值的浮點(diǎn)乘法器/加法器,其中,所述積值包括積指數(shù)和積尾數(shù),所述第五浮點(diǎn)數(shù)包括第三指數(shù)值和第三尾數(shù)。
9.如權(quán)利要求8所述的浮點(diǎn)單元,其中,所述對(duì)齊移位器進(jìn)一步配置為計(jì)算與移位所述第三尾數(shù)使得所述第三指數(shù)值與所述積的指數(shù)值相同的位位置的數(shù)目相應(yīng)的第二移位值。
10.如權(quán)利要求9所述的浮點(diǎn)單元,其中,所述最小移位閾值對(duì)應(yīng)于添加的使得所述第三尾數(shù)的數(shù)據(jù)通路中的位數(shù)成為3倍的保衛(wèi)區(qū)位數(shù)。
11.如權(quán)利要求9所述的浮點(diǎn)單元,其中,在所述積尾數(shù)數(shù)位的最低有效位(LSB)右側(cè)的位數(shù)對(duì)應(yīng)于粘滯區(qū),其中所述粘滯區(qū)包括其值等于比在所述第三尾數(shù)的數(shù)據(jù)通路中的位數(shù)少1的位數(shù)。
12.如權(quán)利要求11所述的浮點(diǎn)單元,響應(yīng)被右移位的所述第三尾數(shù),使得在所述積的所述LSB右側(cè)的所述第三尾數(shù)的任意LSB在邏輯上“或”在一起以生成粘滯位。
13.如權(quán)利要求11所述的浮點(diǎn)單元,其中,所述最大移位閾值對(duì)應(yīng)于來自使所述第三尾數(shù)右移使得所述第三尾數(shù)的所述MSB與所述粘滯區(qū)的所述LSB對(duì)齊的移位值。
14.如權(quán)利要求1所述的浮點(diǎn)單元,其中,所述選定的移位閾值對(duì)應(yīng)于在用于比較所述移位值和所述選定的移位閾值的檢測(cè)關(guān)鍵時(shí)序路徑中具有最小數(shù)目的門延遲的邏輯實(shí)現(xiàn)。
15.處理器,其包括配置為執(zhí)行浮點(diǎn)運(yùn)算的浮點(diǎn)單元,其中所述浮點(diǎn)單元包括浮點(diǎn)加法器,其配置為在有第一指數(shù)和第一尾數(shù)的第一浮點(diǎn)數(shù)和有第二指數(shù)和第二尾數(shù)的第二浮點(diǎn)數(shù)之間執(zhí)行浮點(diǎn)加法運(yùn)算;和對(duì)齊移位器,其配置為計(jì)算相應(yīng)于一些位位置的移位值以移位所述第二尾數(shù)使得所述第二指數(shù)值與所述第一指數(shù)值相同;其中所述對(duì)齊移位器配置為檢測(cè)所述移位值大于或等于選定的過移位閾值的過移位條件;其中所述對(duì)齊移位器還配置為響應(yīng)檢測(cè)所述過移位條件提供過移位指示;其中所述選定過移位閾值由在包括最小過移位閾值和最大過移位閾值的過移位值范圍內(nèi)的基數(shù)為2的、有數(shù)目最多的在最低有效位以零開始的連續(xù)位的數(shù)構(gòu)成。
16.如權(quán)利要求15所述的處理器,其中,所述對(duì)齊移位器配置為移位到右側(cè),所述第二尾數(shù)配置為由所述移位值表示的位位置的數(shù)目。
17.如權(quán)利要求15所述的處理器,其中,所述最小移位閾值對(duì)應(yīng)于來自使所述第二尾數(shù)右移使得所述第二尾數(shù)的所述MSB在所述第一尾數(shù)的所述LSB右側(cè)和對(duì)應(yīng)于加來使所述第一尾數(shù)的數(shù)據(jù)通路中的位數(shù)成倍的保護(hù)區(qū)位數(shù)的移位值。
18.如權(quán)利要求15所述的處理器,其中,在所述第一尾數(shù)的最低有效位(LSB)右側(cè)的位數(shù)對(duì)應(yīng)于粘滯區(qū),其中所述粘滯區(qū)包括其值等于比在所述第一尾數(shù)的數(shù)據(jù)通路中的位數(shù)少 1的位數(shù)。
19.如權(quán)利要求18所述的處理器,其中,響應(yīng)被右移位的所述第二尾數(shù),使得在所述第一尾數(shù)的所述LSB右側(cè)的所述第二尾數(shù)的任意所述LSB在邏輯上“或”在一起以生成粘滯位。
20.如權(quán)利要求19所述的處理器,其中,所述對(duì)齊移位器進(jìn)一步配置為導(dǎo)致所述粘滯位響應(yīng)檢測(cè)到所述過移位條件而設(shè)置。
全文摘要
一種浮點(diǎn)單元,其包括浮點(diǎn)加法器以在各自都有指數(shù)和尾數(shù)的第一浮點(diǎn)數(shù)和第二浮點(diǎn)數(shù)之間執(zhí)行浮點(diǎn)加法運(yùn)算。所述浮點(diǎn)單元還包括可以計(jì)算相應(yīng)于一些位位置的移位值以移位第二尾數(shù)使得所述第二指數(shù)值與所述第一指數(shù)值相同的對(duì)齊移位器。所述對(duì)齊移位器可檢測(cè)移位值大于或等于選定過移位閾值的過移位條件。所述選定過移位閾值由在包括最小過移位閾值和最大過移位閾值的過移位值范圍內(nèi)的基數(shù)為2的、有數(shù)目最多的在最低有效位以零開始的連續(xù)位的數(shù)構(gòu)成。
文檔編號(hào)G06F7/485GK102349049SQ201080011918
公開日2012年2月8日 申請(qǐng)日期2010年3月11日 優(yōu)先權(quán)日2009年3月16日
發(fā)明者大衛(wèi)·S·奧利弗 申請(qǐng)人:超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
洪洞县| 隆林| 新密市| 云南省| 宁明县| 汶上县| 唐河县| 南木林县| 安乡县| 福贡县| 吉隆县| 淮滨县| 茶陵县| 枣庄市| 大连市| 淮南市| 大厂| 曲阳县| 成安县| 乌拉特前旗| 汝州市| 岳阳市| 阿拉善盟| 永福县| 山东省| 越西县| 聂荣县| 安义县| 雷山县| 深水埗区| 康乐县| 昔阳县| 呼伦贝尔市| 霞浦县| 汽车| 荥经县| 汪清县| 桦川县| 崇礼县| 达孜县| 武平县|