專利名稱:一條指令完成一次蝶形運算的微處理器實現(xiàn)方法
技術領域:
本發(fā)明涉及計算機技術領域,特別涉及一種一條指令完成一次蝶形運 算的微處理器實現(xiàn)方法。
背景技術:
微處理器是一個集成在一片上的半導體集成電路,包括對一系列算術
邏輯操作的控制和執(zhí)行。微處理器大致可以分為兩類通用微處理器和專 用微處理器。通用微處理器可以使用戶通過編程的方法實現(xiàn)廣泛的功能, 因此常在個人電腦(PC)上用作中央處理器(CPU)。與之對應的是,專 用處理器只用于特定的環(huán)境,因為知道處理器的主要功能,設計者就可以 使用需求來建立處理器結(jié)構(gòu),使得在性能上專用處理器的專用單元可以比 通用處理器對應單元顯著增強。
數(shù)字信號處理就是專用處理器的一個典型應用。數(shù)字信號處理包括信 號獲取,信號傳輸,信號處理,使用大量技術的一種專用微處理器即數(shù)字 信號處理器(DSP)。數(shù)字信號處理需要處理大量數(shù)據(jù),為了適應此特征, 數(shù)字信號處理器優(yōu)化了密集運算和存儲器訪問的效率。比如,在快速傅里 葉變換(FFTs)和數(shù)字濾波器的實現(xiàn)中包括大量重復操作比如乘加和位移, 數(shù)字信號處理器提供了特別的功能以適應這些重復的操作,使得在實時應 用比如圖像和聲音處理中其性能比起通用處理器有很大的提升。
DSP在目前的電子產(chǎn)品中有廣泛的應用,比如數(shù)字電話,視頻會議設 備,復雜自動化系統(tǒng)等??梢灶A見的是,DSP在將來會有更多的數(shù)字系統(tǒng) 中能有更廣泛的應用。
目前,微處理器設計者正在努力開發(fā)指令并行度以增加微處理器的性 能。應用于現(xiàn)代處理器中的一種并行結(jié)構(gòu),具有取指指令包和多個執(zhí)行指 令包以及多個功能單元,參見超長指令字(VLIW)結(jié)構(gòu)。設計者也使用一些通用于微處理器的方法成功提升了 DSP的性能。包 括,增加時鐘速度,在電路結(jié)構(gòu)中消除數(shù)據(jù)處理的瓶頸,在處理器中增加 更多的執(zhí)行單元,增加編譯器的調(diào)度能力以產(chǎn)生更有效的執(zhí)行代碼。
現(xiàn)有技術存在的缺點是,當前微處理器的性能還有待提升。
發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決上述技術缺陷之一 ,特別是解決現(xiàn)有微處 理器性能不足的問題。
為達到上述目的,本發(fā)明一方面提出一種一條指令完成一次蝶形運算 的微處理器實現(xiàn)方法,包括以下步驟解碼級解析指令,并生成操作碼和 旁路控制信號;根據(jù)指令從源寄存器中獲取第一操作數(shù)和第二操作數(shù);根 據(jù)所述旁路控制信號選擇進行一級操作或者兩級操作,并根據(jù)生成的所述 操作碼進行蝶形運算。
在本發(fā)明的一個實施例中,如果所述指令為BTFDTPR.2指令,則所述 生成選擇兩級操作的旁路控制信號。
在本發(fā)明的一個實施例中,所述兩級操作包括將第一操作數(shù)和第二 操作數(shù)相乘的第一執(zhí)行級,且所述第一執(zhí)行級將相乘的乘積結(jié)果送入第二 執(zhí)行級;和,將所述乘積結(jié)果相加和相減,并將相加和相減結(jié)果移位的第 二執(zhí)行級,且所述第二執(zhí)行級將移位結(jié)果放入目標寄存器中的相應位置。
在本發(fā)明的 一 個實施例中,所述將第 一操作數(shù)和第二操作數(shù)相乘包括 將所述第一操作數(shù)和第二操作數(shù)的高16位和低16位分別相乘,并將兩個 32位的乘積結(jié)果送入流水線寄存器。
在本發(fā)明的一個實施例中,所述將所述乘積結(jié)果相加和相減,并將相 加和相減結(jié)果移位包括將兩個乘積結(jié)果分別相加和相減,存入臨時寄存 器;將相加和相減的結(jié)果帶補償右移16位,并將兩個移位后的16位分別 放入目標寄存器的高16位和低16位。
在本發(fā)明的一個實施例中,所述微處理器包括一個指令獲取單元、指 令分發(fā)單元、六個執(zhí)行單元XA, XM, XD, YA, YM, YD、和三組通用 寄存器堆X, Y, G。
在本發(fā)明的 一個實施例中,各個執(zhí)行單元與寄存器的連接是完全對稱的。
在本發(fā)明的一個實施例中,所述執(zhí)行單元XM包括乘法單元、多路選 擇器MUX、加法單元,所述乘法單元,用于根據(jù)所述操作碼將第一操作數(shù) 和第二操作數(shù)相乘;所述MUX,用于根據(jù)所述旁路控制信號將所述第一操 作數(shù)和第二操作數(shù),或者所述乘法單元的乘積結(jié)果提供給所述加法單元; 所述加法單元,根據(jù)所迷操作碼或者操作碼寄存器中暫存的操作碼將所述 乘積結(jié)果相加和相減,并將相加和相減結(jié)果移位。
在本發(fā)明的一個實施例中,所述加法單元與操作碼選擇器相連,所迷 操作碼選擇器根據(jù)所述旁路控制信號選擇所述操作碼或者操作碼寄存器中 暫存的操作碼。
通過本發(fā)明能夠?qū)崿F(xiàn)一條指令完成一次蝶形單元運算的功能,從而能 夠有效地提高處理器的性能。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面 的描述中變得明顯,或通過本發(fā)明的實踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描 述中將變得明顯和容易理解,其中
圖1為本發(fā)明實施例的處理器結(jié)構(gòu)圖2為本發(fā)明實施例中執(zhí)行單元與寄存器的連接結(jié)構(gòu)圖3為本發(fā)明實施例的XM單元功能框圖4所示,為本發(fā)明實施例的BTFDTPR.2指令執(zhí)行過程;
圖5為本發(fā)明實施例的處理器流水級;
圖6為本發(fā)明處理器實現(xiàn)了一條指令完成一次蝶形單元運算的流程圖。
具體實施例方式
下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其 能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
如圖1所示,為本發(fā)明實施例的處理器結(jié)構(gòu)圖。該處理器是一個超長
指令字(VLIW)結(jié)構(gòu)的數(shù)字信號處理器(DSP)。需要說明的是,圖1只 顯示了處理器中與理解此發(fā)明相關的部分,其他部分已為本領域普通技術 人員所公知,在此不再贅述。圖1所示處理器實現(xiàn)當前發(fā)明的細節(jié)下面將 詳細進行描述。
如圖l所示,處理器包含一個指令獲取單元(Fetch)、指令分發(fā)單元 (Dispatch)、和六個執(zhí)行單元(XA, XM, XD, YA, YM, YD)以及X, Y, G三組通用寄存器堆,每個功能單元由指令控制訪問X或者Y,每個 執(zhí)行單元同時可訪問G寄存器堆。處理器系統(tǒng)包括處理器內(nèi)核(CPU), 數(shù)據(jù)RAM,數(shù)據(jù)緩存(cache),程序RAM,程序緩存(cache)以及管理 RAM和緩存的MMU。對于緩存和RAM,可以編程選擇其有效或者無效, 其與此發(fā)明的關鍵無關。當此處理器執(zhí)行處理操作的時候,有更多的存儲 器或者外設需要連接,比如,外部RAM,只讀存儲器(ROM),磁盤, 總線,DMA控制器等。
各個執(zhí)行單元與寄存器的連接是完全對稱的,如圖2所示,為本發(fā)明
實施例中執(zhí)行單元與寄存器的連接結(jié)構(gòu)圖。其中,各個功能單元分別有一 組接口與G寄存器堆相連,同時,每個功能單元還有一組接口由多路選擇 器選擇訪問X寄存器堆或者Y寄存器堆,在每個指令周期,每個功能單元 都能訪問X寄存器堆和G寄存器堆,訪問或者Y寄存器堆和G寄存器堆。 功能單元訪問X寄存器堆或者Y寄存器堆由指令中的某一位控制。
處理器的各個功能單元用來執(zhí)行特定的指令,功能單元可分為兩部分 解碼和執(zhí)行,解碼在一個周期完成,執(zhí)行需要花費一到多個周期不等。
以下就對各個功能單元XA、 XM、 XD以及XLSU的功能進行簡單介紹。
其中,XA單元是處理器中完成算術邏輯運算以及移位運算的單元。 XA單元中共有兩級級流水線解碼、執(zhí)行。解碼階段的功能是接受指令、 并根據(jù)指令產(chǎn)生其余各部分的控制碼。在解碼階段開始的時鐘上升沿,指
令分發(fā)單元將需要在XA單元執(zhí)行的指令寫入指令寄存器A—IR,然后解碼 邏輯根據(jù)指令寄存器(a IR)中的內(nèi)容產(chǎn)生各部分的控制碼。執(zhí)行階段接受兩個操作數(shù),然后根據(jù)其控制代碼對兩個操作數(shù)進行相應的運算,并在 執(zhí)行階段結(jié)束時的時鐘上升沿將運算結(jié)果寫入目標寄存器。
其中,XM單元是處理器中完成乘法運算的單元,可以完成32位乘法、 16位乘法、8位乘法等運算,以及部分算術邏輯:操作和位4喿作。XM單元 共分為解碼單元、流水線控制旁路單元,乘法運算單元、算術邏輯單元、 目標寄存器寫使能信號產(chǎn)生單元等部分。XM單元中實現(xiàn)乘法功能需要三 級流水線解碼,乘法執(zhí)行一級和乘法執(zhí)行二級。其中乘法執(zhí)行一級采用 乘法單元實現(xiàn),乘法執(zhí)行二級采用加法單元來實現(xiàn)。XM單元中實現(xiàn)算術 邏輯操作以及位搡作需要兩級流水線解碼,執(zhí)行。執(zhí)行不同的指令采用 不同的流水線結(jié)構(gòu),流水線控制旁路單元通過解碼單元產(chǎn)生的旁路信號 (bypass)進行控制。解碼階段的功能是接受指令、并根據(jù)指令產(chǎn)生其余 各部分的控制碼。在解碼階段開始的時鐘上升沿,需要在XM單元執(zhí)行的 指令被寫入指令寄存器(M一IR),然后解碼邏輯根據(jù)指令寄存器(M一IR) 中的內(nèi)容產(chǎn)生各部分的控制碼。
其中,XD單元的主要功能是實現(xiàn)存儲器的存取以及實現(xiàn)程序的跳轉(zhuǎn), 同時它也可以完成部分算術邏輯運算。XD單元共分為解碼單元、操作數(shù)選 擇單元、ALU執(zhí)行單元和目標寄存器寫使能信號產(chǎn)生單元等四大部分。XD 單元中共有兩級流水線解碼、執(zhí)行。解碼階段的功能是接受指令,并根 據(jù)指令產(chǎn)生其余各部分的控制碼。在解碼階段開始的時鐘上升沿,指令分
發(fā)單元將需要在XD單元執(zhí)行的指令寫入指令寄存器(D_IR),然后解碼 邏輯根據(jù)指令寄存器(D—IR)中的內(nèi)容產(chǎn)生各部分的控制碼。執(zhí)行階段接 受兩個操作數(shù),然后根據(jù)其控制代碼對兩個操作數(shù)進行相應的運算,并在 執(zhí)行階段結(jié)束時的時鐘上升沿將運算結(jié)果寫入目標寄存器。XD單元中執(zhí)行 存儲器操作的是XLSU單元,XLSU分4級流水線進行,El為地址產(chǎn)生級, E2為地址發(fā)送級,E3為等待L1D Cache處理級,E4為獲取數(shù)據(jù)和寄存器 回寫或存儲器寫入級。XLSU根據(jù)D單元El級組合邏輯輸出存儲器訪問使 能信號和存儲器訪問模式信號等控制信號控制存儲器訪問。
由于此發(fā)明涉及乘法:操作,所以在M單元中執(zhí)行。
如圖3所示,為本發(fā)明實施例的XM單元功能框圖。M單元獲取指令 及指令模式后,開始解碼,解碼階段的功能是接受指令,并根據(jù)指令產(chǎn)生其余各部分的控制碼。其中,不同的指令在M單元中使用不同的流水線結(jié) 構(gòu),如果指令要經(jīng)過乘加兩次運算,則用兩級流水線完成,使旁路控制信 號(bypass)無效,但若只需要進行乘法運算,則執(zhí)行1級完成以后將結(jié) 果寫入目標寄存器,使能旁路控制信號。在本發(fā)明的實施例中,所述的 BTFDTPR.2指令需要兩級執(zhí)行級完成。
如圖4所示,為本發(fā)明實施例的BTFDTPR.2指令執(zhí)行過程。解碼單元 將指令解碼后送入后面的流水級,兩個操作數(shù)選擇單元(未示出)選擇各
自的操作數(shù),即操作數(shù)1和操作數(shù)2。在這條指令中,將這兩個源操作數(shù) 分別存放于兩個32位寄存器,在執(zhí)行一級(此級有四個乘法器)中,分別 將兩個操作數(shù)的高16位和低16位分別相乘,并將乘積(兩個32位)送入 到流水線寄存器中;在執(zhí)行二級中,將32位的乘法結(jié)果分別相加和相減, 結(jié)果帶補償右移16位(其中高位添0),取兩個移位后的16位分別放入 目標寄存器的高16位和低16位(將加法結(jié)果放入高16位,減法結(jié)果放入 低16位)。
處理器采用超長指令字(VLIW)結(jié)構(gòu),每個周期能發(fā)射一條到六條指 令不等,因此每個執(zhí)行包長度并不固定。在程序中,8丁?0???11.2指令要兩 個執(zhí)行級才能完成,指令執(zhí)行結(jié)杲必須要在其兩個執(zhí)行包以后才能使用, 如圖5A, BTFDTPR.2指令在E2級執(zhí)行完成并在其后的上升沿寫入結(jié)果到 目標寄存器,此時El和DC兩級的執(zhí)行包已經(jīng)讀取操作數(shù),DP及以后的 執(zhí)行包可以使用BTFDTPR.2指令的結(jié)果。
本發(fā)明處理器執(zhí)行BTFDTPR.2指令,BTFDTPR.2指令將兩個源操作 數(shù)的高低字段分別相乘,將乘積相加和相減,補償移位后存入目標寄存器, 完成一次蝶形運算。
在當前發(fā)明的實現(xiàn)中,處理器的指令有16位和32位兩種長度,六個 功能單元,每周期最多發(fā)射六條指令。取指令和指令分發(fā)兩個單元共有五 級流水線,其中取值單元有程序地址產(chǎn)生(PCG),程序地址發(fā)送(PCS), 指令有效性判斷(PWT),指令獲取擴展(FPR)四級流水,分發(fā)單元 (DISPATCH) —級流水,分發(fā)后進入執(zhí)行單元,處理器流水級如圖5A。 取指包包含多個指令字。執(zhí)行包的指令可以被多個功能單元并行執(zhí)行。在 處理器中有取指包和執(zhí)行包兩種指令包,取指包具有固定長度,執(zhí)行包包含一條或多條可以在一個處理器周期內(nèi)并行執(zhí)行的指令,執(zhí)行包可能跨越 兩個取指包。分發(fā)單元以后,指令進入各個功能單元,功能單元第一級為 解碼級,解碼源操作數(shù)地址目標操作數(shù)地址及執(zhí)行級各級所需控制信號等,
BTFDTPR.2指令在M單元執(zhí)行。
此處理器實現(xiàn)了一條指令完成一次蝶形單元運算的功能。此功能包括 以下幾步,如圖6所示
步驟S6(M,取源操作數(shù)(32位),并將第一源操作數(shù)的高16位和第 二源操作數(shù)的高16位相乘,將第一源操作數(shù)的低16位和第二源操作數(shù)的 低16位相乘。
步驟S602,將乘法結(jié)果分別相加和相減,存入臨時寄存器。 步驟S603,將加法結(jié)果帶補償右移15位后存入目標寄存器高16位, 將減法結(jié)果帶補償右移15位后存入目標寄存器低16位。在本發(fā)明實施例 的XM單元中,共有三個流水級,分別是解碼級(DC),執(zhí)行1級(EX1) 和執(zhí)行2級(EX2),其中,執(zhí)行1級實現(xiàn)兩個乘法操作,執(zhí)行2級實現(xiàn) 加減法和移位操作。
通過本發(fā)明能夠?qū)崿F(xiàn)一條指令完成一次蝶形單元運算的功能,從而能 夠有效地提高處理器的性能。兩點離散傅里葉變換運算稱為蝶形運算,而 整個快速傅里葉變換就是由若干級迭代的蝶形運算組成, 一次蝶形運算將 兩操作數(shù)與系數(shù)相乘的結(jié)果相加和相減。在音視頻編解碼碼函數(shù)的離散余 弦變換中,常用到四個操作數(shù)分別相乘,將結(jié)果相加相減再移位的表達式。 本發(fā)明正是在VLIW架構(gòu)下,通過適當?shù)臄?shù)學變形,實現(xiàn)單條指令完成一 次上述功能的運算,從而為常用運算增加硬件支持,提高處理器面向特定 應用的處理性能。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領域的普通技術人員 而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例 進行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等 同限定。
權(quán)利要求
1、一種一條指令完成一次蝶形運算的微處理器實現(xiàn)方法,其特征在于,包括以下步驟解碼級解析指令,并生成操作碼和旁路控制信號;根據(jù)指令從源寄存器中獲取第一操作數(shù)和第二操作數(shù);根據(jù)所述旁路控制信號選擇進行一級操作或者兩級操作,并根據(jù)生成的所述操作碼進行蝶形運算。
2、 如權(quán)利要求1所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,如果所述指令為BTFDTPR.2指令,則所述生成選擇兩級 操作的旁路控制信號。
3、 如權(quán)利要求2所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述兩級操作包括將第一操作數(shù)和第二操作數(shù)相乘的第一執(zhí)行級,且所述第一執(zhí)行級將 相乘的乘積結(jié)果送入第二執(zhí)行級;和,將所述乘積結(jié)果相加和相減,并將相加和相減結(jié)果移位的第二執(zhí) 行級,且所述第二執(zhí)行級將移位結(jié)果放入目標寄存器中的相應位置。
4、 如權(quán)利要求3所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述將第一操作數(shù)和第二操作數(shù)相乘包括將所述第一操作數(shù)和第二操作數(shù)的高16位和低16位分別相乘,并將 兩個32位的乘積結(jié)果送入流水線寄存器。
5、 如權(quán)利要求4所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述將所述乘積結(jié)果相加和相減,并將相加和相減結(jié)果 移位包括將兩個乘積結(jié)果分別相加和相減,存入臨時寄存器; 將相加和相減的結(jié)果帶補償右移16位,并將兩個移位后的16位分別 放入目標寄存器的高16位和低16位。
6、 如權(quán)利要求1所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述微處理器包括一個指令獲取單元、指令分發(fā)單元、六個執(zhí)行單元XA, XM, XD, YA, YM, YD、和三組通用寄存器堆X, Y, G。
7、 如權(quán)利要求6所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,各個執(zhí)行單元與寄存器的連接是完全對稱的。
8、 如權(quán)利要求6所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述執(zhí)行單元XM包括乘法單元、多路選擇器MUX、加 法單元,所述乘法單元,用于根據(jù)所述操作碼將第一操作數(shù)和第二操作數(shù)相乘; 所述MUX,用于根據(jù)所述旁路控制信號將所述第一操作數(shù)和第二操作數(shù),或者所述乘法單元的乘積結(jié)果提供給所述加法單元;所述加法單元,根據(jù)所述操作碼或者操作碼寄存器中暫存的操作碼將所述乘積結(jié)果相加和相減,并將相加和相減結(jié)果移位。
9、 如權(quán)利要求8所述的一條指令完成一次蝶形運算的微處理器實現(xiàn)方 法,其特征在于,所述加法單元與操作碼選擇器相連,所述操作碼選擇器 根據(jù)所述旁路控制信號選擇所述操作碼或者操作碼寄存器中暫存的操作 碼。
全文摘要
本發(fā)明提出一種一條指令完成一次蝶形運算的微處理器實現(xiàn)方法,包括以下步驟解碼級解析指令,并生成操作碼和旁路控制信號;根據(jù)指令從源寄存器中獲取第一操作數(shù)和第二操作數(shù);根據(jù)所述旁路控制信號選擇進行一級操作或者兩級操作,并根據(jù)生成的所述操作碼進行蝶形運算。通過本發(fā)明能夠?qū)崿F(xiàn)一條指令完成一次蝶形單元運算的功能,從而能夠有效地提高處理器的性能。
文檔編號G06F9/302GK101615113SQ20091009020
公開日2009年12月30日 申請日期2009年7月31日 優(yōu)先權(quán)日2009年7月31日
發(fā)明者虎 何, 源 劉, 鉦 沈 申請人:清華大學