一種處理器及其處理任務(wù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及處理器技術(shù),尤其涉一種處理器及其處理任務(wù)的方法。
【背景技術(shù)】
[0002]在移動通信市場,存在著第二代(2G,2Generat1n)、第三代(3G,3Generat1n)、第四代(4G,4Generat1n)共存的局面,通信技術(shù)協(xié)議也在不斷的向前發(fā)展。面對如此多的通信制式和快速更新的協(xié)議版本,采用軟件定義無線電(SDR,Software Defined Rad1)技術(shù)實(shí)現(xiàn)基帶信號處理是一個(gè)好的發(fā)展方向。SDR技術(shù)采用的是數(shù)字信號處理器(DSP,Digital Signal Processor)軟基帶方案,相比傳統(tǒng)專用集成電路(ASIC,Applicat1nSpecific Integrated Circuit)實(shí)現(xiàn)方式,具有更高的靈活性和更快的產(chǎn)品推出速度。4G長期演進(jìn)(LTE,Long Term Evolut1n)以及后續(xù)的長期演進(jìn)升級版(LTE-A,Long TermEvolut1n -Advanced)技術(shù)都以正交頻分復(fù)用(0FDM,Orthogonal Frequency Divis1nMultiplexing)和多輸入多輸出(ΜΙΜ0,Multiple Input Multiple Output)作為主要技術(shù)特征,這些技術(shù)特征決定了所處理的基帶信號具有矩陣運(yùn)算較多的特點(diǎn)。所以采用具有矢量運(yùn)算功能的矢量DSP處理器實(shí)現(xiàn)LTE及LTE-A基帶信號處理是合適的?;诖?,如何提高矢量處理器的性能成為決定軟基帶芯片性能的關(guān)鍵。
[0003]以往,處理器性能的提升主要靠提高處理器主頻。但隨著處理器頻率越來越高,這種方法難以為繼,原因是頻率提高帶來的功耗和發(fā)熱代價(jià)太大并且處理器性能提升效果不明顯?,F(xiàn)在處理器朝著多核方向發(fā)展,通過在一個(gè)處理器內(nèi)集成多個(gè)處理器核,并令多個(gè)處理器核并行工作,在不提高處理器頻率的情況下,顯著地提高了處理器性能。Intel公司的多核桌面處理器和ARM公司的多核移動處理器的廣泛應(yīng)用,證明采用多核技術(shù)是提升處理器性能行之有效的方法。多核處理器最常見的并行方式是任務(wù)級并行。如圖1所示,單核處理只能串行執(zhí)行每個(gè)任務(wù),而多核處理器可以將沒有依賴關(guān)系的任務(wù)分配給不同的核,這樣帶來的性能提升顯而易見。這種并行方式并不適用前后有依賴關(guān)系的任務(wù),即后面任務(wù)的輸入是前面任務(wù)的輸出。對于有依賴關(guān)系的任務(wù),可以采用流水線并行的方式,即不同的任務(wù)分別交由不同的核處理,任務(wù)進(jìn)行流水操作。
[0004]具體到矢量處理器,對于某個(gè)任務(wù),矢量運(yùn)算并不是所有運(yùn)算的全部,因?yàn)樵谑噶窟\(yùn)算之前,需要一些參數(shù)計(jì)算。這些參數(shù)計(jì)算屬于標(biāo)量運(yùn)算,所以可以把某個(gè)任務(wù)分割為標(biāo)量運(yùn)算和矢量運(yùn)算兩部分。如果標(biāo)量運(yùn)算和矢量運(yùn)算能夠?qū)崿F(xiàn)流水線并行,則可以顯著提高矢量處理器的性能。當(dāng)前多核處理器多采用共享存儲器的方式實(shí)現(xiàn)核間通信,如果使用現(xiàn)有多核技術(shù)實(shí)現(xiàn)標(biāo)量運(yùn)算和矢量運(yùn)算并行,將參數(shù)存于共享存儲器上,則由于存儲器訪問速度和多核同步時(shí)間開銷的原因,任務(wù)切換需要花費(fèi)一定的時(shí)間,使得流水線并行帶來的益處被抵消掉一部分。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種處理器及其處理任務(wù)的方法,克服了多核處理器流水線并行任務(wù)切換時(shí)間開銷大的問題。
[0006]本發(fā)明實(shí)施例提供的處理器處理任務(wù)的方法包括:
[0007]標(biāo)量計(jì)算模塊執(zhí)行當(dāng)前任務(wù)的參數(shù)計(jì)算,并將計(jì)算得到的參數(shù)存儲至參數(shù)緩沖器(PBUF,Parameter Buffer)中;當(dāng)所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成后,執(zhí)行用于核間同步的第一指令或第二指令,并將所述第一指令或第二指令存儲至所述PBUF中;
[0008]矢量計(jì)算模塊從所述PBUF中讀取參數(shù),并將讀取到的參數(shù)存儲至影子(shadow)寄存器中;當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),在一個(gè)周期內(nèi)將所述shadow寄存器中所有被修改的參數(shù)存儲至工作(work)寄存器中;
[0009]矢量計(jì)算模塊根據(jù)所述work寄存器中的參數(shù)執(zhí)行當(dāng)前任務(wù)的矢量計(jì)算。
[0010]本發(fā)明實(shí)施例中,所述當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),在一個(gè)周期內(nèi)將所述shadow寄存器中所有被修改的參數(shù)存儲至work寄存器中,包括:
[0011]當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),且所述矢量計(jì)算模塊處于空閑狀態(tài)或執(zhí)行所述第三指令時(shí),在一個(gè)周期內(nèi)將所述shadow寄存器中所有被修改的參數(shù)存儲至work寄存器中。
[0012]本發(fā)明實(shí)施例中,所述方法還包括:
[0013]所述矢量計(jì)算模塊執(zhí)行所述當(dāng)前任務(wù)的矢量計(jì)算完成后,執(zhí)行第三指令,所述第三指令用于更新下一個(gè)任務(wù)的參數(shù)。
[0014]本發(fā)明實(shí)施例中,所述標(biāo)量計(jì)算模塊執(zhí)行的第一指令用于通知所述矢量計(jì)算模塊所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成;
[0015]所述第一指令攜有指示調(diào)用矢量計(jì)算模塊子程序的地址的指示信息。
[0016]本發(fā)明實(shí)施例中,所述標(biāo)量計(jì)算模塊執(zhí)行的第二指令用于通知所述矢量計(jì)算模塊所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成;
[0017]所述第二指令用于指示所述矢量計(jì)算模塊按照預(yù)設(shè)順序執(zhí)行程序。
[0018]本發(fā)明實(shí)施例中,所述方法還包括:
[0019]所述標(biāo)量計(jì)算模塊將所述第一指令或第二指令存儲至所述PBUF中之后,繼續(xù)計(jì)算下一個(gè)任務(wù)的參數(shù)。
[0020]本發(fā)明實(shí)施例提供的處理器包括:標(biāo)量計(jì)算模塊、矢量計(jì)算模塊、PBUF,所述矢量計(jì)算模塊包括:shadow寄存器、work寄存器;
[0021]所述標(biāo)量計(jì)算模塊,用于執(zhí)行當(dāng)前任務(wù)的參數(shù)計(jì)算,并將計(jì)算得到的參數(shù)存儲至所述PBUF中;當(dāng)所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成后,執(zhí)行用于核間同步的第一指令或第二指令,并將所述第一指令或第二指令存儲至所述PBUF中;
[0022]所述shadow寄存器,用于從所述PBUF中讀取參數(shù),并存儲讀取到的參數(shù);
[0023]所述work寄存器,用于當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),在一個(gè)周期內(nèi)存儲所述shadow寄存器中所有被修改的參數(shù);
[0024]所述矢量計(jì)算模塊,用于根據(jù)所述work寄存器中的參數(shù)執(zhí)行當(dāng)前任務(wù)的矢量計(jì)笪并ο
[0025]本發(fā)明實(shí)施例中,所述work寄存器,還用于當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),且所述矢量計(jì)算模塊處于空閑狀態(tài)或執(zhí)行第三指令時(shí),在一個(gè)周期內(nèi)存儲所述shadow寄存器中所有被修改的參數(shù)。
[0026]本發(fā)明實(shí)施例中,所述矢量計(jì)算模塊,還用于執(zhí)行所述當(dāng)前任務(wù)的矢量計(jì)算完成后,執(zhí)行第三指令,所述第三指令用于更新下一個(gè)任務(wù)的參數(shù)。
[0027]本發(fā)明實(shí)施例中,所述標(biāo)量計(jì)算模塊執(zhí)行的第一指令用于通知所述矢量計(jì)算模塊所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成;
[0028]所述第一指令攜有指示調(diào)用矢量計(jì)算模塊子程序的地址的指示信息。
[0029]本發(fā)明實(shí)施例中,所述標(biāo)量計(jì)算模塊執(zhí)行的第二指令用于通知所述矢量計(jì)算模塊所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成;
[0030]所述第二指令用于指示所述矢量計(jì)算模塊按照預(yù)設(shè)順序執(zhí)行程序。
[0031]本發(fā)明實(shí)施例中,所述標(biāo)量計(jì)算模塊,還用于將所述第一指令或第二指令存儲至所述PBUF中之后,繼續(xù)計(jì)算下一個(gè)任務(wù)的參數(shù)。
[0032]本發(fā)明實(shí)施例的技術(shù)方案中,標(biāo)量計(jì)算模塊執(zhí)行當(dāng)前任務(wù)的參數(shù)計(jì)算,并將計(jì)算得到的參數(shù)存儲至PBUF中;當(dāng)所述當(dāng)前任務(wù)的參數(shù)計(jì)算完成后,執(zhí)行用于核間同步的第一指令或第二指令,并將所述第一指令或第二指令存儲至所述PBUF中;矢量計(jì)算模塊從所述PBUF中讀取參數(shù),并將讀取到的參數(shù)存儲至shadow寄存器中;當(dāng)從所述PBUF中讀取到所述第一指令或第二指令時(shí),在一個(gè)周期內(nèi)將所述shadow寄存器中所有被修改的參數(shù)存儲至work寄存器中;矢量計(jì)算模塊根據(jù)所述work寄存器中的參數(shù)執(zhí)行當(dāng)前任務(wù)的矢量計(jì)算。本發(fā)明實(shí)施例的處理器使用標(biāo)量計(jì)算模塊和矢量計(jì)算模塊分別執(zhí)行每個(gè)任務(wù)的標(biāo)量處理部分和矢量處理部分,并利用PBUF作為標(biāo)量處理輸出和矢量處理輸入的參數(shù)緩存器,可以使標(biāo)量處理程序和矢量處理程序并行執(zhí)行,顯著提高了處理器性能。此外,由于shadow寄存器到work寄存器的一次性更新策略,矢量計(jì)算模塊的任務(wù)切換幾乎沒有額外的時(shí)間開銷。矢量計(jì)算模塊兼具標(biāo)量運(yùn)算功能,即標(biāo)量核是矢量核的功能子集,而且標(biāo)量核和矢量核采用兼容的指令集,因而可以靈活地進(jìn)行標(biāo)量任務(wù)和矢量任務(wù)的切割以及最大程度程序優(yōu)化。標(biāo)量計(jì)算模塊負(fù)責(zé)任務(wù)控制可以對矢量計(jì)算模塊進(jìn)行靈活調(diào)度,控制矢量計(jì)算模塊的執(zhí)行軌跡,方便編程。
【附圖說明】
[0033]圖1為多核并行實(shí)現(xiàn)方式的示意圖;
[0034]圖2為本發(fā)明實(shí)施例的處理器并行和同步示意圖;
[0035]圖3為本發(fā)明實(shí)施例一的處理器處理任務(wù)的方法的流程示意圖;
[0036]圖4為本發(fā)明實(shí)施例的處理器的結(jié)構(gòu)組成示意圖;
[0037]圖5為本發(fā)明實(shí)施例的處理器的結(jié)構(gòu)框圖;
[0038]圖6為本發(fā)明實(shí)施例的雙核核間通信示意圖;
[0039]圖7為本發(fā)明實(shí)施例的PBUF數(shù)據(jù)格式示意圖;
[0040]圖8為本發(fā)明實(shí)施例二的處理器處理任務(wù)的方法的流程示意圖;
[0041]圖9