本發(fā)明涉及芯片領(lǐng)域,尤其涉及一種基于cpu和gpu的異構(gòu)千核高通量處理系統(tǒng)及其修改方法。
背景技術(shù):
:隨著眾核設(shè)計、三維芯片制造等技術(shù)的發(fā)展,單位面積晶體管的數(shù)量將會繼續(xù)按照摩爾定律增長,這種趨勢將會使處理器的設(shè)計延續(xù)更多的計算核心,更大的共享高速緩存(cache),從而使得單片千核處理器的應(yīng)用也不再遙遠。與此同時,異構(gòu)計算機系統(tǒng)的研究及應(yīng)用也成為學(xué)術(shù)界和工業(yè)界的熱點。異構(gòu)多核處理器能獲得比對稱多核處理器和非對稱多核處理器更好的性能。圖形處理器(gpu)等作為加速計算部件處理數(shù)據(jù)流或者向量數(shù)據(jù)的作用越來越受到重視,各主流處理器制造商也相繼推出新型的異構(gòu)多核處理器,如amd的fusion架構(gòu)處理器,intel的xeonphi架構(gòu)處理器,nvidia的denver項目和armbig.little等,這些新型異構(gòu)處理器依賴大量高性能的流處理/向量計算單元/超標(biāo)量順序處理單元作為協(xié)處理器加速浮點運算,增加多線程并發(fā)度,提高系統(tǒng)性能。當(dāng)前獨立式gpu的異構(gòu)計算機系統(tǒng)在數(shù)據(jù)傳輸、計算核心啟動、cache—致性管理和數(shù)據(jù)同步方面產(chǎn)生大量的額外開銷。nvidiateslac2050gpu與顯存通信的峰值帶寬達到144gb/s,而主機和gpu通過pci-e相連的峰值傳輸帶寬卻只有8gb/s。這種數(shù)據(jù)傳輸速率之間的巨大差異是導(dǎo)致獨立式異構(gòu)計算機訪存系統(tǒng)性能瓶頸的重要因素。例如,memcpy函數(shù)將一個128k字節(jié)的數(shù)據(jù)從主機cpu端傳輸?shù)絞pu端所產(chǎn)生的物理傳輸延遲占整個數(shù)據(jù)傳輸時間的70%。daga等人證明真正的單片異構(gòu)系統(tǒng)計算機,如amd的加速處理單元較前兩類異構(gòu)系統(tǒng)具有更好的性能。hwu等人也同樣指出gpu端和cpu端數(shù)據(jù)傳輸?shù)木薮箝_銷是異構(gòu)系統(tǒng)發(fā)展的瓶頸。因此,隨著千核處理器計算核心數(shù)量的增加,如何有效降低cpu和gpu之間傳輸數(shù)據(jù)的開銷是提高gpu和cpu之間數(shù)據(jù)交換速度的主要難題之一。kelm等人采用軟硬件協(xié)同設(shè)計的方法提出了混合式內(nèi)存模型,避免了數(shù)據(jù)塊的復(fù)制操作和多地址空間,減小了消息通信開銷和片上的cache目錄面積。但是數(shù)據(jù)塊的一致性狀態(tài)轉(zhuǎn)換結(jié)構(gòu)非常復(fù)雜,軟硬件狀態(tài)轉(zhuǎn)換的同步過程是cache一致性的瓶頸。ham等人提出的異構(gòu)內(nèi)存系統(tǒng)采用層次化的緩沖區(qū)橋接變相位內(nèi)存模塊和動態(tài)隨機訪問內(nèi)存模塊,采用分離控制的方式提高系統(tǒng)的能效率。power等提出的cpu-gpu異構(gòu)系統(tǒng)一致性機制是采用區(qū)域緩沖區(qū)和區(qū)域目錄的結(jié)構(gòu)提高異構(gòu)系統(tǒng)的cache—致性。hechtman等人采用共享虛存的方式維持異構(gòu)多核系統(tǒng)的cache一致性,認為cpucache是按照訪問時延最優(yōu)化設(shè)計的,gpucache是按照訪問吞吐率最優(yōu)化設(shè)計的,很難共享二者的cache數(shù)據(jù)塊。因此,需要采用一個獨立的目錄結(jié)構(gòu)來共享數(shù)據(jù)塊,以避免cpu和gpu間通過訪問片外內(nèi)存來交換數(shù)據(jù)塊的巨大開銷。裴頌文等人提出的面向異構(gòu)千核計算機的統(tǒng)一的物理內(nèi)存訪問框架能協(xié)調(diào)gpu端和cpu端的數(shù)據(jù)交換,通過異構(gòu)核心間交叉式直接訪問對方物理內(nèi)存地址空間的方式來避免顯式的數(shù)據(jù)交換,從而降低數(shù)據(jù)傳輸?shù)念~外開銷,提高存儲訪問效率。amd等發(fā)起的異構(gòu)系統(tǒng)架構(gòu)是一個統(tǒng)一的計算框架,為避免cpu和gpu顯式地傳輸數(shù)據(jù)而提出基于用戶空間隊列機制和搶占式上下文交換技術(shù)的邏輯地址空間的單一的訪問方式。目前,異構(gòu)千核處理器系統(tǒng)中的數(shù)據(jù)塊訪問仍然缺乏統(tǒng)一的高效的物理內(nèi)存地址訪問方法。技術(shù)實現(xiàn)要素:本發(fā)明的目的旨在至少解決上述技術(shù)缺陷之一,提供一種基于cpu和gpu的異構(gòu)千核高通量處理系統(tǒng)及其的修改方法。本發(fā)明提供一種基于cpu和gpu的異構(gòu)千核高通量處理系統(tǒng),所述處理系統(tǒng)包括多個tile計算單元,開關(guān)總線,三級融合的數(shù)據(jù)緩存器,cpu和gpu的內(nèi)存接口以及動態(tài)隨機存取存儲器,每個tile計算單元通過開關(guān)總線分別與三級融合的數(shù)據(jù)緩存器及cpu和gpu的內(nèi)存接口連接,所述三級融合的數(shù)據(jù)緩存器及cpu和gpu的內(nèi)存接口均與所述動態(tài)隨機存取存儲器以直接訪問所述動態(tài)隨機存取存儲器,其中,每個tile計算單元包括多個quart計算單元,且多個quart計算單元之間通過高速交叉網(wǎng)絡(luò)互連;每個quart計算單元包括多個cpu計算核心單元和多個gpu計算核心單元,且具有共享的三級數(shù)據(jù)緩存器用于采用緩存一致性目錄機制以緩存cpu數(shù)據(jù)塊和gpu數(shù)據(jù)塊,所述三級數(shù)據(jù)緩存器用于保存cpu計算核心單元的數(shù)據(jù)塊和gpu計算核心單元的數(shù)據(jù)塊;以及所述每個cpu計算核心單元和每個gpu計算核心單元具有各自獨立的一級數(shù)據(jù)緩存器,所述多個cpu計算核心單元具有共享的cpu二級數(shù)據(jù)緩存器,所述多個gpu計算核心單元具有共享的gpu二級數(shù)據(jù)緩存器。從上述處理系統(tǒng)的方案可以看出,通過設(shè)計有效地三級cache一致性訪問機制,并給相應(yīng)的物理內(nèi)存地址的數(shù)據(jù)塊分配統(tǒng)一的狀態(tài)標(biāo)識位,可以有效地管理融合的三級數(shù)據(jù)cache和支持交叉式直接訪問統(tǒng)一的物理內(nèi)存地址空間,從而可以有效避免數(shù)據(jù)副本的傳輸開銷,降低系統(tǒng)訪存指令的數(shù)量,提高系統(tǒng)的計算性能,實現(xiàn)cpu和gpu之間的內(nèi)存高速直接交換。本發(fā)明還提供一種基于cpu和gpu的異構(gòu)千核高通量處理系統(tǒng)的修改方法,所述修改方法包括:當(dāng)根據(jù)cpu處理單元的訪存指令和純計算指令發(fā)起數(shù)據(jù)塊的讀寫操作時,判斷數(shù)據(jù)塊的狀態(tài)標(biāo)志位;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,0)時,可以訪問該數(shù)據(jù)塊;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則對該數(shù)據(jù)塊采用寫回法;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊不屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則根據(jù)mesi協(xié)議對該數(shù)據(jù)塊進行修改和更新;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,1),則對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,1),先請求獲得所述gpu處理單元的授權(quán)并將該數(shù)據(jù)塊的狀態(tài)標(biāo)志位修改為(1,1),接著對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器。從上述修改方法的方案可以看出,通過設(shè)計有效地三級cache一致性訪問機制,并給相應(yīng)的物理內(nèi)存地址的數(shù)據(jù)塊分配統(tǒng)一的狀態(tài)標(biāo)識位,可以有效地管理融合的三級數(shù)據(jù)cache和支持交叉式直接訪問統(tǒng)一的物理內(nèi)存地址空間,從而可以有效避免數(shù)據(jù)副本的傳輸開銷,降低系統(tǒng)訪存指令的數(shù)量,提高系統(tǒng)的計算性能,實現(xiàn)cpu和gpu之間的內(nèi)存高速直接交換。附圖說明圖1為本發(fā)明的cpu和gpu的異構(gòu)千核高通量處理系統(tǒng)一種實施例的結(jié)構(gòu)示意圖;圖2為本發(fā)明的quart計算單元一種實施例的結(jié)構(gòu)示意圖。具體實施方式為了使本發(fā)明所解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明提供一種實施例的cpu和gpu的異構(gòu)千核高通量處理系統(tǒng),如圖1所示,所述控制方法包括:所述處理系統(tǒng)包括多個tile計算單元,開關(guān)總線1,三級融合的數(shù)據(jù)緩存器2,cpu和gpu的內(nèi)存接口3以及動態(tài)隨機存取存儲器4,每個tile計算單元通過開關(guān)總線分別與三級融合的數(shù)據(jù)緩存器及cpu和gpu的內(nèi)存接口連接,所述三級融合的數(shù)據(jù)緩存器2及cpu和gpu的內(nèi)存接口3均與所述動態(tài)隨機存取存儲器4即統(tǒng)一的物理內(nèi)存以直接訪問所述動態(tài)隨機存取存儲器,其中,每個tile計算單元包括多個quart計算單元,且多個quart計算單元之間通過高速交叉網(wǎng)絡(luò)互連;每個quart計算單元包括多個cpu計算核心單元和多個gpu計算核心單元,且具有共享的三級數(shù)據(jù)緩存器用于采用緩存一致性目錄機制以緩存cpu數(shù)據(jù)塊和gpu數(shù)據(jù)塊,所述三級數(shù)據(jù)緩存器用于保存cpu計算核心單元的數(shù)據(jù)塊和gpu計算核心單元的數(shù)據(jù)塊;以及所述每個cpu計算核心單元和每個gpu計算核心單元具有各自獨立的一級數(shù)據(jù)緩存器,所述多個cpu計算核心單元具有共享的cpu二級數(shù)據(jù)緩存器,所述多個gpu計算核心單元具有共享的gpu二級數(shù)據(jù)緩存器。也就是說,如圖1所示,異構(gòu)千核高通量處理系統(tǒng)是由三級計算單元組成,分別是cpu/gpu計算核心級、quart計算簇級和tile計算簇級。4個cpu計算核心組成的cpu簇和12個gpu計算核心組成的gpu簇,共同構(gòu)成quart計算簇。該單元內(nèi)的4個cpu和12個gpu有各自獨立的一級cache即數(shù)據(jù)緩存器,12個gpu共享二級gpu數(shù)據(jù)cache,4個cpu共享二級cpu數(shù)據(jù)cache。因此,每個quart共包含16個異構(gòu)計算單元。4個quart組成一個tile,quart之間通過高速交叉網(wǎng)絡(luò)互連,每個tile含64個異構(gòu)計算單元,并采用多端口隊列機制分離訪存指令和純計算指令。每個quart配置有一個cache管理處理器(cachemanagementprocessor,cmp)負責(zé)為quart中各計算核心預(yù)取和管理數(shù)據(jù)塊。異構(gòu)千核高通量處理系統(tǒng)采用分離式訪存和計算指令的設(shè)計,便于重疊訪存和計算指令,提高指令流水線效率以及延遲隱藏異構(gòu)系統(tǒng)間數(shù)據(jù)傳輸?shù)拈L時間開銷。16個tile通過高速多端口交叉開關(guān)即開關(guān)總線1網(wǎng)絡(luò)連接,共享三級融合的cache即三級融合的數(shù)據(jù)緩存器2,該cache既可以為gpu計算核心緩存數(shù)據(jù),也可以為cpu計算單元緩存數(shù)據(jù),并支持交叉式直接訪問統(tǒng)一的物理內(nèi)存(即動態(tài)隨機存取存儲器dram)。在具體實施中,圖2所示,各cpu計算核心和gpu計算核心分別含有私有的一級cache(如cpu中含有core0、core1、core2、core3,gpu中含有12個scratchpadl1cache)。每個quart內(nèi)的cpu計算核心共享二級cpu數(shù)據(jù)cache(l2c–cache),gpu計算核心共享二級gpu數(shù)據(jù)cache(l2g-cache)。二級cpu數(shù)據(jù)cache和二級gpu數(shù)據(jù)cache是獨立的物理cache;所有的64個quart共享統(tǒng)一的三級數(shù)據(jù)cache(unifiedl3cache),混合式緩存cpu數(shù)據(jù)塊和gpu數(shù)據(jù)塊。gpu和cpu數(shù)據(jù)塊在三級數(shù)據(jù)cache采用cache一致性目錄機制實現(xiàn)同步和一致性管理。在具體實施中,所述三級融合的數(shù)據(jù)緩存器2用于保存一級數(shù)據(jù)緩存器的中的數(shù)據(jù)塊,共享的cpu二級數(shù)據(jù)緩存器中的數(shù)據(jù)塊,共享的gpu二級數(shù)據(jù)緩存器中的數(shù)據(jù)塊以及共享的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊。在具體實施中,所述處理系統(tǒng)還包括與所述開關(guān)總線連接的系統(tǒng)編譯器5,所述系統(tǒng)編譯器5用于將6個標(biāo)識位分配給每個quart計算單元,其中高4位表示tile計算單元的編號,低2位表示某個tile計算單元內(nèi)的quart計算單元的編號。通過將6個標(biāo)識位分配給每個quart計算單元,可以細粒度刻畫數(shù)據(jù)塊的所有者。在具體實施中,所述系統(tǒng)編譯器5還用于對三級融合的數(shù)據(jù)緩存器中的每個數(shù)據(jù)塊分配2個狀態(tài)標(biāo)志位。具體的,2個狀態(tài)標(biāo)志位具體包括以下:狀態(tài)標(biāo)志位(0,0),狀態(tài)標(biāo)志位(1,0),狀態(tài)標(biāo)志位(0,1)以及狀態(tài)標(biāo)志位(1,1)。通過數(shù)據(jù)塊的狀態(tài)標(biāo)識位區(qū)分數(shù)據(jù)塊的所有者屬性,而且數(shù)據(jù)塊的狀態(tài)標(biāo)識位隨著數(shù)據(jù)塊的處理過程以更新,另外數(shù)據(jù)塊狀態(tài)標(biāo)識位功能如下表所示。狀態(tài)位說明0,0無狀態(tài),新數(shù)據(jù)塊,cpu計算核心和gpu計算核心均可以無限制訪問1,0cpu私有數(shù)據(jù)塊:數(shù)據(jù)塊的所有者屬于cpu計算核心,gpu只能讀,不能寫此塊0,1gpu私有數(shù)據(jù)塊:數(shù)據(jù)塊的所有者屬于gpu計算核心,cpu只能讀,不能寫此塊1,1共享數(shù)據(jù)塊:數(shù)據(jù)塊的所有者既屬于gpu計算核心,又屬于cpu計算核心,cpu和gpu都可以對該數(shù)據(jù)塊進行讀寫操作在具體實施中,如圖1所示,所述處理系統(tǒng)還包括cpu處理單元6和gpu處理單元7,所述cpu處理單元6和gpu處理單元7分別與所述開關(guān)總線1連接,用于根據(jù)每個數(shù)據(jù)塊中的狀態(tài)標(biāo)志位和每個quart計算單元的6個標(biāo)識位對所述三級融合的數(shù)據(jù)緩存器中的數(shù)據(jù)塊進行更新和同步。在具體實施中,所述cpu處理單元6用于:當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,0)時,可以訪問該數(shù)據(jù)塊;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則對該數(shù)據(jù)塊采用寫回法;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊不屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則根據(jù)mesi協(xié)議對該數(shù)據(jù)塊進行修改和更新;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,1),則對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,1),先請求獲得相應(yīng)的gpu計算核心的授權(quán)并將該數(shù)據(jù)塊的狀態(tài)標(biāo)志位修改為(1,1),接著對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器。在具體實施中,所述gpu處理單元7用于:當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,0)時,可以訪問該數(shù)據(jù)塊;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則對該數(shù)據(jù)塊采用寫回法;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊不屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則根據(jù)mesi協(xié)議對該數(shù)據(jù)塊進行修改和更新;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,1),則對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到gpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,1),先請求獲得相應(yīng)的cpu計算核心的授權(quán)并將該數(shù)據(jù)塊的狀態(tài)標(biāo)志位修改為(1,1),接著對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器。也就是說,cpu處理單元6或gpu處理單元7(處理單元是指cpu的處理器核心或gpu流計算單元),不是某個quart中的4個cpu計算核心,對融合的三級cache中的數(shù)據(jù)塊更新和同步的基本原則是:如果cpu處理單元6或gpu處理單元7發(fā)起的修改操作是對本tile及本quart的私有三級數(shù)據(jù)cache塊(私有三級數(shù)據(jù)cache塊是指數(shù)據(jù)cache塊的所有者屬于cpu或gpu計算核心),則執(zhí)行傳統(tǒng)的寫回機制,在減少總線通信帶寬的條件下保證cache數(shù)據(jù)一致性。如果cpu處理單元6或gpu處理單元7發(fā)起的修改操作是針對本quart外的共享三級數(shù)據(jù)cache塊(共享三級數(shù)據(jù)cache塊是指數(shù)據(jù)cache塊的所有者既屬于gpu計算核心,又屬于cpu計算核心),為了保證cache的嚴格一致性,則采用寫直達法并反向同步到一級數(shù)據(jù)cache和二級數(shù)據(jù)cache或者gpu的一級數(shù)據(jù)cache和二級共享數(shù)據(jù)cache。面向融合的三級數(shù)據(jù)cache及統(tǒng)一的物理內(nèi)存地址空間,對于典型的標(biāo)識為(1,0),(0,1)和(1,1),數(shù)據(jù)塊進行修改操作時,cpu處理單元6和gpu處理單元7分別修改數(shù)據(jù)塊的基本操作規(guī)則包括以下六項:規(guī)則一:如果cpu處理單元6修改標(biāo)記為cpu計算核心且是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫回法;若cpu修改標(biāo)記為cpu卻不是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則根據(jù)傳統(tǒng)cache一致性協(xié)議mesi(modified,exclusive,share,andinvalid)修改和更新cache數(shù)據(jù)塊;規(guī)則二:如果cpu處理單元6修改標(biāo)記為共享的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫直達,修改數(shù)據(jù)塊的狀態(tài)標(biāo)識到cpu私有狀態(tài),并反向同步到cpu的l1和12數(shù)據(jù)cache;規(guī)則三:如果cpu處理單元6修改標(biāo)記為gpu計算核心的私有三級cache數(shù)據(jù)塊,則先請求獲得相應(yīng)gpu計算核心的授權(quán),并將數(shù)據(jù)塊修改到共享狀態(tài),然后執(zhí)行規(guī)則二。規(guī)則四:如果gpu處理單元7修改標(biāo)記為gpu計算核心且是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫回法;若gpu修改標(biāo)記為gpu卻不是本tile及本quar私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則根據(jù)傳統(tǒng)cache一致性協(xié)議mesi修改和更新cache數(shù)據(jù)塊。規(guī)則五:如果gpu處理單元7修改標(biāo)記為共享的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫直達,修改數(shù)據(jù)塊的狀態(tài)標(biāo)識到gpu私有狀態(tài),并反向同步到gpu全局cache和共享cache。規(guī)則六:如果gpu處理單元7修改標(biāo)記為cpu計算核心的私有三級cache數(shù)據(jù)塊,則先請求獲得相應(yīng)cpu計算核心的授權(quán),并將數(shù)據(jù)塊修改到共享狀態(tài),然后執(zhí)行規(guī)則五。基于以上六項關(guān)于修改三級cache數(shù)據(jù)塊的基本規(guī)則,由cpu和gpu的訪存指令和純計算指令發(fā)起的讀寫操作可以同時訪問三級cache和統(tǒng)一的物理內(nèi)存。從上述處理系統(tǒng)的方案可以看出,通過設(shè)計有效地三級cache一致性訪問機制,并給相應(yīng)的物理內(nèi)存地址的數(shù)據(jù)塊分配統(tǒng)一的狀態(tài)標(biāo)識位,可以有效地管理融合的三級數(shù)據(jù)cache和支持交叉式直接訪問統(tǒng)一的物理內(nèi)存地址空間,從而可以有效避免數(shù)據(jù)副本的傳輸開銷,降低系統(tǒng)訪存指令的數(shù)量,提高系統(tǒng)的計算性能,實現(xiàn)cpu和gpu之間的內(nèi)存高速直接交換。在具體實施中,本發(fā)明還提供一種實施例的基于cpu和gpu的異構(gòu)千核高通量處理系統(tǒng)的修改方法,所述修改方法包括:當(dāng)根據(jù)cpu處理單元的訪存指令和純計算指令發(fā)起數(shù)據(jù)塊的讀寫操作時,判斷數(shù)據(jù)塊的狀態(tài)標(biāo)志位;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,0)時,可以訪問該數(shù)據(jù)塊;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則對該數(shù)據(jù)塊采用寫回法;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊不屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則根據(jù)mesi協(xié)議對該數(shù)據(jù)塊進行修改和更新;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,1),則對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,1),先請求獲得相應(yīng)的gpu計算核心的授權(quán)并將該數(shù)據(jù)塊的狀態(tài)標(biāo)志位修改為(1,1),接著對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到cpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器。在具體實施中,所述修改方法還包括:當(dāng)根據(jù)gpu處理單元的訪存指令和純計算指令發(fā)起數(shù)據(jù)塊的讀寫操作時,判斷數(shù)據(jù)塊的狀態(tài)標(biāo)志位;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,0)時,可以訪問該數(shù)據(jù)塊;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則對該數(shù)據(jù)塊采用寫回法;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,0)且根據(jù)quart計算單元的6個標(biāo)識位判斷該數(shù)據(jù)塊不屬于當(dāng)前tile計算單元及當(dāng)前quart計算的三級數(shù)據(jù)緩存器中的數(shù)據(jù)塊時,則根據(jù)mesi協(xié)議對該數(shù)據(jù)塊進行修改和更新;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(1,1),則對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到gpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器;當(dāng)數(shù)據(jù)塊的狀態(tài)標(biāo)志位為(0,1),先請求獲得相應(yīng)的cpu計算核心的授權(quán)并將該數(shù)據(jù)塊的狀態(tài)標(biāo)志位修改為(1,1),接著對該數(shù)據(jù)塊采用寫直法,并將該數(shù)據(jù)塊的狀態(tài)標(biāo)識位修改為(1,0),以及反向同步到gpu計算核心單元的一級數(shù)據(jù)緩存器和共享的二級數(shù)據(jù)緩存器。也就是說,cpu處理單元6或gpu處理單元7(處理單元是指cpu的處理器核心或gpu流計算單元),不是某個quart中的4個cpu計算核心,對融合的三級cache中的數(shù)據(jù)塊更新和同步的基本原則是:如果cpu處理單元6或gpu處理單元7發(fā)起的修改操作是對本tile及本quart的私有三級數(shù)據(jù)cache塊(私有三級數(shù)據(jù)cache塊是指數(shù)據(jù)cache塊的所有者屬于cpu或gpu計算核心),則執(zhí)行傳統(tǒng)的寫回機制,在減少總線通信帶寬的條件下保證cache數(shù)據(jù)一致性。如果cpu處理單元6或gpu處理單元7發(fā)起的修改操作是針對本quart外的共享三級數(shù)據(jù)cache塊(共享三級數(shù)據(jù)cache塊是指數(shù)據(jù)cache塊的所有者既屬于gpu計算核心,又屬于cpu計算核心),為了保證cache的嚴格一致性,則采用寫直達法并反向同步到一級數(shù)據(jù)cache和二級數(shù)據(jù)cache或者gpu的一級數(shù)據(jù)cache和二級共享數(shù)據(jù)cache。面向融合的三級數(shù)據(jù)cache及統(tǒng)一的物理內(nèi)存地址空間,對于典型的標(biāo)識為(1,0),(0,1)和(1,1),數(shù)據(jù)塊進行修改操作時,cpu處理單元6和gpu處理單元7分別修改數(shù)據(jù)塊的基本操作規(guī)則包括以下六項:規(guī)則一:如果cpu處理單元6修改標(biāo)記為cpu計算核心且是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫回法;若cpu修改標(biāo)記為cpu卻不是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則根據(jù)傳統(tǒng)cache一致性協(xié)議mesi(modified,exclusive,share,andinvalid)修改和更新cache數(shù)據(jù)塊;規(guī)則二:如果cpu處理單元6修改標(biāo)記為共享的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫直達,修改數(shù)據(jù)塊的狀態(tài)標(biāo)識到cpu私有狀態(tài),并反向同步到cpu的l1和12數(shù)據(jù)cache;規(guī)則三:如果cpu處理單元6修改標(biāo)記為gpu計算核心的私有三級cache數(shù)據(jù)塊,則先請求獲得相應(yīng)gpu計算核心的授權(quán),并將數(shù)據(jù)塊修改到共享狀態(tài),然后執(zhí)行規(guī)則二。規(guī)則四:如果gpu處理單元7修改標(biāo)記為gpu計算核心且是本tile及本quart私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫回法;若gpu修改標(biāo)記為gpu卻不是本tile及本quar私有的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則根據(jù)傳統(tǒng)cache一致性協(xié)議mesi修改和更新cache數(shù)據(jù)塊。規(guī)則五:如果gpu處理單元7修改標(biāo)記為共享的三級數(shù)據(jù)cache的數(shù)據(jù)塊,則對三級數(shù)據(jù)cache的數(shù)據(jù)塊采用寫直達,修改數(shù)據(jù)塊的狀態(tài)標(biāo)識到gpu私有狀態(tài),并反向同步到gpu全局cache和共享cache。規(guī)則六:如果gpu處理單元7修改標(biāo)記為cpu計算核心的私有三級cache數(shù)據(jù)塊,則先請求獲得相應(yīng)cpu計算核心的授權(quán),并將數(shù)據(jù)塊修改到共享狀態(tài),然后執(zhí)行規(guī)則五。基于以上六項關(guān)于修改三級cache數(shù)據(jù)塊的基本規(guī)則,由cpu和gpu的訪存指令和純計算指令發(fā)起的讀寫操作可以同時訪問三級cache和統(tǒng)一的物理內(nèi)存。從上述修改的方案可以看出,通過設(shè)計有效地三級cache一致性訪問機制,并給相應(yīng)的物理內(nèi)存地址的數(shù)據(jù)塊分配統(tǒng)一的狀態(tài)標(biāo)識位,可以有效地管理融合的三級數(shù)據(jù)cache和支持交叉式直接訪問統(tǒng)一的物理內(nèi)存地址空間,從而可以有效避免數(shù)據(jù)副本的傳輸開銷,降低系統(tǒng)訪存指令的數(shù)量,提高系統(tǒng)的計算性能,實現(xiàn)cpu和gpu之間的內(nèi)存高速直接交換。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁12