国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      浮點處理單元中面向精確異常的流水線調(diào)度方法

      文檔序號:6338364閱讀:325來源:國知局
      專利名稱:浮點處理單元中面向精確異常的流水線調(diào)度方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種浮點處理單元中面向精確異常的流水線調(diào)度方法。
      背景技術(shù)
      在基于指令級并行的浮點單元的設(shè)計中,為了提高指令的吞吐率,普遍采用指令亂序執(zhí)行機(jī)制。實現(xiàn)指令亂序機(jī)制的關(guān)鍵是如何處理指令之間的相關(guān)。目前處理流水線相關(guān)的方法可分為兩種。
      一種是流水線的靜態(tài)調(diào)度方法。該方法是如果當(dāng)前發(fā)射隊列中的指令與已經(jīng)在流水線中的指令之間存在數(shù)據(jù)相關(guān),且不能通過旁路技術(shù)或直接通路技術(shù)來避免時,暫停流水線發(fā)射邏輯,直到該相關(guān)消除。該方法的主要局限是如果相關(guān)指令在流水線中被停頓,那么后繼指令都無法前行。因此,若兩條緊挨著的指令存在相關(guān)關(guān)系,就會引起流水線的停頓。該方法的優(yōu)點是控制邏輯比較簡單,易于實現(xiàn)。但是執(zhí)行效率低,已不被普遍采用。
      另一種是流水線的動態(tài)調(diào)度法,即由流水線中的硬件邏輯動態(tài)調(diào)整相關(guān)的指令執(zhí)行順序以減少流水線相關(guān)的影響。文獻(xiàn)“A Efficient Algorithm for Exploiting Multiple ArithmeticUnits(IBM J.Research and Development,Vol.11,Jan.1967,pp.25-33.)”介紹了一種采用Tomasulo方法來處理指令相關(guān),可以較好的解決指令亂序執(zhí)行所引起的相關(guān)。動態(tài)調(diào)度算法和靜態(tài)調(diào)度算法相比,使處理器的執(zhí)行效率有了顯著的提高。因此先進(jìn)微處理器設(shè)計中普遍采用該方法來處理相關(guān)。但該方法的缺點由于指令亂序執(zhí)行的控制邏輯比較復(fù)雜,限制了該方法在面向精確異常處理的嵌入式處理器設(shè)計中的使用;同時,該方法浮點處理單元面積大,浮點處理單元面積為1.90mm2;關(guān)鍵路徑延遲時間長,關(guān)鍵路徑延遲時間為4ns,增加了設(shè)計成本。

      發(fā)明內(nèi)容
      為了克服現(xiàn)有技術(shù)浮點處理單元面積大、關(guān)鍵路徑延遲時間長的不足,本發(fā)明提供一種在浮點處理單元中面向精確異常的流水線調(diào)度方法。該方法實現(xiàn)了浮點指令面向精確異常的動態(tài)調(diào)度,同時降低了處理器的面積,使處理器的整體性能得到了提高。
      本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種浮點處理單元中面向精確異常的流水線調(diào)度方法,其特征在于,包括下述步驟1)在浮點譯碼單元設(shè)計精確異常預(yù)測邏輯,檢查是否發(fā)生數(shù)據(jù)相關(guān)、資源沖突、以及在譯碼級和寫回級異常發(fā)生的情況;2)如果預(yù)測產(chǎn)生異常,則同步流水線,保證該指令之前的指令執(zhí)行完畢,該指令之后的指令沒有發(fā)射,跳到步驟4);
      3)如果當(dāng)前指令不產(chǎn)生數(shù)據(jù)相關(guān)和控制相關(guān),并且當(dāng)前指令的指令單元空閑,則亂序發(fā)射該指令,并且亂序完成;否則停滯當(dāng)前指令發(fā)射至相關(guān)消除;4)順序執(zhí)行該指令,如果出現(xiàn)異常,響應(yīng)精確異常。
      本發(fā)明的有益效果是,由于采用了基于浮點精確異常預(yù)測的動態(tài)流水線調(diào)度方法,浮點指令可以在浮點處理單元的四個流水線中同時執(zhí)行,亂序結(jié)束。保證如果有異常產(chǎn)生,一定產(chǎn)生所需的精確異常。
      使用SPEC95中的浮點基準(zhǔn)程序?qū)ΜF(xiàn)有技術(shù)和本發(fā)明所實現(xiàn)的浮點處理單元進(jìn)行測試,結(jié)果顯示,采用本發(fā)明設(shè)計的浮點單元在實現(xiàn)精確異常的同時,浮點處理單元面積為1.72mm2,比現(xiàn)有技術(shù)降低0.18mm2,關(guān)鍵路徑為3.8ns,比現(xiàn)有技術(shù)提高了0.2ns,提高了處理器的性能。
      下面結(jié)合實施例對本發(fā)明進(jìn)一步說明。
      具體實施例方式
      在浮點處理單元中,存在四條彼此無關(guān)的流水線,乘加流水線,除法/平方根流水線,浮點存取流水線以及移動/類型轉(zhuǎn)換流水線。參見表1,四條彼此無關(guān)的流水線中每一條流水線的延遲各不相同。并且除了除法/平方根流水線和存取流水線之外,在沒有數(shù)據(jù)相關(guān)發(fā)生的情況下,可以每一個時鐘周期向乘加流水線和移動/類型轉(zhuǎn)換流水線發(fā)射一條指令。
      表1指令及其執(zhí)行延遲周期

      表1中標(biāo)記*的標(biāo)志表示為浮點處理單元完成此操作所需要的準(zhǔn)備時間。
      浮點處理單元中,譯碼控制邏輯檢查是否發(fā)生數(shù)據(jù)相關(guān)、資源沖突、以及在譯碼級和寫回級異常發(fā)生的情況。在沒有以上各種情況產(chǎn)生的情況下,主處理器可以連續(xù)發(fā)送指令。指令在四個流水線中同時執(zhí)行,亂序結(jié)束。如浮點加指令可以先被發(fā)射,緊接著浮點移動指令被發(fā)射。
      本發(fā)明的微處理器所支持的浮點異常類型如表2所示表2本發(fā)明的微處理器所支持的浮點異常種類

      在采用該方法實現(xiàn)中,對于每一個異常,都有一個異常使能位與之相對應(yīng),用來進(jìn)行必要的屏蔽工作。在所有的異常中,最可能發(fā)生是浮點不精確異常,幾乎每一條浮點算術(shù)運(yùn)算指令的結(jié)果都會進(jìn)行舍入并且產(chǎn)生非精確結(jié)果。因此,在大多數(shù)情況下,XX的對應(yīng)控制位應(yīng)該關(guān)閉。
      在所有異常中,VX和ZX可以在指令譯碼完成、操作數(shù)讀出后、運(yùn)算執(zhí)行之前能夠被判斷出。并且由于在寄存器堆中,每一個操作數(shù)都有屬于自身的三位標(biāo)志位來標(biāo)志操作數(shù)的特性。因此,在譯碼結(jié)束,并且操作數(shù)讀出后,可以立即判斷出所有的VX異常和ZX異常。
      對于上溢OX和下溢UX操作,其判斷過程相對而言比較復(fù)雜。在算術(shù)操作之前,檢查讀出的兩個操作數(shù)的指數(shù)對于當(dāng)前的有效操作而言,有沒有可能發(fā)生溢出。如果有,那么控制邏輯將使這條指令按順序結(jié)束,并且順序結(jié)束以后的指令。當(dāng)這條指令結(jié)束后,判斷是否真的有異常產(chǎn)生,如果預(yù)判斷是錯誤的,那么可以繼續(xù)亂序執(zhí)行和亂序結(jié)束指令;如果判斷正確,那么就等待進(jìn)入異常處理程序,同時,沖刷浮點處理單元的所有運(yùn)算單元和中間寄存器。例如如果兩個操作數(shù)的指數(shù)都是最大數(shù),并且當(dāng)前操作是有效加,那么必然會產(chǎn)生上溢。具體實現(xiàn)如下對于雙精度有效加法,判斷兩個操作數(shù)的指數(shù)中是否至少有一個是1023。如果是,則結(jié)果有可能發(fā)生上溢。這是因為當(dāng)一個操作數(shù)的指數(shù)是1023時,假如加法的結(jié)果大于等于2,則指數(shù)會成為1024,大于IEEE754規(guī)定的范圍,發(fā)生上溢。
      對于雙精度有效減法,判斷兩個操作數(shù)中大數(shù)的指數(shù)小于-970。如果是,那么有可能會產(chǎn)生下溢。情況如下1)兩個操作數(shù)指數(shù)相同時,當(dāng)兩個操作數(shù)的指數(shù)都是-971時,減法的結(jié)果會進(jìn)行前導(dǎo)零判斷,假如結(jié)果出了最低位之外都是0,那么指數(shù)需要減去52,那么最終的結(jié)果的指數(shù)是-1023,超出了IEEE754規(guī)定的范圍;2)如果兩個操作數(shù)的指數(shù)不同,那么最極端的情況是,大數(shù)的指數(shù)是-971,小數(shù)的指數(shù)是-972,并且大數(shù)的尾數(shù)是1.00...000,小數(shù)的尾數(shù)是1.111...111。則兩者相減的結(jié)果是0.000...001。規(guī)格化后,結(jié)果的指數(shù)為-1023,超出了IEEE754規(guī)定的范圍;對于雙精度乘法和加/減法而言,以上的判斷機(jī)制比較容易實現(xiàn)。但是對于雙精度乘加指令而言,由于存在一個加法源操作數(shù)與中間乘法結(jié)果的預(yù)測比較。因此,在譯碼結(jié)束,并且三個源操作數(shù)讀出后,很難直接通過上述方法進(jìn)行預(yù)測異常判斷。
      對于雙精度有效浮點乘加指令或者有效乘減指令,假設(shè)是D=A×B±C。改進(jìn)如下對于雙精度浮點乘加指令。首先預(yù)測A×B結(jié)果的指數(shù),在多數(shù)情況下,即exp(result_from_multi)=exp(A)+exp(B)+1。因為,A×B的結(jié)果在大多數(shù)情況下是大于等于2的。因此,按照雙精度浮點加法的預(yù)測方法,當(dāng)exp(result_from_multi)的值或exp(C)的值有一個是1023時,就有可能發(fā)生上溢。
      對于雙精度浮點乘減指令。首先預(yù)測A×B結(jié)果的指數(shù),在大多數(shù)情況下,即exp(result_from_multi)=exp(A)+exp(B)+1。然后判斷兩個操作數(shù)中大數(shù)的指數(shù)小于-970。如果是,那么有可能會產(chǎn)生下溢。
      由于乘加操作或者乘減操作可以通過操作數(shù)的預(yù)置而變化成為單純的乘操作或者加減操作。因此,可以將對乘法操作異常的預(yù)測、加減操作異常的預(yù)測與乘加操作異常的預(yù)測相結(jié)合以節(jié)省硬件邏輯。
      對于單精度操作而言,其判斷過程與上類似。不同之處在于單精度異常預(yù)測的范圍與雙精度不同。
      如果接收到load/store指令,主處理器將停止發(fā)射指令直到load/store指令結(jié)束執(zhí)行。這主要是因為load/store指令,尤其是load指令所需要花費(fèi)的執(zhí)行周期不僅僅是與微處理器本身有關(guān),還與外部總線的空閑以及目標(biāo)存儲器的空閑與否有關(guān),因此具有一個不確定的執(zhí)行周期。并且,當(dāng)總線交易發(fā)生錯誤的時候,也需要發(fā)出精確異常,因此,load/store后面的指令應(yīng)該暫停執(zhí)行直到指令執(zhí)行結(jié)束。
      本發(fā)明在我們設(shè)計完成的嵌入式處理器“龍騰R2”中,完成了該處理器浮點單元的設(shè)計。表3是對采用Tomasulo方法和本發(fā)明所實現(xiàn)的浮點處理單元進(jìn)行性能比較。其中,比較所使用的測試程序是基準(zhǔn)程序SPEC95中的浮點基準(zhǔn)程序。結(jié)果顯示,與Tomasulo方法相比較,采用本方法設(shè)計的浮點單元在實現(xiàn)精確異常的同時,浮點處理單元面積降低0.18mm2,關(guān)鍵路徑提高了0.2ns。
      表3采用兩種方法實現(xiàn)的浮點單元的性能比較

      權(quán)利要求
      1.一種浮點處理單元中面向精確異常的流水線調(diào)度方法,其特征在于,包括下述步驟1)在浮點譯碼單元設(shè)計精確異常預(yù)測邏輯,檢查是否發(fā)生數(shù)據(jù)相關(guān)、資源沖突、以及在譯碼級和寫回級異常發(fā)生的情況;2)如果預(yù)測產(chǎn)生異常,則同步流水線,保證該指令之前的指令執(zhí)行完畢,該指令之后的指令沒有發(fā)射,跳到步驟4);3)如果當(dāng)前指令不產(chǎn)生數(shù)據(jù)相關(guān)和控制相關(guān),并且當(dāng)前指令的指令單元空閑,則亂序發(fā)射該指令,并且亂序完成;否則停滯當(dāng)前指令發(fā)射至相關(guān)消除;4)順序執(zhí)行該指令,如果出現(xiàn)異常,響應(yīng)精確異常。
      全文摘要
      本發(fā)明公開了一種浮點處理單元中面向精確異常的流水線調(diào)度方法,包括下述步驟在浮點譯碼單元設(shè)計精確異常預(yù)測邏輯,檢查是否發(fā)生數(shù)據(jù)相關(guān)、資源沖突、以及在譯碼級和寫回級異常發(fā)生的情況;如果預(yù)測產(chǎn)生異常,則同步流水線,保證該指令之前的指令執(zhí)行完畢,該指令之后的指令沒有發(fā)射,跳到步驟4);如果當(dāng)前指令不產(chǎn)生數(shù)據(jù)相關(guān)和控制相關(guān),并且當(dāng)前指令的指令單元空閑,則亂序發(fā)射該指令,并且亂序完成;否則停滯當(dāng)前指令發(fā)射至相關(guān)消除;順序執(zhí)行該指令,如果出現(xiàn)異常,響應(yīng)精確異常。與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計的浮點單元在實現(xiàn)精確異常的同時,浮點處理單元面積降低0.18mm
      文檔編號G06F9/38GK1851640SQ20061004286
      公開日2006年10月25日 申請日期2006年5月25日 優(yōu)先權(quán)日2006年5月25日
      發(fā)明者高德遠(yuǎn), 樊曉椏, 張盛兵, 王黨輝, 安建鋒, 黃小平, 張萌 申請人:西北工業(yè)大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1