據(jù)的大小,單位為字,當(dāng)完成BCNT個數(shù)據(jù)的傳輸后,開始進(jìn)行下一段數(shù)據(jù)的傳輸,此時對循環(huán)分段模式BMODE進(jìn)行一次循環(huán)右移;
[0028]循環(huán)步長參數(shù)BSTEP表示下一段數(shù)據(jù)傳輸時,BMODE需要循環(huán)右移的長度;
[0029]循環(huán)次數(shù)BSHIFT表示最多對循環(huán)分段模式參數(shù)BMODE進(jìn)行循環(huán)右移的次數(shù),當(dāng)BMODE被循環(huán)右移BSHIFT次后,BMODE重載其初始值。
[0030]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:本發(fā)明的用于GPDSP的采用從機(jī)計數(shù)的多核DMA分段數(shù)據(jù)傳輸方法,適用于多核GPDSP核內(nèi)存儲空間和核外存儲空間之間的數(shù)據(jù)交換,其能有效感知應(yīng)用程序訪存特性,減輕片上網(wǎng)絡(luò)負(fù)載,同時提高了 DDR3 SDRAM訪存效率。本發(fā)明具有原理簡單、操作方便、可靈活配置等優(yōu)點,該傳輸方法通過一次DMA傳輸事務(wù)將核外存儲空間的數(shù)據(jù)搬移至指定的一個或多個內(nèi)核的存儲空間,各參與DMA自行計數(shù)確認(rèn)數(shù)據(jù)傳輸完成。多核DMA分段數(shù)據(jù)傳輸能有效降低片上網(wǎng)絡(luò)的負(fù)載,顯著提升DDR3SDRAM的行命中率,最終能減輕片上網(wǎng)絡(luò)的擁塞和核外存儲空間的訪問請求量,提高整個芯片的數(shù)據(jù)傳輸速率。
【附圖說明】
[0031]圖1是本發(fā)明在具體應(yīng)用實例中GPDSP的體系結(jié)構(gòu)示意圖。
[0032]圖2是本發(fā)明在具體應(yīng)用實例中DMA在GPDSP計算內(nèi)核內(nèi)的位置示意圖。
[0033]圖3是本發(fā)明在具體應(yīng)用實例中DMA分段數(shù)據(jù)傳輸參數(shù)字示意圖。
[0034]圖4是本發(fā)明在具體應(yīng)用實例中循環(huán)分段模式參數(shù)BMODE變化過程示意圖。
[0035]圖5是本發(fā)明方法在具體應(yīng)用實例中的流程示意圖。
[0036]圖6是本發(fā)明在具體應(yīng)用實例中傳輸數(shù)據(jù)的計數(shù)過程示意圖。
[0037]圖7是本發(fā)明在具體應(yīng)用實例中具體數(shù)據(jù)傳輸例的示意圖。
【具體實施方式】
[0038]以下將結(jié)合說明書附圖和具體實施例對本發(fā)明做進(jìn)一步詳細(xì)說明。
[0039]如圖1所示,為本發(fā)明方法在一個具體應(yīng)用實例中的GPDSP體系結(jié)構(gòu)示意圖。該多核GPDSP處理器由DSP節(jié)點、片上網(wǎng)絡(luò)和核外存儲部件DDR3 SDRAM組成。其中每個DSP節(jié)點包含一個DSP內(nèi)核,片上網(wǎng)絡(luò)實現(xiàn)各DSP節(jié)點之間以及DSP節(jié)點與核外存儲部件之間的數(shù)據(jù)通信。如圖2所示,為本實施例中DMA在GPDSP計算內(nèi)核中的位置示意圖。DMA在DSP內(nèi)核中與外設(shè)配置總線(PBUS),向量存儲(Vector Memory, VM)和標(biāo)量存儲(ScalarMemory, SM)等部件相連。其中,標(biāo)量處理部件SPU通過外設(shè)配置總線PBUS給DMA部件配置傳輸參數(shù),標(biāo)量存儲部件SM和向量存儲部件AM是DSP核內(nèi)存儲部件,它們通過DMA部件完成與核外存儲部件DDR3 SDRAM的數(shù)據(jù)交換。
[0040]本發(fā)明的用于GPDSP的采用從機(jī)計數(shù)的多核DMA分段數(shù)據(jù)傳輸方法,它是在傳統(tǒng)DMA技術(shù)的基礎(chǔ)上實現(xiàn)的,該方法通過一次DMA傳輸將GPDSP核外存儲空間的數(shù)據(jù)以分段方式搬移至一個或多個內(nèi)核的核內(nèi)存儲空間,各參與DMA自行計數(shù)確認(rèn)數(shù)據(jù)傳輸完成,以確認(rèn)數(shù)據(jù)傳輸完畢。
[0041]本發(fā)明分段數(shù)據(jù)傳輸方法的過程為:
[0042]主機(jī)DMA啟動,依據(jù)配置參數(shù)生成分段數(shù)據(jù)傳輸請求;DMA每次發(fā)出分段數(shù)據(jù)傳輸?shù)淖x請求中攜帶了讀數(shù)據(jù)返回數(shù)據(jù)選擇向量RetVector,所述讀數(shù)據(jù)返回數(shù)據(jù)選擇向量RetVector指示返回數(shù)據(jù)的目標(biāo)DSP內(nèi)核;
[0043]核外存儲部件DDR3 SDRAM返回的數(shù)據(jù)攜帶了對應(yīng)讀請求的讀數(shù)據(jù)返回數(shù)據(jù)選擇向量RetVector,片上網(wǎng)絡(luò)對該信號域進(jìn)行解釋,根據(jù)其有效位向相應(yīng)的DSP內(nèi)核發(fā)送數(shù)據(jù);
[0044]DSP內(nèi)核的DMA接收到返回數(shù)據(jù)后,將數(shù)據(jù)轉(zhuǎn)發(fā)至核內(nèi)存儲部件AM或SM,同時進(jìn)行計數(shù);
[0045]當(dāng)計數(shù)完成后,置位事務(wù)完成標(biāo)識寄存器。
[0046]在上述過程中,每個參與分段數(shù)據(jù)傳輸?shù)膹臋C(jī)DMA都設(shè)置了一個從機(jī)計數(shù)寄存器(BSCR),該寄存器描述了每個DMA會接收到的數(shù)據(jù)個數(shù)。在主機(jī)DMA啟動后,依據(jù)配置參數(shù)生成分段數(shù)據(jù)傳輸請求,各參與的DMA自行計數(shù)確認(rèn)數(shù)據(jù)傳輸完成。
[0047]如圖5所示,是本發(fā)明方法在具體應(yīng)用實例中流程示意圖。
[0048]S1:標(biāo)量處理部件SPU通過外設(shè)配置總線PBUS將傳輸參數(shù)配置給主機(jī)DMA部件。
[0049]S2:主機(jī)DMA部件啟動后,讀出相應(yīng)的傳輸參數(shù)并判斷本次傳輸是否為分段數(shù)據(jù)傳輸模式。如果不是分段數(shù)據(jù)傳輸模式,則按照其它傳輸模式進(jìn)行處理。如果是分段數(shù)據(jù)傳輸模式,生成并發(fā)出讀請求。
[0050]本發(fā)明在傳統(tǒng)DMA參數(shù)的基礎(chǔ)上增加了傳輸模式(TMODE)、循環(huán)分段模式(BMODE)、分段粒度(BCNT)、循環(huán)步長(BSTEP)和循環(huán)次數(shù)(BSHIFT)等配置參數(shù),這些配置參數(shù)描述了分段數(shù)據(jù)傳輸?shù)倪^程。因此,上述讀請求中除了包含普通傳輸模式所需的讀地址、讀返回地址等信息之外,還需要根據(jù)BCNT、BMODE, BSTEP和BSHIFT生成12位的讀數(shù)據(jù)返回選擇向量RetVector。該讀數(shù)據(jù)返回選擇向量RetVector用來指示返回數(shù)據(jù)的目標(biāo)DSP內(nèi)核,讀數(shù)據(jù)返回選擇向量RetVector的值始終等于BMODE的值。
[0051]在上述配置參數(shù)中:
[0052]TMODE表示DMA傳輸模式,當(dāng)值為“2’blO”時,DMA進(jìn)行分段數(shù)據(jù)傳輸,表示DMA從核外存儲部件讀出的數(shù)據(jù)會返回給單個或多個DSP內(nèi)核。
[0053]循環(huán)分段模式參數(shù)BMODE共有η位,每一位對應(yīng)某個內(nèi)核的DMA,值為“ I ”的位表示數(shù)據(jù)需返回給該DMA。
[0054]分段粒度參數(shù)BCNT表示每段數(shù)據(jù)的大小,單位為字,當(dāng)完成BCNT個數(shù)據(jù)的傳輸后,開始進(jìn)行下一段數(shù)據(jù)的傳輸,此時需要對循環(huán)分段模式BMODE進(jìn)行一次循環(huán)右移。
[0055]循環(huán)步長參數(shù)BSTEP表示下一段數(shù)據(jù)傳輸時,BMODE需要循環(huán)右移的長度。
[0056]循環(huán)次數(shù)BSHIFT表示最多對循環(huán)分段模式參數(shù)BMODE進(jìn)行循環(huán)右移的次數(shù),當(dāng)BMODE被循環(huán)右移BSHIFT次后,BMODE重載其初始值。
[0057]S3:讀請求發(fā)送給片上網(wǎng)絡(luò)并到達(dá)核外存儲部件;核外存儲部件返回數(shù)據(jù),添加分段傳輸標(biāo)識;讀返回數(shù)據(jù)發(fā)送至片上網(wǎng)絡(luò),判斷分段傳輸標(biāo)識,當(dāng)為否時則按其它傳輸模式處理;當(dāng)為是時,依據(jù)讀數(shù)據(jù)返回選擇向量RetVector派發(fā)數(shù)據(jù);
[0058]S4:數(shù)據(jù)到達(dá)目標(biāo)DMA后(主機(jī)DMA/從機(jī)DMA),發(fā)往核內(nèi)存儲部件,同時DMA進(jìn)行計數(shù);在計數(shù)完成后,傳輸結(jié)束,置位事務(wù)結(jié)束標(biāo)識,根據(jù)是否中斷使能發(fā)出中斷信號;若計數(shù)未完成,則繼續(xù)等待接收后續(xù)數(shù)據(jù)。
[0059]如圖3所示,是本發(fā)明在具體應(yīng)用實例中DMA分段傳輸參數(shù)字示意圖。DMA分段傳輸參數(shù)字包括傳輸模式(TMODE)、循環(huán)分段模式(BMODE)、分段粒度(BCNT)、循環(huán)步長(BSTEP)和循環(huán)次數(shù)(BSHIFT)等。當(dāng)DMA傳輸模式為“分段數(shù)據(jù)傳輸”時,DMA從核外存儲部件中讀出的數(shù)據(jù)會返回給單個或多個DSP內(nèi)核,不同DSP內(nèi)核接收數(shù)據(jù)塊的不同部分。循環(huán)分段模式BMODE是程序員可配置的,其決定數(shù)據(jù)返回的目標(biāo)核。本實施例假設(shè)處理器包含12個DSP內(nèi)核,因此,循環(huán)分段模式參數(shù)BMODE為12位,每一位對應(yīng)一個DSP內(nèi)核。值為“I”的位表示數(shù)據(jù)應(yīng)返回給對應(yīng)的DSP內(nèi)核。分段粒度BCNT是指每一小塊數(shù)據(jù)的大小,單位為字。每次傳輸完BCNT個字后,循環(huán)分段模式BMODE進(jìn)行一次循環(huán)右移,右移的位數(shù)由循環(huán)步長BSTEP決定。當(dāng)BMODE被循環(huán)右移循環(huán)次數(shù)BSHIFT參數(shù)指定的次數(shù)后,BMODE重載其初始值。圖4給出了 BMODE參數(shù)的變化過程。由圖4所描述的BMODE變化過程可以看出,每次傳輸完BCNT個數(shù)據(jù)后,BMODE都會發(fā)生變化(循環(huán)右移或重載),讀數(shù)據(jù)返回數(shù)據(jù)選擇向量RetVector也會相應(yīng)地發(fā)生變化,指向下一小塊數(shù)據(jù)的目標(biāo)DSP內(nèi)核。。
[0060]如圖6所示,是本發(fā)明在具體應(yīng)用實例中傳輸數(shù)據(jù)的計數(shù)過程示意圖。在配置傳輸參數(shù)前,發(fā)起分段數(shù)據(jù)傳輸事務(wù)的DMA(主機(jī)DMA)和其他參與本次分段數(shù)據(jù)傳輸?shù)腄MA(從機(jī)DMA)需檢測是否仍在參與前一次分段數(shù)據(jù)傳輸事務(wù)。如果DMA正在參與前一次分段數(shù)據(jù)