欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于異構(gòu)平臺(tái)的多種并行錯(cuò)誤檢測體系架構(gòu)的制作方法

文檔序號(hào):9396835閱讀:349來源:國知局
一種基于異構(gòu)平臺(tái)的多種并行錯(cuò)誤檢測體系架構(gòu)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于并行處理器技術(shù)領(lǐng)域,具體涉及一種基于異構(gòu)平臺(tái)(通用處理器和圖形處理器混合架構(gòu))處理能力的多種并行錯(cuò)誤檢測體系架構(gòu)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)科技的發(fā)展,多核處理器愈發(fā)普遍。日常生活中,臺(tái)式機(jī)、筆記本電腦、平板電腦,甚至是手機(jī),都已經(jīng)配備了多核處理器。單一芯片上處理器核數(shù)的增多,帶來了潛在的計(jì)算能力。為了充分利用多核設(shè)備上的計(jì)算資源,并行程序得到了普遍的應(yīng)用。然而,受困于并行程序錯(cuò)誤,編寫正確的并行程序并非易事。一方面,程序員習(xí)慣于串行化的思考方式,導(dǎo)致了編寫并行程序時(shí)容易產(chǎn)生錯(cuò)誤;另一方面,并行程序的不確定性導(dǎo)致了調(diào)試過程中的并行程序空間難以重現(xiàn),增加了調(diào)試的難度。難以調(diào)試的并行程序錯(cuò)誤對(duì)軟件的可靠性構(gòu)成了嚴(yán)重的威脅,甚至造成了許多嚴(yán)重的事故和巨大的財(cái)產(chǎn)損失。例如,2003年美國東北地區(qū)的大面積停電事故,影響了超過5000萬人。又如,2012年臉譜公司的IPO故障事故,造成了數(shù)億美元的經(jīng)濟(jì)損失。
[0003]此外,并行錯(cuò)誤的多樣性加劇了檢測的復(fù)雜性。目前主流的并行錯(cuò)誤有數(shù)據(jù)競爭、原子性違背和順序違背等多種類型。而且,較之串行錯(cuò)誤,由于并行程序的不確定性,往往使得錯(cuò)誤場景難以重現(xiàn),導(dǎo)致了并行錯(cuò)誤更加難以定位與檢測。為了檢測并行錯(cuò)誤,學(xué)術(shù)界與工業(yè)界提出了許多解決方案與工具,它們可以被分為兩類:軟件檢測工具與硬件檢測架構(gòu)。軟件檢測工具一般通過程序插粧來獲取程序運(yùn)行時(shí)狀態(tài),而后對(duì)該狀態(tài)進(jìn)行檢測分析。這類工具往往不得不承受插粧帶來的巨大性能負(fù)載。為了提高性能,一些研究使用了采樣技術(shù),即僅僅檢測整個(gè)程序的一部分,但這種方式通常會(huì)損失檢測精度。另一方面,硬件架構(gòu)通過特定硬件收集程序運(yùn)行狀態(tài),從而避免了插粧帶來的性能負(fù)載。然而,硬件架構(gòu)往往僅針對(duì)于某種特定類型的并行錯(cuò)誤,從而限制了它們的靈活性與通用性。之前的工作指出,同一個(gè)并行程序中往往會(huì)隱藏著多于一種的并行錯(cuò)誤,即便如MySQL這類成熟的商用軟件也無法幸免。當(dāng)程序員進(jìn)行調(diào)試的時(shí)候,他們往往并不清楚代碼中到底包含的是哪一種并行錯(cuò)誤,一種種嘗試不同類型的錯(cuò)誤檢測工具顯得非常笨重而不靈活。因此,目前該領(lǐng)域急切需要一種能夠同時(shí)檢測多種并行錯(cuò)誤的硬件架構(gòu)。
[0004]如今,通用處理器與圖形處理器結(jié)合的體系架構(gòu)愈發(fā)流行,這為并行錯(cuò)誤檢測提供了嶄新的機(jī)會(huì)。一方面,通用圖形處理器包含了大量的通用計(jì)算單元。而且,在程序員進(jìn)行調(diào)試時(shí),這些計(jì)算單元往往是空閑的。另一方面,并行錯(cuò)誤雖然表現(xiàn)形式不同,但本質(zhì)上都是由于共享資源的使用不合理引起的。因此,檢測所需的程序狀態(tài)的關(guān)注點(diǎn)都在于訪存記錄(特別是共享的訪存記錄),使得檢測流程在前端收集方面存在一定的相似性。再者,檢測流程的后端,即并行錯(cuò)誤的檢測算法,擁有良好的計(jì)算并行度與數(shù)據(jù)并行度。因此,錯(cuò)誤檢測算法較為適合部署到通用圖形處理器上進(jìn)行,以利用通用圖形處理器上豐富的并行計(jì)算資源。而且,通用圖形處理器具有可編程性,也可以較為靈活地適用于不同類型的錯(cuò)誤檢測算法。因此,本發(fā)明致力于利用異構(gòu)平臺(tái)處理器,來設(shè)計(jì)一種針對(duì)多種并行錯(cuò)誤檢測的體系架構(gòu)。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于對(duì)目前主流的多種并行錯(cuò)誤提供一種基于中央處理器-通用圖形處理器的檢測體系架構(gòu)。
[0006]本發(fā)明提出的基于中央處理器-通用圖形處理器的多種并行錯(cuò)誤檢測體系架構(gòu),是對(duì)當(dāng)前主流的異構(gòu)平臺(tái)體系架構(gòu)的一種擴(kuò)展,使之能夠支持多種并行錯(cuò)誤的檢測。具體是在當(dāng)前主流的異構(gòu)平臺(tái)體系架構(gòu)基礎(chǔ)上添加兩個(gè)簡易硬件模塊(如圖1所示):訪存收集模塊和訪存預(yù)處理模塊,從而建立整個(gè)并行錯(cuò)誤檢測的體系;其中,所述訪存收集模塊在檢測流程的上游,位于每個(gè)處理器內(nèi),負(fù)責(zé)訪存收集;所述訪存預(yù)處理模塊接收訪存收集模塊收集的訪存信息,經(jīng)預(yù)處理后將它們記錄成為歷史信息,然后發(fā)送至通用圖形處理器進(jìn)行錯(cuò)誤檢測;通用圖形處理器在檢測流程下游,接收訪存預(yù)處理模塊發(fā)送來的訪存信息并進(jìn)行相應(yīng)算法的檢測。
[0007]本發(fā)明中,訪存收集模塊位于每個(gè)中央處理器核內(nèi),如圖2所示。它從重排序緩沖區(qū)中收集標(biāo)識(shí)的操作或是訪存指令。每條指令都會(huì)通過旁路發(fā)送到訪存收集模塊。訪存收集模塊判斷該指令是否是標(biāo)識(shí)的操作或者訪存指令,如果是,則將它保存至訪存收集模塊的訪存收集緩沖區(qū)。每條收集的訪存包含以下三個(gè)部分:(1)訪存的程序計(jì)數(shù)器;(2)訪存地址;(3)訪存類型,如讀取,存儲(chǔ)或者是順序違背中的操作類型(文件打開,關(guān)閉,讀取等等)。當(dāng)訪存收集模塊的收集緩沖區(qū)滿,訪存收集模塊便將收集緩沖區(qū)內(nèi)的訪存通過片上網(wǎng)絡(luò)發(fā)送至訪存預(yù)處理模塊。
[0008]本發(fā)明中,訪存預(yù)處理模塊位于片上,中央處理器與通用圖形處理器之間,與片上總線互聯(lián),如圖3所示。由于檢測數(shù)據(jù)競爭和順序違背所使用的happens-before算法需要訪存的時(shí)間戳信息、檢測原子性違背的ColorSafe算法需要顏色簽名賦值信息;同時(shí),這些檢測算法都需要維護(hù)歷史訪存,以供檢測時(shí)比較分析。因此,訪存預(yù)處理模塊的主要作用在于為錯(cuò)誤檢測生成必要的信息。首先,匯總訪存收集模塊收集的訪存;而后,進(jìn)行必要的預(yù)處理(如時(shí)間戳賦值,顏色簽名賦值等,歷史信息維護(hù));最后,將訪存發(fā)送至通用圖形處理器進(jìn)行檢測。由于通用圖形處理器在檢測時(shí)需要訪問位于訪存預(yù)處理模塊的歷史信息,較之分布式的訪存預(yù)處理模塊設(shè)計(jì),集中式的訪存預(yù)處理模塊設(shè)計(jì)更利于通用圖形處理器讀取時(shí)的帶寬與速度優(yōu)化。因此,本發(fā)明采用了集中式的訪存預(yù)處理模塊設(shè)計(jì)。
[0009]本發(fā)明中,所述通用圖形處理器上的并行錯(cuò)誤檢測:當(dāng)訪存由訪存預(yù)處理模塊發(fā)送至通用圖形處理器后,通用圖形處理器將根據(jù)所需要檢測的錯(cuò)誤類型,應(yīng)用相應(yīng)的檢測算法進(jìn)行檢測。每條待檢測訪存都被發(fā)送至通用圖形處理器端,通用圖形處理器端將待檢測訪存的地址與歷史信息中其它核(線程)的訪存進(jìn)行比較,以此確定是否存在并行錯(cuò)誤。由于檢測過程有著良好的并行度,不論是哪種錯(cuò)誤的檢測,本發(fā)明都可以將每條訪存的檢測處理器運(yùn)行檢測過程中不需要額外的同步操作,可以最大程度地并行化。
[0010]本發(fā)明在上述基本體系架構(gòu)設(shè)計(jì)之外,為了進(jìn)一步提高本發(fā)明的性能,本發(fā)明還引入了三種優(yōu)化策略。一、地址過濾,過濾不可能引發(fā)并行錯(cuò)誤的私有地址,旨在提高處理效率;二、避免共享內(nèi)存被替換(即避免歷史記錄中的共享訪存被替換),旨在提高檢測精確度;三、判斷并標(biāo)識(shí)“最后寫”訪存,利用happens-before算法的傳遞性性質(zhì),減少檢測負(fù)載,旨在提尚處理效率。
[0011]所述地址過濾,是使用計(jì)數(shù)布隆過濾器,通過該計(jì)數(shù)布隆過濾器,在訪存被發(fā)送到通用圖形處理器前,本發(fā)明首先將它與其它核(線程)的布隆過濾器進(jìn)行比較,判斷該訪存是否在其它核(線程)中出現(xiàn)。如果是,則該訪存是共享訪存,需要進(jìn)行后續(xù)的比較處理;否貝1J,該訪存是私有訪存,不會(huì)引發(fā)數(shù)據(jù)競爭。由于大部分的訪存都是私有的,所以都會(huì)被過濾掉。因此,通過該過濾器,通用圖形處理器上大部分的計(jì)算負(fù)載可以被避免。
[0012]所述避免共享內(nèi)存被替換,其措施是在歷史訪存緩沖區(qū)中為每個(gè)記錄添加了一個(gè)共享標(biāo)識(shí)位(因?yàn)椴⑿绣e(cuò)誤僅關(guān)注共享訪存),以此表明該訪存記錄是否是共享的。當(dāng)歷史緩沖區(qū)發(fā)生替換時(shí),優(yōu)先替換非共享的訪存記錄。憑借該策略,本發(fā)明可以保留更多有用的共享訪存記錄。
[0013]所述“最后寫”策略,一方面,對(duì)于同一線程的所有訪存,后續(xù)的訪存必然發(fā)生在先前訪存之后,因此,對(duì)于同一地址,本發(fā)明使用后續(xù)訪存替換先前訪存;另一方面,通過通用圖形處理器的反饋happens-before關(guān)系,識(shí)別線程間同一地址訪存的“最后寫”,使用后續(xù)訪存替換先前訪存。
[0014]本發(fā)明主要利用異構(gòu)平臺(tái)上通用圖形處理器強(qiáng)大的并行計(jì)算能力與可編程性,來同時(shí)檢測主流的多種并行錯(cuò)誤,包括數(shù)據(jù)競爭,原子性違背和順序違背。設(shè)計(jì)復(fù)雜度方面,本發(fā)明只需要較平滑的硬件復(fù)雜度,并且不需要改變片上關(guān)鍵路徑(如高速緩存或者緩存一致性)的邏輯,只添加訪存收集模塊和訪存預(yù)處理模塊,分別來收集可能導(dǎo)致并行錯(cuò)誤的訪存指令和提供錯(cuò)誤檢
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
昭平县| 东海县| 泗阳县| 台北县| 张掖市| 环江| 富蕴县| 湛江市| 葫芦岛市| 罗平县| 屏南县| 大悟县| 邵阳县| 鹤庆县| 肇庆市| 霍山县| 库车县| 周口市| 松原市| 灌云县| 江西省| 丽水市| 安龙县| 兴隆县| 乐山市| 呼和浩特市| 开平市| 上蔡县| 多伦县| 和林格尔县| 西乌| 绿春县| 家居| 聊城市| 灵寿县| 乡城县| 云南省| 凌云县| 鲁山县| 南通市| 永修县|