本申請涉及存儲器管理設備及其對應方法。
背景技術:
存儲器一般用于存儲數據。存儲器存取時間,連同其它參數(如,處理器速度)一起,可以決定系統的運行速度。例如,在傳統的系統中,處理器可能不能在存取存儲器的同時執行其它任務,例如,執行指令。因此,已經開發出存儲器管理方法來使得能夠高效地存取存儲器和/或高效地處理存儲于存儲器中的數據。
us20130057562a1示出了用于存取存儲于存儲器中的圖形數據的技術。在一些實現方式中,所述技術可以包括獨立于在例如圖形處理單元(gpu)(其是處理器的例子)上執行一個或多個程序,而執行數據修改任務。例如,該文檔的技術可以允許gpu將涉及存儲器管理和數據修改的任務從涉及數據處理的任務分離開,并允許獨立執行這些任務。作為一個例子,在本文文檔中描述的技術可以允許gpu從存儲器取回數據或將數據存儲在存儲器中,并且與執行這樣的指令并行地,執行一個或多個程序的指令。作為另一例子,在該專利中描述的技術可以允許gpu將數據轉化為更適當的形式(其指令待被執行),然后獨立于執行指令本身而利用之。
然而,仍需要一種改善的存儲器設備、存儲器管理系統和相關聯的方法,其例如可以減少處理器關于存儲器操作的負擔。
技術實現要素:
獨立權利要求定義了本申請的各種方面。從屬權利要求定義了另外的實施例。除非另有表述,否則來自不同權利要求的特征可以組合。
根據一個實施例,本申請提供了一種用于計算設備的存儲器模塊,在本文也稱作數據存儲器模塊。
計算設備設置有軟件程序,其包括用于發現、組織和/或改變數據的指令。計算設備的一個例子是計算機或服務器。另一例子可以是設置有存儲器、處理器和其它部件的集成系統。數據存儲器模塊用于存儲例如上述數據,所述數據由計算設備使用。
數據存儲器模塊可以包括:主存儲器(例如,主存儲器單元)、至少一個高速緩存存儲器(例如,高速緩存存儲器單元)以及存儲器復制設備(例如,存儲器復制單元)。
高速緩存存儲器通常是較小且更快的存儲器,其存儲主存儲器的頻繁使用的數據的副本。計算機的中央處理單元(cpu)或其它處理器(例如,圖形處理單元(gpu))通常使用高速緩存存儲器來減少從主存儲器存取數據的平均時間。在實踐中,通常要求預定的等待時間來在主存儲器和高速緩存存儲器之間同步數據。
所述同步在涉及大量數據時是尤其重要的,并且可以保持在高速緩存存儲器中的數據和主存儲器中的數據彼此一致。
存儲器復制設備與所述主存儲器和高速緩存存儲器通信地連接。
存儲器復制設備包括至少一個直接存儲器存取(dma)端口、地址轉換(addresstranslation)設備和經緩存的存取模塊(cachedaccessmodule)設備。
dma端口用于存取在主存儲器中的數據和在高速緩存存儲器中的數據。經由dma端口,存儲器復制設備能夠獨立于處理器(例如,cpu或gpu)存取數據。
地址轉換設備用于在存儲器物理地址和存儲器虛擬地址之間和/或在高速緩存存儲器地址和主存儲器地址之間進行轉換。
經緩存的存取模塊設備用于經由所述dma端口在所述高速緩存存儲器和所述主存儲器之間讀取和寫入數據,用于維持數據完整性和一致性。
dma端口允許獨立于處理器(例如,cpu或gpu)在主存儲器和高速緩存存儲器之間轉移數據。事實上,在實施例中,這使得處理器在該存取數據期間可以自由執行其它任務。從而這允許更高效地使用計算資源,這在主存儲器和高速緩存存儲器之間轉移大量數據時是尤其重要的。
在主存儲器和高速緩存存儲器之間的該形式的數據轉移可以主要基于硬件來執行數據轉移。例如,存儲器復制設備可以被實現為集成電路例如專用集成電路(asic),并可以與高速緩存存儲器和主存儲器集成在一起。該形式的數據轉移可以更快,并對轉移大量數據有用。
該方法不同于使用處理器例如cpu在高速緩存存儲器和主存儲器之間轉移數據的許多傳統實現方式,所述傳統實現方式主要基于在處理器上運行的軟件來進行數據轉移。
根據另一方面,本申請還提供了一種計算設備。所述計算設備包括:至少一個處理核心模塊;以及上述存儲器模塊。所述處理核心模塊在存儲器模塊中存儲數據并從存儲器模塊讀取數據。
根據另一方面,本申請還提供了一種計算機服務器。所述計算機服務器包括網絡模塊,其包括上述計算設備。
網絡模塊可以包括從由路由器設備、網關設備和網絡附接存儲(nas)設備組成的組中選擇的一個或多個設備。
根據另一方面,本申請提供一種操作存儲器模塊的方法。
所述方法包括:例如通過地址轉換設備,在存儲器物理地址和存儲器虛擬地址之間或者在高速緩存存儲器地址和主存儲器地址之間轉換地址。所述方法還包括(例如,在地址轉換之后):經由直接存儲器存取(dma)(例如,對應的dma端口)在高速緩存存儲器和主存儲器之間讀取和/或寫入數據,以便維持在所述高速緩存存儲器和所述主存儲器之間的數據完整性和一致性。這可以例如通過經緩存的存取模塊設備執行。
根據另一方面,本申請提供一種計算機,其具有存儲器設備、存儲器復制設備和中央處理單元(cpu)。存儲器復制設備可以是硬件存儲器復制(hwmemcopy)引擎。
在該方面的存儲器設備包括主存儲器、高速緩存存儲器(cachemamory)和緩沖存儲器(buffermemory)。所述存儲器設備可以利用動態隨機存取存儲器(dram)和/或靜態隨機存取存儲器(sram)來實現。
不同于其它的諸如路由器、網關和網絡附接存儲(nas)設備等設備的存儲器,存儲器復制設備不使用處理器(例如cpu)的資源。存儲器復制設備可以改善聯網吞吐量和/或可以改善或最大化(例如在嵌入式cpu上的)應用性能。存儲器復制設備可以高效地使得與存儲器數據有關的負荷保持遠離處理器(如cpu或gpu)。該負荷可以包括由于存儲器地址轉換和復制數據引起的負荷,這將在下文描述。
計算機的軟件應用通常使用存儲器的虛擬地址方案以便更容易地實現。
虛擬地址對應于物理地址。在一個例子中,存儲器設備具有起始虛擬地址0x8000000,其對應于物理地址0x0000000。
存儲器復制設備可以提供虛擬存儲器地址到其對應的物理存儲器地址的高效轉換。
存儲器復制設備還可以將數據從源存儲器段(sourcememorysegment)高效地復制到目的地存儲器段(destinationmemorysegment),同時維持在主存儲器、高速緩存存儲器和緩沖存儲器之間的一致性。
該一致性可以涉及將在緩沖存儲器(在該情況下也稱作源緩沖存儲器)中的數據復制或寫入到主存儲器,以及若需要則復制或寫入到高速緩存存儲器。該數據有時被稱作“臟”行(“dirty”lines)。
類似地,該一致性還可以涉及從緩沖存儲器(在該情況下也稱作目的地緩沖存儲器)復制到主存儲器,以及若需要則復制到高速緩存存儲器。之后,可以執行高速緩存存儲器(目的地)的存儲器淘汰(memoryeviction),并且新數據可以被寫入到目的地緩沖存儲器。
現在將描述根據實施例的操作存儲器復制設備的方法。該方法包括地址轉換的步驟和高速緩存存儲器一致性的步驟。
提到地址轉換,在發起期間或者當在源存儲器段和目的地存儲器段之間的映射改變時,軟件驅動程序或其它實體配置或生成用于存儲器復制設備的地址轉換規則。
軟件驅動程序然后向存儲器復制設備提供存儲器復制(memcopy)請求命令。存儲器復制(memcopy)請求命令表示是否將源地址和/或目的地地址轉換以便優化虛擬地址的使用,虛擬地址在軟件中可用或被使用在軟件中以進行特定操作。
存儲器復制設備隨后基于生成的地址轉換規則執行適當的地址轉換。存儲器復制設備可以針對未映射地址執行地址轉換,或者可以針對已映射地址實現簡化的存儲器管理單元(mmu)邏輯。
關于高速緩存存儲器一致性,軟件驅動程序可以用memcopy請求命令向存儲器復制設備表示:是將從源地址和/或目的地地址讀取數據,還是數據將對高速緩存存儲器寫入(writeto)/直寫(writethrough)。
如果要求對高速緩存存儲器的緩沖存儲器的存取,則存儲器復制設備可以轉換各自的地址以便指向與物理地址空間相對應的高速緩存存儲器區域地址。
隨后,存儲器復制設備可以發起從緩沖存儲器的直接存儲器存取(dma)讀取,或者可以發起對緩沖存儲器的dma寫入,以維持高速緩存存儲器例如與主存儲器和/或緩沖存儲器相一致。
dma讀取和/或dma寫入可以以遍歷高速緩存存儲器子系統和一致性管理器的方式來進行。
這可以通過使用驅動器邊帶信號(driversidebandsignal)、或通過執行到高速緩存存儲器地址空間的地址變換或轉換來進行。這一點可以被實現的一種途徑是:將經變換的“存取通過(accessthrough)”高速緩存存儲器地址呈現給互連,該互連然后利用i/o高速緩存存儲器一致性端口將該地址路由通過cpu高速緩存存儲器子系統(其可以包括高速緩存存儲器),同時向該子系統呈現原始地址(在高速緩存存儲器地址變換之前)。
簡而言之,在一些方面,本申請提供硬件存儲器復制模塊,用于執行通常作為軟件命令而被提供的存儲器復制。這可以通過執行在物理地址和虛擬地址之間的地址轉換來進行。與對從源存儲器到目的地存儲器的同構(homogeneous)數據路徑的支持相結合,軟件旗標(softwareflag)可以被用來表示:來自源存儲器的數據是被發送到物理存儲器地址,還是被發送到高速緩存(虛擬)存儲器地址。這可以允許源存儲器和目的地存儲器具有不同的屬性。
在一些方面,由系統使用的關于物理和虛擬地址的存儲器復制的方法可以通過檢查由該系統使用的開源驅動程序來檢測。
由本申請的一些方面提供的存儲器復制設備可以不同于使用兩個復制進程的系統。這樣的系統具有更大的開銷,并且要求更多的系統帶寬來實現或執行相同的任務。
上文只是對一些實施例的一些特征或要素的簡要概述,并不應被解釋為限制性的,因為其它實施例可以包括不同的特征或要素。來自不同實施例的特征或要素可以彼此組合。
附圖說明
圖1示出了存儲器復制引擎。
具體實施方式
在后續具體實施方式中,提供描述本申請實施例的細節。然而,本領域技術人員可以理解的是,實施例可以在沒有這些細節的情況下實踐。換句話說,通過多個特征或要素描述實施例僅為了向技術人員提供更好的理解,而不應被解釋為表明所有這些特征或要素都對于實施例的實現是必要的。
所描述的一些實施例可以具有類似的部分。類似的部分可以具有相同的名稱或類似的附圖標號。在適當時,對這樣的一個部分的描述通過引用適用于另一類似部分,由此減少了文本的重復并提供了更簡潔的描述。然而,這并不暗示類似的部分必須以相同方式實現。
圖1示出了例示實施例的計算模塊10。雖然模塊10將被描述為包括多個模塊或系統,但這些模塊或系統中的兩個或更多個還可以被實現在一起作為單個模塊或系統。
計算模塊10包括處理器子系統13、雙數據速率(ddr)同步動態隨機存取存儲器(dram)模塊16、以及硬件存儲器復制(hwmemcopy)引擎19。
處理器子系統13包括第一計算核心21,其具有第一高速緩存存儲器24;第二計算核心26,其具有第二高速緩存存儲器28;以及輸入輸出控制端口(iocu)模塊30。在其它實施例中,可以提供僅一個這樣的核心或多于兩個核心。核心可以實現于單個處理器(例如,cpu或gpu)中,但也可以設置在不同處理器中。
hwmemcopy引擎19包括地址轉換模塊32和經緩存的存取模塊34,以及存儲器輸入/輸出(i/o)模塊37、以及命令寄存器40、以及結果寄存器43。
存儲器i/o模塊37連接到互連模塊46,該互連模塊連接到iocu模塊30的端口48以及ddrdram模塊16的ddr端口51。
命令寄存器40連接到計算核心21和26。
結果寄存器43連接到讓步管理器(yieldmanager)模塊52,該讓步管理器模塊繼而連接到計算核心21和26。
下文描述了使用hwmemcopy引擎19的方法。
軟件驅動程序寫入hwmemcopy引擎19的地址轉換模塊32的寄存器,用于配置通過hwmemcopy引擎19進行的將虛擬存儲器地址到物理存儲器地址的轉換。替代于軟件驅動程序(在例如核心21、26的一個或兩個上運行的),在其它實施例中另一實體(例如,硬件模塊)也可以執行對應的功能。
軟件驅動器還配置在hwmemcopy引擎19中的高速緩存存儲器存取變換參數,以使得hwmemcopy引擎19能夠執行高速緩存存儲器i/o操作。
當存儲器復制操作被發起時,軟件驅動程序向hwmemcopy引擎19的命令寄存器40提供源緩沖存儲器地址、目的地緩沖存儲器地址。軟件驅動程序還向命令寄存器40提供關于源地址轉換的旗標數據(flagdata)、關于目的地地址轉換的旗標數據、關于高速緩存源i/o緩沖存儲器的旗標數據、和/或關于高速緩存目的地i/o緩沖存儲器的旗標數據。
hwmemcopy引擎19的地址轉換模塊32接下來在需要時執行對源主存儲器地址和目的地主存儲器地址的轉換。
地址轉換模塊32還可以在需要時也執行對源高速緩存存儲器地址和目的地高速緩存存儲器地址的轉換。
hwmemcopy引擎19接下來利用將dma讀取信道耦合到dma寫入信道的存儲器i/o模塊37從源緩沖存儲器讀取數據并將對應的數據寫入到目的地緩沖存儲器。
存儲器i/o模塊37的dma-r引擎55隨后可以將物理源存儲器地址和字節每突發(bytesperburst)數據發送到互連模塊46,以讀取源緩沖存儲器。
互連模塊46基于地址的地址范圍,例如,基于地址是屬于ddr存儲器(其可以是主存儲器的一個例子)的地址范圍還是屬于另一存儲器(例如,高速緩存存儲器)的或一般的處理器子系統的地址范圍,來決定是向ddr端口51還是向iocu端口48提出請求。
如果互連模塊46將地址引導到iocu端口48,則地址已被調整為反映其物理存儲器地址。
如果接收到的地址不在高速緩存存儲器24和/或28內,則高速緩存存儲器子系統接下來從ddr端口51讀取數據。
由dma-r引擎信道讀取的該數據被傳遞給dma-w引擎信道,其將源地址和字節每突發轉移到互連模塊46,以便將數據寫入到源緩沖存儲器。
互連模塊46隨后基于目的地存儲器地址的地址范圍來決定是將該數據呈現給ddr端口51還是iocu端口48。
如果互連模塊46將存儲器地址轉移到iocu端口48,則存儲器地址被調整為反映目的地存儲器的物理存儲器地址。
高速緩存存儲器子系統隨后經由ddr端口51將期望的數據寫入,以維持高速緩存一致性。在高速緩存存儲器24和28中的一些數據可能不一致,并且不需要被寫入到ddr端口51以改善性能。另外,在一級(l1)數據高速緩存中的高速緩存數據可以被適當地替換。
一旦一個dma操作的所有突發段(burstsegment)都已完成,則hwmemcopy引擎19就將關于所請求的存儲器復制(memcpy)操作的完成的中斷信號發布到各個發出請求的cpu核心21或26。
該存儲器復制方式具有的優點是沒有過分占用(hog)cpu時間。hwmemcopy引擎19尤其改善聯網吞吐量并最大化嵌入式cpu的應用性能。
這不同于使用存儲器復制(也稱作memcpy函數)的多種軟件系統,其顯著地過分占用了cpu時間,因為cpu必須運行各個軟件。使用這樣的軟件方法的系統的例子是諸如路由器、網關以及網絡附接存儲(nas)設備等的軟件系統。在實施例中,在這樣的系統中可以使用上述技術而不是傳統軟件方法。
雖然上述說明包含了許多特異性,但是這不應該被解釋為限制實施例的范圍,而只是提供更詳細的例示。
上述一些實施例的優點不應該被解釋為限制實施例的范圍,而僅應被解釋為在將所描述的實施例投入實踐時的可能的實現方式。其它實施例可能不具有如所述的這種優點。因此,本申請的范圍應該由權利要求及其等同物來確定,而不是由所給出的例子來確定。