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

管理并發(fā)謂詞表達(dá)式的方法和裝置的制造方法

文檔序號:9355153閱讀:420來源:國知局
管理并發(fā)謂詞表達(dá)式的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本公開內(nèi)容大體上涉及多線程調(diào)試,并且更特別地涉及管理并發(fā)謂詞表達(dá)式的方法和裝置。
【背景技術(shù)】
[0002]近年來,多核處理器已經(jīng)存在于電子設(shè)備市場中以提高計算機、平板電腦、移動電話和/或車輛計算機系統(tǒng)的性能。為了利用具有多個核和/或多個處理器的計算平臺和/或設(shè)備,在這樣的系統(tǒng)/設(shè)備上執(zhí)行的代碼需要增加(例如,最大化)允許每個可用核或處理器獨立于任何其它核或處理器來執(zhí)行的機會。一些代碼開發(fā)者和/或軟件工程師把多核/多處理器代碼開發(fā)稱為并行編程。
【附圖說明】
[0003]圖1說明具有兩個線程的示例偽代碼程序。
[0004]圖2是用于在多線程程序中識別并發(fā)違例的示例并發(fā)謂詞表達(dá)式運算符以及對應(yīng)定義的表。
[0005]圖3說明使用并發(fā)謂詞表達(dá)式來識別并發(fā)違例的具有兩個線程的示例偽代碼程序。
[0006]圖4是用于在多線程程序中管理并發(fā)謂詞表達(dá)式并且識別并發(fā)違例的示例并發(fā)謂詞表達(dá)式運行時系統(tǒng)的示意圖。
[0007]圖5是用于在多線程程序中管理對并發(fā)謂詞表達(dá)式的監(jiān)視的示例數(shù)據(jù)結(jié)構(gòu)。
[0008]圖6A、6B和7是表示可以被執(zhí)行以管理并發(fā)謂詞表達(dá)式的示例機器可讀指令的流程圖。
[0009]圖8是示例處理器平臺的框圖,所述示例處理器平臺可以執(zhí)行圖6A、6B和7的示例機器可讀指令以實現(xiàn)圖4的示例并發(fā)謂詞表達(dá)式運行時系統(tǒng)和圖5的示例數(shù)據(jù)結(jié)構(gòu)。
【具體實施方式】
[0010]示例計算平臺包含諸如微處理器之類的中央處理單元(CPU),其與計算平臺的一個或更多個存儲器通信并且執(zhí)行由軟件(代碼)規(guī)定的指令以執(zhí)行一個或更多個計算任務(wù)。一些示例計算平臺和/或設(shè)備在同一計算機系統(tǒng)/設(shè)備中采用多個處理器(例如,CPU)。多個處理器中的每一個可以以獨立于任何其它處理器的方式與存儲器通信并且執(zhí)行指令,從而當(dāng)與僅具有單個處理器的計算平臺/設(shè)備相比較時允許一個或更多個計算任務(wù)更快地被完成。一些示例處理器包含兩個或更多個核,在這些核中每個核可以作為在單個物理處理器封裝上所包含的單獨的CPU進(jìn)行操作,并且以獨立于該處理器封裝的其它核的方式執(zhí)行指令。計算系統(tǒng)和/或設(shè)備可以采用多個處理器和/或多個核的任何組合以增加可用CPU的數(shù)目,從而當(dāng)與單個CPU系統(tǒng)/設(shè)備相比較時提高系統(tǒng)/設(shè)備性能。
[0011]經(jīng)由多個處理器芯片和/或經(jīng)由具有多個核的一個或更多個處理器芯片而采用多個CPU的設(shè)備和/或平臺架構(gòu)在并行編程適當(dāng)?shù)毓芾砻總€處理器/核時促進(jìn)提高的性能。為了簡短起見以及如在此所使用的,核可以指代單獨的集成電路封裝中的多個處理器和/或在單個物理處理器封裝之內(nèi)所包含的具有兩個或更多個核的處理器。也為了簡短起見,設(shè)備、平臺和平臺架構(gòu)在此將可互換地被提到。雖然并行編程可以促進(jìn)單獨的核的同時使用,但是這樣的并行編程可能導(dǎo)致非確定性問題。當(dāng)程序針對在單獨的核上的兩個或更多個執(zhí)行(例如,兩個或更多個線程)具有同樣的輸入、但是結(jié)果不同時,該程序是非確定性的。在當(dāng)在不同步的情況下兩個或更多個線程訪問相同存儲單元并且所述訪問中的至少一個是寫操作時并行程序返回非確定性結(jié)果的時候,這樣的狀況特別明顯。例如,當(dāng)兩個或更多個單獨的線程在基本上相同的時間執(zhí)行并且使用存儲在共享存儲器中的相同變量的時候。例如,第一線程可以計算變量的第一值。然而,由于第二線程正獨立于第一線程執(zhí)行,所以變量值可能隨時被第二線程訪問和處理(例如,改變)。因而,第一線程可以計算例如變量的為O的值、將結(jié)果存儲在存儲器中,并且然后第二線程可能將該變量作為除法運算的分母處理,從而引起平臺的除以零的錯誤。
[0012]上面的示例識別許多狀況之一,其中多線程程序的適當(dāng)操作要求特定線程的一個或更多個操作相對于一個或更多個其它線程的操作按特定的次序來執(zhí)行。例如,訪問相同存儲單元的兩個或更多個示例線程可以依靠共享存儲單元中存在的特定值以便防止平臺的錯誤行為(例如,不正確的值、除以零錯誤等等)。與相對于單獨線程指令的線程指令有關(guān)的錯誤在此被稱為并發(fā)錯誤和/或并發(fā)違例。修復(fù)并發(fā)錯誤典型地包括當(dāng)兩個或更多個線程在平臺上執(zhí)行時重新產(chǎn)生對并發(fā)錯誤有責(zé)任的漏洞(bug)。在串行程序(S卩,僅使用一個線程執(zhí)行的程序)的上下文中進(jìn)行調(diào)試可以是相對直接的,因為順序地步進(jìn)通過代碼行的過程最終揭示漏洞。另一方面,順序地步進(jìn)通過并行程序(其中兩個或更多個線程是有效的)可能或者不能揭示基于第二或其它線程的漏洞。第一線程與第二線程之間的代碼執(zhí)行次序可能基于任何數(shù)目的因素而不同,所述因素諸如例如是線程初始化時間的相對差異和與可能引起不同執(zhí)行持續(xù)時間的第一和/或第二線程相關(guān)聯(lián)的不同輸入。為了確保確定性并行程序執(zhí)行,應(yīng)用了同步技術(shù)的使用。例如,同步可以經(jīng)由鎖、事務(wù)、監(jiān)視器、屏障(barriers)、互斥器等被采用。然而,當(dāng)未使用同步時和/或當(dāng)不正確地/不適當(dāng)?shù)厥褂猛綍r,可能導(dǎo)致非確定性。不是在每次執(zhí)行程序(例如,代碼塊)時都出現(xiàn)的漏洞被稱為非確定性的。
[0013]圖1說明示例多線程應(yīng)用100(以偽代碼寫的程序),其中并發(fā)地執(zhí)行的線程可能導(dǎo)致平臺故障。在圖1的所說明示例中,第一線程102包括六(6)行代碼(即山-M5P L7-L9),以及第二線程104包括三(3)行代碼(S卩,L4-L6)。如果第一線程102首先開始執(zhí)行,在行L1獲取鎖以防止一個或更多個其它線程(例如,第二線程104)在行1^訪問變量y。在L 3執(zhí)行解鎖操作以把對變量I的訪問讓給一個或更多個其它線程之前,在行1^計算變量y的值。然而,如果示例第一線程102計算出變量y的為零的值,則示例第二線程104將在行1^5招致除以零錯誤。
[0014]上面的示例除以零并發(fā)漏洞特別難以檢測,因為執(zhí)行第一線程102和第二線程104的示例平臺不可能總是以第一線程102的行L1開始。在一些示例中,第二線程104可以在第一線程102的任何代碼之前開始執(zhí)行,這在變量y的值為非零時不會導(dǎo)致除以零錯誤。在其它示例中,在第二線程104的行L4開始執(zhí)行之前,所有的行L ^!^和L 7-L9n:以在第一線程102中執(zhí)行,在該情況下除以零錯誤將不出現(xiàn),因為當(dāng)?shù)谝痪€程檢測到零值時變量y的值被重新設(shè)定為I (見行L7-L9)。第一線程102和第二線程104可能不相對于彼此以同步方式執(zhí)行,這可能導(dǎo)致在一些實例中但是不在其它實例中出現(xiàn)并發(fā)漏洞。在又一示例中,第一線程102和第二線程104可以相對于彼此以同步方式進(jìn)行操作,其中calculateO總是返回O或者從不返回0,因此漏洞將總是出現(xiàn)或從不出現(xiàn)。
[0015]第一線程102與第二線程104之間的示例同步方式可以基于對應(yīng)計算平臺的同質(zhì)和/或非瞬時條件(例如,所有平臺輸入都是靜態(tài)的)而出現(xiàn)。在第一線程102和第二線程104在沒有檢測到和/或以別的方式觀測到(多個)平臺錯誤的情況下以相對同步的方式進(jìn)行操作的這樣的狀況下,虛假的安全感可能導(dǎo)致不穩(wěn)定代碼的發(fā)布和/或部署。在其它示例中,與平臺相關(guān)聯(lián)的瞬時條件和/或輸入、第一線程102和/或第二線程104可能引起并發(fā)漏洞的間歇性出現(xiàn)。
[0016]為了對多線程代碼進(jìn)行故障檢修(調(diào)試),在此公開了將一個或更多個表達(dá)式插入到代碼中以測試并發(fā)違例的示例方法、裝置、系統(tǒng)和/或制造品。如在此所公開的,將并發(fā)謂詞表達(dá)式(CPEs)插入到正在經(jīng)受評估的代碼(例如,第一線程102和第二線程104)中以檢測足以重新產(chǎn)生并發(fā)錯誤(漏洞)的條件。在一些狀況下,在違例/漏洞(例如并發(fā)漏洞)出現(xiàn)之前必須滿足特定條件的次序(并發(fā)),按該次序特定條件在此有時被稱為先行發(fā)生關(guān)系(happens-before relat1nships)。換言之,對于要出現(xiàn)并發(fā)漏洞必須滿足來自第一線程(例如,第一線程102)和第二線程(例如第二線程104)的條件的時間次序。所要求的條件被稱為謂詞,所述謂詞是返回真或假的布爾條件。CPE的表達(dá)式反映一組有序的謂詞。
[0017]示例CPE可以由編譯器轉(zhuǎn)換為可執(zhí)行代碼和/或指令以控制多線程程序的線程的調(diào)度和/或定位出現(xiàn)違例的代碼的部分。在圖2的所說明示例中,示出了具有不同運算符的幾個示例CPE定義200。第一示例表達(dá)式202 (pl〈p2)包括第一謂詞pl、第二謂詞p2和運算符“〈”。第一示例表達(dá)式202說明謂詞pi必須在p2滿足之前被滿足。換言之,與第一謂詞Pl相關(guān)聯(lián)的布爾條件(例如,變量y==0)必須在時間上早于與第二謂詞p2相關(guān)聯(lián)的布爾條件。另外,在此所公開的示例方法、裝置、系統(tǒng)和/或制造品將不注意P2的狀態(tài)除非并且直到滿足pi。
[0018]第二示例表達(dá)式204 (pi <& p2)也包括第一謂詞pi和第二謂詞P2,以及包括運算符第二示例表達(dá)式204說明謂詞pi必須在p2滿足之前被滿足,并且必須保持為真直到滿足P2的時刻。第三示例表達(dá)式
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
当阳市| 淳安县| 民权县| 虞城县| 德惠市| 金沙县| 凤城市| 定远县| 长治市| 巫溪县| 含山县| 湘阴县| 长春市| 辛集市| 左云县| 民和| 万盛区| 崇义县| 静海县| 常宁市| 大同市| 会泽县| 资溪县| 团风县| 商都县| 沂源县| 深水埗区| 安义县| 闻喜县| 丰镇市| 九龙县| 莱西市| 科技| 石家庄市| 天台县| 张家川| 池州市| 通城县| 蛟河市| 兴安县| 望江县|