用于存儲器內計算的本地旁路的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種用于存儲器內計算的本地旁路的方法和系統(tǒng)。各實施例包括一種在有源存儲器件中以旁路傳輸數(shù)據的方法。所述方法包括:請求方確定去往許可方但尚未傳送到所述許可方的傳輸數(shù)量;基于所述傳輸數(shù)量達到閾值,向所述互連網絡請求將所述旁路路徑用于所述傳輸;以及基于所述請求經由所述旁路路徑將所述傳輸傳送到所述許可方,所述互連網絡響應于所述請求而許可對所述許可方的控制。所述方法還包括:所述互連網絡基于事件而請求對所述許可方的控制;以及經由所述互連網絡傳送來自其它請求方的延遲傳輸,所述延遲傳輸由于所述許可方先前被所述請求方控制而延遲,所述傳送基于對所述許可方的控制被更改回所述互連網絡。
【專利說明】用于存儲器內計算的本地旁路的方法和系統(tǒng)
【技術領域】
[0001]本發(fā)明一般地涉及計算機處理和存儲器,更具體地說,涉及存儲器內計算的旁路通信路徑。
【背景技術】
[0002]計算機系統(tǒng)經常需要大量諸如隨機存取存儲器(RAM)之類的高速存儲器以在計算機加電并執(zhí)行操作時保存信息(例如,數(shù)據和程序)。隨著計算機系統(tǒng)的性能和復雜度增加,存儲器件需求也在持續(xù)增長。當器件的復雜度增加時,管理處理單元(例如,核心)所用的功率就成為整體計算性能中非常重要的因素。
[0003]對于具有分布式處理的系統(tǒng),將處理器和存儲體相連的網絡結構隨著處理器數(shù)量的增加而增大。這可導致在存儲器與處理器之間移動數(shù)據的功率大幅增加。
【發(fā)明內容】
[0004]各實施例包括一種用于在有源存儲器件中以旁路傳輸數(shù)據的系統(tǒng)、計算機程序產品和方法,所述有源存儲器件包括互連網絡、存儲庫、處理元件以及在所述存儲庫與所述處理元件之間的繞開所述互連網絡的旁路路徑。所述方法包括:請求方確定去往許可方但尚未傳送到所述許可方的傳輸數(shù)量;基于所述傳輸數(shù)量達到閾值,向所述互連網絡請求將所述旁路路徑用于所述傳輸;以及基于所述請求經由所述旁路路徑將所述傳輸傳送到所述許可方,所述互連網絡響應于所述請求而許可對所述許可方的控制。所述方法還包括:所述互連網絡基于事件而請求對所述許可方的控制;以及經由所述互連網絡傳送來自其它請求方的延遲傳輸,所述延遲傳輸由于所述許可方先前被所述請求方控制而延遲,所述傳送基于對所述許可方的控制被更改回所述互連網絡,所述請求方是所述處理元件和所述存儲庫中的一個,并且所述許可方是所述處理元件和所述存儲庫中的另一個。
【專利附圖】
【附圖說明】
[0005]圖1示出根據一個實施例的有源存儲器系統(tǒng)的框圖;
[0006]圖2示出根據一個實施例的具有有源存儲器的存儲系統(tǒng)的框圖;
[0007]圖3示出根據一個實施例的具有有源存儲器的存儲系統(tǒng)的示意圖;
[0008]圖4示出根據一個實施例的具有旁路路徑的存儲器內計算系統(tǒng)的一部分的框圖;
[0009]圖5示出根據一個實施例的具有旁路路徑的存儲器內計算系統(tǒng)的一部分的框圖;
[0010]圖6示出根據一個實施例的從互連網絡的角度來看,將許可方的控制從互連網絡轉移到請求方的流程圖的一部分;以及
[0011]圖7示出根據一個實施例的從請求方的角度來看,將許可方的控制從互連網絡轉移到請求方的流程圖的一部分。
【具體實施方式】
[0012]一個實施例涉及改善具有存儲器內處理或計算的計算機系統(tǒng)(例如,具有一個或多個有源存儲器件的計算機系統(tǒng))的通信路徑。所述通信路徑可以是旁路路徑,所述旁路路徑允許存儲器內處理元件在不必穿過主互連網絡的情況下訪問一個或多個存儲體組,從而縮短延遲并減小功耗。所述有源存儲器件可以是任何適當?shù)拇鎯ζ骷?,包括與被配置為控制存儲器件的一個或多個集線器芯片(也稱為存儲控制器芯片)相連的一個或多個存儲器件(例如,隨機存取存儲器“RAM”芯片)。在一個實施例中,有源存儲器件包括多層存儲,這些存儲層形成三維(“3D”)存儲器件(也稱為“存儲立方”),其中存儲芯片的各列形成與集線器芯片通信的疊層或庫(vault)。在一個實施例中,多個庫位于存儲模塊上,其中每個庫具有位于存儲庫下方的相應集線器芯片。集線器芯片均可以包括存儲控制器以及一個或多個處理元件(“PE”)。處理元件被配置為與存儲庫和其它集線器芯片中的其它處理元件通信。在一個實施例中,處理元件通過互連網絡訪問庫中的選定地址。在一個實施例中,多個存儲器件、庫和處理元件可以經由包括一個或多個交叉開關(crossbar switch)的互連網絡通?目。。
[0013]在一個實施例中,在諸如具有許多處理元件(PE)和存儲控制器及庫(MCV)的有源存儲器件之類的存儲芯片內,互連(也稱為“互連網絡”)的延遲和功耗可能變得非常重要。為了縮短延遲并降低功率,可提供繞開全域互連的本地路徑。本地旁路路徑可以將PE的子集與MCV的子集相關聯(lián),使得來自PE子集中PE的訪問可使用到達MCV子集中任一 MCV的本地互連路徑。如果來自本地PE的存儲請求經常到達對應的MCV,則可以降低互連的延遲并減小其功率。此外,系統(tǒng)的全域互連可縮小尺寸來節(jié)省面積和功率。類似地,來自外部主處理器芯片的鏈路子集可以與MCV子集關聯(lián),并且在使用該鏈路子集的處理芯片核心經常僅訪問存儲空間的對應MCV子集的情況下,通過不必穿過全域互連來縮短延遲并減小功率。
[0014]利用此技術的實施例將數(shù)據存儲在特定的存儲位置,這樣,數(shù)據對于MCV子集而言被本地化。本地化的旁路路徑在產生備用的上下文中面臨挑戰(zhàn),其中某些PE或MCV可能不起作用,在這種情況下,需要能夠將旁路切換為由其它鄰近PE使用,這樣所有PE均具有本地旁路。在各實施例中,PE因此可具有至少到達兩個或更多鄰近MCV的旁路,這樣,如果在制造之后確定PE子集出現(xiàn)故障,則其它PE可以根據芯片上的物理位置,切換其旁路路徑以使用正常情況下對應于那些故障PE的MCV,這樣所有旁路均可保持為本地。在3D存儲立方的一個實施例中,PE的鄰近存儲庫可以包括直接位于該PE上方的庫以及直接位于該PE的鄰近PE上方的庫。類似地,存儲庫的鄰近PE可以包括直接位于該庫下方的PE以及直接位于該庫的鄰近庫下方的ΡΕ。應該理解,PE和庫可被置于任何適當?shù)奈恢?,其中包括在彼此的下方或上方,具體取決于系統(tǒng)需求,其中旁路路徑可連接鄰近PE和庫而不考慮它們的布置。
[0015]有源存儲器件可以是任何適當?shù)拇鎯ζ骷?,其中包括多個與邏輯部分和處理元件相連的存儲元件(例如,芯片)。在一個實施例中,有源存儲器件包括多層存儲器,這些存儲層形成三維(“3D”)存儲器件(例如,存儲立方),其中芯片的各列形成與處理元件和邏輯通信的庫。有源存儲器件可以包括多個被配置為與芯片和其它處理元件通信的處理元件。在一個實施例中,處理元件通過互連網絡訪問庫中的選定地址。此外,互連網絡提供有源存儲器件上的處理元件與庫之間以及處理元件與主處理器之間的通信路徑。每個庫具有關聯(lián)的存儲控制器或邏輯單元,該存儲控制器或邏輯單元也與互連網絡相連。
[0016]各實施例包括可以使用有源存儲器件內的多個位置(例如,存儲在特定地址處的數(shù)據)作為操作數(shù)來執(zhí)行一組復雜操作的有源存儲器件。此外,提供過程來借助此過程針對有源存儲器件內的這些操作數(shù)自主地執(zhí)行指令和操作。具體而言,指令存儲在有源存儲器件本身內,并且不由主處理器執(zhí)行。所存儲的指令被提供給處理元件以便由有源存儲器件中的處理元件進行處理。在一個實施例中,處理元件是可編程的引擎,其中包括指令緩沖器、具有分支功能和指令解碼能力的指令單元、矢量、標量和屏蔽寄存器文件的混合、多個加載/存儲單元(用于在存儲器與寄存器文件之間移動數(shù)據)以及多個執(zhí)行單元(用于各種數(shù)據類型的算術和邏輯處理)。有源存儲器件中還包括地址轉換功能,用于將虛擬地址轉換為物理地址,將統(tǒng)一加載/存儲隊列轉換為存儲器與處理元件之間的一系列數(shù)據移動,另外還包括處理器通信單元,用于與主處理器通信。
[0017]在一個實施例中,有源存儲器件被配置為在從諸如主處理器或另一處理元件之類的外部請求方接收命令之后,將配置信息或指令從有源存儲器件的一部分加載到處理單元中。此外,處理元件可以執(zhí)行虛擬-實地址轉換,這些地址轉換在執(zhí)行加載的指令之時計算。在一個實例中,當執(zhí)行加載指令時,有源存儲器件從存儲位置存取操作數(shù)并將操作數(shù)置于處理元件中的寄存器內。存儲位置的虛擬地址由加載指令生成并且被處理元件轉換為實地址。類似地,當執(zhí)行存儲指令時,有源存儲器件將包含內容(例如,操作數(shù))的存儲位置寫入處理元件中的寄存器內。存儲地址的虛擬地址由存儲指令生成并且被處理元件轉換為實地址。
[0018]有源存儲器件中的處理元件的各實施例還具有通過互連網絡在有源存儲器件的任意部分中讀寫操作數(shù)的能力。具體而言,處理元件可以使用互連網絡訪問有源存儲器件中的其它庫。在一個實施例中,處理元件形成池并通過互連網絡耦合到庫,其中處理元件并非物理地位于庫疊層中。在一個實施例中,互連網絡是耦合設備,例如交叉開關,其被配置為當處理元件和存儲庫與互連耦合時,將任何處理元件連接到任何存儲庫。在一個實施例中,互連網絡可以耦合多個有源存儲器件,其中互連網絡提供單獨器件的處理元件與存儲庫之間的通信路徑。
[0019]在一個實施例中,處理元件作為疊層的一部分包括在存儲控制器中。此外,處理元件可以針對操作數(shù)執(zhí)行復雜的算術和邏輯運算,并將最終結果讀回和寫回存儲器中的位置。有源存儲器件可以將單個結果值或信號返回到主處理器以指示所需的復雜運算的結果在有源存儲器件中準備就緒,這樣便可在有源存儲器件上執(zhí)行高帶寬處理并使用有源存儲器件與主處理器之間的低帶寬通信。
[0020]有源存儲器件內的處理能力可縮短當位于單個芯片中的處理器訪問存儲器時否則將遇到的存儲延遲和能耗。主處理器可以配置有源存儲器件內的處理元件,然后指示它們執(zhí)行數(shù)據處理任務,而非通過低帶寬通信路徑將數(shù)據從存儲器發(fā)送到單獨處理芯片,針對數(shù)據執(zhí)行通常十分簡單的計算,然后將已處理的數(shù)據傳輸回存儲器??赏ㄟ^將一個或多個命令從主處理器發(fā)送到有源存儲器件來實現(xiàn)此目的。在此情況下,執(zhí)行數(shù)據處理的位置與存儲器之間的數(shù)據移動顯著減少,不僅是數(shù)據必須從存儲器到數(shù)據處理位置的傳輸距離縮短,而且穿過存儲層次結構遍歷的緩存層數(shù)也減少。
[0021]圖1示出根據一個實施例的用于存儲和檢索存儲器中的數(shù)據的系統(tǒng)的框圖。圖1所示的系統(tǒng)100包括計算機處理器(CPU)102、具有存儲器件的存儲器106,以及存儲控制器104和用于從計算機處理器102接收和處理要存儲在存儲器106中的數(shù)據的處理元件108。
[0022]存儲控制器104可以與計算機處理器102通信并且在不使用處理元件108功能的情況下,從計算機處理器102接收寫請求。寫請求包含要寫入存儲器106的數(shù)據以及用于識別存儲器106中的位置(數(shù)據將被寫入該位置)的實地址。存儲控制器104在存儲器106內的實地址處存儲數(shù)據。當存儲或檢索數(shù)據時,計算機處理器102可以將虛擬地址映射到存儲器106內的實地址。給定虛擬地址的實地址可以在存儲器106中的數(shù)據每次被修改時發(fā)生變化。
[0023]在一個實施例中,處理元件108與計算機處理器102通信并從計算機處理器102接收命令。命令可以對應于存儲器106中存儲的指令以針對要被寫入存儲器106的數(shù)據執(zhí)行寫請求。命令還可以包括虛擬地址,用于識別存儲器106中將寫入數(shù)據的位置。存儲控制器104和/或處理元件108在存儲器106內的實地址處存儲數(shù)據。在一個實施例中,當存儲或檢索數(shù)據時,處理元件108將虛擬地址映射到存儲器106內的實地址。如下面進一步詳細描述的,計算機處理器102將命令提供給存儲器106,其中處理元件108接收命令并從存儲器106取回對應的指令。系統(tǒng)100是可用于執(zhí)行此處描述的處理的配置的一個實例。盡管系統(tǒng)100被描述為具有單個存儲器106、存儲控制器104、處理單元108和計算機處理器102,但是將理解,其它實施例也可以在具有存儲器106、存儲控制器104、處理單元108或計算機處理器102中的兩個或更多的其它系統(tǒng)中執(zhí)行操作。在一個實施例中,存儲器106、存儲控制器104、處理單元108和計算機處理器102不位于同一計算機內。例如,存儲器106、處理元件108和存儲控制器104可以位于一個物理位置(例如,位于存儲器模塊上),而計算機處理器102位于另一物理位置(例如,計算機處理器102通過網絡訪問存儲控制器104和/或處理元件108)。此外,此處描述的處理的各部分可以跨存儲器106、存儲控制器104、處理單元108和計算機處理器102中的一個或多個。
[0024]圖2是實現(xiàn)有源存儲器的計算機系統(tǒng)200的一個實施例的示意圖。在一個實施例中,計算機系統(tǒng)200包括有源存儲器件202、有源存儲器件203和有源存儲器件204。有源存儲器件202包括存儲庫206,存儲控制器208和處理元件210。在一個實施例中,處理元件210、存儲庫206和存儲控制器208通過互連網絡212耦合和通信。具體而言,處理元件210通過互連網絡212與存儲庫206、存儲控制器208和諸如有源存儲器件203和204之類的其它存儲器件通信?;ミB網絡212還通過處理器鏈路220和222耦合到主處理器224?;ミB網絡212提供快速的高帶寬路徑以實現(xiàn)器件的各部分(例如,處理元件、存儲控制器和存儲器)之間的通信,從而提供有源存儲器的改進的性能和縮短的延時。
[0025]有源存儲器件203包括存儲庫226、存儲控制器228和處理元件230。在一個實施例中,處理元件230、存儲庫226和存儲控制器228均位于互連網絡212的同一側,例如位于單個疊層內。通過將處理元件230與存儲庫226置于同一疊層,在訪問存儲庫226內的位置時縮短延遲,這進一步提高性能。在一個實施例中,有源存儲器204包括存儲庫214和通過互連網絡212與處理元件210和處理元件218耦合的存儲控制器216。如圖所示,處理元件218位于互連網絡212的另一側,與存儲控制器216和存儲庫214不在一側。在一個實施例中,有源存儲器件202、203和204包括多層層疊的可尋址存儲元件。此外,疊層存儲器可被分成存儲庫206、226和214,或者存儲器件的三維分塊區(qū)域,這些三維分塊區(qū)域共享公共存儲控制器和/或存儲元件,并且能夠將存儲器訪問請求相互獨立地提供給它們各自的存儲域。
[0026]在各實施例中,處理元件、存儲庫和存儲控制器可以通過適當?shù)姆绞脚帕校唧w取決于應用。例如,諸如處理元件218之類的一個或多個處理元件可以位于互連網絡212的一側,并且可以作為處理元件池執(zhí)行操作,這些處理元件可用于訪問與互連網絡212耦合的存儲系統(tǒng)中的任何存儲器。形成池的處理元件不限于訪問特定的存儲庫,因此,可在從主處理器224接收到命令時使用一個或多個元件。相應地,處理元件218可被配置為訪問每個存儲庫206、226和214。在另一實施例中,諸如處理元件230之類的一個或多個處理元件作為包括存儲庫226和存儲控制器228的疊層的一部分放置。在這樣的配置中,處理元件230被配置為訪問與互連網絡212耦合的存儲庫226,其中包括存儲庫206和214。在一個實施例中,諸如處理元件210之類的一個或多個處理元件被置于互連網絡212的另一側,與存儲庫206和存儲控制器208不在一側。在該配置中,處理元件210被配置為訪問任何與互連網絡212耦合的存儲器,其中包括存儲庫226和214。
[0027]在一個實施例中,計算機系統(tǒng)可以包括多個有源存儲器件,例如有源存儲器件202、203和204。此外,每個有源存儲器件可以包括多個疊層,每個疊層包括存儲庫、存儲控制器和關聯(lián)的處理元件。在一個實例中,處理元件的數(shù)量可以大于存儲庫的數(shù)量。在另一實施例中,存儲器件可以包括少于存儲庫的處理元件。在各實施例中,處理元件形成池并可用于訪問系統(tǒng)中的任何存儲器。例如,存儲器件可以包括16個存儲庫和存儲控制器,但是僅包括八個處理元件。八個處理元件形成池,被用作訪問與互連網絡耦合的任何存儲庫的資源。在另一實例中,存儲器件可以是無源存儲器件,其中該器件由與互連網絡耦合的有源存儲器件的處理元件控制。
[0028]圖3是實現(xiàn)有源存儲器的示例性計算機系統(tǒng)300的示意圖。計算機系統(tǒng)300包括電路板302、主處理器304、有源存儲器件306和有源存儲器件308。有源存儲器件306、有源存儲器件308和主處理器304位于電路板302上。如圖所示,有源存儲器件306和308的各部分被進行分解以示出計算機系統(tǒng)300的排列細節(jié)。有源存儲器件306和308分別通過信號路徑324和344與主處理器304通信。如圖所示,有源存儲器件306排列為多個層,其中基層311包括多個存儲控制器310和處理元件312。例如,有源存儲器件306包括存儲層309,該層位于基層311上面,其中層309均具有多個存儲元件。如圖所示,基層311還包括互連網絡346以實現(xiàn)器件中的存儲器、存儲控制器與處理元件之間的高帶寬通信。
[0029]在一個實施例中,有源存儲器件306包括多個存儲庫314,其中每個存儲庫314包括來自每個層309的存儲元件,存儲庫314鄰近存儲控制器310和處理元件312放置。具體而言,示例性有源存儲器件306包括存儲元件層16,其中各個元件層形成疊層,包括疊層316,其中疊層316包括被置于存儲控制器318和處理元件320上方的存儲庫322。高帶寬通信路徑326提供存儲庫322內的處理元件320與存儲位置之間的高帶寬通信路徑,該路徑為直連路徑,長度大幅縮短(例如,與路徑324、344相比),這樣縮短了用于存儲訪問的延遲并降低了功耗。例如,處理元件320可以從主處理器304接收命令,基于該命令加載來自有源存儲器件306的指令,并且作為已加載指令的一部分,訪問存儲庫314中某個位置處的數(shù)據,然后在處理元件320中對該數(shù)據執(zhí)行復雜操作。此外,處理元件320還可以將諸如結果之類的數(shù)據存儲在存儲庫314中,然后在執(zhí)行命令之后將值或信號發(fā)送到主處理器304。在一個實施例中,處理元件320存儲數(shù)據(例如,操作數(shù))或將數(shù)據(例如,操作數(shù))從處理元件320中的寄存器寫入存儲庫314。作為讀取或存儲操作的一部分,處理元件320還被配置為將地址從虛擬地址轉換為實地址以及從實地址轉換為虛擬地址。這樣,處理元件320提供指令加載、地址轉換、復雜運算和存儲器本地的其它任務以縮短延遲、節(jié)省功耗并使主處理器304有時間執(zhí)行其它任務。
[0030]類似地,有源存儲器件308包括多個被置于基層331上的存儲控制器328和處理元件330。在一個實施例中,有源存儲器件308包括被置于基層331上面的存儲器件層329,其中層329均具有多個存儲器件?;鶎?31還包括互連網絡346以實現(xiàn)存儲器與器件內的處理元件之間的高帶寬通信。在一個實施例中,有源存儲器件306和有源存儲器件308的互連網絡346相耦合并允許單獨器件上的處理元件與存儲器之間的通信。
[0031]在一個實施例中,有源存儲器件308包括多個存儲庫332,其中每個存儲庫332包括來自每個層309的存儲元件,存儲庫332鄰近存儲控制器328和處理元件330放置。示例性有源存儲器件308包括16個疊層,其中包括疊層334,疊層334包括被置于存儲控制器340和處理元件338上方的存儲庫336。高帶寬通信路徑342提供處理元件330與存儲庫336內的存儲位置之間的通信。
[0032]圖4示出具有用于存儲器內計算的本地旁路的示例性存儲系統(tǒng)400的一部分。存儲系統(tǒng)400是圖1-3所示的系統(tǒng)的至少一部分的一個實施例。存儲系統(tǒng)400包括與處理元件(PE)410和412耦合的存儲庫402,404,406和408?;ミB414允許庫402,404,406和408與PE410和412之間的通信。在各實施例中,互連414包括多個交叉開關和控制器以組織和控制通過互連的業(yè)務?;ミB414 (也稱為“互連網絡”)經由鏈路410和456與存儲系統(tǒng)400的其它互連通信。PE410、412可以經由互連414或旁路路徑416、418、436和438與庫402、404、406和408通信。PE412與庫406、408之間的通信通過互連414、互連鏈路454、440和442實現(xiàn)。類似地,PE410與庫402、404之間的通信通過互連414、互連鏈路452、420和422實現(xiàn)。在一個實施例中,當去往特定庫的未決傳輸數(shù)量達到閾值時,PE可以經由旁路路徑通信。在閾值為32的一個實施例中,如果從PE410到庫404的未決傳輸數(shù)量為32或更大,則傳輸將使用旁路路徑418傳送未決傳輸。所述傳輸可以是命令,例如命令指定的存儲地址上的MCV所支持的加載、存儲或算術運算。命令可以包含有效負載以將數(shù)據傳輸?shù)酱鎯ζ骰驈拇鎯ζ鱾鬏敂?shù)據。
[0033]在一個實施例中,可以通過相應多路復用器(“1111?”)432、430、448和450傳送去往庫402、404、406和408的傳輸。旁路選擇鏈路426和428控制庫402和404分別經由多路復用器432和430接收的輸入。旁路選擇鏈路446和444控制庫406和408分別經由多路復用器448和450接收的輸入?;ミB414可以經由鏈路426、428、444、446控制多路復用器,其中互連中的控制器基于符合本地通信的準則,向發(fā)出請求的PE許可庫402、404、406和408之一的控制。在各實施例中,當未決傳輸?shù)臄?shù)量達到閾值時,PE410、412分別經由鏈路424、434請求對是未決傳輸目標的庫(B卩,具有傳輸指定的地址的庫)的控制。在圖4的一個實施例中,PE410、412被稱為請求方,“目標”存儲庫402、404、406和408被稱為許可方。當從請求方到許可方的未決傳輸達到閾值時,請求方PE從互連414請求對許可方庫的控制。在一個實施例中,通過對未決傳輸隊列中的傳輸計數(shù)來確定未決傳輸?shù)臄?shù)量。在另一實施例中,通過從加載-存儲單元(LSU)確定以許可方庫為目標的指令流中的指令數(shù)量來確定未決傳輸?shù)臄?shù)量。例如,在執(zhí)行向量代碼的PE中,通過向量迭代計數(shù)和加載-更新或存儲-更新指令的地址步幅,很容易在LSU中識別以庫為目標的指令數(shù)量。一旦互連已將對許可方庫的控制許可給請求方PE,該PE便經由本地旁路路徑或鏈路直接將未決傳輸傳送到許可方庫。盡管請求方PE具有對許可方庫的控制,但是互連414可以累積從其它PE到許可方庫的傳輸,其中傳輸被延遲,直到互連414具有對許可方庫的控制。在各實施例中,當滿足選定事件或條件時,互連從請求方PE請求對許可方庫的控制。所述事件包括但不限于:當延遲的傳輸請求的數(shù)量或互連414累積的傳輸達到第二閾值時,當傳輸請求或去往互連414的傳輸未決的時鐘周期數(shù)量達到第三閾值時,當旁路空閑的時鐘周期數(shù)量達到第四閾值時,當提供了請求方已完成到許可方的傳送的指示時,或者發(fā)生這些條件的任意組合時。在請求方PE將對許可方庫的控制許可返回互連414之后,將延遲傳輸傳送到許可方庫。在另一實施例中,互連414基于請求方完成將未決傳輸傳送到許可方庫,從請求方PE請求對許可方庫的控制。
[0034]當互連414將對許可方庫的控制許可給請求方PE時,互連處去往許可方庫的未決傳輸請求可被刪除以確保傳輸不會重復并且去往同一地址的加載和存儲傳輸按次序傳輸。在一個實施例中,旁路路徑416、418、436、438可以使用PE410、412上的共享端口,其中這些端口也被互連鏈路452、454使用。在另一實施例中,PE410、412均具有用于經由旁路路徑416、418、436、438通信的專用端口。在各實施例中,經由旁路路徑傳送未決傳輸,從而避免方框414中的互連多路復用延遲,并且避免長互連鏈路420、422、452、440、442、454的線延遲。此外,旁路多路復用選擇426、428、444、446在旁路活動時不會切換。
[0035]圖5示出具有用于存儲器內計算的本地旁路的示例性存儲系統(tǒng)500的一部分。存儲系統(tǒng)500是圖1-3所示的系統(tǒng)的至少一部分的一個實施例。存儲系統(tǒng)500包括與處理元件(PE) 520,522,524和526耦合的存儲庫504和506。互連514允許庫404和506與PE520、522、524和526之間的通信。在各實施例中,互連514包括多個交叉開關和控制器以組織和控制通過互連的業(yè)務?;ミB514經由鏈路516和518與存儲系統(tǒng)500的其它互連通信。PE520、522、524和526可以經由互連514或旁路路徑502,528,508和544與庫504和506通信。庫504與PE520、522之間的通信通過互連514、互連鏈路530、532和534實現(xiàn)。類似地,庫506與PE524、526之間的通信通過互連514、互連鏈路550、546和548實現(xiàn)。在一個實施例中,當去往特定PE的未決傳輸數(shù)量達到閾值時,庫可以經由旁路路徑通信。在閾值為32的一個實施例中,如果從庫504到PE522的未決傳輸數(shù)量為32或更大,則傳輸將使用旁路路徑528傳送未決傳輸。所述傳輸可以是指定去往或來自PE的數(shù)據傳輸?shù)拿睢C羁梢园行ж撦d以將數(shù)據傳輸?shù)絇E或從PE傳輸數(shù)據。
[0036]在一個實施例中,可以通過相應多路復用器536、538、552和554傳送去往PE520、522、524和526的傳輸。旁路選擇鏈路540和542控制PE520和522分別經由多路復用器536和538接收的輸入。旁路選擇鏈路556和558控制PE526和524分別經由多路復用器554和552接收的輸入。互連514可以經由鏈路540、542、556、558控制多路復用器,其中互連中的控制器基于符合本地通信的準則,將對PE520、522、524和526之一的控制許可給發(fā)出請求的庫。在各實施例中,當未決傳輸?shù)臄?shù)量達到閾值時,庫504、506分別經由鏈路510、512請求對是未決傳輸目標的PE (即,具有傳輸指定的地址的PE)的控制。在圖5的一個實施例中,存儲庫504、506被稱為請求方,“目標”PE520、522、524和526被稱為許可方。當從請求方到許可方的未決傳輸達到閾值時,請求方庫從互連514請求對許可方PE的控制。在一個實施例中,通過對未決傳輸隊列中的傳輸計數(shù)來確定未決傳輸?shù)臄?shù)量。在另一實施例中,請求方庫基于PE提供的提示請求對許可方PE的控制,PE基于它已經做出或將要做出的去往庫的加載或存儲傳輸?shù)臄?shù)量生成提示。在一個實施例中,該提示隨著PE做出的加載或存儲傳輸一起傳遞到庫。
[0037]一旦互連已將對許可方PE的控制許可給請求方庫,該庫便經由本地旁路路徑或鏈路直接將未決傳輸傳送到許可方PE。盡管請求方庫具有對許可方PE的控制,但是互連514可以累積從其它庫到許可方PE的傳輸,其中傳輸被延遲,直到互連514具有對許可方PE的控制。在一個實施例中,當滿足選定事件或條件時,互連從請求方PE請求對許可方庫的控制。所述選定事件包括但不限于:當延遲的傳輸請求的數(shù)量或互連514累積的傳輸達到第二閾值時,當傳輸請求或去往互連514的傳輸未決的時鐘周期數(shù)量達到第三閾值時,當旁路空閑的時鐘周期數(shù)量達到第四閾值時,當提供了請求方已完成到許可方的傳送的指示時,或者發(fā)生這些條件的任意組合時。在請求方庫將對許可方PE的控制許可回互連514之后,延遲傳輸被傳送到許可方PE。在另一實施例中,互連514基于請求方完成將未決傳輸傳送到許可方PE,從請求方庫請求對許可方PE的控制。
[0038]當互連514將對許可方PE的控制許可給請求方庫時,互連處去往許可方PE的未決傳輸請求可被刪除以確保傳輸不會重復并且來自同一地址的加載傳輸按次序傳輸。在一個實施例中,旁路路徑502、528、544、508可以使用庫504、506上的共享端口,其中這些端口也被互連鏈路530、550使用。在另一實施例中,庫504、506均具有用于經由旁路路徑502、528,544,508通信的專用端口。在各實施例中,未決傳輸經由旁路路徑傳送,從而避免方框514中的互連多路復用延遲,并且避免長互連鏈路532、534、530、546、548、550的線延遲。此夕卜,旁路多路復用選擇540、542、556、558在旁路活動時不會切換。
[0039]圖6示出從互連網絡的角度來看,將對許可方(402、404、406、408或520、522、524、526)的控制從互連網絡(414或514)轉移到請求方(410、412或504,506之一)的示例性流程圖的一部分??刂妻D移序列在方框600開始。只要沒有請求方“R”請求旁路到許可方“G”,在方框622,請求方R與許可方G之間的旁路便保持不活動。在方框602,如果請求方R請求旁路到許可方G,則在方框604,互連網絡首先完成任何當前正在進行的去往許可方G的傳輸,在方框606刪除任何從請求方R到許可方G的未決傳輸請求,并且通過相應地設定旁路路徑(416、418、436、438 或 502、528、508、544)的對應旁路復用(430、432、448、450 或536、538、558、554)的多路復用選擇(426、428、444、446 或 540、542、556、558),激活 R 與許可方G之間的旁路,例如“旁路(R,G)”。在各實施例中,請求方在不導致切換多路復用選擇的情況下,經由旁路路徑將傳輸傳送到許可方。在一個實施例中,在方框610將諸如“計數(shù)器(R,G)”之類的計數(shù)器設定為O。在方框612,如果存在來自請求方R之外的請求方的去往許可方G的未決請求,則遞增計數(shù)器(R,G)。在方框614,對照閾值T檢查計數(shù)器(R,G)的值。如果計數(shù)器(R,G)的值不大于閾值T的值,則控制序列返回到方框612。如果計數(shù)器(R, G)的值大于閾值T的值,則互連網絡請求該請求方R關閉R與許可方G之間的旁路(旁路(R,G))。在方框620,互連網絡等待請求方R許可請求。一旦請求被許可,便在方框618使旁路(R,G)不活動,然后控制序列返回到方框602。
[0040]圖7示出從請求方的角度來看,將對許可方(402、404、406、408或520、522、524、526)的控制從互連網絡(414或514)轉移到請求方(410、412或504、506)的示例性流程圖的一部分。對于PE到庫旁路,PE是請求方并且?guī)焓窃S可方。對于庫到PE旁路,庫是請求方并且PE是許可方??刂妻D移的控制序列在方框700開始。在一個實施例中,如果在方框702,請求方R的未決隊列中去往許可方G的未決請求數(shù)量不大于閾值T,則在方框716,請求方R與許可方G之間諸如“旁路(R,G)”之類的旁路保持不活動。如果該數(shù)量大于閾值T,則在方框704,請求方R將請求發(fā)送到互連網絡以開啟旁路(R,G)。在方框706,請求方R等待互連網絡許可該請求。一旦互連網絡激活旁路,請求方R便在方框708檢查互連網絡是否做出關閉旁路(R,G)的請求。如果互連尚未做出該請求,則在方框710,旁路(R,G)保持活動,否則,請求方R在方框712完成當前去往許可方G的傳輸(如果有),然后許可互連網絡關閉旁路(R,G),接著控制序列返回到方框702。
[0041]此處使用的術語只是為了描述特定的實施例并且并非旨在作為本發(fā)明的限制。如此處所使用的,單數(shù)形式“一”、“一個”和“該”旨在同樣包括復數(shù)形式,除非上下文明確地另有所指。還將理解,當在此說明書中使用時,術語“包括”和/或“包含”指定了聲明的特征、整數(shù)、步驟、操作、元素和/或組件的存在,但是并不排除一個或多個其他特征、整數(shù)、步驟、操作、元素、組件和/或其組合的存在或增加。
[0042]以下的權利要求中的對應結構、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權利要求中具體指出的其它單元相組合地執(zhí)行該功能的結構、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要把本發(fā)明限定到所表述的形式。對于所屬【技術領域】的普通技術人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對實施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實際應用,使所屬【技術領域】的普通技術人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施方式。
[0043]此外,如所屬【技術領域】的技術人員將理解的,本公開的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產品。因此,本公開的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本公開的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0044]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0045]計算機可讀的信號介質可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據信號可以采用多種形式,包括一但不限于一電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0046]計算機可讀介質上包含的程序代碼可以用任何適當?shù)慕橘|傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0047]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本公開的各個方面的操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括局域網(LAN)或廣域網(WAN) —連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。
[0048]以上參照根據本公開實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述本公開的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據處理裝置的處理器執(zhí)行時,產生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0049]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數(shù)據處理裝置、或其它設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)0
[0050]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據處理裝置、或其它設備上,使得在計算機、其它可編程裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令提供實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的過程。
[0051]附圖中的流程圖和框圖顯示了根據本公開的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
【權利要求】
1.一種用于在有源存儲器件中通信的方法,所述有源存儲器件包括互連網絡、存儲庫、處理元件以及在所述存儲庫與所述處理元件之間的繞開所述互連網絡的旁路路徑,所述方法包括: 由請求方確定去往許可方但尚未傳送到所述許可方的傳輸數(shù)量; 由所述請求方基于所述傳輸數(shù)量達到閾值,向所述互連網絡請求將所述旁路路徑用于所述傳輸; 基于所述請求經由所述旁路路徑將所述傳輸傳送到所述許可方,所述互連網絡響應于所述請求而許可對所述許可方的控制; 由所述互連網絡基于事件而請求對所述許可方的控制;以及 經由所述互連網絡傳送來自其它請求方的延遲傳輸,所述延遲傳輸由于所述許可方先前被所述請求方控制而延遲,所述傳送基于對所述許可方的控制被更改回所述互連網絡,所述請求方包括所述處理元件和所述存儲庫中的一個,并且所述許可方包括所述處理元件和所述存儲庫中的另一個。
2.根據權利要求1的方法,其中確定去往所述許可方的傳輸數(shù)量進一步包括確定所述請求方的未決 隊列中的未決傳輸數(shù)量。
3.根據權利要求1的方法,其中確定去往所述許可方的傳輸數(shù)量進一步包括由加載-存儲單元確定目標為所述許可方的指令的數(shù)量。
4.根據權利要求1的方法,其中基于所述事件而請求對所述許可方的控制進一步包括基于以下項中的一個或多個而請求對所述許可方的控制:去往所述許可方的延遲傳輸數(shù)量達到第二閾值、延遲傳輸已被延遲的時鐘周期數(shù)量達到第三閾值、所述旁路路徑空閑的時鐘周期數(shù)量達到第四閾值,以及所述請求方已完成到所述許可方的傳送的指示。
5.根據權利要求1的方法,其中經由所述旁路路徑將所述傳輸傳送到所述許可方進一步包括在不導致切換多路復用選擇的情況下經由所述旁路路徑傳送所述傳輸。
6.根據權利要求1的方法,其中所述存儲庫和處理元件在模塊上彼此直接疊加放置。
7.根據權利要求1的方法,其中所述存儲庫和處理元件在模塊上彼此相鄰。
8.一種用于在計算機系統(tǒng)中通信的方法,所述計算機系統(tǒng)包括: 有源存儲器件,其包括互連網絡、存儲庫、處理元件以及在所述存儲庫與所述處理元件之間的繞開所述互連網絡的旁路路徑,所述系統(tǒng)被配置為執(zhí)行一種方法,所述方法包括: 由請求方確定去往許可方但尚未傳送到所述許可方的傳輸數(shù)量; 由所述請求方基于所述傳輸數(shù)量達到閾值,向所述互連網絡請求將所述旁路路徑用于所述傳輸; 基于所述請求經由所述旁路路徑將所述傳輸傳送到所述許可方,所述互連網絡響應于所述請求而許可對所述許可方的控制; 由所述互連網絡基于事件而請求對所述許可方的控制;以及 經由所述互連網絡傳送來自其它請求方的延遲傳輸,所述延遲傳輸由于所述許可方先前被所述請求方控制而延遲,所述傳送基于對所述許可方的控制被更改回所述互連網絡,所述請求方包括所述處理元件和所述存儲庫中的一個,并且所述許可方包括所述處理元件和所述存儲庫中的另一個。
9.根據權利要求8的系統(tǒng),其中確定去往所述許可方的傳輸數(shù)量進一步包括確定所述請求方的未決隊列中的未決傳輸數(shù)量。
10.根據權利要求8的系統(tǒng),其中確定去往所述許可方的傳輸數(shù)量進一步包括由加載-存儲單元確定目標為所述許可方的指令的數(shù)量。
11.根據權利要求8的系統(tǒng),其中基于所述事件而請求對所述許可方的控制進一步包括基于以下項中的一個或多個而請求對所述許可方的控制:去往所述許可方的延遲傳輸數(shù)量達到第二閾值、延遲傳輸已被延遲的時鐘周期數(shù)量達到第三閾值、所述旁路路徑空閑的時鐘周期數(shù)量達到第四閾值,以及所述請求方已完成到所述許可方的傳送的指示。
12.根據權利要求8的系統(tǒng),其中經由所述旁路路徑將所述傳輸傳送到所述許可方進一步包括在不導致切換多路復用選擇的情況下經由所述旁路路徑傳送所述傳輸。
13.根據權利要求8的系統(tǒng),其中所述存儲庫和處理元件在模塊上彼此直接疊加放置。
14.根據權利要求8 的系統(tǒng),其中所述存儲庫和處理元件在模塊上彼此相鄰。
【文檔編號】G06F13/16GK104050110SQ201410093662
【公開日】2014年9月17日 申請日期:2014年3月13日 優(yōu)先權日:2013年3月15日
【發(fā)明者】B·M·弗萊舍, T·W·??怂? H·M·雅各布森, R·奈爾, M·奧馬赫特, K·蘇伽梵納姆 申請人:國際商業(yè)機器公司