两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

異構(gòu)處理器體系的程序調(diào)試方法和系統(tǒng)的制作方法

文檔序號(hào):6380719閱讀:469來(lái)源:國(guó)知局
專利名稱:異構(gòu)處理器體系的程序調(diào)試方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及高性能計(jì)算領(lǐng)域,特別涉及一種異構(gòu)處理器體系的程序調(diào)試方法和系統(tǒng)。
背景技術(shù)
微處理器和高性能計(jì)算系統(tǒng)未來(lái)的設(shè)計(jì)都將是異構(gòu)并行或混合并行的體系結(jié)構(gòu),通用CPU和專用硬件或大規(guī)模并行加速器這兩大類型的組件以不同比例集成,即便在同一廠家的不同代處理器之間,CPU的核數(shù)在增加,硬件參數(shù)、集成比例在變化,軟件基 礎(chǔ)架構(gòu)的關(guān)鍵部分已經(jīng)很難跟上硬件變化的步伐,反過來(lái)又影響了處理器性能的充分利用和以高 性能計(jì)算為支撐的行業(yè)生產(chǎn)力水平的提高。異構(gòu)眾核計(jì)算目前都依賴程序員手工開發(fā)并行性,而軟件調(diào)試方法就是把加速部件上的數(shù)據(jù)和程序狀態(tài)搬回通用處理器部件上,用通用處理器上的調(diào)試工具進(jìn)行檢查,判斷其正確性。圖I示出了一種多核處理器的程序調(diào)試架構(gòu),該架構(gòu)采用斷點(diǎn)調(diào)試技術(shù)調(diào)試器修改被調(diào)試程序的正文段,用斷點(diǎn)指令替換原來(lái)的一條指令,處理器執(zhí)行斷點(diǎn)指令后,將產(chǎn)生一個(gè)異常(調(diào)試異常),操作系統(tǒng)捕獲調(diào)試異常,掛起被調(diào)試進(jìn)程中的所有輕量級(jí)進(jìn)程(LWP),再通過信號(hào)喚醒調(diào)試器進(jìn)程,調(diào)試器接管處理被調(diào)試進(jìn)程。斷點(diǎn)調(diào)試中用的最多的調(diào)試命令是設(shè)置斷點(diǎn)和單步,源碼級(jí)單步就是對(duì)各種編程語(yǔ)言支持逐代碼行、逐函數(shù)的執(zhí)行,其實(shí)現(xiàn)算法簡(jiǎn)單地講,就是逐條執(zhí)行指令,直到當(dāng)前PC不在當(dāng)前源行的范圍內(nèi),這個(gè)范圍是根據(jù)編譯器靜態(tài)產(chǎn)生的調(diào)試信息來(lái)確定的。斷點(diǎn)調(diào)試技術(shù)對(duì)微處理器、操作系統(tǒng)(OS)、編譯器的依賴性使斷點(diǎn)調(diào)試工具面臨體系結(jié)構(gòu)變化帶來(lái)的新挑戰(zhàn)。現(xiàn)有的軟件調(diào)試器架構(gòu)只能適應(yīng)唯一確定的微處理器體系結(jié)構(gòu),只能調(diào)試操作系統(tǒng)支持的軟件線程。例如Intel idb只能調(diào)試通用x86處理器上的軟件程序,開源社區(qū)的gdb在源碼生成的過程中必須先確定目標(biāo)平臺(tái)類型,生成的gdb只能調(diào)試這種平臺(tái)上運(yùn)行的程序。眾核處理器一個(gè)芯片上兩種組件,各有其硬件指令集、寄存器集及其寬度、字長(zhǎng)字節(jié)序等,中斷和異常等基礎(chǔ)支撐、程序編程方法也可能不同,而且眾核處理器可能是未來(lái)廣泛應(yīng)用的處理器,非某一領(lǐng)域?qū)S玫男酒?,留給程序員兩種不同的調(diào)試方法不是最終的解決方案,因此,軟件調(diào)試的基礎(chǔ)架構(gòu)必須做關(guān)鍵性的改變,以適應(yīng)未來(lái)硬件設(shè)計(jì)的發(fā)展趨勢(shì)。軟件調(diào)試從單核單進(jìn)程調(diào)試發(fā)展到多核多線程調(diào)試,調(diào)試基礎(chǔ)的一個(gè)重要改變是操作系統(tǒng)能夠支持對(duì)輕量級(jí)進(jìn)程的調(diào)試。但是大規(guī)模加速部件一般都采用硬件調(diào)度,屬于硬件線程,缺少一種面向支撐軟硬件線程的異構(gòu)調(diào)試架構(gòu),同時(shí)向后兼容多核,使多核軟件調(diào)試工具能夠平穩(wěn)升級(jí)。異構(gòu)處理器上,軟件調(diào)試面臨兩個(gè)方面的問題一是支持程序流程跟蹤這一調(diào)試功能的最關(guān)鍵部分不能適應(yīng)兩種組件的問題,現(xiàn)有軟件調(diào)試方法基于操作系統(tǒng)技術(shù),只能滿足相同概念的兩個(gè)軟件進(jìn)程(或線程)之間的通信,無(wú)法控制另一種處理器組件,而且是大規(guī)模的加速計(jì)算組件;二是加速組件發(fā)生程序異常時(shí)的最近指令流還原問題,大規(guī)模加速組件不斷增加并行核數(shù),精簡(jiǎn)控制邏輯,以提高芯片并行計(jì)算性能,由于指令預(yù)取、亂序執(zhí)行需要附加高價(jià)的跟蹤邏輯,才能收集并還原運(yùn)行時(shí)的程序軌跡,代價(jià)是增加芯片面積和功耗,導(dǎo)致高性能計(jì)算機(jī)的功耗大幅度增加,因此大規(guī)模加速組件很難像嵌入式芯片那樣支持片上跟蹤調(diào)試手段的實(shí)現(xiàn)。GPU是一種集成了大規(guī)模加速組件的圖形處理器,與CPU —起使用,建立與眾核處理器類似的異構(gòu)并行計(jì)算,但是GPU支持的并行應(yīng)用類型有限,仍然有相當(dāng)廣泛的應(yīng)用課題無(wú)法采用GPU加速并行,雖然GPU上的軟件調(diào)試工具具備了對(duì)GPU程序進(jìn)行跟蹤調(diào)試的功能,但是GPU核的調(diào)度切換在調(diào)試情況下非常單一,這意味著在并行受限的情況下調(diào)試GPU程序,再現(xiàn)GPU程序的真實(shí)錯(cuò)誤流程成為GPU軟件調(diào)試最突出的問題。

發(fā)明內(nèi)容
本發(fā)明技術(shù)方案要解決的技術(shù)問題是現(xiàn)有的軟件調(diào)試方案不適用于異構(gòu)處理器·體系的異構(gòu)并行程序調(diào)試。為解決上述技術(shù)問題,本發(fā)明技術(shù)方案提供一種異構(gòu)處理器體系的程序調(diào)試方法,所述異構(gòu)處理器體系包括主核和從核兩種片上組件,其特征在于,被調(diào)試程序是主從核混合并行程序,包括主核程序和從核程序,所述調(diào)試方法包括調(diào)試器根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn);操作系統(tǒng)捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)而產(chǎn)生;操作系統(tǒng)識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器;調(diào)試器被喚醒,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。可選的,調(diào)試器對(duì)主核程序設(shè)置用戶斷點(diǎn)通過斷點(diǎn)指令實(shí)現(xiàn)??蛇x的,調(diào)試器對(duì)從核程序設(shè)置用戶斷點(diǎn)通過設(shè)置從核硬件斷點(diǎn)實(shí)現(xiàn)。可選的,還包括調(diào)試器基于調(diào)試調(diào)度算法跟蹤所述被調(diào)試程序的執(zhí)行,所述調(diào)試調(diào)度算法包括步驟1,所述調(diào)試器調(diào)度主核線程恢復(fù)執(zhí)行,自身等待喚醒;步驟2,喚醒后查詢主核線程和關(guān)聯(lián)的從核線程的狀態(tài)信息;步驟3,如果僅從核活動(dòng)集的子集到達(dá)用戶斷點(diǎn),則轉(zhuǎn)步驟I ;步驟4,若所述從核活動(dòng)集全集到達(dá)用戶斷點(diǎn),則查詢主核線程是否有未處理的軟中斷,如果有,則轉(zhuǎn)步驟1,否則結(jié)束。可選的,還包括調(diào)試器設(shè)置從核活動(dòng)集;所述對(duì)從核程序設(shè)置用戶斷點(diǎn)是指對(duì)從核活動(dòng)集中的從核對(duì)應(yīng)的從核進(jìn)程設(shè)置用戶斷點(diǎn)??蛇x的,還包括調(diào)試器設(shè)置從核活動(dòng)集以外的從核的調(diào)度策略,所述調(diào)度策略為恢復(fù)執(zhí)行從核進(jìn)程或不恢復(fù)執(zhí)行從核進(jìn)程。與現(xiàn)有技術(shù)相比,上述技術(shù)方案提供了實(shí)現(xiàn)異構(gòu)并行程序調(diào)試的通用方案,為軟件調(diào)試基礎(chǔ)架構(gòu)的關(guān)鍵部分設(shè)計(jì)一種模型,以支撐異構(gòu)處理器體系上兩種組件(通用處理組件和加速計(jì)算組件)的并行程序調(diào)試。進(jìn)一步,通過調(diào)試調(diào)度算法,可以使程序員結(jié)合兩種組件上各自的執(zhí)行執(zhí)行路徑和并行方式,跟蹤異構(gòu)并行程序的執(zhí)行,幫助程序員定位加速組件的程序錯(cuò)誤。


圖I是現(xiàn)有的一種多核處理器的程序調(diào)試架構(gòu)示意圖;圖2是本發(fā)明技術(shù)方案的異構(gòu)處理器體系的程序調(diào)試方法的流程示意圖;圖3是圖2所示步驟SI中對(duì)從核程序設(shè)置用戶斷點(diǎn)的示意圖;圖4是加速組件的程序異常錯(cuò)誤分析的模型架構(gòu)。
具體實(shí)施例方式本發(fā)明技術(shù)方案突破現(xiàn)有軟件調(diào)試的關(guān)鍵技術(shù)限制,針對(duì)異構(gòu)處理器體系及其異構(gòu)編程模型,提出一個(gè)從硬件、操作系統(tǒng)到調(diào)試器的完整的軟件調(diào)試架構(gòu),提供了面向異構(gòu)處理器體系的一體化軟件調(diào)試工具的實(shí)現(xiàn)方案。圖2為本發(fā)明技術(shù)方案提供的異構(gòu)處理器體系的程序調(diào)試方法的流程示意圖,其中,所述異構(gòu)處理器體系包括通用處理組件(簡(jiǎn)稱通用組件)和加速計(jì)算組件(簡(jiǎn)稱加速組件)陣列,通用處理組件(即主核)有較完整的控制邏輯,加速計(jì)算組件(即從核)精簡(jiǎn)了大量控制邏輯,內(nèi)部有私有的片上緩存以優(yōu)化存儲(chǔ)層次結(jié)構(gòu),提高加速計(jì)算的吞吐率,兩種組件的指令集、字長(zhǎng)可以不同。在眾核處理器中,操作系統(tǒng)裝載于主核,因而也稱為主核操作系統(tǒng),通用處理組件的調(diào)度單位為線程,線程是操作系統(tǒng)分配處理器運(yùn)算時(shí)間的最小單位,這種由操作系統(tǒng)調(diào)度的線程稱主核線程。在加速計(jì)算組件陣列中,實(shí)行硬件調(diào)度,硬件通過指令緩存自動(dòng)取指執(zhí)行主核映射好的一段空間中的指令,直到執(zhí)行停機(jī)指令,稱這段指令為從核線程。被調(diào)試程序(眾核程序)采用異構(gòu)編程模型,即被調(diào)試程序是主從核混合并行程序,也稱為異構(gòu)并行程序,其包括主核程序和從核程序,主核程序運(yùn)行在通用處理組件上,負(fù)責(zé)數(shù)據(jù)分解、空間映射、網(wǎng)絡(luò)通信、主存訪問、輸入輸出等。從核程序是主核程序映射好的一段指令空間,運(yùn)行在加速計(jì)算組件上,從事大規(guī)模的數(shù)據(jù)并行計(jì)算,各加速組件(從核)之間通過寄存器或片上私有緩存進(jìn)行細(xì)粒度的通信,與通用處理組件之間通過主存進(jìn)行較粗粒度的通信。操作系統(tǒng)給正在運(yùn)行的被調(diào)試程序分配一塊內(nèi)存空間,該空間在物理上不連續(xù),在邏輯上連續(xù),邏輯上連續(xù)的空間稱為虛空間,也稱為進(jìn)程空間(或任務(wù)空間),主核線程和從核線程共享訪問該空間。下面以眾核處理器為例,結(jié)合附圖對(duì)所述程序調(diào)試方法進(jìn)行詳細(xì)說(shuō)明。如圖2所示,所述調(diào)試方法首先執(zhí)行步驟SI,調(diào)試器根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn)。實(shí)際實(shí)施時(shí),調(diào)試器可對(duì)用戶(如程序員)提供統(tǒng)一的斷點(diǎn)設(shè)置命令和界面,用戶根據(jù)程序調(diào)試需求設(shè)置對(duì)所述主核程序和從核程序的用戶斷點(diǎn)。本技術(shù)方案中,將根據(jù)用戶設(shè)置對(duì)主核程序和從核程序設(shè)置的斷點(diǎn)稱為用戶斷點(diǎn)。本實(shí)施例的步驟SI設(shè)置用戶斷點(diǎn)的流程保留了通用CPU的斷點(diǎn)設(shè)置流程,設(shè)計(jì)了基于加速組件硬件斷點(diǎn)的軟件設(shè)置斷點(diǎn)方式,具體來(lái)說(shuō)調(diào)試器對(duì)主核程序設(shè)置用戶斷點(diǎn)通過斷點(diǎn)指令實(shí)現(xiàn)。通用處理組件通常支持軟件斷點(diǎn),通過這種方法可以實(shí)現(xiàn)調(diào)試器對(duì)主核程序設(shè)置用戶斷點(diǎn)。調(diào)試器對(duì)從核程序設(shè)置用戶斷點(diǎn)通過設(shè)置從核硬件斷點(diǎn)實(shí)現(xiàn)。加速組件由于精簡(jiǎn)控制邏輯,斷點(diǎn)支持遠(yuǎn)不及通用處理組件,本實(shí)施例提出一種移位斷點(diǎn)算法,保證只要加速組件支持一個(gè)硬件斷點(diǎn),眾核調(diào)試器就能夠滿足用戶設(shè)置足夠數(shù)量的用戶斷點(diǎn)。首先,進(jìn)行如下設(shè)置I.用戶在從核程序中設(shè)置斷點(diǎn),其地址分別為B1, B2,......,Bn;2.與編譯器約定預(yù)留一塊虛地址空間,從地址A開始,共2K字節(jié);3.該加速組件核(RISC結(jié)構(gòu))指令長(zhǎng)度為c字節(jié)。所述移位斷點(diǎn)算法步驟包括I.在調(diào)試器中保存從核程序在斷點(diǎn)Bk的原程序指令I(lǐng)k ; 2.在被調(diào)試程序虛地址A+(k_l)*c處生成7條指令(如圖3所示),k為斷點(diǎn)號(hào),k= l,2,...n ;R1為加速核(從核)的一個(gè)通用寄存器,(Rl)表示Rl的值,指令I(lǐng)k存放在地址 Bk’ = A+(7k-l)*c ;3.如果Ik為轉(zhuǎn)移指令,要調(diào)整目的地址,偏移(Bk’ -Bk) /c條指令;4.替換Bk地址的指令為一條轉(zhuǎn)移指令,目的地址為A+ (k-1) *c ;5.其它斷點(diǎn)依此類推;6.設(shè)置臨時(shí)斷點(diǎn)在A (使硬件斷點(diǎn)寄存器的值為A),置加速核指令緩存無(wú)效,令其從主存重新預(yù)取指令;7.執(zhí)行程序,捕獲臨時(shí)斷點(diǎn)A,讀Rl的值得到地址Bk’,設(shè)置臨時(shí)斷點(diǎn)在Bk’ ;8.執(zhí)行程序,捕獲臨時(shí)斷點(diǎn)Bk’,計(jì)算確定斷點(diǎn)號(hào)k ;9.給用戶報(bào)告到達(dá)斷點(diǎn)Bk,10.當(dāng)用戶要求繼續(xù)執(zhí)行或刪除斷點(diǎn)Bk時(shí),把保存的原指令I(lǐng)k恢復(fù)到從核程序空間的地址Bk,地址A后面的指令不變,然后置加速核指令緩存無(wú)效,令其從主存重新預(yù)取指令;11.當(dāng)用戶增加新的斷點(diǎn)Bk時(shí),置k+1 — k,轉(zhuǎn)I。該算法支持對(duì)從核程序設(shè)置n個(gè)用戶斷點(diǎn),需要7n*c字節(jié)的空間開銷,對(duì)于一般RISC加速組件,2K字節(jié)足夠滿足70個(gè)斷點(diǎn),僅需要加速核提供一個(gè)硬件斷點(diǎn)的邏輯開銷。地址A后面的指令不變的原因是當(dāng)原指令I(lǐng)k為寄存器間接尋址轉(zhuǎn)移指令時(shí),從核要返回到Bk’后面的一條指令(即跳回Bk’的指令)繼續(xù)執(zhí)行。繼續(xù)參考圖2,步驟S2,操作系統(tǒng)捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)或臨時(shí)斷點(diǎn)而產(chǎn)生。當(dāng)主核執(zhí)行到主核斷點(diǎn)指令后,產(chǎn)生主核調(diào)試異常(軟中斷),主核操作系統(tǒng)捕獲主核調(diào)試異常。從核支持硬件斷點(diǎn),即當(dāng)從核硬件從指令緩存取指令時(shí)發(fā)現(xiàn)指令地址與硬件調(diào)試寄存器中的內(nèi)容匹配時(shí),則停止取指令,排空指令流水線,并發(fā)送從核調(diào)試中斷(硬件中斷)給主核,即產(chǎn)生從核調(diào)試異常,主核操作系統(tǒng)捕獲從核調(diào)試異常。本實(shí)施例的步驟S2保留了通用CPU的調(diào)試異常捕獲流程,擴(kuò)展了加速組件調(diào)試中斷的捕獲。在實(shí)際實(shí)施時(shí),在操作系統(tǒng)中設(shè)計(jì)一個(gè)中間件,以捕獲調(diào)試異常,調(diào)試異常與主核和從核的混合比例無(wú)關(guān)。步驟S3,操作系統(tǒng)識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器。具體地,操作系統(tǒng)根據(jù)調(diào)試異常來(lái)源,識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,若是主核調(diào)試異常,在主核線程的核心棧中保存主核線程現(xiàn)場(chǎng)和調(diào)試異常;若是從核調(diào)試異常,在OS核心空間開辟一塊固定的緩存,保存從核線程現(xiàn)場(chǎng)和從核調(diào)試異常,并記錄所述調(diào)試異常的來(lái)源,然后通過軟中斷喚醒所述調(diào)試器。現(xiàn)場(chǎng)也稱為上下文,是進(jìn)程的當(dāng)前執(zhí)行狀態(tài),例如,當(dāng)前指令地址、硬件寄存器、進(jìn)程地址空間等狀態(tài)信息。本實(shí)施例的步驟S3將兩種組件的調(diào)試異常抽象為一種與現(xiàn)有調(diào)試器基礎(chǔ)架構(gòu)兼容的調(diào)試信號(hào),通過操作系統(tǒng)對(duì)主核調(diào)試異常和從核調(diào)試異常的合并,提供了從核斷點(diǎn)事件的通知,從而可以與現(xiàn)有的多核軟件調(diào)試兼容,便于多核軟件調(diào)試器的移植和操作系統(tǒng)的擴(kuò)展,保護(hù)了現(xiàn)有的軟件資源。步驟S4,調(diào)試器被喚醒,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。具體地,調(diào)試器被操作系統(tǒng)軟中斷喚醒后,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng),確定主核和/或從核的狀態(tài)信息,并將查詢結(jié)果反饋給用戶。本實(shí)施例的步驟S4保留通用CPU程序的調(diào)試信號(hào)處理流程,增加處理加速組件的調(diào)試信號(hào)的流程。操作系統(tǒng)捕獲調(diào)試異常之后,通過軟中斷喚醒在主核上運(yùn)行的眾核調(diào)試器進(jìn)程。由于從核數(shù)量大,核數(shù)仍有繼續(xù)增加的趨勢(shì),而且各從核執(zhí)行路徑可能不同,到達(dá)斷點(diǎn)有先·后,所以要考慮一個(gè)斷點(diǎn)相關(guān)的軟中斷次數(shù)很可能有多次,這是與通用處理器上不同的問題。對(duì)此問題,眾核調(diào)試器設(shè)計(jì)一個(gè)基于從核活動(dòng)集(記為a)的調(diào)試調(diào)度算法,包括I. a缺省為所有從核(記為S),2.所述調(diào)試器調(diào)度主核線程恢復(fù)執(zhí)行,自身等待喚醒,3.喚醒后查詢主核線程和關(guān)聯(lián)的從核線程的狀態(tài)信息,4.如果僅a的子集到達(dá)用戶斷點(diǎn),則轉(zhuǎn)2 ;5.若a全集到達(dá)用戶斷點(diǎn),則查詢主核線程是否有懸掛的信號(hào)(即未處理的軟中斷),如果有,則轉(zhuǎn)2,否則返回(算法結(jié)束)。為了有效地控制大規(guī)模加速組件的軟件調(diào)試開銷,本發(fā)明實(shí)施例的程序調(diào)試方法還可以包括調(diào)試器設(shè)置從核活動(dòng)集;所述對(duì)從核程序設(shè)置用戶斷點(diǎn)是指對(duì)從核活動(dòng)集中的從核對(duì)應(yīng)的從核進(jìn)程設(shè)置用戶斷點(diǎn)。具體地,以a表示從核活動(dòng)集,S表示從核全集,用戶通過設(shè)置從核活動(dòng)集的調(diào)試命令(如Slavea)設(shè)置a中的成員(從核),調(diào)試器根據(jù)用戶的該調(diào)試命令設(shè)置a,用戶設(shè)置的用戶斷點(diǎn)僅對(duì)a中的從核有效,a之外的從核不產(chǎn)生從核調(diào)試異常,從而降低了總的調(diào)試中斷處理開銷,提高了眾核程序的執(zhí)行效率。a可以動(dòng)態(tài)定義和改變把語(yǔ)義行為相同或相似的從核線程對(duì)應(yīng)的從核放在同一a,進(jìn)行統(tǒng)一調(diào)度執(zhí)行,調(diào)試器按調(diào)試調(diào)度算法步驟,待a中所有從核都到達(dá)斷點(diǎn),才報(bào)告斷點(diǎn)給用戶,這樣可避免一個(gè)斷點(diǎn)多次中斷的現(xiàn)象,減輕了用戶使用負(fù)擔(dān);把語(yǔ)義行為不同的從核線程對(duì)應(yīng)的從核放在不同的a中,便于控制不同程序分支的從核。調(diào)試器還可以設(shè)置從核活動(dòng)集以外的從核的調(diào)度策略,所述調(diào)度策略為恢復(fù)執(zhí)行從核線程或不恢復(fù)執(zhí)行從核線程。具體地,用戶通過設(shè)置調(diào)度策略的調(diào)試命令(如Setinactive-slave-exec P)設(shè)置a以外的從核的調(diào)度策略P,其中,P = go表示在恢復(fù)a中的從核線程執(zhí)行從核程序時(shí),a以外的從核也恢復(fù)執(zhí)行,但不設(shè)置用戶斷點(diǎn)和臨時(shí)斷點(diǎn);P =suspend表示在恢復(fù)a中的從核線程執(zhí)行從核程序時(shí),a以外的從核不恢復(fù)執(zhí)行。用戶可根據(jù)程序行為的變化設(shè)置a和P,靈活地調(diào)試具有語(yǔ)義分支的代碼??煽s放的從核活動(dòng)集意味著支持從O-MAX多種組合的從核群調(diào)度,開放的調(diào)度策略,使用戶可以添加新的調(diào)度選擇,具有能力擴(kuò)展新的調(diào)試執(zhí)行模型,以支持不斷發(fā)展變化的眾核及其編程模型。通過可動(dòng)態(tài)設(shè)置的從核活動(dòng)集和開放的從核調(diào)度策略,解決大規(guī)模從核的跟蹤執(zhí)行,解決了主從核混合調(diào)度執(zhí)行,有效地控制了大規(guī)模從核調(diào)試的開銷。請(qǐng)繼續(xù)參考圖4,其是一種對(duì)加速組件程序(從核)異常進(jìn)行錯(cuò)誤定位的模型架構(gòu)。在從核程序執(zhí)行過程中由于越界訪問,可能訪問沒有申請(qǐng)或受保護(hù)的空間,或者破壞其它無(wú)法估計(jì)的變量的內(nèi)容,造成程序在一定的輸入或并行規(guī)模下運(yùn)行時(shí)其它地方出錯(cuò)。在處理器限制附加片上控制邏輯來(lái)跟蹤程序的情況下,該模型提出了解決這類編程錯(cuò)誤的一般模型。如圖4所示,硬件上下文指從核程序?qū)嶋H運(yùn)行時(shí)的內(nèi)部控制寄存器狀態(tài),如流水線i當(dāng)前準(zhǔn)備發(fā)射的指令類型,流水線i本拍完成的指令地址,通用寄存器記分板狀態(tài)等;知識(shí)庫(kù)是一種從核調(diào)試經(jīng)驗(yàn)庫(kù),這些調(diào)試經(jīng)驗(yàn)是從硬件設(shè)計(jì)人員的設(shè)計(jì)規(guī)則和已有的從核調(diào)試問題的解決方法中總結(jié)出來(lái)的;預(yù)期程序行為就是程序員(即調(diào)試用戶)預(yù)期的程序
語(yǔ)義和變量值;片上跟蹤就是從核邏輯設(shè)計(jì)時(shí)為了增強(qiáng)從核的可編程性和可調(diào)試性,附加的跟蹤邏輯,目前這塊沒有適合大規(guī)模加速組件的設(shè)計(jì)方法。需要說(shuō)明的是,上述實(shí)施例是以眾核處理器為例進(jìn)行說(shuō)明的,但上述技術(shù)方案并不限于應(yīng)用于眾核處理器,其同樣也適于CPU+GPU、CPU+FPGA等其他異構(gòu)處理器體系?;谏鲜龀绦蛘{(diào)試方法,本發(fā)明技術(shù)方案還提供一種異構(gòu)處理器體系的程序調(diào)試系統(tǒng),所述異構(gòu)處理器體系包括主核和從核兩種片上組件,被調(diào)試程序是主從核混合并行程序,包括主核程序和從核程序,所述調(diào)試系統(tǒng)包括調(diào)試器和操作系統(tǒng),所述調(diào)試器包括設(shè)置單元和查詢單元,所述操作系統(tǒng)包括中間件;其中,所述設(shè)置單元用于根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn);所述中間件用于捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)而產(chǎn)生;所述中間件還用于識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器;所述查詢單元用于在被喚醒后,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。本實(shí)施例中,所述設(shè)置單元包括第一斷點(diǎn)設(shè)置單元和第二斷點(diǎn)設(shè)置單元。所述第一斷點(diǎn)設(shè)置單元用于通過斷點(diǎn)指令實(shí)現(xiàn)對(duì)主核程序設(shè)置用戶斷點(diǎn);所述第二斷點(diǎn)設(shè)置單元用于通過設(shè)置從核硬件斷點(diǎn)實(shí)現(xiàn)對(duì)從核程序設(shè)置用戶斷點(diǎn)。本實(shí)施例中,所述調(diào)試器還包括跟蹤單元、活動(dòng)集設(shè)置單元和策略設(shè)置單元。所述跟蹤單元用于基于并行調(diào)度算法跟蹤所述被調(diào)試程序的執(zhí)行;所述活動(dòng)集設(shè)置單元用于設(shè)置從核活動(dòng)集;所述對(duì)從核程序設(shè)置用戶斷點(diǎn)是指對(duì)從核活動(dòng)集中的從核對(duì)應(yīng)的從核進(jìn)程設(shè)置用戶斷點(diǎn)。所述策略設(shè)置單元用于設(shè)置從核活動(dòng)集以外的從核的調(diào)度策略,所述調(diào)度策略為恢復(fù)執(zhí)行從核進(jìn)程或不恢復(fù)執(zhí)行從核進(jìn)程。綜上所述,本發(fā)明技術(shù)方案具有如下優(yōu)點(diǎn)提供了實(shí)現(xiàn)異構(gòu)并行程序調(diào)試的通用方案,為軟件調(diào)試基礎(chǔ)架構(gòu)的關(guān)鍵部分設(shè)計(jì)一種模型,以支撐異構(gòu)處理器體系上兩種組件(通用處理組件和加速計(jì)算組件)的并行程序調(diào)試。進(jìn)一步,通過調(diào)試調(diào)度算法,可以使程序員結(jié)合兩種組件上各自的執(zhí)行執(zhí)行路徑和并行方式,跟蹤異構(gòu)并行程序的執(zhí)行,幫助程序員定位加速組件的程序錯(cuò)誤。本發(fā)明雖然已以較佳實(shí)施例公開如上,但其并不是用來(lái)限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案做出可能的變動(dòng)和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì) 對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護(hù)范圍。
權(quán)利要求
1.一種異構(gòu)處理器體系的程序調(diào)試方法,所述異構(gòu)處理器體系包括主核和從核兩種片上組件,其特征在干,被調(diào)試程序是主從核混合并行程序,包括主核程序和從核程序,所述調(diào)試方法包括 調(diào)試器根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn); 操作系統(tǒng)捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)而產(chǎn)生; 操作系統(tǒng)識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器; 調(diào)試器被喚醒,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。
2.如權(quán)利要求I所述的異構(gòu)處理器體系的程序調(diào)試方法,其特征在于,調(diào)試器對(duì)主核程序設(shè)置用戶斷點(diǎn)通過斷點(diǎn)指令實(shí)現(xiàn)。
3.如權(quán)利要求I所述的異構(gòu)處理器體系的程序調(diào)試方法,其特征在于,調(diào)試器對(duì)從核程序設(shè)置用戶斷點(diǎn)通過設(shè)置從核硬件斷點(diǎn)實(shí)現(xiàn)。
4.如權(quán)利要求I所述的異構(gòu)處理器體系的程序調(diào)試方法,其特征在于,還包括調(diào)試器基于調(diào)試調(diào)度算法跟蹤所述被調(diào)試程序的執(zhí)行,所述調(diào)試調(diào)度算法包括 步驟1,所述調(diào)試器調(diào)度主核線程恢復(fù)執(zhí)行,自身等待喚醒; 步驟2,喚醒后查詢主核線程和關(guān)聯(lián)的從核線程的狀態(tài)信息; 步驟3,如果僅從核活動(dòng)集的子集到達(dá)用戶斷點(diǎn),則轉(zhuǎn)步驟I ; 步驟4,若所述從核活動(dòng)集全集到達(dá)用戶斷點(diǎn),則查詢主核線程是否有未處理的軟中斷,如果有,則轉(zhuǎn)步驟1,否則結(jié)束。
5.如權(quán)利要求4所述的異構(gòu)處理器體系的程序調(diào)試方法,其特征在于,還包括調(diào)試器設(shè)置從核活動(dòng)集;所述對(duì)從核程序設(shè)置用戶斷點(diǎn)是指對(duì)從核活動(dòng)集中的從核對(duì)應(yīng)的從核進(jìn)程設(shè)置用戶斷點(diǎn)。
6.如權(quán)利要求4所述的異構(gòu)處理器體系的程序調(diào)試方法,其特征在于,還包括調(diào)試器設(shè)置從核活動(dòng)集以外的從核的調(diào)度策略,所述調(diào)度策略為恢復(fù)執(zhí)行從核進(jìn)程或不恢復(fù)執(zhí)行從核進(jìn)程。
7.—種異構(gòu)處理器體系的程序調(diào)試系統(tǒng),所述異構(gòu)處理器體系包括主核和從核兩種片上組件,其特征在干,被調(diào)試程序是主從核混合并行程序,包括主核程序和從核程序,所述調(diào)試系統(tǒng)包括調(diào)試器和操作系統(tǒng),所述調(diào)試器包括設(shè)置單元和查詢單元,所述操作系統(tǒng)包括中間件;其中, 所述設(shè)置単元用于根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn); 所述中間件用于捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)而產(chǎn)生; 所述中間件還用于識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器; 所述查詢単元,用于在被喚醒后,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。
8.如權(quán)利要求7所述的異構(gòu)處理器體系的程序調(diào)試系統(tǒng),其特征在于,所述設(shè)置単元包括 第一斷點(diǎn)設(shè)置單元,用于通過斷點(diǎn)指令實(shí)現(xiàn)對(duì)主核程序設(shè)置用戶斷點(diǎn);第二斷點(diǎn)設(shè)置單元,用于通過設(shè)置從核硬件斷點(diǎn)實(shí)現(xiàn)對(duì)從核程序設(shè)置用戶斷點(diǎn)。
9.如權(quán)利要求7所述的異構(gòu)處理系統(tǒng)的程序調(diào)試系統(tǒng),其特征在于,所述調(diào)試器還包括跟蹤單元,用于基于調(diào)試調(diào)度算法跟蹤所述被調(diào)試程序的執(zhí)行,所述調(diào)試調(diào)度算法包括 步驟1,所述調(diào)試器調(diào)度主核線程恢復(fù)執(zhí)行,自身等待喚醒; 步驟2,喚醒后查詢主核線程和關(guān)聯(lián)的從核線程的狀態(tài)信息; 步驟3,如果僅從核活動(dòng)集的子集到達(dá)用戶斷點(diǎn),則轉(zhuǎn)步驟I ; 步驟4,若所述從核活動(dòng)集全集到達(dá)用戶斷點(diǎn),則查詢主核線程是否有未處理的軟中斷,如果有,則轉(zhuǎn)步驟1,否則結(jié)束。
10.如權(quán)利要求9所述的異構(gòu)處理器體系的程序調(diào)試系統(tǒng),其特征在于,所述調(diào)試器還包括活動(dòng)集設(shè)置單元,用于設(shè)置從核活動(dòng)集;所述對(duì)從核程序設(shè)置用戶斷點(diǎn)是指對(duì)從核活動(dòng)集中的從核對(duì)應(yīng)的從核進(jìn)程設(shè)置用戶斷點(diǎn)。
11.如權(quán)利要求9所述的異構(gòu)處理器體系的程序調(diào)試系統(tǒng),其特征在于,所述調(diào)試器還包括策略設(shè)置單元,用于設(shè)置從核活動(dòng)集以外的從核的調(diào)度策略,所述調(diào)度策略為恢復(fù)執(zhí)行從核進(jìn)程或不恢復(fù)執(zhí)行從核進(jìn)程。
12.如權(quán)利要求7所述的異構(gòu)處理器體系的程序調(diào)試系統(tǒng),其特征在于,所述異構(gòu)處理器體系為眾核處理器、CPU+GPU體系或CPU+FPGA體系。
全文摘要
一種異構(gòu)處理器體系的程序調(diào)試方法和系統(tǒng)。所述程序調(diào)試方法包括調(diào)試器根據(jù)用戶設(shè)置對(duì)所述主核程序和從核程序分別設(shè)置用戶斷點(diǎn);操作系統(tǒng)捕獲調(diào)試異常,所述調(diào)試異常由所述主核或從核基于用戶斷點(diǎn)而產(chǎn)生;操作系統(tǒng)識(shí)別所述調(diào)試異常為主核調(diào)試異常還是從核調(diào)試異常,并將所述調(diào)試異常的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)映射到調(diào)試器可訪問的地址空間,然后喚醒所述調(diào)試器;調(diào)試器被喚醒,查詢所記錄的主核現(xiàn)場(chǎng)和/或從核現(xiàn)場(chǎng)。本發(fā)明技術(shù)方案提供了實(shí)現(xiàn)異構(gòu)并行程序調(diào)試的通用方案,以支撐異構(gòu)處理器體系上兩種組件的并行程序調(diào)試。
文檔編號(hào)G06F11/36GK102955737SQ20121043933
公開日2013年3月6日 申請(qǐng)日期2012年11月6日 優(yōu)先權(quán)日2012年11月6日
發(fā)明者陳華蓉, 王敬宇, 馮赟龍, 王雯霞 申請(qǐng)人:無(wú)錫江南計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
黎川县| 赤水市| 富裕县| 辽宁省| 蒲江县| 桑植县| 深水埗区| 邯郸市| 建平县| 曲靖市| 射洪县| 湘乡市| 阜城县| 唐山市| 恭城| 策勒县| 昭觉县| 韶关市| 和林格尔县| 长岛县| 宜城市| 靖江市| 确山县| 泾川县| 宜兴市| 太原市| 正宁县| 四平市| 天等县| 南丹县| 丹江口市| 惠东县| 五原县| 从化市| 闸北区| 石家庄市| 南溪县| 甘洛县| 五家渠市| 竹北市| 额尔古纳市|