TWI391826B - 在包含直接記憶體存取(dma)裝置之多處理器系統中產生記憶體障礙的方法、設備和電腦程式產品 - Google Patents
在包含直接記憶體存取(dma)裝置之多處理器系統中產生記憶體障礙的方法、設備和電腦程式產品 Download PDFInfo
- Publication number
- TWI391826B TWI391826B TW094124752A TW94124752A TWI391826B TW I391826 B TWI391826 B TW I391826B TW 094124752 A TW094124752 A TW 094124752A TW 94124752 A TW94124752 A TW 94124752A TW I391826 B TWI391826 B TW I391826B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- memory
- dma
- barrier
- bus operation
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Cosmetics (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
Description
本發明係有關直接記憶體存取(DMA)控制,尤其,係有關使用DMA機制來提供非對稱異質型多處理器環境中的記憶體障礙基元。
在習知的多處理器(MP)系統中,多個處理器具有到一共同分享之記憶體的存取。為了改善這些系統的性能,用於儲存器(storage)存取之排序的儲存器模型(model)係弱性一致的,弱性一致係指由處理器所實施之存取的順序、對處理器匯流排實施這些存取的排序、針對另一處理器或機構所實施之存取的順序、及在儲存器中所實施之這些存取的順序可以是都不相同的。
弱性一致儲存器模型將確保對為兩個或兩個以上之處理器及/或機構所共享之儲存器之存取排序的責任加諸於軟體程式上。在習知的對稱多處理器(SMP)中,幾個機構被設置而讓軟體程式能夠強制執行到共有之記憶體的儲存器存取之排序。舉例來說,在PowerPC上,多個記憶體障礙指令被提供,例如,”重量級SYNC”(有時候被稱為“重量級SYNC”),“輕量級SYNC”,及“EIEIO”(I/O之強制按順序(In-order)執行)。通常,SYNC指令會產生記憶體障礙,也就是說,在預定的處理器上,在程式序列中,在SYNC指令之前的任何載入或儲存指令相對於所有其他的處理器及機構,必須在SYNC指令能夠被執行後的任何指令之前完成。
輕量級SYNC產生提供相同的排序功能做為SYNC指令之記憶體障礙,除了由在輕量級SYNC之後的指令所導致之載入可以被實施於由在輕量級SYNC之前的指令所導致的儲存之前,並且該排序並不應用於到I/O記憶體(記憶體-映射的I/O)的存取以外。EIEIO指令產生提供相同的排序功能做為SYNC指令之記憶體障礙,除了排序應用於到I/O記憶體的存取以外。EIEIO也編排儲存的順序。
在習知的MP系統中,記憶體障礙指令的執行被限定於緊密耦接的處理器,其將額外的工作量放在控制處理器(亦即,處理單元(PUs))上,以管理異質型MP系統內之其他非對稱處理器及/或裝置。在一些情況中,因為不能夠控制儲存器排序,所以此限定也能夠限制非對稱處理器的能力,以管理系統資源。
因此,會有提供記憶體障礙指令之方法及/或系統的需求,其強調至少一部分和習知的系統及方法相關聯之問題和缺點。
本發明提供一種在直接記憶體存取(DMA)裝置中產生記憶體障礙的方法,記憶體障礙命令被接收,並且記憶體命令被接收,根據記憶體障礙命令來執行記憶體命令,根據記憶體障礙命令來啟動匯流排操作,根據匯流排操作來接收匯流排操作確認,根據匯流排操作確認來執行記憶體障礙命令。
為了更完全地了解本發明及其優點,現在參考配合伴隨圖形所做出之下面的說明。在圖形中:
在下面的討論中,提出許多特定的詳細內容以供對本發明的徹底了解。但是,習於此技藝者將可領會到本發明可以在沒有這些特定之詳細內容的情況下被實行。在其他的例子中,眾所周知的元件已經以示意或方塊圖的方式來予以舉例說明,以便不使對本發明之了解的模糊。除此之外,大部分有關網路通訊、電磁發訊技術等等的詳細內容已經被省略,因為這樣的詳細內容對於獲得對本發明的完全了解來說被認為是不需要的,並且被認為是在習於此技藝者的了解範圍之內。
進一步注意到,除非有指示,否則在此所敘述的所有功能可以用硬體、或軟體、或其一些組合來予以實施。但是,在較佳實施例中,除非有指示,否則該等功能係依據碼,例如,電腦程式碼、軟體、及/或被編碼來實施如此之功能的積體電路,而藉由處理器(例如,電腦)或電子資料處理器來予以實施的。
參照圖形中的圖1,參考數字100一般表示具有DMA控制器之系統。系統100包括DMA控制器110、處理單元(PU)130、區域記憶體132、記憶體120、及多處理器(MP)相干匯流排190,DMA控制器110另包括DMA命令佇列140、標籤佇列150、展開及翻譯邏輯160、輸出的資料緩衝器170、及輸入的資料緩衝器180。
在DMA控制器110之系統100中,命令被發出與執行。具有區域記憶體132之PU 130發出命令至DMA命令佇列140,PU 130為任何類型之處理器,包含,舉例來說,主要的PU(MPU)、合作性的PU(SPU)、或任何其他適合的處理器。區域記憶體132可以是各式各樣的記憶體類型,包含(但非限定於)快取記憶體。送到DMA命令佇列140的命令被加標籤,並且用於個別命令之標籤在標籤佇列150中被追踪,標籤對命令來說是獨特的,或者對於一定群組的命令來說是特定的,因此產生標籤群組。從DMA命令佇列140,寫和讀命令被發出到各種組件(未顯示出),資料轉移透過輸出的資料緩衝器170及輸入的資料緩衝器180而發生。許多其他的步驟能夠被併入命令的執行中,例如,舉例來說,解碼。
在習知系統中,DMA命令佇列(例如,DMA命令佇列140)中的命令在嚴格的排序方案下按照到達的順序被執行。但是,DMA控制器110被組構來使用弱的排序(弱性一致)方案,以便讓DMA命令佇列140中的命令能夠以各種的順序執行。特別是,DMA控制器110被組構來使用一序列的嵌入式(embedded)旗標,嵌入式旗標用作各命令的依據,並且在命令的依序執行方面給予幫助,嵌入式旗標也被使用來確保高優先權命令被執行於高優先權命令之前。
特別是,有兩種能夠被嵌入於命令(“障礙”及“圍籬”)的旗標,兩種旗標僅影響在同一標籤群組中的命令。通常,嵌入式圍籬旗標將不會允許命令執行,直到所有在同一標籤群組之內,並且在具有嵌入式圍籬旗標的命令之前所發出的命令被完成為止。也就是說,圍籬旗標需要所有在同一標籤群組之內,在具有嵌入式圍籬的命令之前所發出的命令在具有圍籬旗標之命令的執行之前先被完成,圍籬旗標並不會影響佇列中後續的命令。因此,在具有嵌入式圍籬旗標的命令之後所發出的命令能夠在具有圍籬的命令之前先執行。
障礙旗標影響所有在同一標籤群組內之先前及後續的命令。通常,障礙旗標將不會讓具有障礙旗標的命令或者任何在同一標籤群組內之後續的命令能夠被執行於每一個在同一標籤群組之內,在具有障礙旗標的命令之前所發出的命令的執行之前。舉例來說,在同一標籤群組之內,並且在具有障礙旗標的命令之後所發出的命令不能夠執行於具有障礙旗標的命令之前。典型上,當所有在同一標籤群組之內,在具有障礙旗標的命令之前所發出的命令被完成時,具有障礙旗標的命令以及在同一標籤群組內之後續的命令才能夠被執行。
PU 130也被組構來發出障礙命令代替嵌入式圍籬或障礙旗標。不管標籤群組為何,障礙命令對佇列中所有的命令操作。障礙命令防止所有後續的命令被執行,直到所有先前所發出的命令都被完成為止。因此,所有在障礙命令之前所發出的命令被完成於佇列中任何後續的命令的執行之前。典型上,當所有在障礙命令之前所發出的命令被完成時,後續的命令才能夠被執行。
DMA控制器110也被組構來接收及執行記憶體障礙命令,針對系統內之一或多個其他處理器及/或裝置,記憶體障礙命令提供在編排MP相干匯流排上之記憶體事務處理(transactions)順序上的控制。在所例舉之實施例中,DMA控制器110被組構來接收直接記憶體存取SYNC(dmasync)及直接記憶體存取EIEIO(dmaeieio)命令。習於此技藝者將會了解到,DMA控制器110可以被組構來接收其他直接記憶體存取記憶體障礙命令,其包含,舉例來說,直接記憶體存取輕量級SYNC(dmalwsync)命令。
通常,dmasync命令提供針對系統內之所有的處理器及/或機構,用來確保先前DMA命令之功效被完成的機制。通常,dmaeieio命令提供針對系統內之所有的處理器及/或機構,用來編排先前匯流排操作之順序的機制。Dmasync命令也提供用來編排匯流排操作之順序的機制,但是通常在和dmaeieio命令降低性能速率時才這麼做。典型上,dmasync和dmaeieio命令被組構來和命令障礙一起操作。在所例舉之實施例中,dmasync和dmaeieio命令包含隱含之標籤-特定的障礙。習於此技藝者將會了解到,DMA控制器110可以被組構來接收呈其他形式之其他直接記憶體存取記憶體障礙命令,其包含,舉例來說,具有隱含之圍籬的dmasync命令和具有隱含之圍籬的dmaeieio命令。
更特別的是,dmasync命令提供保證所有先前所發出之DMA記憶體寫入將會針對系統中另一處理器而被實施之軟體程式的機制。dmasync命令被使用於當需要強的排序之時,並且為DMA存取提供相同的排序,就像眾所周知之PowerPCSYNC指令為處理器載入及儲存做的一樣。特別是,由DMA Get命令所產生之存取被認為是載入,並且由DMA Put命令所產生之存取被認為是用於排序的儲存。為了保證所有先前所發出之DMA Put命令(亦即,記憶體寫入)將被實施,障礙命令在dmasync命令之前。在所例舉實施例中,dmasync命令被加標籤,並且包含隱含之標籤-特定的障礙。在另一替換之實施例中,圍籬命令在dmasync命令之前。
dmaeieio命令提供編排到未被標示為Write-Through Required或Caching Inhibited之相干儲存器的DMA記憶體寫入順序之軟體程式的機制。dmaeieio命令也提供編排到為Caching Inhibited及Guarded兩者之儲存器的DMA記憶體讀取和寫入,以及到標示為Write-Through Required之記憶體的儲存順序之軟體程式的機制。dmaeieio命令被使用於當僅所述之特定類型的存取需要排序時,dmaeieio命令為DMA存取提供相同的排序,就像眾所周知之PowerPCEIEIO指令為處理器載入及儲存做的一樣。特別是,由DMA Get命令所產生之存取被認為是載入,並且由DMA Put命令所產生之存取被認為是用於排序的儲存。為了保證所有先前所發出之DMA Put命令將被實施,障礙命令在dmaeieio命令之前。在所例舉之實施例中,dmaeieio命令被附以標籤,並且包含隱含之標籤-特定的障礙。在替換實施例中,圍籬命令在dmaeieio命令之前。
DMA控制器110,經由展開及翻譯邏輯160,將由DMA命令(及其相關參數)所描述之DMA操作展開成一或多個較小的匯流排事務處理,直到滿足全轉移長度為止。在弱性一致記憶體模型之內,由展開及翻譯邏輯160所產生之較小的匯流排事務處理可以藉由系統內之MP相干匯流排190以及任何其他的處理器而不按順序地被處理,而較小的匯流排事務處理包含來自其他命令之較小的匯流排事務處理。況且,DMA命令能夠按照不同於出現在DMA命令佇列140中的順序而被完成,以供改善性能。就一切的情況而論,好像是軟體之所有的DMA命令開始按照和出現在DMA命令佇列140中相同的順序。
為了DMA系統100的操作,有一系列必需的連接。PU 130係經由第一通頻通道(未顯示出)而被耦接至區域記憶體132,PU 130係經由第二通頻通道101而被耦接至DMA命令佇列140,區域記憶體132係經由第三通頻通道112而被耦接至記憶體120,記憶體120係經由第四通頻通道102而被耦接至輸出的資料緩衝器170,記憶體120係經由第五通頻通道103而被耦接至輸入的資料緩衝器180。DMA命令佇列140係經由第六通頻通道104及經由第七通頻通道105而被耦接至展開及翻譯邏輯160,標籤佇列150係經由第八通頻通道106而被耦接至展開及翻譯邏輯160,輸出的資料緩衝器170係經由第九通頻通道107而被耦接至MP相干匯流排190,輸入的資料緩衝器180係經由第十通頻通道108而被耦接至MP相干匯流排190,展開及翻譯邏輯160係經由第十一通頻通道109而被耦接至MP相干匯流排190。
參照圖形中的圖2,參考數字200一般表示MP系統。MP系統200包括一分享記憶體210、區域記憶體212、第一PU 220、第一快取記憶體222、第一DMA控制器224、第二DMA控制器226、第二PU 228、及第二快取記憶體230。在所例舉之實施例中,第一快取記憶體222及第二快取記憶體230為系統快取記憶體、係眾所周知的、並且操作為用於其個別處理器的外部記憶體介面。
MP系統200之多個處理器獨立地操作,或者連同來自各種記憶體裝置之讀及/或寫資料一起操作。第一PU 220被組構來發出讀、寫、dmasync、及dmaeieio命令至第一DMA控制器224,第二PU 228被組構來發出讀、寫、dmasync、及dmaeieio命令至第二DMA控制器226,第一DMA控制器224和第二DMA控制器226被組構來從區域記憶體212和分享記憶體210讀取及寫入資料。在所例舉之實施例中,各DMA控制器具有單一的PU。
在操作上,第一DMA控制器224接收來自第一PU 220之命令,以移動資料於分享記憶體210與區域記憶體212之間。同樣地,第二DMA控制器226接收來自第二PU 228之命令,以移動資料於分享記憶體210與區域記憶體212之間。因為DMA命令之資料轉移方向總是參考自PU的觀點,所以將資料從分享記憶體210轉移入區域記憶體212之命令被當作是GET命令,而將資料從區域記憶體212轉移入分享記憶體210之命令被當作是PUT命令,供應有DMA命令之參數提供和資料轉移有關之額外資訊,例如,舉例來說,資料轉移大小、標籤、及定址資訊。
當第一DMA控制器224遭遇dmasync命令時,第一DMA控制器224完成所有具有和dmasync命令相同的標籤,並且在dmasync命令之前出現在DMA命令佇列中命令。明確地說,用於所有具有和dmasync命令相同的標籤之PUT命令的Write資料必須被轉移到多處理器相干匯流排,並且通過協定中任何能夠導致再試事件之點,用於所有具有和dmasync命令相同的標籤之GET命令的Read資料在區域記憶體212中必須是可見的。
一旦所有具有和dmasync相同的標籤之先前的命令都被完成,DMA控制器224即啟動sync匯流排事務處理,sync匯流排事務處理用作系統內之其他處理器及/或機構的障礙點,其他處理器及/或機構必須在確認sync匯流排事務處理之前完成由發出dmasync之處理器所實施的所有操作。DMA控制器224僅能夠在系統內之所有的處理器及/或機構已經確認sync匯流排事務處理之後完成dmasync命令。因此,dmasync命令確保所有具有和dmasync相同的標籤之DMA命令被完成,並且相對於在系統內之所有的處理器及/或機構係可見的。第二DMA控制器226以和第一DMA控制器224相同的方式處理dmasync命令。
當第一DMA控制器224遭遇dmaeieio命令時,第一DMA控制器224完成所有具有和dmaeieio命令相同的標籤,並且在dmaeieio命令之前出現在DMA命令佇列中命令。明確地說,用於所有具有和dmaeieio命令相同的標籤之PUT命令的Write資料必須被轉移到多處理器相干匯流排,並且通過協定中任何能夠導致再試事件之點,用於所有具有和dmaeieio命令相同的標籤之GET命令的Read資料在區域記憶體212中必須是可見的。
一旦所有具有和dmaeieio相同的標籤之先前的命令都被完成,DMA控制器224即啟動eieio匯流排transaction,eieio匯流排事務處理用作系統內之其他處理器及/或機構的障礙點,以編排特定類型之存取,亦即,到未被標示為Write-Through Required或Caching Inhibited之相干儲存器的DMA記憶體寫入順序,以及到為Caching Inhibited及Guarded兩者之儲存器的DMA記憶體讀取和寫入順序。其他處理器及/或機構等待以確認eieio匯流排事務處理,以便確保所有先前的匯流排事務處理之排序。DMA控制器224僅能夠在系統內之所有的處理器及/或機構已經確認eieio匯流排事務處理之後完成dmaeieio命令。因此,dmaeieio命令允許藉由強制執行排序來提高系統性能,代替DMA操作之可見性。第二DMA控制器226以和第一DMA控制器224相同的方式處理dmaeieio命令。
Dmasync和dmaeieio命令讓非對稱處理器及/或裝置能夠分享習知MP系統之弱性一致儲存器模型,藉以改善他們的性能。況且,dmasync和dmaeieio命令讓PU能夠假設用來確保到儲存器之存取的排序之責任,藉以從控制處理器中去除責任,並且讓PU能夠以類似於控制處理器之方式來控制任何資源,而從控制處理器中僅有些許支援或者一點也沒有支援。除此之外,解除控制處理器之責任以確保到儲存器之存取的排序顯著地改善控制處理器和DMA控制器的使用及性能,並且藉由多個非對稱單元來幫助防止控制處理器變成超載(overburdened)。
因此,dmasync和dmaeieio命令將習知MP系統之弱性排列的儲存器模型概念延伸至使用利用DMA機制而對分享儲存器進行存取之處理器及/或裝置的非對稱異質型多處理器環境。況且,dmasync和dmaeieio命令可以被使用於其他非對稱裝置中,以及具有區域或專用記憶體之習知對稱MP系統中。dmasync和dmaeieio命令也可以被使用於DMA控制器中,其使資料從系統記憶體中的一個位置移動到系統記憶體中的另一個位置。
為了MP系統200的操作,有一系列必需的連接。PU 220係經由第十二通頻通道(未顯示出)而被耦接至第一快取記憶體222,PU 220係經由第十三通頻通道242而被耦接至第一DMA控制器224,第一快取記憶體222係經由第十四通頻通道240而被耦接至分享記憶體210,第一DMA控制器224係經由第十五通頻通道244而被耦接至分享記憶體210,第一DMA控制器224也經由第十六通頻通道248而被耦接至區域記憶體212。第二PU 228係經由第十七通頻通道(未顯示出)而被耦接至第二快取記憶體230,第二快取記憶體230係經由第十八通頻通道254而被耦接至區域記憶體212,第二PU 228也經由第十九通頻通道252而被耦接至第二DMA控制器226,第二DMA控制器226係經由第二十通頻通道250而被耦接至區域記憶體212,第二DMA控制器226也經由第二十一通頻通道246而被耦接至分享記憶體210。
參照圖形中的圖3,參考數字300一般表示描述dmasync命令之操作的流程圖。程序開始於步驟301,其中,DMA控制器接收經加標籤的dmasync命令,舉例來說,步驟301係藉由圖1之DMA控制器110來予以實施的,而DMA控制器110接收來自圖1之PU 130之經加標籤的dmasync命令。為了舉例說明起見,在圖3中所實施之所有的步驟係藉由圖1之DMA控制器110來予以實施的。將會了解到,圖3中所實施之步驟也可以藉由圖2之第一DMA控制器224及/或第二DMA控制器226來予以實施。
接著,在決定步驟305,DMA控制器在DMA命令佇列中搜尋具有和在步驟301中所接收到之經加標籤的dmasync命令(並且在步驟301中所接收到之經加標籤的dmasync命令之前所接收到的)相同的命令之DMA命令。如果有先前之相同標籤的DMA命令,則程序沿著是(YES)分支而繼續到步驟310。在步驟310,DMA控制器執行先前之相同標籤的DMA命令,並且程序回到步驟305。如果沒有先前之相同標籤的DMA命令,則程序沿著否(NO)分支而繼續到步驟315。
在步驟315,DMA控制器發出sync匯流排事務處理。接著,在決定步驟320,DMA控制器判定sync匯流排事務處理是否已經被系統內之任何的處理器或裝置所確認。如果沒有任何sync匯流排事務處理已經被確認,則程序沿著否(NO)分支而繼續到步驟325。在步驟325,DMA控制器等待。在一實施例中,DMA控制器藉由暫停操作一段預定的時間期間(例如,0.5微秒)來等待。在另一實施例中,DMA控制器藉由執行並不包含和經加標籤之dmasync命令相同的標籤之DMA命令來等待。然後,程序回到決定步驟320。
如果在決定步驟320,sync匯流排事務處理已經被接收到,則程序沿著是(YES)分支而繼續到決定步驟330。在決定步驟330,DMA控制器判定sync匯流排事務處理是否已經被系統內之所有的處理器或裝置所確認,如果DMA控制器判定sync匯流排事務處理尚未被系統內之所有的處理器或裝置所確認,則程序沿著否(NO)分支而繼續到步驟325。
如果在決定步驟325,DMA控制器判定sync匯流排事務處理已經被系統內之所有的處理器或裝置所確認,則程序沿著是(YES)分支而繼續到決定步驟335。在步驟335,DMA控制器完成dmasync命令,並且此程序結束,在dmasync之後的命令現在可以被執行。
參照圖形中的圖4,參考數字400一般表示描述dmaeieio命令之操作的流程圖。程序開始於步驟401,其中,DMA控制器接收經加標籤的dmaeieio命令,舉例來說,步驟401係藉由圖1之DMA控制器110來予以實施的,而DMA控制器110接收來自圖1之PU 130之經加標籤的dmaeieio命令。為了舉例說明起見,在圖4中所實施之所有的步驟係藉由圖1之DMA控制器110來予以實施的。將會了解到,圖4中所實施之步驟也可以藉由圖2之第一DMA控制器224及/或第二DMA控制器226來予以實施。
接著,在決定步驟405,DMA控制器在DMA命令佇列中搜尋具有和在步驟401中所接收到之經加標籤的dmaeieio命令(並且在步驟401中所接收到之經加標籤的dmaeieio命令之前所接收到的)相同的命令之DMA命令。如果有先前之相同標籤的DMA命令,則程序沿著是(YES)分支而繼續到步驟410。在步驟410,DMA控制器執行先前之相同標籤的DMA命令,並且程序回到步驟405。如果沒有先前之相同標籤的DMA命令,則程序沿著否(NO)分支而繼續到步驟415。
在步驟415,DMA控制器發出eieio匯流排事務處理。接著,在決定步驟420,DMA控制器判定eieio匯流排事務處理是否已經被系統內之任何的處理器或裝置所確認。如果沒有任何eieio匯流排事務處理已經被確認,則程序沿著否(NO)分支而繼續到步驟425。在步驟425,DMA控制器等待。在一實施例中,DMA控制器藉由暫停操作一段預定的時間期間(例如,0.5微秒)來等待。在另一實施例中,DMA控制器藉由執行並不包含和經加標籤之dmaeieio命令相同的標籤之DMA命令來等待。然後,程序回到決定步驟420。
如果在決定步驟420,eieio匯流排事務處理已經被接收到,則程序沿著是(YES)分支而繼續到決定步驟430。在決定步驟430,DMA控制器判定eieio匯流排事務處理是否已經被系統內之所有的處理器或裝置所確認,如果DMA控制器判定eieio匯流排事務處理尚未被系統內之所有的處理器或裝置所確認,則程序沿著否(NO)分支而繼續到步驟425。
如果在決定步驟425,DMA控制器判定eieio匯流排事務處理已經被系統內之所有的處理器或裝置所確認,則程序沿著是(YES)分支而繼續到決定步驟435。在步驟435,DMA控制器完成dmaeieio命令,並且此程序結束。
在僅兩個特定之記憶體障礙命令被敘述於本文中(dmasync和dmaeieio)的同時,習於此技藝者將會了解到,其他的記憶體障礙命令或不同的記憶體障礙命令形式也可以被定義。舉例來說,DMA控制器可以被組構來接收直接記憶體存取輕量級SYNC(dmalwsync)命令,或具有隱含之圍籬的dmaeieio命令。
況且,在參照PowerPC架構來敘述特定之記憶體障礙命令於本文中的同時,習於此技藝者將會了解到,其他的記憶體障礙命令可以參照其他的架構來做敘述。因此,DMA控制器可以被組構來接收提供和其他架構之記憶體障礙指令相同之用於排序的DMA存取之記憶體障礙命令。
此外,在以操作於非對稱異質型多處理器環境中之弱性排列記憶體模型的方式來敘述特定之記憶體障礙命令於本文中的同時,習於此技藝者將會了解到,記憶體障礙命令也可以被使用於其他類型之記憶體模型中,以及在對稱的MP環境中。
從上述的說明中將會進一步了解到,各種的修正及改變可以被做成於本發明之較佳實施例中,而沒有違離其真正的精神,此說明係僅意欲用來舉例說明,並且不應該以限制的觀點來予以建構,本發明之範疇應該僅藉由下面的申請專利範圍之語法來予以限定。
100...系統
101...第二通訊通道
102...第四通訊通道
103...第五通訊通道
104...第六通訊通道
105...第七通訊通道
106...第八通訊通道
107...第九通訊通道
108...第十通訊通道
109...第十一通訊通道
110...DMA控制器
112...第三通訊通道
120...記憶體
130...處理單元(PU)
132...區域記憶體
140...DMA命令佇列
150...標籤佇列
160...展開及翻譯邏輯
170...輸出的資料緩衝器
180...輸入的資料緩衝器
190...多處理器(MP)相干匯流排
200...MP系統
210...共享記憶體
212...區域記憶體
220...第一PU
222...第一快取記憶體
224...第一DMA控制器
226...第二DMA控制器
228...第二PU
230...第二快取記憶體
240...第十四通訊通道
242...第十三通訊通道
244...第十五通訊通道
246...第二十一通訊通道
248...第十六通訊通道
250...第二十通訊通道
252...第十九通訊通道
254...第十八通訊通道
圖1係描述具有DMA控制器之系統的方塊圖;圖2係描述多處理器(MP)系統的方塊圖;圖3係例舉直接記憶體存取sync(dmasync)命令之操作的流程圖;及圖4係例舉輸入/輸出之直接記憶體存取強制按順序執行(dmaeieio)命令之操作的流程圖。
100...系統
101...第二通訊通道
102...第四通訊通道
103...第五通訊通道
104...第六通訊通道
105...第七通訊通道
106...第八通訊通道
107...第九通訊通道
108...第十通訊通道
109...第十一通訊通道
110...DMA控制器
112...第三通訊通道
120...記憶體
130...處理單元(PU)
132...區域記憶體
140...DMA命令佇列
150...標籤佇列
160...展開及翻譯邏輯
170...輸出的資料緩衝器
180...輸入的資料緩衝器
190...多處理器(MP)相干匯流排
Claims (20)
- 一種在包含直接記憶體存取(DMA)裝置之多處理器系統中產生記憶體障礙的方法,包括:接收記憶體障礙命令,該記憶體障礙命令被組構成控制該多處理器系統及該DMA裝置;其中,該記憶體障礙命令包括直接記憶體存取同步(dmasync)命令或輸入/輸出之直接記憶體存取強制按順序執行(dmaeieio)命令的其中一者;接收記憶體命令;根據該記憶體障礙命令來執行該記憶體命令;根據該記憶體障礙命令來啟動用於該DMA裝置之匯流排操作;根據該匯流排操作來接收匯流排操作確認;以及根據該匯流排操作確認來執行該記憶體障礙命令。
- 如申請專利範圍第1項之方法,其中,該記憶體命令被執行於該記憶體障礙命令之前。
- 如申請專利範圍第1項之方法,其中,該記憶體命令被執行於該記憶體障礙命令之後。
- 如申請專利範圍第1項之方法,其中,該匯流排操作為同步匯流排事務處理。
- 如申請專利範圍第1項之方法,其中,該匯流排操作為輸入/輸出之強制按順序執行(eieio)匯流排事務處 理。
- 如申請專利範圍第1項之方法,其中,該記憶體障礙命令包括至少一記憶體命令障礙標籤,且該記憶體命令包括至少一記憶體命令標籤。
- 如申請專利範圍第6項之方法,其中,該記憶體命令係根據該記憶體命令障礙標籤及該記憶體命令標籤來予以執行的。
- 一種在包含直接記憶體存取(DMA)裝置之多處理器系統中產生記憶體障礙的設備,包括:第一通訊通道,被組構成接收記憶體命令及記憶體障礙命令,該記憶體障礙命令被組構成控制該多處理器系統及該DMA裝置;其中,該記憶體障礙命令包括直接記憶體存取同步(dmasync)命令或輸入/輸出之直接記憶體存取強制按順序執行(dmaeieio)命令的其中一者;展開邏輯,被耦接至該第一通訊通道,並且被組構成根據記憶體障礙命令而啟動用於該DMA裝置之匯流排操作;第二通訊通道,被耦接至該展開邏輯,並且被組構成傳送該匯流排操作,以及接收匯流排操作確認;直接記憶體存取(DMA)控制器,被耦接至該第一通訊通道、該第二通訊通道、及該展開邏輯,並且被組構成:執行記憶體命令; 根據該匯流排操作確認來執行記憶體障礙命令。
- 如申請專利範圍第8項之設備,其中,該匯流排操作為同步匯流排事務處理。
- 如申請專利範圍第8項之設備,其中,該匯流排操作為輸入/輸出之強制按順序執行(eieio)匯流排事務處理。
- 如申請專利範圍第8項之設備,其中,該記憶體命令包括至少一相關之記憶體命令標籤,且該記憶體障礙命令包括至少一相關之記憶體障礙命令標籤。
- 如申請專利範圍第11項之設備,其中,該DMA控制器被進一步組構成根據相關之記憶體命令標籤及相關之記憶體障礙命令標籤而執行記憶體命令。
- 如申請專利範圍第8項之設備,另包括被耦接至該第一通訊通道和該展開邏輯的直接記憶體存取(DMA)命令佇列,該DMA命令佇列被組構成按照順序地儲存記憶體命令及記憶體障礙命令。
- 如申請專利範圍第8項之設備,另包括多個資料緩衝器,其中,該多個資料緩衝器至少被組構成被耦接至至少一記憶體。
- 如申請專利範圍第14項之設備,其中,該多個資料緩衝器至少被組構成被耦接至該第二通訊通道。
- 一種在包含直接記憶體存取(DMA)裝置之多處理器系統中產生記憶體障礙的電腦程式產品,該電腦程式產品具有含電腦程式被具體化於其上之媒體,該電腦程式 包括:用以接收記憶體障礙命令之電腦程式碼,該記憶體障礙命令被組構成控制該多處理器系統及該DMA裝置;其中,該記憶體障礙命令包括直接記憶體存取同步(dmasync)命令或輸入/輸出之直接記憶體存取強制按順序執行(dmaeieio)命令的其中一者;用以接收記憶體命令之電腦程式碼;用以根據該記憶體障礙命令來執行該記憶體命令之電腦程式碼;用以根據該記憶體障礙命令來啟動用於該DMA裝置之匯流排操作之電腦程式碼;用以根據該匯流排操作來接收匯流排操作確認之電腦程式碼;以及用以根據該匯流排操作確認來執行該記憶體障礙命令之電腦程式碼。
- 如申請專利範圍第16項之電腦程式產品,其中,該匯流排操作為同步匯流排事務處理。
- 如申請專利範圍第16項之電腦程式產品,其中,該匯流排操作為輸入/輸出之強制按順序執行(eieio)匯流排事務處理。
- 如申請專利範圍第16項之電腦程式產品,其中,該記憶體障礙命令包括至少一記憶體障礙標籤,且該記憶體命令包括至少一記憶體命令標籤。
- 如申請專利範圍第19項之電腦程式產品,另包括 用以根據該記憶體障礙標籤及該記憶體命令標籤來執行該記憶體命令之電腦程式碼。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/902,474 US7725618B2 (en) | 2004-07-29 | 2004-07-29 | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200617685A TW200617685A (en) | 2006-06-01 |
TWI391826B true TWI391826B (zh) | 2013-04-01 |
Family
ID=35733704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094124752A TWI391826B (zh) | 2004-07-29 | 2005-07-21 | 在包含直接記憶體存取(dma)裝置之多處理器系統中產生記憶體障礙的方法、設備和電腦程式產品 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7725618B2 (zh) |
EP (1) | EP1782220B1 (zh) |
JP (1) | JP4678623B2 (zh) |
KR (1) | KR100866714B1 (zh) |
CN (1) | CN101052954B (zh) |
AT (1) | ATE403905T1 (zh) |
DE (1) | DE602005008747D1 (zh) |
TW (1) | TWI391826B (zh) |
WO (1) | WO2006040692A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200688B2 (en) | 2003-05-29 | 2007-04-03 | International Business Machines Corporation | System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command |
US7243200B2 (en) | 2004-07-15 | 2007-07-10 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
US7725618B2 (en) | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
DE102004046438B4 (de) * | 2004-09-24 | 2006-07-06 | Infineon Technologies Ag | Vorrichtung zum Steuern des Zugriffs von Verarbeitungseinrichtungen auf Speicher in einem eingebetteten System |
US9026744B2 (en) * | 2005-03-23 | 2015-05-05 | Qualcomm Incorporated | Enforcing strongly-ordered requests in a weakly-ordered processing |
US7716387B2 (en) * | 2005-07-14 | 2010-05-11 | Canon Kabushiki Kaisha | Memory control apparatus and method |
GB2433333B (en) * | 2005-12-13 | 2011-07-13 | Advanced Risc Mach Ltd | Distributed direct memory access provision within a data processing system |
JP4446968B2 (ja) * | 2006-02-22 | 2010-04-07 | シャープ株式会社 | データ処理装置 |
US7917676B2 (en) * | 2006-03-10 | 2011-03-29 | Qualcomm, Incorporated | Efficient execution of memory barrier bus commands with order constrained memory accesses |
US7454580B2 (en) * | 2006-04-25 | 2008-11-18 | International Business Machines Corporation | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations |
US7610458B2 (en) * | 2006-04-25 | 2009-10-27 | International Business Machines Corporation | Data processing system, processor and method of data processing that support memory access according to diverse memory models |
US7783817B2 (en) * | 2006-08-31 | 2010-08-24 | Qualcomm Incorporated | Method and apparatus for conditional broadcast of barrier operations |
US8015380B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Launching multiple concurrent memory moves via a fully asynchronoous memory mover |
US8245004B2 (en) * | 2008-02-01 | 2012-08-14 | International Business Machines Corporation | Mechanisms for communicating with an asynchronous memory mover to perform AMM operations |
US8356151B2 (en) * | 2008-02-01 | 2013-01-15 | International Business Machines Corporation | Reporting of partially performed memory move |
US8327101B2 (en) * | 2008-02-01 | 2012-12-04 | International Business Machines Corporation | Cache management during asynchronous memory move operations |
US8275963B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Asynchronous memory move across physical nodes with dual-sided communication |
US8095758B2 (en) * | 2008-02-01 | 2012-01-10 | International Business Machines Corporation | Fully asynchronous memory mover |
US7991981B2 (en) * | 2008-02-01 | 2011-08-02 | International Business Machines Corporation | Completion of asynchronous memory move in the presence of a barrier operation |
US7941627B2 (en) * | 2008-02-01 | 2011-05-10 | International Business Machines Corporation | Specialized memory move barrier operations |
JP5187038B2 (ja) * | 2008-07-15 | 2013-04-24 | セイコーエプソン株式会社 | マルチプロセッサシステム及びそれを搭載した流体吐出装置 |
GB2469299B (en) * | 2009-04-07 | 2011-02-16 | Imagination Tech Ltd | Ensuring consistency between a data cache and a main memory |
US8352682B2 (en) | 2009-05-26 | 2013-01-08 | Qualcomm Incorporated | Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system |
US8997103B2 (en) * | 2009-09-25 | 2015-03-31 | Nvidia Corporation | N-way memory barrier operation coalescing |
US8832403B2 (en) * | 2009-11-13 | 2014-09-09 | International Business Machines Corporation | Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses |
WO2012036954A2 (en) * | 2010-09-15 | 2012-03-22 | Rambus Inc. | Scheduling amongst multiple processors |
US20150033234A1 (en) * | 2013-07-23 | 2015-01-29 | Qualcomm Incorporated | Providing queue barriers when unsupported by an i/o protocol or target device |
CN110795150A (zh) * | 2015-07-21 | 2020-02-14 | 安培计算有限责任公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
KR101892357B1 (ko) * | 2016-10-11 | 2018-08-27 | 한국과학기술원 | 실리콘 반도체를 기반으로 하는 광 빔 포밍 네트워크 칩 |
KR102262209B1 (ko) * | 2018-02-09 | 2021-06-09 | 한양대학교 산학협력단 | 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치 |
US11803380B2 (en) * | 2019-10-29 | 2023-10-31 | Nvidia Corporation | High performance synchronization mechanisms for coordinating operations on a computer system |
DE102020127704A1 (de) | 2019-10-29 | 2021-04-29 | Nvidia Corporation | Techniken zum effizienten transferieren von daten an einem prozessor |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW320701B (zh) * | 1996-05-16 | 1997-11-21 | Resilience Corp | |
US5911051A (en) * | 1996-03-29 | 1999-06-08 | Intel Corporation | High-throughput interconnect allowing bus transactions based on partial access requests |
US6347349B1 (en) * | 1998-12-28 | 2002-02-12 | International Business Machines Corp. | System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction |
US6609192B1 (en) * | 2000-06-06 | 2003-08-19 | International Business Machines Corporation | System and method for asynchronously overlapping storage barrier operations with old and new storage operations |
US6658520B1 (en) * | 2000-09-26 | 2003-12-02 | Intel Corporation | Method and system for keeping two independent busses coherent following a direct memory access |
US20040088499A1 (en) * | 1999-02-26 | 2004-05-06 | Woodward James Alan | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment |
US6738836B1 (en) * | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US6209073B1 (en) * | 1998-04-27 | 2001-03-27 | International Business Machines Corp. | System and method for interlocking barrier operations in load and store queues |
US6205494B1 (en) * | 1998-12-18 | 2001-03-20 | Western Digital Corporation | Controller with automatic generation of linked list of data transfer descriptors for sequential commands, with linked list being used for execution of sequential data transfers |
US6947049B2 (en) * | 2001-06-01 | 2005-09-20 | Nvidia Corporation | Method and system for synchronizing updates of vertex data with a graphics processor that is fetching vertex data |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US7725618B2 (en) | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
-
2004
- 2004-07-29 US US10/902,474 patent/US7725618B2/en not_active Expired - Fee Related
-
2005
- 2005-07-18 DE DE602005008747T patent/DE602005008747D1/de active Active
- 2005-07-18 EP EP05823124A patent/EP1782220B1/en active Active
- 2005-07-18 JP JP2007523179A patent/JP4678623B2/ja active Active
- 2005-07-18 AT AT05823124T patent/ATE403905T1/de not_active IP Right Cessation
- 2005-07-18 WO PCT/IB2005/003974 patent/WO2006040692A1/en active IP Right Grant
- 2005-07-18 CN CN2005800240466A patent/CN101052954B/zh active Active
- 2005-07-18 KR KR1020077001629A patent/KR100866714B1/ko not_active IP Right Cessation
- 2005-07-21 TW TW094124752A patent/TWI391826B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5911051A (en) * | 1996-03-29 | 1999-06-08 | Intel Corporation | High-throughput interconnect allowing bus transactions based on partial access requests |
TW320701B (zh) * | 1996-05-16 | 1997-11-21 | Resilience Corp | |
US6347349B1 (en) * | 1998-12-28 | 2002-02-12 | International Business Machines Corp. | System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction |
US20040088499A1 (en) * | 1999-02-26 | 2004-05-06 | Woodward James Alan | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment |
US6609192B1 (en) * | 2000-06-06 | 2003-08-19 | International Business Machines Corporation | System and method for asynchronously overlapping storage barrier operations with old and new storage operations |
US6738836B1 (en) * | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US6658520B1 (en) * | 2000-09-26 | 2003-12-02 | Intel Corporation | Method and system for keeping two independent busses coherent following a direct memory access |
Also Published As
Publication number | Publication date |
---|---|
JP4678623B2 (ja) | 2011-04-27 |
DE602005008747D1 (de) | 2008-09-18 |
WO2006040692A1 (en) | 2006-04-20 |
KR20070038518A (ko) | 2007-04-10 |
EP1782220A1 (en) | 2007-05-09 |
US7725618B2 (en) | 2010-05-25 |
KR100866714B1 (ko) | 2008-11-03 |
CN101052954A (zh) | 2007-10-10 |
US20060026309A1 (en) | 2006-02-02 |
TW200617685A (en) | 2006-06-01 |
JP2008508586A (ja) | 2008-03-21 |
EP1782220B1 (en) | 2008-08-06 |
CN101052954B (zh) | 2011-10-19 |
ATE403905T1 (de) | 2008-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI391826B (zh) | 在包含直接記憶體存取(dma)裝置之多處理器系統中產生記憶體障礙的方法、設備和電腦程式產品 | |
TWI294573B (en) | Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions | |
JP5787629B2 (ja) | マシンビジョン用マルチプロセッサシステムオンチップ | |
US8675006B2 (en) | Apparatus and method for communicating between a central processing unit and a graphics processing unit | |
CN106991073B (zh) | 用于向量运算的数据读写调度器及保留站 | |
US20160140044A1 (en) | Systems and methods for non-blocking implementation of cache flush instructions | |
JP5209933B2 (ja) | データ処理装置 | |
KR102683728B1 (ko) | 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 | |
CN106844017A (zh) | 用于网站服务器处理事件的方法和设备 | |
US20150286569A1 (en) | Techniques for implementing barriers to efficiently support cumulativity in a weakly-ordered memory system | |
JP2006209448A (ja) | ダイレクトメモリアクセス制御方法、ダイレクトメモリアクセス制御装置、情報処理システム、プログラム | |
US20170315922A1 (en) | Implementing barriers to efficiently support cumulativity in a weakly-ordered memory system | |
US10318432B2 (en) | Implementing barriers to efficiently support cumulativity in a weakly ordered memory system | |
WO2017088456A1 (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
US9286129B2 (en) | Termination of requests in a distributed coprocessor system | |
US10990453B2 (en) | Improving latency by performing early synchronization operations in between sets of program operations of a thread | |
US20140331021A1 (en) | Memory control apparatus and method | |
US5715425A (en) | Apparatus and method for prefetching data into an external cache | |
JP2002287957A (ja) | キャッシュのような構造を使用してcpu設計におけるオペランド・アクセス・ステージを高速化するための方法及び装置 | |
US7594080B2 (en) | Temporary storage of memory line while waiting for cache eviction | |
CN117194283A (zh) | 基于risc-v指令集的向量读写指令的处理方法 | |
KR20190031498A (ko) | 어드레스 생성 시간에서 로드 및 스토어 큐 할당 시스템 및 방법 | |
JPS6149250A (ja) | バツフア記憶制御方式 | |
JP2000250957A (ja) | 論理シミュレーション装置 | |
JPS62288949A (ja) | シリアライズ命令制御装置 |