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

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

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

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

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

技術(shù)背景

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

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

附圖簡述

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

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

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

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

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

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

具體實施方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例如,現(xiàn)在參考圖4,示意圖400示出了用于16個硬件線程124的屏障網(wǎng)絡(luò)的一個可能的實施例,展示為線程t0至t15(具有對應(yīng)的線程id0至15)。在局部同步402中,線程t0至t15在同一處理器核122上與線程t局部同步,如下面進一步描述的。在遠程同步404中,使用在屏障網(wǎng)絡(luò)表216中描述的全混洗網(wǎng)絡(luò)拓撲,線程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。作為另一個示例,線程t4的子核數(shù)為0,核數(shù)為1。因此,t4的源線程id為1,表示t4的源線程為t1??梢詫κS嗟木€程類似地確定源線程。

盡管被展示為4路全混洗,但是應(yīng)當理解,屏障網(wǎng)絡(luò)表216可以描述不同的拓撲。例如,屏障網(wǎng)絡(luò)表216可以描述n路全混洗,其中n是每個處理器核122的硬件線程124的數(shù)量。另外,可以使用全混洗以外的拓撲。然而,全混洗拓撲可以針對每個同步級別使用同一源硬件線程124;其他拓撲可能需要為每個同步級別分配或以其他方式確定不同的源硬件線程124。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

現(xiàn)在參照圖5a-5c,偽代碼500展示了方法300的一個潛在實施例。如圖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的一個說明性實施例。如圖5b和圖5c所示,偽代碼500展示了運算302'至352',每一項運算分別與圖3a和圖3b的框302至352的一個說明性實施例相對應(yīng)。特別地,如圖5b所示,通過在運算316'、318'中將感測值寫入與那些其他硬件線程124共享的localcacheline(局部高速緩存行)對象并且然后以緊密循環(huán)從那個localcacheline對象讀取直到所有感測值都在運算320'、322'中匹配,偽代碼500與在運算314'中的相同處理器核122上執(zhí)行的其他硬件線程124同步。如圖所示,偽代碼500通過在運算318'中利用標志參數(shù)和感測值執(zhí)行逐位or運算來歸約標志參數(shù),然后在運算324'中測試來自其他處理器核122的標志位。

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

示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
山西省| 两当县| 甘孜县| 北海市| 阜南县| 台山市| 宣武区| 中方县| 武汉市| 永宁县| 当涂县| 济宁市| 滁州市| 周宁县| 霍州市| 曲水县| 闸北区| 泸西县| 夏邑县| 泾川县| 北京市| 建始县| 三明市| 涡阳县| 济宁市| 屏南县| 大同县| 通海县| 双牌县| 东方市| 滕州市| 旅游| 左贡县| 廉江市| 延长县| 海林市| 汝南县| 大兴区| 信阳市| 大同市| 霞浦县|