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

用于眾核處理的快速同步屏障的技術(shù)的制作方法

文檔序號:11288471閱讀:319來源:國知局
用于眾核處理的快速同步屏障的技術(shù)的制造方法與工藝

相關(guān)美國專利申請的交叉引用

本申請要求于2014年12月3日提交的題為“technologiesforfastsynchronizationbarriersformany-coreprocessing(用于眾核處理的快速同步屏障的技術(shù))”的美國實(shí)用新型專利申請序列號14/568,890的優(yōu)先權(quán)。

技術(shù)背景

對于當(dāng)前的計(jì)算設(shè)備和應(yīng)用程序,高效的多線程性能正變得越來越重要。openmp是一種用于共享內(nèi)存并行編程的流行應(yīng)用程序編程接口(api)。openmp指定了可以用于協(xié)調(diào)在線程隊(duì)(threadteam)中執(zhí)行的多個(gè)線程的同步屏障特征。一般地,在對程序的執(zhí)行可以進(jìn)行之前,線程隊(duì)的所有線程必須到達(dá)屏障。openmp還指定了其中多個(gè)線程可以創(chuàng)建和執(zhí)行任務(wù)的任務(wù)系統(tǒng)。必須在線程可能退出同步屏障之前完成所有任務(wù)。因此,通常在線程在同步屏障中等待的同時(shí)執(zhí)行任務(wù)。

通常通過使線程以某種方式彼此等待來實(shí)現(xiàn)同步屏障。例如,在樹形屏障中,線程以樹形模式彼此等待,從葉子開始并扇入直達(dá)根部,然后反向從根部朝向葉子向下扇出。作為另一個(gè)示例,在分級屏障中,線程還以樹模式彼此等待,但由相同處理器核執(zhí)行的線程被分組為在樹中彼此靠近的葉節(jié)點(diǎn)。作為第三個(gè)示例,在傳播屏障中,線程以本質(zhì)上形成一組交疊樹的更復(fù)雜的模式彼此等待。在基于高速緩存的處理器架構(gòu)中,完成屏障運(yùn)算所需的時(shí)間可以由各個(gè)線程在所述線程與其他線程通信而穿過同步屏障時(shí)引發(fā)的高速緩存未命中(cachemiss)的數(shù)量來支配或限制。

附圖簡述

在附圖中通過示例的方式而非限制性的方式展示了在此所描述的概念。為了說明的簡單和清晰起見,附圖中所展示的元件不一定按比例繪制。在認(rèn)為適當(dāng)?shù)那闆r下,在附圖當(dāng)中重復(fù)參考標(biāo)號以表示相應(yīng)或相似的元件。

圖1是用于快速多線程化同步的計(jì)算設(shè)備的至少一個(gè)實(shí)施例的簡化框圖;

圖2是可以由圖1的計(jì)算設(shè)備建立的環(huán)境的至少一個(gè)實(shí)施例的簡化框圖;

圖3a和圖3b是可以由圖1和圖2的計(jì)算設(shè)備執(zhí)行的用于快速多線程化同步的方法的至少一個(gè)實(shí)施例的簡化流程圖;以及

圖4是展示了可以由圖1和圖2的計(jì)算設(shè)備建立的屏障通信網(wǎng)絡(luò)的示意圖;

圖5a-5c是展示了可以由圖1和圖2的計(jì)算設(shè)備執(zhí)行的用于快速多線程化同步的方法的至少一個(gè)實(shí)施例的偽代碼。

具體實(shí)施方式

雖然本公開的概念易于經(jīng)歷各種修改和替代形式,但是在附圖中已經(jīng)通過示例的方式示出了其特定實(shí)施例并且將在此對其進(jìn)行詳細(xì)描述。然而,應(yīng)當(dāng)理解的是,并不旨在將本公開的概念限制于所公開的特定形式,而相反,意圖是覆蓋與本公開和所附權(quán)利要求書一致的所有修改型式、等效型式和替代型式。

在說明書中提到的“一個(gè)實(shí)施例”、“實(shí)施例”、“說明性實(shí)施例”等指示所描述的實(shí)施例可以包括具體特征、結(jié)構(gòu)或特性,但每一個(gè)實(shí)施例可能或者可能不一定包括該具體特征、結(jié)構(gòu)或特性。而且,此類短語不一定指相同的實(shí)施例。進(jìn)一步地,當(dāng)結(jié)合實(shí)施例描述具體特征、結(jié)構(gòu)或特性時(shí),應(yīng)認(rèn)為,無論是否明確描述,結(jié)合其他實(shí)施例來實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領(lǐng)域的普通技術(shù)人員的知識范圍內(nèi)。另外,應(yīng)當(dāng)認(rèn)識到,包括在采用“a、b和c中的至少一個(gè)”形式的列表中的項(xiàng)可意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。類似地,采用“a、b或c中的至少一者”形式列出的項(xiàng)可意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。

在一些情況下,可以在硬件、固件、軟件或其任何組合中實(shí)施所公開的實(shí)施例。所公開的實(shí)施例還可以實(shí)現(xiàn)為一個(gè)或多個(gè)瞬態(tài)或非瞬態(tài)機(jī)器可讀(例如,計(jì)算機(jī)可讀)存儲介質(zhì)所攜帶或其上所存儲的指令,這些指令可以由一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀存儲介質(zhì)可以實(shí)施為任何存儲設(shè)備、機(jī)制、或用于存儲或傳輸采用機(jī)器可讀形式的信息的其他物理結(jié)構(gòu)(例如,易失性或非易失性存儲器、介質(zhì)盤或其他介質(zhì)設(shè)備)。

在附圖中,一些結(jié)構(gòu)特征或方法特征可能以特定安排和/或順序示出。然而,應(yīng)當(dāng)理解的是,可以不需要這種特定安排和/或順序。相反,在一些實(shí)施例中,可以采用與在說明性附圖中所示出的方式和/或順序不同的方式和/或順序來安排這種特征。另外,在具體的圖中包括結(jié)構(gòu)特征或方法特征并不意味著暗示在所有實(shí)施例中都需要這種特征,并且在一些實(shí)施例中,可以不包括這種特征或者這種特征可以與其他特征組合。

現(xiàn)在參考圖1,在說明性實(shí)施例中,用于快速多線程化同步的計(jì)算設(shè)備100包括處理器120、i/o子系統(tǒng)126、存儲器128以及數(shù)據(jù)存儲設(shè)備130。在使用中,如下面更詳細(xì)地討論的,計(jì)算設(shè)備100被配置成用于使用處理器120的硬件源(如硬件線程和/或處理器子核)同時(shí)執(zhí)行許多任務(wù)。線程進(jìn)入同步屏障后,線程與在同一處理器核上執(zhí)行的其他線程一起執(zhí)行局部同步。同一處理器核上的局部同步可能會迅速發(fā)生,例如使用處理器核的專用高速緩存。在局部同步之后,每個(gè)線程與可以由處理器120的不同處理器核執(zhí)行的源線程一起執(zhí)行遠(yuǎn)程同步。根據(jù)n路全混洗配置來分配源線程,其中n是每個(gè)處理器核的硬件線程數(shù)。在遠(yuǎn)程同步之后,每個(gè)線程再次與由同一處理器核執(zhí)行的其他線程一起執(zhí)行局部同步。計(jì)算設(shè)備100繼續(xù)在遠(yuǎn)程同步和局部同步之間交替,直到所有線程都已經(jīng)同步。

通過交替進(jìn)行遠(yuǎn)程同步和局部同步,計(jì)算設(shè)備100可以減少在執(zhí)行同步屏障期間引發(fā)的高速緩存未命中數(shù)。另外,計(jì)算設(shè)備100可以并行地對多個(gè)線程引發(fā)高速緩存未命中,這樣可以提高性能并減少總體延時(shí)。計(jì)算設(shè)備100可以為所有級別的同步屏障(即,對于遠(yuǎn)程同步和局部同步的每次迭代)提供那些性能的改進(jìn)。對于使用xeonphitm協(xié)處理器測試的計(jì)算設(shè)備100的某些實(shí)施例,同步屏障性能可能幾乎和傳統(tǒng)樹形屏障的兩倍一樣快。通過包括對布爾標(biāo)志參數(shù)上的全歸約or的支持,計(jì)算設(shè)備100可以支持與openmp任務(wù)語義兼容的事務(wù)同步屏障的實(shí)現(xiàn),如題為“technologiesforefficientsynchronizationbarrierswithworkstealingsupport(用于利用工作竊取支持進(jìn)行有效同步屏障的技術(shù))”的共同未決的美國專利申請序列號xx/xxx,xxx中進(jìn)一步描述的。

計(jì)算設(shè)備100可以實(shí)施為能夠執(zhí)行在此所描述的功能的任何類型的計(jì)算或計(jì)算機(jī)設(shè)備,包括但不限于計(jì)算機(jī)、多處理器系統(tǒng)、服務(wù)器、機(jī)架式服務(wù)器、刀片式服務(wù)器、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)設(shè)備、分布式計(jì)算系統(tǒng)、基于處理器的系統(tǒng)和/或消費(fèi)者電子設(shè)備。如圖1所示,計(jì)算設(shè)備100示例性地包括處理器120、輸入/輸出子系統(tǒng)126、存儲器128以及數(shù)據(jù)存儲設(shè)備130。當(dāng)然,在其它實(shí)施例中,計(jì)算裝置100可包含其它或附加組件,諸如在服務(wù)器裝置中發(fā)現(xiàn)的組件(例如各種輸入/輸出裝置)。另外,在一些實(shí)施例中,說明性部件中的一個(gè)或多個(gè)說明性部件可以結(jié)合在另一部件中,或以其他方式形成其一部分。例如,在一些實(shí)施例中,存儲器128或其部分可以結(jié)合在處理器120中。

處理器120可以被實(shí)施為能夠執(zhí)行本文中所描述的功能的任何類型的多核處理器。例如,處理器120可以實(shí)現(xiàn)為(多個(gè))多核處理器、(多個(gè))眾核處理器、(多個(gè))協(xié)處理器、數(shù)字信號處理器、微控制器或其他處理器或處理/控制電路。處理器120包括兩個(gè)或多個(gè)處理器核122,每個(gè)處理器核122都是能夠執(zhí)行編程指令的獨(dú)立處理單元。每個(gè)處理器核122可以包括專門的專用高速緩存存儲器或與其耦合。說明性處理器120包括兩個(gè)處理器核122a和122b;在一些實(shí)施例中,處理器120可以包括更多的處理器核122(例如,57個(gè)處理器核122、60個(gè)處理器核122、61個(gè)處理器核122或更多的處理器核122)。每個(gè)處理器核122包括兩個(gè)或更多個(gè)硬件線程124;在說明性實(shí)施例中,每個(gè)處理器核122包括四個(gè)硬件線程124。每個(gè)硬件線程124可以體現(xiàn)為能夠執(zhí)行編程指令的任何邏輯處理器、子核、硬件線程或其他執(zhí)行資源。因此,在具有各自具有四個(gè)硬件線程124的60個(gè)處理器核122的處理器120的實(shí)施例中,處理器120可以包括240個(gè)總硬件線程124。處理器核122的每個(gè)硬件線程124可以共享相同的專用高速緩存。另外,盡管說明性計(jì)算設(shè)備100包括單個(gè)眾核處理器120,但是本文公開的技術(shù)也可應(yīng)用于具有兩個(gè)或更多個(gè)處理器120(例如,耦合到眾核協(xié)處理器的服務(wù)器處理器)的計(jì)算設(shè)備100。

存儲器128可實(shí)施為能夠執(zhí)行本文描述的功能的任何類型的易失性或非易失性存儲器或數(shù)據(jù)存儲裝置。在運(yùn)算中,存儲器128可存儲在計(jì)算裝置100運(yùn)算期間使用的各種數(shù)據(jù)和軟件,如運(yùn)算系統(tǒng)、應(yīng)用、程序、庫以及驅(qū)動(dòng)。存儲器128以通信方式經(jīng)由i/o子系統(tǒng)126耦合到處理器120,i/o子系統(tǒng)104可實(shí)施為電路和/或組件以便于與計(jì)算裝置100的處理器120、存儲器128和/或其它組件的輸入/輸出操作。例如,i/o子系統(tǒng)126可以被實(shí)施為或以其他方式包括用于促進(jìn)輸入/輸出操作的存儲器控制器中樞、輸入/輸出控制中樞、固件設(shè)備、通信鏈路(即,點(diǎn)到點(diǎn)鏈路、總線鏈路、線、電纜、光導(dǎo)、印刷電路板跡線等)和/或其他部件和子系統(tǒng)。在一些實(shí)施例中,i/o子系統(tǒng)126可以形成片上系統(tǒng)(soc)的一部分并且可以與計(jì)算設(shè)備100的處理器120、存儲器128以及其他部件一起結(jié)合在單個(gè)集成電路芯片上。數(shù)據(jù)存儲設(shè)備130可以被實(shí)施為被配置成用于對數(shù)據(jù)進(jìn)行短期或長期存儲的任何類型的一種或多種設(shè)備,如例如,存儲器設(shè)備和電路、存儲器卡、硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器或其他數(shù)據(jù)存儲設(shè)備。

計(jì)算設(shè)備100還可以包括通信子系統(tǒng)132,所述通信子系統(tǒng)可以被實(shí)施為能夠使計(jì)算設(shè)備100與其他遠(yuǎn)端設(shè)備之間通過計(jì)算機(jī)網(wǎng)絡(luò)(未示出)的通信成為可能任何通信電路、設(shè)備、或其集合。通信子系統(tǒng)132可以被配置成用于使用任何一種或多種通信技術(shù)(例如,有線或無線通信)以及相關(guān)聯(lián)的協(xié)議(例如,以太網(wǎng)、wimax等)來實(shí)現(xiàn)這種通信。

現(xiàn)參考圖2,在說明性的實(shí)施例中,計(jì)算設(shè)備100在運(yùn)算期間建立環(huán)境200。示例性環(huán)境200包括線程管理模塊202、局部屏障模塊206、遠(yuǎn)程屏障模塊210以及屏障網(wǎng)絡(luò)模塊214。環(huán)境200的各種模塊可以被實(shí)施為硬件、固件、軟件或其組合。例如,環(huán)境200的模塊、邏輯和其他部件中的每一者可以形成計(jì)算設(shè)備100的處理器120或其他硬件部件的一部分或以其他方式由所述計(jì)算設(shè)備的所述處理器或所述其他硬件部件建立。這樣,在一些實(shí)施例中,環(huán)境200的模塊中的一個(gè)或多個(gè)模塊可以實(shí)施為電子設(shè)備的電路或集合(例如,線程管理電路、局部屏障電路、遠(yuǎn)程屏障電路等)。

線程管理模塊202被配置成用于創(chuàng)建、執(zhí)行和以其他方式管理一個(gè)或多個(gè)線程204。線程204中的每一個(gè)可以體現(xiàn)為操作系統(tǒng)線程,所述操作系統(tǒng)線程由可執(zhí)行線程、應(yīng)用程序線程、工作線程、輕量型線程或能夠由硬件線程124執(zhí)行的其他程序進(jìn)行管理。線程204中的每一個(gè)可以被命中或以其他方式被綁定以在硬件線程124之一上執(zhí)行。因此,雖然被展示為包括兩個(gè)線程204a、204b,但環(huán)境200可以包括更多的線程204(例如,每個(gè)硬件線程124一個(gè)線程204)。線程管理模塊202還被配置成用于通過使線程204進(jìn)入同步屏障并管理所述同步屏障的執(zhí)行來管理線程同步。

局部屏障模塊206被配置成用于使由單個(gè)處理器核122執(zhí)行的第一組線程204同步。局部同步可以以最小的延時(shí)迅速完成。局部屏障模塊206可以對用于核內(nèi)通信的每個(gè)處理器核122的存儲器結(jié)構(gòu)進(jìn)行維護(hù)。所述存儲器結(jié)構(gòu)可以體現(xiàn)為在局部高速緩存行區(qū)域208中維護(hù)結(jié)構(gòu)陣列。每個(gè)處理器核122的存儲器結(jié)構(gòu)可以裝配在可由處理器120尋址的單個(gè)存儲器高速緩存行內(nèi)。

遠(yuǎn)程屏障模塊210被配置成用于使在一個(gè)處理器核122上執(zhí)行的線程204a與可以在另一個(gè)處理器核122上執(zhí)行的源線程204b同步。遠(yuǎn)程同步可能會導(dǎo)致一個(gè)或多個(gè)緩存缺失,從而可能引發(fā)延時(shí)。遠(yuǎn)程屏障模塊210可以對用于核間通信的每個(gè)線程204的存儲器結(jié)構(gòu)進(jìn)行維護(hù)。所述存儲器結(jié)構(gòu)可以體現(xiàn)為在全局高速緩存行區(qū)域212中維護(hù)結(jié)構(gòu)陣列。每個(gè)線程204的存儲器結(jié)構(gòu)可以裝配在可由處理器120尋址的單個(gè)存儲器高速緩存行內(nèi)。遠(yuǎn)程屏障模塊210還可以被配置成用于對在同一處理器核122上執(zhí)行的線程204進(jìn)行同步。

屏障網(wǎng)絡(luò)模塊214被配置成用于建立在不同處理器核122上執(zhí)行的線程204之間的連接網(wǎng)絡(luò),以允許所有線程204的同步。屏障網(wǎng)絡(luò)模塊214可以為線程204建立n路混洗,其中n是每個(gè)處理器核122的硬件線程124的數(shù)量(例如,每個(gè)處理器核122的四個(gè)硬件線程124的4路混洗)??梢栽诰W(wǎng)絡(luò)表216中預(yù)定義硬件線程124之間的關(guān)系。例如,網(wǎng)絡(luò)表216可以標(biāo)識每個(gè)線程204a的源線程204b。

線程管理模塊202被進(jìn)一步配置成用于可替代地重復(fù)與遠(yuǎn)程屏障模塊210同步和隨后的與局部屏障模塊206同步,直到所有線程204被同步。例如,對于各自具有60個(gè)處理器核122和四個(gè)硬件線程124(對于240個(gè)總線程204)的處理器120,線程管理模塊202可以可替代地重復(fù)遠(yuǎn)程同步和隨后的局部同步四次。

現(xiàn)在參考圖3a,在使用中,計(jì)算設(shè)備100可以執(zhí)行用于快速多線程化同步的方法300。方法300可以由計(jì)算設(shè)備100的硬件線程124例如通過執(zhí)行已被固定到硬件線程124a的線程204a來執(zhí)行。因此,方法300的多個(gè)實(shí)例可以由處理器120的硬件線程124同時(shí)執(zhí)行。在框302中開始方法300,其中計(jì)算設(shè)備100的硬件線程124a進(jìn)入同步屏障。響應(yīng)于硬件指令、功能調(diào)用、系統(tǒng)調(diào)用、陷阱或其他由硬件線程124a處理的事件,硬件線程124a可以進(jìn)入同步屏障。在一些實(shí)施例中,在框304中,硬件線程124a可以利用布爾標(biāo)志參數(shù)進(jìn)入同步屏障??梢杂捎脩艋蚨嗑€程框架來提供標(biāo)志參數(shù)。如下面進(jìn)一步描述的,計(jì)算設(shè)備100可以在執(zhí)行同步屏障期間執(zhí)行多個(gè)硬件線程124的布爾標(biāo)志值的邏輯or歸約。這種能力可以支持與openmp任務(wù)語義兼容的事務(wù)同步屏障的實(shí)現(xiàn),如題為“technologiesforefficientsynchronizationbarrierswithworkstealingsupport(用于利用工作竊取支持進(jìn)行有效同步屏障的技術(shù))”的共同未決的美國專利申請序列號xx/xxx,xxx中進(jìn)一步描述的。

在框306中,硬件線程124a標(biāo)識用于核間通信的源端點(diǎn)和目的地端點(diǎn)。源端點(diǎn)和目的地端點(diǎn)可以體現(xiàn)為能夠在硬件線程124a(“目的地”硬件線程124a)與可以由不同處理器核122執(zhí)行的另一個(gè)硬件線程124b(“源”硬件線程124b)之間傳送數(shù)據(jù)的任何存儲器位置或其他通信信道。另外,如下面進(jìn)一步描述的,在一些實(shí)施例中,源端點(diǎn)和/或目的地端點(diǎn)可以包括與屏障網(wǎng)絡(luò)中的不同級別相關(guān)聯(lián)的多個(gè)存儲器位置或通信信道。在一些實(shí)施例中,在框308中,計(jì)算設(shè)備100可以使用預(yù)定義的屏障網(wǎng)絡(luò)表216來標(biāo)識源硬件線程124b。在每個(gè)處理器核122具有四個(gè)硬件線程124的說明性實(shí)施例中,源硬件線程124的分配可以形成處理器120的所有硬件線程124的4路全混洗。例如,在一些實(shí)施例中,處理器120可以執(zhí)行n個(gè)線程204(例如,240個(gè)線程),并且每個(gè)線程204可以由從零到n-1(例如,0至239)的整數(shù)線程id號來標(biāo)識。n線程204中的每一個(gè)都可以被固定或以其他方式在硬件線程124之一上執(zhí)行,并且因此可以由相關(guān)聯(lián)的處理器核122和硬件線程124來標(biāo)識。每個(gè)硬件線程124可以由從零到三的子核標(biāo)識符來標(biāo)識,并且每個(gè)處理器核122可以由從零到(例如,0到59)的整數(shù)核id號來標(biāo)識。在那個(gè)示例中,可以使用下面的等式1來確定目的地線程idk的源線程idj。可以用等式1的結(jié)果來填充屏障網(wǎng)絡(luò)表216。因此,在說明性實(shí)施例中,每個(gè)硬件線程124可以使用其自身的線程id來對屏障網(wǎng)絡(luò)表216進(jìn)行索引,以確定其分配的源硬件線程124的線程id。

例如,現(xiàn)在參考圖4,示意圖400示出了用于16個(gè)硬件線程124的屏障網(wǎng)絡(luò)的一個(gè)可能的實(shí)施例,展示為線程t0至t15(具有對應(yīng)的線程id0至15)。在局部同步402中,線程t0至t15在同一處理器核122上與線程t局部同步,如下面進(jìn)一步描述的。在遠(yuǎn)程同步404中,使用在屏障網(wǎng)絡(luò)表216中描述的全混洗網(wǎng)絡(luò)拓?fù)?,線程t0至t15可以與在不同處理器核122上執(zhí)行的源線程同步。例如,線程t0的子核數(shù)為0,核數(shù)為0。因此,t0的源線程id為0;也就是說,t0的源線程是t0,意味著線程t0與其自身同步。線程t1的子核數(shù)為1,核數(shù)為0。因此,t1的源線程id為4,表示t1的源線程為t4。作為另一個(gè)示例,線程t4的子核數(shù)為0,核數(shù)為1。因此,t4的源線程id為1,表示t4的源線程為t1??梢詫κS嗟木€程類似地確定源線程。

盡管被展示為4路全混洗,但是應(yīng)當(dāng)理解,屏障網(wǎng)絡(luò)表216可以描述不同的拓?fù)?。例如,屏障網(wǎng)絡(luò)表216可以描述n路全混洗,其中n是每個(gè)處理器核122的硬件線程124的數(shù)量。另外,可以使用全混洗以外的拓?fù)?。然而,全混洗拓?fù)淇梢葬槍γ總€(gè)同步級別使用同一源硬件線程124;其他拓?fù)淇赡苄枰獮槊總€(gè)同步級別分配或以其他方式確定不同的源硬件線程124。

返回參考圖3a,在一些實(shí)施例中,在框310中,硬件線程124a可以將源端點(diǎn)和目的地端點(diǎn)標(biāo)識為全局存儲器結(jié)構(gòu)中的位置。例如,源端點(diǎn)和目的地端點(diǎn)可以指向系統(tǒng)存儲器128中的位置,如全局高速緩存行區(qū)域212中的位置。由計(jì)算設(shè)備100執(zhí)行的每個(gè)硬件線程124可以與存儲器128中的特定端點(diǎn)相關(guān)聯(lián)。硬件線程124a可以將目的地端點(diǎn)標(biāo)識為與當(dāng)前硬件線程124a相關(guān)聯(lián)的端點(diǎn),并且可以將源端點(diǎn)標(biāo)識為與源硬件線程124b相關(guān)聯(lián)的端點(diǎn)。

在一些實(shí)施例中,在框312中,硬件線程124a可以在每次調(diào)用同步屏障之后在兩個(gè)不同的通信信道之間交替。例如,全局存儲器結(jié)構(gòu)可以包括與每個(gè)硬件線程124相關(guān)聯(lián)的兩個(gè)端點(diǎn),并且硬件線程124a可以在每次進(jìn)入同步屏障時(shí)在這些端點(diǎn)之間交替。包括兩個(gè)通信信道可以允許計(jì)算設(shè)備100在執(zhí)行同步屏障期間執(zhí)行邏輯or歸約。

在框314中,硬件線程124a與在同一處理器核122上執(zhí)行的硬件線程124同步。硬件線程124a可以通過例如從處理器核122的其他硬件線程124共享的每核存儲器結(jié)構(gòu)的讀取和/或?qū)懭雭韴?zhí)行同步,所述核存儲器結(jié)構(gòu)可以存儲在處理器核122的專用高速緩存中。例如,在一些實(shí)施例中,硬件線程124a可以寫入存儲在局部高速緩存行區(qū)域208中的存儲器結(jié)構(gòu)。因此,硬件線程124a可以執(zhí)行同步,而沒有對系統(tǒng)存儲器128的高速緩存未命中,并且沒有關(guān)聯(lián)的高速緩存未命中延時(shí)。

在框316中,硬件線程124a存儲每個(gè)核存儲器結(jié)構(gòu)中的感測值。感測值可以體現(xiàn)為每當(dāng)硬件線程124a進(jìn)入同步屏障時(shí)交替的任何值(例如,奇數(shù)/偶數(shù)、1/0等)。在一些實(shí)施例中,在框318中,硬件線程124a可以在每個(gè)核存儲器結(jié)構(gòu)中存儲布爾標(biāo)志參數(shù)。例如,硬件線程124a可以對每個(gè)核存儲器結(jié)構(gòu)的一個(gè)位中的布爾標(biāo)志參數(shù)進(jìn)行編碼。

在框320中,硬件線程124a從每個(gè)核存儲器結(jié)構(gòu)中讀取其他感測值。其他感測值已經(jīng)或?qū)⒁商幚砥骱?22執(zhí)行的其他硬件線程124寫入。在框322中,硬件線程124a暫停,直到由其他硬件線程124寫入的所有感測值與由硬件線程124a所存儲的感測值相匹配,如框316所述。換句話說,硬件線程124a等待,直到處理器核122的所有硬件線程124已經(jīng)對每個(gè)核存儲器結(jié)構(gòu)寫入相同的感測值。硬件線程124a可以忙-等待、旋轉(zhuǎn)、產(chǎn)出、休眠或執(zhí)行任何其他適當(dāng)?shù)募夹g(shù)來暫停執(zhí)行。

在框324中,在一些實(shí)施例中,硬件線程124a可以將從同一處理器核122的硬件線程124接收到的標(biāo)志參數(shù)值歸約到單個(gè)標(biāo)志參數(shù)值。在一些實(shí)施例中,硬件線程124a可以例如通過從每個(gè)感測值來確定位值而從由硬件線程124存儲的每個(gè)感測值中恢復(fù)標(biāo)志參數(shù)值。硬件線程124a可以通過執(zhí)行邏輯or運(yùn)算來確定歸約值來歸約這些標(biāo)志參數(shù)值。

在框326中,在與由同一處理器核122執(zhí)行的硬件線程124同步之后,硬件線程124a判斷是否保留附加同步級別以完成同步。同步級別數(shù)可以描述與由同一處理器核122執(zhí)行的硬件線程124執(zhí)行局部同步的次數(shù)??梢詫⑼郊墑e數(shù)n_級別確定為由計(jì)算設(shè)備100執(zhí)行的總線數(shù)n的基數(shù)n對數(shù)的上限(不小于其最小值),其中n是每個(gè)處理器的硬件線程124的數(shù)量??梢允褂孟旅娴牡仁?來確定n_級別。例如,在具有每個(gè)處理器核122四個(gè)硬件線程124并具有240個(gè)總線程204的實(shí)施例中,個(gè)級別。作為另一個(gè)示例,如圖4所示,在具有每個(gè)處理器核122四個(gè)硬件線程124并具有16個(gè)總線程204的實(shí)施例中,個(gè)級別。如圖4的示意圖400所示,同步屏障包括局部同步402、遠(yuǎn)程同步404以及對應(yīng)于n_級別等于2的和另一個(gè)局部同步406。

返回參考圖3a,在框328中,硬件線程124a判斷是否保留附加同步級別。如果是,則方法300分支到如圖3b所示的框334,以執(zhí)行如下所述的遠(yuǎn)程同步。如果不保留附加同步級別,則方法300前進(jìn)到框330。

在框330中,硬件線程124a退出同步屏障。在一些實(shí)施例中,在框332中,硬件線程124a可以返回稱為歸約值的邏輯or歸約的標(biāo)志參數(shù)值。歸約值可以支持與openmp任務(wù)語義兼容的事務(wù)同步屏障的實(shí)現(xiàn),如題為“technologiesforefficientsynchronizationbarrierswithworkstealingsupport(用于利用工作竊取支持進(jìn)行有效同步屏障的技術(shù))”的共同未決的美國專利申請序列號xx/xxx,xxx中進(jìn)一步描述的。在退出同步屏障之后,方法300循環(huán)回到框302以繼續(xù)多線程執(zhí)行并很可能進(jìn)入另一個(gè)同步屏障。

返回參考框328,如果仍然保留附加同步級別,則方法300分支到框334,如圖3b所示?,F(xiàn)在參考圖3b,在框334中,被稱為目的地硬件線程124a的硬件線程124a與被稱為源硬件線程124b的硬件線程124b同步。如結(jié)合框308所述,目的地硬件線程124a和源硬件線程124b通常(但不總是)在計(jì)算設(shè)備100的不同處理器核122上執(zhí)行的不同的硬件線程124。目的地硬件線程124a可以通過例如從系統(tǒng)存儲器128中的全局存儲器結(jié)構(gòu)讀取和/或?qū)懭雭韴?zhí)行同步。全局存儲器結(jié)構(gòu)可以被存儲在例如全局高速緩存行區(qū)域212中。因此,目的地硬件線程124a在與源硬件線程124b同步期間可能引發(fā)一個(gè)或多個(gè)高速緩存未命中(例如,用于寫入的高速緩存未命中和用于讀取的高速緩存未命中)。然而,由同一處理器核122上執(zhí)行的所有硬件線程124可以并行地引發(fā)高速緩存未命中和相關(guān)聯(lián)的延時(shí),這樣可以減少總體延時(shí)。

在框336中,目的地硬件線程124a將票號寫入目的地端點(diǎn)。硬件線程124a可以將票號寫入存儲器位置、通信信道或其他與當(dāng)前同步級相關(guān)聯(lián)的目的地端點(diǎn)的字段。票號可以體現(xiàn)為整數(shù)計(jì)數(shù)器,所述整數(shù)計(jì)數(shù)器響應(yīng)于進(jìn)入所述同步屏障而由硬件線程124a遞增。在一些實(shí)施例中,票號可以在超過閾值之后繞回為零,例如繞回模數(shù)256。在框338中,目的地硬件線程124a將票號寫入系統(tǒng)存儲器128中的全局存儲器位置,這樣可能導(dǎo)致高速緩存未命中。例如,目的地硬件線程124a可以寫入與存儲在系統(tǒng)存儲器128中的全局高速緩存行區(qū)域212中的當(dāng)前同步級別相關(guān)聯(lián)的目的地端點(diǎn)字段,從而導(dǎo)致高速緩存未命中。在一些實(shí)施例中,在框340中,硬件線程124a還可以將標(biāo)志參數(shù)值寫入全局存儲器位置。例如,硬件線程124a可以將標(biāo)志參數(shù)值編碼為票號的位。

在框342中,目的地硬件線程124a從源端點(diǎn)讀取票號。硬件線程124a可以從存儲器位置、通信信道或其他與當(dāng)前同步級相關(guān)聯(lián)的源端點(diǎn)的字段讀取票號。如上所述,源端點(diǎn)與源硬件線程124b相關(guān)聯(lián),源硬件線程可以將票號寫入或已經(jīng)寫入源端點(diǎn)。在框344中,目的地硬件線程124a從系統(tǒng)存儲器128中的全局存儲器位置讀取票號,這樣可能導(dǎo)致高速緩存未命中。例如,可以從與存儲在系統(tǒng)存儲器128中的全局高速緩存行區(qū)域212中的當(dāng)前同步級別相關(guān)聯(lián)的目的地端點(diǎn)字段讀取目的地硬件線程124a,從而導(dǎo)致高速緩存未命中。在一些實(shí)施例中,在框346中,硬件線程124a還可以從全局存儲器位置讀取標(biāo)志參數(shù)值。例如,目的地硬件線程124a可以將票號的一位解碼為標(biāo)志參數(shù)值。

在框348中,目的地硬件線程124a暫停,直到從源硬件線程124b讀取的源票號符合如上在方框336中確定的當(dāng)前票號。換句話說,目的地硬件線程124a等待,直到源硬件線程124b將同一票號寫入全局存儲器結(jié)構(gòu)。目的地硬件線程124a可以忙-等待、旋轉(zhuǎn)、產(chǎn)出、休眠或執(zhí)行任何其他適當(dāng)?shù)募夹g(shù)來暫停執(zhí)行。

在一些實(shí)施例中,在框350中,目的地硬件線程124a可以用其自己的標(biāo)志參數(shù)值來來歸約從源硬件線程124b接收的標(biāo)志參數(shù)值。例如,目的地硬件線程124a可以利用源硬件線程124b和目的地硬件線程124a的標(biāo)志參數(shù)值來執(zhí)行邏輯or運(yùn)算。如以上結(jié)合圖3a的框324所述,在隨后的迭代中,目的地硬件線程124a可以利用來自同一處理器核122執(zhí)行的每個(gè)硬件線程124的標(biāo)志參數(shù)值來歸約其自己的標(biāo)志參數(shù)值。因此,標(biāo)志參數(shù)值可以在不同處理器核122上執(zhí)行的硬件線程124之間傳播。

在框352中,在硬件線程124a已經(jīng)與源硬件線程124b同步之后,硬件線程124a遞增同步級別。如以上結(jié)合框326、328所述,使用同步等級來判斷所述同步屏障是否完成。另外,如以上結(jié)合框336、342所述,同步級別也可以用于標(biāo)識存儲器位置、通信信道或其它在遠(yuǎn)程同步期間讀取和寫入數(shù)據(jù)的位置。在遞增同步級別之后,方法300循環(huán)回到框314,如圖3a所示,以與由同一處理器核122執(zhí)行的硬件線程124同步。因此,計(jì)算設(shè)備100可以繼續(xù)交替地執(zhí)行可能涉及在不同處理器核122上執(zhí)行的硬件線程124的遠(yuǎn)程同步以及隨后的在每個(gè)處理器核122上執(zhí)行局部同步。

現(xiàn)在參照圖5a-5c,偽代碼500展示了方法300的一個(gè)潛在實(shí)施例。如圖5a所示,偽代碼500展示了數(shù)據(jù)結(jié)構(gòu)208'、212'、216',所述數(shù)據(jù)結(jié)構(gòu)各自對應(yīng)于圖2的局部高速緩存行區(qū)域208、全局高速緩存行區(qū)域212和屏障網(wǎng)絡(luò)表216的一個(gè)說明性實(shí)施例。如圖5b和圖5c所示,偽代碼500展示了運(yùn)算302'至352',每一項(xiàng)運(yùn)算分別與圖3a和圖3b的框302至352的一個(gè)說明性實(shí)施例相對應(yīng)。特別地,如圖5b所示,通過在運(yùn)算316'、318'中將感測值寫入與那些其他硬件線程124共享的localcacheline(局部高速緩存行)對象并且然后以緊密循環(huán)從那個(gè)localcacheline對象讀取直到所有感測值都在運(yùn)算320'、322'中匹配,偽代碼500與在運(yùn)算314'中的相同處理器核122上執(zhí)行的其他硬件線程124同步。如圖所示,偽代碼500通過在運(yùn)算318'中利用標(biāo)志參數(shù)和感測值執(zhí)行逐位or運(yùn)算來歸約標(biāo)志參數(shù),然后在運(yùn)算324'中測試來自其他處理器核122的標(biāo)志位。

如圖5c所示,通過在運(yùn)算336'、338'中將票號寫入globalcacheline(全局高速緩存行)對象的目的地端點(diǎn)并且然后以緊密循環(huán)從globalcacheline對象的源端點(diǎn)讀取直到所述源端點(diǎn)與運(yùn)算342'、344'、348'中的票號相匹配,偽代碼500與可以由不同的處理器核122執(zhí)行的源硬件線程124b同步。源和目的地globalcacheline對象通常都不在處理器核122的局部高速緩存中并且因此在運(yùn)算336'、338'和342'、344'中讀取和寫入這些對象可能會導(dǎo)致高速緩存未命中。如所示出的,偽代碼500通過在運(yùn)算340'中利用標(biāo)志參數(shù)和票值執(zhí)行按位or運(yùn)算并且然后提取來自從所述源端點(diǎn)讀取的票的標(biāo)志值并利用所述標(biāo)志參數(shù)在運(yùn)算346'、350'中歸約所述標(biāo)志參數(shù)。

示例

以下提供了在本文中所公開的技術(shù)的說明性示例。所述技術(shù)的實(shí)施例可以包括以下所描述的示例中的任何一個(gè)或多個(gè)示例及其任何組合。

示例1包括用一種用于多線程化同步的計(jì)算設(shè)備,所述計(jì)算設(shè)備包括:線程管理模塊,所述線程管理模塊用于通過由所述計(jì)算設(shè)備的第一處理器核執(zhí)行的第一線程進(jìn)入同步屏障;局部屏障模塊,所述局部屏障模塊用于響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程與由所述計(jì)算設(shè)備的所述第一處理器核執(zhí)行的第一多個(gè)線程同步;以及遠(yuǎn)程屏障模塊,所述遠(yuǎn)程屏障模塊用于響應(yīng)于與所述第一多個(gè)線程同步而通過所述第一線程與由所述計(jì)算設(shè)備的第二處理器核執(zhí)行的第二線程同步;其中,所述局部屏障模塊進(jìn)一步用于響應(yīng)于與所述第二線程同步而通過所述第一線程與所述第一多個(gè)線程重新同步。

示例2包括如示例1所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;并且所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程。

示例3包括如示例1和2中任一項(xiàng)所述的主題,并且進(jìn)一步包括屏障網(wǎng)絡(luò)模塊,所述屏障網(wǎng)絡(luò)模塊用于利用待由所述計(jì)算設(shè)備執(zhí)行的總線程數(shù)的n路全混洗來標(biāo)識所述第二線程,其中,n等于所述第一預(yù)定數(shù)量。

示例4包括如示例1-3中任一項(xiàng)所述的主題,其中,所述第一預(yù)定數(shù)量包括四個(gè)。

示例5包括如示例1-4中任一項(xiàng)所述的主題,并且其中,所述線程管理模塊進(jìn)一步用于:通過所述第一線程退出所述同步屏障;并且通過所述第一線程交替重復(fù)與所述第二線程的同步以及與所述第一多個(gè)線程的重新同步,直到退出所述同步屏障。

示例6包括如示例1-5中任一項(xiàng)所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程;并且交替地重復(fù)與所述第二線程的同步以及與所述第一多個(gè)線程的重新同步包括交替地重復(fù)第二預(yù)定次數(shù),其中,根據(jù)待由所述計(jì)算設(shè)備執(zhí)行的第三預(yù)定數(shù)量的總線程以及所述第一預(yù)定數(shù)量來確定所述第二預(yù)定數(shù)量。

示例7包括如示例1-6中任一項(xiàng)所述的主題,并且其中,所述第二預(yù)定數(shù)量作為所述第三預(yù)定數(shù)量的對數(shù)函數(shù)的取頂函數(shù)來確定,其中,所述對數(shù)函數(shù)利用所述第一預(yù)定數(shù)量作為基數(shù)。

示例8包括如示例1-7中任一項(xiàng)所述的主題,并且其中,所述第一預(yù)定數(shù)量是四,所述第二預(yù)定數(shù)量是四,并且所述第三預(yù)定數(shù)量是240。

示例9包括如示例1-8中任一項(xiàng)所述的主題,并且其中,與所述第一多個(gè)線程同步包括將感測值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中,其中,所述感測值基于進(jìn)入所述同步屏障而在第一值與第二值之間交替;從由所述第一多個(gè)線程共享的所述存儲器結(jié)構(gòu)中讀取多個(gè)感測值,其中,所述多個(gè)感測值中的每一個(gè)由所述多個(gè)線程中的相應(yīng)線程來存儲;并且暫停執(zhí)行所述第一線程,直到所述多個(gè)感測值彼此匹配。

示例10包括如示例1-9中任一項(xiàng)所述的主題,并且其中,所述線程管理模塊進(jìn)一步用于響應(yīng)于所述進(jìn)入所述同步屏障而通過第一線程使所述感測值在所述第一值與所述第二值之間交替。

示例11包括如示例1-10中任一項(xiàng)所述的主題,并且其中,存儲所述感測值包括:將所述感測值存儲在存儲器結(jié)構(gòu)中,所述存儲器結(jié)構(gòu)存儲在所述第一處理器核的高速緩存存儲器中。

示例12包括如示例1-11中任一項(xiàng)所述的主題,并且其中,通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步包括將第一票號存儲在全局存儲器結(jié)構(gòu)的目的地字段中,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);從所述全局存儲器結(jié)構(gòu)的源字段中讀取第二票號,其中,所述源字段與所述第二線程相關(guān)聯(lián),并且所述第二票號由所述第二線程存儲;并且暫停執(zhí)行所述第一線程,直到所述第二票號與所述第一票號相匹配。

示例13包括如示例1-12中任一項(xiàng)所述的主題,并且其中,將所述全局存儲器結(jié)構(gòu)存儲在所述計(jì)算設(shè)備的主存儲器中。

示例14包括如示例1-13中任一項(xiàng)所述的主題,并且其中,存儲所述第一票號包括引發(fā)高速緩存未命中;并且讀取所述第二票號包括引發(fā)高速緩存未命中。

示例15包括如示例1-14中任一項(xiàng)所述的主題,并且其中,所述線程管理模塊進(jìn)一步用于響應(yīng)于所述進(jìn)入所述同步屏障而通過所述第一線程使活動(dòng)通信信道在第一通信信道與第二通信信道之間交替;其中,將所述第一票號存儲在所述目的地字段中包括將所述第一票號存儲在所述目的地字段的所述活動(dòng)通信信道中;并且其中,從所述源字段中讀取所述第二票號包括從所述源字段的所述活動(dòng)通信信道中讀取所述第二票號。

示例16包括如示例1-15中任一項(xiàng)所述的主題,并且其中,進(jìn)入所述同步屏障包括利用所述第一線程的標(biāo)志參數(shù)進(jìn)入所述同步屏障;與所述第一多個(gè)線程同步包括對所述標(biāo)志參數(shù)以及與所述第一多個(gè)線程相對應(yīng)的多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第一歸約值;與所述第二線程同步包括對所述第一歸約值以及與所述第二線程相對應(yīng)的標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第二歸約值;并且與所述第一多個(gè)線程重新同步包括對所述第二歸約值以及與所述第一多個(gè)線程相對應(yīng)的所述多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第三歸約值。

示示例17包括如示例1-16中任一項(xiàng)所述的主題,并且其中,與所述第一多個(gè)線程同步進(jìn)一步包括:將所述標(biāo)志參數(shù)值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中。

示例18包括如示例1-17中任一項(xiàng)所述的主題,并且其中,通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步進(jìn)一步包括將所述第一歸約值存儲在全局存儲器結(jié)構(gòu)的目的地字段中,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);并且從所述全局存儲器結(jié)構(gòu)的源字段中讀取與所述第二線程相對應(yīng)的所述標(biāo)志參數(shù),其中,所述源字段與所述第二線程相關(guān)聯(lián)。

示例19包括一種用于多線程化同步的方法,所述方法包括:通過由計(jì)算設(shè)備的第一處理器核執(zhí)行的第一線程進(jìn)入同步屏障;響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程與由所述計(jì)算設(shè)備的所述第一處理器核執(zhí)行的第一多個(gè)線程同步;響應(yīng)于與所述第一多個(gè)線程同步而通過所述第一線程與由所述計(jì)算設(shè)備的第二處理器核執(zhí)行的第二線程同步;并且響應(yīng)于與所述第二線程同步而通過所述第一線程與所述第一多個(gè)線程重新同步。

示例20包括如示例19所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;并且所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程。

示例21包括如示例19和20中任一項(xiàng)所述的主題,并且其中,利用待由所述計(jì)算設(shè)備執(zhí)行的總線程數(shù)的n路全混洗來標(biāo)識所述第二線程,其中,n等于所述第一預(yù)定數(shù)量。

示例22包括如示例19-21中任一項(xiàng)所述的主題,其中,所述第一預(yù)定數(shù)量包括四個(gè)。

示例23包括如示例19-22中任一項(xiàng)所述的主題,并且進(jìn)一步包括通過所述第一線程退出同步屏障;并且通過所述第一線程交替地重復(fù)與所述第二線程同步以及與所述第一多個(gè)線程重新同步直到退出所述同步屏障。

示例24包括如示例19-23中任一項(xiàng)所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程;并且交替地重復(fù)與所述第二線程的同步以及與所述第一多個(gè)線程的重新同步包括交替地重復(fù)第二預(yù)定次數(shù),其中,根據(jù)待由所述計(jì)算設(shè)備執(zhí)行的第三預(yù)定數(shù)量的總線程以及所述第一預(yù)定數(shù)量來確定所述第二預(yù)定數(shù)量。

示例25包括如示例19-24中任一項(xiàng)所述的主題,并且其中,所述第二預(yù)定數(shù)量作為所述第三預(yù)定數(shù)量的對數(shù)函數(shù)的取頂函數(shù)來確定,其中,所述對數(shù)函數(shù)利用所述第一預(yù)定數(shù)量作為基數(shù)。

示例26包括如示例19-25中任一項(xiàng)所述的主題,并且其中,所述第一預(yù)定數(shù)量是四,所述第二預(yù)定數(shù)量是四,并且所述第三預(yù)定數(shù)量是240。

示例27包括如示例19-26中任一項(xiàng)所述的主題,并且其中,與所述第一多個(gè)線程同步包括將感測值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中,其中,所述感測值基于進(jìn)入所述同步屏障而在第一值與第二值之間交替;從由所述第一多個(gè)線程共享的所述存儲器結(jié)構(gòu)中讀取多個(gè)感測值,其中,所述多個(gè)感測值中的每一個(gè)由所述多個(gè)線程中的相應(yīng)線程來存儲;并且暫停執(zhí)行所述第一線程,直到所述多個(gè)感測值彼此匹配。

示例28包括如示例19-27中任一項(xiàng)所述的主題,并且進(jìn)一步包括響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程使感測值在所述第一值與所述第二值之間交替。

示例29包括如示例19-28中任一項(xiàng)所述的主題,并且其中,存儲所述感測值包括將所述感測值存儲在存儲器結(jié)構(gòu)中,所述存儲器結(jié)構(gòu)存儲在所述第一處理器核的高速緩存存儲器中。

示例30包括如示例19-29中任一項(xiàng)所述的主題,并且其中,通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步包括將第一票號存儲在全局存儲器結(jié)構(gòu)的目的地字段中,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);從所述全局存儲器結(jié)構(gòu)的源字段中讀取第二票號,其中,所述源字段與所述第二線程相關(guān)聯(lián),并且所述第二票號由所述第二線程存儲;并且暫停執(zhí)行所述第一線程,直到所述第二票號與所述第一票號相匹配。

示例31包括如示例19-30中任一項(xiàng)所述的主題,并且其中,將所述全局存儲器結(jié)構(gòu)存儲在所述計(jì)算設(shè)備的主存儲器中。

示例32包括如示例19-31中任一項(xiàng)所述的主題,并且其中,存儲所述第一票號包括引發(fā)高速緩存未命中;并且讀取第二票號包括引發(fā)高速緩存未命中。

示例33包括如示例19-32中任一項(xiàng)所述的主題,并且進(jìn)一步包括:響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程使活動(dòng)通信信道在第一通信信道與第二通信信道之間交替;其中,將所述第一票號存儲在所述目的地字段中包括將所述第一票號存儲在所述目的地字段的活動(dòng)通信信道中;并且其中,從所述源字段中讀取所述第二票號包括從所述源字段的所述活動(dòng)通信信道中讀取所述第二票號。

示例34包括如示例19-33中任一項(xiàng)所述的主題,并且其中,進(jìn)入所述同步屏障包括利用所述第一線程的標(biāo)志參數(shù)進(jìn)入所述同步屏障;與所述第一多個(gè)線程同步包括對所述標(biāo)志參數(shù)以及與所述第一多個(gè)線程相對應(yīng)的多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第一歸約值;與所述第二線程同步包括對所述第一歸約值以及與所述第二線程相對應(yīng)的標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第二歸約值;并且與所述第一多個(gè)線程重新同步包括對所述第二歸約值以及與所述第一多個(gè)線程相對應(yīng)的所述多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第三歸約值。

示例35包括如示例19-34中任一項(xiàng)所述的主題,并且其中,與所述第一多個(gè)線程同步進(jìn)一步包括:將所述標(biāo)志參數(shù)值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中。

示例36包括如示例19-35中任一項(xiàng)所述的主題,并且其中,通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步進(jìn)一步包括將所述第一歸約值存儲在全局存儲器結(jié)構(gòu)的目的地字段中,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);并且從所述全局存儲器結(jié)構(gòu)的源字段中讀取與所述第二線程相對應(yīng)的所述標(biāo)志參數(shù),其中,所述源字段與所述第二線程相關(guān)聯(lián)。

示例37包括一種計(jì)算設(shè)備,所述計(jì)算設(shè)備包括:處理器;以及存儲器,所述存儲器具有存儲于其中的多條指令,所述指令當(dāng)由所述處理器執(zhí)行時(shí)使所述計(jì)算設(shè)備執(zhí)行如示例19-36中任一項(xiàng)所述的方法。

示例38包括一種或多種機(jī)器可讀存儲介質(zhì),所述一種或多種機(jī)器可讀存儲介質(zhì)包括存儲于其上的多條指令,所述指令響應(yīng)于被執(zhí)行而使計(jì)算設(shè)備執(zhí)行如示例19-36中任一項(xiàng)所述的方法。

示例39包括一種計(jì)算設(shè)備,所述計(jì)算設(shè)備包括用于執(zhí)行示例19-36中任一項(xiàng)所述的方法的裝置。

示例40包括一種用于多線程化同步的計(jì)算設(shè)備,所述計(jì)算設(shè)備包括:用于通過由計(jì)算設(shè)備的第一處理器核執(zhí)行的第一線程進(jìn)入同步屏障的裝置;用于響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程與由所述計(jì)算設(shè)備的所述第一處理器核執(zhí)行的第一多個(gè)線程同步的裝置;用于響應(yīng)于與所述第一多個(gè)線程同步而通過所述第一線程與由所述計(jì)算設(shè)備的第二處理器核執(zhí)行的第二線程同步的裝置;以及用于響應(yīng)于與所述第二線程同步而通過所述第一線程與所述第一多個(gè)線程重新同步的裝置。

示例41包括如示例40所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;并且所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程。

示例42包括如示例40和41中任一項(xiàng)所述的主題,并且其中,利用待由所述計(jì)算設(shè)備執(zhí)行的總線程數(shù)的n路全混洗來標(biāo)識所述第二線程,其中,n等于所述第一預(yù)定數(shù)量。

示例43包括如示例40-42中任一項(xiàng)所述的主題,其中,所述第一預(yù)定數(shù)量包括四個(gè)。

示例44包括如示例40-43中任一項(xiàng)所述的主題,并且進(jìn)一步包括:用于通過所述第一線程退出同步屏障的裝置;以及用于通過所述第一線程交替地重復(fù)與所述第二線程同步以及與所述第一多個(gè)線程重新同步直到退出所述同步屏障的裝置。

示例45包括如示例40-44中任一項(xiàng)所述的主題,并且其中,所述第一處理器核包括第一預(yù)定數(shù)量的子核;所述第一多個(gè)線程包括所述第一預(yù)定數(shù)量的線程;并且用于交替地重復(fù)與所述第二線程同步以及與所述第一多個(gè)線程重新同步的所述裝置包括用于交替地重復(fù)第二預(yù)定次數(shù)的裝置,其中,根據(jù)待由所述計(jì)算設(shè)備執(zhí)行的第三預(yù)定數(shù)量的總線程以及所述第一預(yù)定數(shù)量來確定所述第二預(yù)定數(shù)量。

示例46包括如示例40-45中任一項(xiàng)所述的主題,并且其中,所述第二預(yù)定數(shù)量作為所述第三預(yù)定數(shù)量的對數(shù)函數(shù)的取頂函數(shù)來確定,其中,所述對數(shù)函數(shù)利用所述第一預(yù)定數(shù)量作為基數(shù)。

示例47包括如示例40-46中任一項(xiàng)所述的主題,并且其中,所述第一預(yù)定數(shù)量是四,所述第二預(yù)定數(shù)量是四,并且所述第三預(yù)定數(shù)量是240。

示例48包括如示例40-47中任一項(xiàng)所述的主題,并且其中,用于與所述第一多個(gè)線程同步的所述裝置包括用于將感測值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中的裝置,其中,所述感測值基于進(jìn)入所述同步屏障而在第一值與第二值之間交替;用于從由所述第一多個(gè)線程共享的所述存儲器結(jié)構(gòu)中讀取多個(gè)感測值的裝置,其中,所述多個(gè)感測值中的每一個(gè)由所述多個(gè)線程中的相應(yīng)線程來存儲;以及用于暫停執(zhí)行所述第一線程直到所述多個(gè)感測值彼此匹配的裝置。

示例49包括如示例40-48中任一項(xiàng)所述的主題,并且進(jìn)一步包括:用于響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程使感測值在所述第一值與所述第二值之間交替的裝置。

示例50包括如示例40-49中任一項(xiàng)所述的主題,并且其中,用于存儲所述感測值的所述裝置包括用于將所述感測值存儲在存儲器結(jié)構(gòu)中的裝置,所述存儲器結(jié)構(gòu)存儲在所述第一處理器核的高速緩存存儲器中。

示例51包括如示例40-50中任一項(xiàng)所述的主題,并且其中,用于通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步的所述裝置包括用于將第一票號存儲在全局存儲器結(jié)構(gòu)的目的地字段中的裝置,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);用于從所述全局存儲器結(jié)構(gòu)的源字段中讀取第二票號的裝置,其中,所述源字段與所述第二線程相關(guān)聯(lián),并且所述第二票號由所述第二線程存儲;以及用于暫停執(zhí)行所述第一線程直到所述第二票號與所述第一票號相匹配的裝置。

示例52包括如示例40-51中任一項(xiàng)所述的主題,并且其中,將所述全局存儲器結(jié)構(gòu)存儲在所述計(jì)算設(shè)備的主存儲器中。

示例53包括如示例40-52中任一項(xiàng)所述的主題,并且其中,所述用于存儲所述第一票號的裝置包括用于引發(fā)高速緩存未命中的裝置;并且所述用于讀取所述第二票號的裝置包括引發(fā)高速緩存未命中的裝置。

示例54包括如示例40-53中任一項(xiàng)所述的主題,并且進(jìn)一步包括:用于響應(yīng)于進(jìn)入所述同步屏障而通過所述第一線程使活動(dòng)通信信道在第一通信信道與第二通信信道之間交替的裝置;其中,用于將所述第一票號存儲在所述目的地字段中的所述裝置包括用于將所述第一票號存儲在所述目的地字段的活動(dòng)通信信道中的裝置;并且其中,用于從所述源字段中讀取所述第二票號的所述裝置包括用于從所述源字段的所述活動(dòng)通信信道中讀取所述第二票號的裝置。

示例55包括如示例40-54中任一項(xiàng)所述的主題,并且其中,用于進(jìn)入所述同步屏障的所述裝置包括用于利用所述第一線程的標(biāo)志參數(shù)進(jìn)入所述同步屏障的裝置;用于與所述第一多個(gè)線程同步的所述裝置包括用于對所述標(biāo)志參數(shù)以及與所述第一多個(gè)線程相對應(yīng)的多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第一歸約值的裝置;用于與所述第二線程同步的所述裝置包括用于對所述第一歸約值以及與所述第二線程相對應(yīng)的標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第二歸約值的裝置;并且用于與所述第一多個(gè)線程重新同步的所述裝置包括用于對所述第二歸約值以及與所述第一多個(gè)線程相對應(yīng)的多個(gè)標(biāo)志參數(shù)執(zhí)行邏輯or歸約運(yùn)算以生成第三歸約值的裝置。

示例56包括如示例40-55中任一項(xiàng)所述的主題,并且其中,用于與所述第一多個(gè)線程同步的所述裝置進(jìn)一步包括用于將所述標(biāo)志參數(shù)值存儲在由所述第一多個(gè)線程共享的存儲器結(jié)構(gòu)中的裝置。

示例57包括如示例40-56中任一項(xiàng)所述的主題,并且其中,用于通過所述第一線程與由所述計(jì)算裝置的所述第二處理器核執(zhí)行的所述第二線程同步的所述裝置進(jìn)一步包括:用于將所述第一歸約值存儲在全局存儲器結(jié)構(gòu)的目的地字段中的裝置,其中,所述目的地字段與所述第一線程相關(guān)聯(lián);以及用于從所述全局存儲器結(jié)構(gòu)的源字段中讀取與所述第二線程相對應(yīng)的所述標(biāo)志參數(shù)的裝置,其中,所述源字段與所述第二線程相關(guān)聯(lián)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
科技| 凌云县| 邢台县| 高青县| 海安县| 合肥市| 郑州市| 桂平市| 通江县| 湛江市| 靖边县| 乌拉特中旗| 甘洛县| 堆龙德庆县| 灵寿县| 双鸭山市| 宿松县| 汤原县| 大同市| 元氏县| 吉木萨尔县| 疏附县| 财经| 二连浩特市| 商城县| 德州市| 凉城县| 老河口市| 静海县| 永年县| 防城港市| 崇阳县| 陈巴尔虎旗| 越西县| 浦东新区| 花莲市| 申扎县| 磐安县| 富顺县| 峨山| 望城县|