專利名稱:基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩存的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核多線程技術(shù)領(lǐng)域,特別是涉及一種基于數(shù)據(jù)劃分的多線程共 享多核處理器二級(jí)緩存的方法。
背景技術(shù):
隨著集成電路技術(shù)的發(fā)展,處理器的性能提升已不能指望主頻的提高,要想 使微處理器性能繼續(xù)按摩爾定律推進(jìn),使處理器能夠符合計(jì)算發(fā)展的需求,必
須研究新的微架構(gòu)和新的計(jì)算模型,因此單芯片多處理器(Chip Multi-processors,簡(jiǎn)稱CMP)架構(gòu),也就是通常所說(shuō)的多核,成為現(xiàn)在學(xué)術(shù)界 和工業(yè)界關(guān)注的熱點(diǎn),并已成為服務(wù)器和桌面領(lǐng)域的主流。
每種新的硬件體系結(jié)構(gòu)的提出,必然要與相適應(yīng)的軟件配合,才能發(fā)揮它的 最大性能。目前的硬件己經(jīng)完成了從單核到多核的跨越,但多核的軟件設(shè)計(jì)的 研究還是處于百家爭(zhēng)鳴的狀態(tài),雖然有了一定的研究成果,但新的方法、新的 研究數(shù)據(jù)仍然曾出不窮。特別是在嵌入式多核領(lǐng)域,針對(duì)性的研究還是太少。 而嵌入式芯片的產(chǎn)量和應(yīng)用又是遠(yuǎn)遠(yuǎn)大于桌面系統(tǒng)和服務(wù)器系統(tǒng),并且高端的 嵌入式系統(tǒng)也早已嶄露頭角,并將繼續(xù)占領(lǐng)一個(gè)重要的地位。多核嵌入式作為 其中的一個(gè)主要代表已漸漸成為嵌入式領(lǐng)域和多核領(lǐng)域的研究熱點(diǎn)。
從多核的快速發(fā)展中可以預(yù)見(jiàn),多核即將被廣泛應(yīng)用到一個(gè)更廣闊的市場(chǎng) ——嵌入式系統(tǒng)。據(jù)統(tǒng)計(jì)嵌入式芯片占整個(gè)芯片市場(chǎng)的80%-90%[1],而多核時(shí) 代的到來(lái)將使得這個(gè)領(lǐng)域煥發(fā)出新的研究熱潮。由于底層體系結(jié)構(gòu)的改變,許 多嵌入式研究方向需要進(jìn)行修正,包括實(shí)時(shí)性、可靠性、節(jié)能等等。雖然這方 面的工作才公共起步,但必將在未來(lái)的幾年中成為嵌入式研究的主流。
嵌入式的軟件優(yōu)化涉及到方方面面,包括實(shí)時(shí)性、可靠性、安全性、節(jié)能、 系統(tǒng)吞吐量等等。但是實(shí)時(shí)性一直占據(jù)著其中最重要的位置。可以說(shuō)實(shí)時(shí)性是 航天、軍事、工業(yè)控制等領(lǐng)域的命脈。
實(shí)時(shí)性的本質(zhì)問(wèn)題是在一個(gè)給定的時(shí)間T內(nèi),系統(tǒng)必須完成所要完成的任 務(wù),如果完成的時(shí)間為t, t<=T?;谶@個(gè)限制,許多研究正試圖達(dá)到這個(gè)目的。 但過(guò)去的研究主要從操作系統(tǒng)等間接層面來(lái)改善系統(tǒng)的實(shí)時(shí)性,無(wú)法觸及到根 本問(wèn)題——實(shí)時(shí)任務(wù)。多核系統(tǒng)的出現(xiàn),使得多個(gè)程序可以真正地同時(shí)運(yùn)行在 一個(gè)系統(tǒng)。推而廣之,只要方法適當(dāng),可以將一個(gè)程序同時(shí)運(yùn)行在不同的核上,每個(gè)核完成任務(wù)的一部分。由于系統(tǒng)資源的提升,可以將這個(gè)實(shí)時(shí)任務(wù)的完成 時(shí)間縮為原來(lái)的一半,甚至更短。
目前多核處理器的二級(jí)緩存發(fā)生了改變,以往是每個(gè)核獨(dú)占一個(gè)二級(jí)緩存,
而在如今的CMP (Chip Multi-processor)的處理器中,以多個(gè)核為一組共享二 級(jí)緩存,本發(fā)明通過(guò)基于數(shù)據(jù)劃分的多線程多核二級(jí)緩存來(lái)進(jìn)一步地提升實(shí)時(shí) 任務(wù)的性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩 存的方法。
本發(fā)明解決其技術(shù)問(wèn)題采用的技術(shù)方案如下
1) 基于數(shù)據(jù)的多線程劃分
根據(jù)程序的結(jié)構(gòu),將程序按照數(shù)據(jù)操作進(jìn)行劃分,形成基于數(shù)據(jù)劃分的多 線程;
2) 改進(jìn)操作系統(tǒng)的線程分配
操作系統(tǒng)在啟動(dòng)的時(shí)候收集到關(guān)于多核處理器的所有信息,根據(jù)二級(jí)緩存 的配置將處理器進(jìn)行分組;當(dāng)實(shí)時(shí)任務(wù)的開(kāi)發(fā)者將任務(wù)分解后的線程共享關(guān)系 傳入操作系統(tǒng),操作系統(tǒng)根據(jù)這個(gè)共享關(guān)系和處理器的配置進(jìn)行線程的類別劃 分;將共享數(shù)據(jù)量大的線程劃分到一個(gè)線程類中,將會(huì)產(chǎn)生二級(jí)緩存訪問(wèn)沖突 的線程劃分到不同的類當(dāng)中,最后將不同的線程類映射至多核組;
3) 優(yōu)化線程切換
對(duì)操作系統(tǒng)的線程切換模塊的地址重新進(jìn)行映射,將操作系統(tǒng)的線程切換
模塊的地址映射到Scratchpad Memory。
本發(fā)明與背景技術(shù)相比,具有的有益的效果是
本發(fā)明是一種基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩存的方法,其 主要數(shù)據(jù)是結(jié)合多核處理器上二級(jí)緩存的特點(diǎn),對(duì)程序進(jìn)行基于數(shù)據(jù)的多線程 劃分,并在操作系統(tǒng)中設(shè)計(jì)了基于二級(jí)緩存共享的線程分配算法,提供劃分后 任務(wù)的運(yùn)行支持。
(1) 高效性。本發(fā)明實(shí)現(xiàn)了多核處理器上二級(jí)緩存的多線程共享,可以大大 提升系統(tǒng)實(shí)時(shí)任務(wù)的性能,從而降低系統(tǒng)的激勵(lì)-響應(yīng)周期。
(2) 實(shí)用性。多線程可以同時(shí)運(yùn)行在系統(tǒng)上,將大大縮短整個(gè)任務(wù)的運(yùn)行時(shí)間。
圖1是本發(fā)明的實(shí)施過(guò)程示意圖。
圖2是程序數(shù)據(jù)分解示意圖。 圖3是本發(fā)明中快速排序示意圖。 圖4是本發(fā)明中快速排序二線程示意圖。 圖5是本發(fā)明的線程分配過(guò)程示意圖。
具體實(shí)施例方式
本發(fā)明是一種基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩存的方法,下 面結(jié)合圖1說(shuō)明其具體實(shí)施過(guò)程。 l)基于數(shù)據(jù)的多線程劃分-
程序主要由兩部分組成,程序流程的控制和數(shù)據(jù)的操作。對(duì)于一個(gè)單一的 任務(wù),程序流程的控制是不能再分的,而它的數(shù)據(jù)操作部分是可以分解的,而 且數(shù)據(jù)操作部分所占用的執(zhí)行時(shí)間一般遠(yuǎn)遠(yuǎn)大于流程控制部分。像圖2(a)這樣的 程序代碼在程序的編碼中是比較常見(jiàn)的。但是在單核體系結(jié)構(gòu)下,即使存在并 行的可能也無(wú)法將之利用。但在多核體系結(jié)構(gòu)下,情況就不同了。圖2(b)就示意 了可以將原來(lái)的程序分解為兩個(gè)線程分別進(jìn)行運(yùn)算。按照這種基于數(shù)據(jù)操作情 況的劃分方法,將程序劃分成多線程。
排序問(wèn)題可以很好地作為案例來(lái)分析分解過(guò)程。排序問(wèn)題在數(shù)據(jù)庫(kù)、搜索 引擎等領(lǐng)域中,排序和索引程序占據(jù)了很大的一部分。很多程序優(yōu)化方法的提 出,最早也都是在排序問(wèn)題上進(jìn)行測(cè)試的。將排序問(wèn)題作為"基于數(shù)據(jù)劃分"的案 例,也考慮到要考察大量數(shù)據(jù)情況下的并行性能和二級(jí)緩存的表現(xiàn)。下面以快 速排序?yàn)槔?,研究遞歸情況下的數(shù)據(jù)劃分。
在快速排序中,首先將中心點(diǎn)找到,放到適當(dāng)?shù)奈恢?。在這個(gè)位置前的數(shù) 都小于中心數(shù),在這個(gè)數(shù)之后的數(shù)都大于中心數(shù)。接著在左半邊和右半邊分別 遞歸排序??梢园l(fā)現(xiàn)在這個(gè)分支中,左右兩部分的排序不存在依賴關(guān)系,也就 是說(shuō)這里存在著并行的可能。于是可以將左半支排序放到一個(gè)核上運(yùn)行,右半 支排序放到另一個(gè)核上運(yùn)行。如果這個(gè)中心點(diǎn)找得好的話,工作量的分配是十 分均勻的。圖3(a)表示一串未排序數(shù)列;圖3(b)表示了正常的快速排序第一次找 中心點(diǎn)后的結(jié)果,接著遞歸繼續(xù)排序;圖3(c)表示在中心點(diǎn)找到后將程序分成兩 個(gè)線程,對(duì)剩余部分同時(shí)進(jìn)行排序。
圖4是快速排序二線程示意圖,表示一個(gè)線程在完成第一次中心點(diǎn)查找后, 再分解為兩個(gè)線程進(jìn)行同步運(yùn)行。這兩個(gè)線程被分布到不共享二級(jí)緩存的核上, 并保持其他核的空閑狀態(tài),以最大化二級(jí)緩存的利用率。圖4只是快速排序根據(jù)數(shù)據(jù)劃分的方法拆分為兩個(gè)線程的示意圖,如果排序數(shù)據(jù)量大,可以拆分出 更多的線程運(yùn)行在空閑的核上。
2) 改進(jìn)操作系統(tǒng)的線程分配
操作系統(tǒng)在啟動(dòng)的時(shí)候收集到關(guān)于多核處理器的所有信息,根據(jù)二級(jí)緩存 的配置將處理器進(jìn)行分組。當(dāng)實(shí)時(shí)任務(wù)的開(kāi)發(fā)者將任務(wù)分解后的線程共享關(guān)系 傳入操作系統(tǒng),操作系統(tǒng)根據(jù)這個(gè)共享關(guān)系和處理器的配置進(jìn)行線程的類別劃 分。將共享數(shù)據(jù)量大的線程劃分到一個(gè)線程類中,將會(huì)產(chǎn)生二級(jí)緩存訪問(wèn)沖突 的線程劃分到不同的類當(dāng)中,最后將不同的線程類映射至多核組,目的是最大 化二級(jí)緩存的訪問(wèn)命中。線程分配設(shè)計(jì)示意圖如圖5所示實(shí)時(shí)任務(wù)在劃分為 多個(gè)子線程后,將這些線程的共享關(guān)系傳遞給操作系統(tǒng),操作系統(tǒng)根據(jù)底層多 核的配置情況,計(jì)算出將線程分配給各個(gè)核的策略。
3) 優(yōu)化線程切換
對(duì)操作系統(tǒng)的線程切換模塊的地址重新進(jìn)行映射,將操作系統(tǒng)的線程切換
模塊的地址映射到Scratchpad Memory。利用處理器核上的Scratchpad Memory
部件,通過(guò)操作系統(tǒng)對(duì)線程切換模塊的控制,使得線程切換模塊不能被刷出內(nèi) 存,鎖住這部分代碼的緩存,使之永遠(yuǎn)能夠緩存訪問(wèn)命中以此來(lái)提升運(yùn)行效率。
權(quán)利要求
1.基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩存的方法,其特征在于1)基于數(shù)據(jù)的多線程劃分根據(jù)程序的結(jié)構(gòu),將程序按照數(shù)據(jù)操作進(jìn)行劃分,形成基于數(shù)據(jù)劃分的多線程;2)改進(jìn)操作系統(tǒng)的線程分配操作系統(tǒng)在啟動(dòng)的時(shí)候收集到關(guān)于多核處理器的所有信息,根據(jù)二級(jí)緩存的配置將處理器進(jìn)行分組;當(dāng)實(shí)時(shí)任務(wù)的開(kāi)發(fā)者將任務(wù)分解后的線程共享關(guān)系傳入操作系統(tǒng),操作系統(tǒng)根據(jù)這個(gè)共享關(guān)系和處理器的配置進(jìn)行線程的類別劃分;將共享數(shù)據(jù)量大的線程劃分到一個(gè)線程類中,將會(huì)產(chǎn)生二級(jí)緩存訪問(wèn)沖突的線程劃分到不同的類當(dāng)中,最后將不同的線程類映射至多核組;3)優(yōu)化線程切換對(duì)操作系統(tǒng)的線程切換模塊的地址重新進(jìn)行映射,將操作系統(tǒng)的線程切換模塊的地址映射到ScratchPad Memory。
全文摘要
本發(fā)明公開(kāi)了一種基于數(shù)據(jù)劃分的多線程共享多核處理器二級(jí)緩存的方法。本發(fā)明的方法結(jié)合多核處理器上二級(jí)緩存的特點(diǎn),對(duì)程序進(jìn)行基于數(shù)據(jù)的多線程劃分,并在操作系統(tǒng)中設(shè)計(jì)了基于二級(jí)緩存共享的線程分配算法,提供劃分后任務(wù)的運(yùn)行支持。本方法實(shí)現(xiàn)了多核處理器上二級(jí)緩存的多線程共享,可以大大提升系統(tǒng)實(shí)時(shí)任務(wù)的性能,從而降低系統(tǒng)的激勵(lì)-響應(yīng)周期。本發(fā)明實(shí)現(xiàn)了多核處理器上二級(jí)緩存的多線程共享,可以大大提升系統(tǒng)實(shí)時(shí)任務(wù)的性能,從而降低系統(tǒng)的激勵(lì)-響應(yīng)周期;多線程可以同時(shí)運(yùn)行在系統(tǒng)上,將大大縮短整個(gè)任務(wù)的運(yùn)行時(shí)間。
文檔編號(hào)G06F9/46GK101286138SQ20081006216
公開(kāi)日2008年10月15日 申請(qǐng)日期2008年6月3日 優(yōu)先權(quán)日2008年6月3日
發(fā)明者嚴(yán)力科, 馮德貴, 施青松, 章鐵飛, 威 胡, 蔣冠軍, 斌 謝, 陳天洲, 項(xiàng)凌祥, 黃江偉 申請(qǐng)人:浙江大學(xué)