專利名稱:具有多維行行走功能的dma控制器的系統(tǒng)和方法
技術(shù)領(lǐng)域:
一般而言,本發(fā)明涉及具有多維行行走(line-walking)功能的智能直接存儲器訪問(DMA)的系統(tǒng)和方法。具體來說,本發(fā)明涉及將智能DMA控制器應(yīng)用到計算機系統(tǒng)中以便智能DMA控制器能夠基于行描述獨立地從多維數(shù)組中檢索數(shù)據(jù)的系統(tǒng)和方法。
背景技術(shù):
計算機系統(tǒng)正在變得越來越復(fù)雜。計算機工業(yè)在個人計算機、個人數(shù)據(jù)助理(PDA)和游戲控制臺之類的電子元件中延續(xù)每十八個月綜合性能翻倍的長期趨勢。這一趨勢能夠延續(xù)的主要原因是因為半導(dǎo)體工業(yè)生產(chǎn)了其性能是前輩電路的性能的兩倍的集成電路。
當(dāng)前的體系結(jié)構(gòu)實現(xiàn)了從存儲器中檢索相連的地址空間范圍或從存儲器中檢索相連的地址空間的范圍的不同列表的DMA控制器。然后,將檢索到的數(shù)據(jù)加載到與支持處理器比較靠近的存儲位置,從而支持處理器可以使用較少的訪問周期來訪問數(shù)據(jù)(例如,高速緩存)。然而,一個難題是,此方法需要用戶指定將從中檢索數(shù)據(jù)的每一個范圍的準(zhǔn)確地址位置。
當(dāng)處理器需要從主存儲器(其地址是通過遍歷空間中的行而派生出來的)中的多維數(shù)組中檢索數(shù)據(jù)時,一個難題是,處理器的DMA控制器要求處理器提供關(guān)于要從哪里檢索數(shù)據(jù)的地址位置。
此外,計算機工業(yè)還通過開發(fā)通常包括主處理器和一個或多個支持處理器的多處理器體系結(jié)構(gòu)來提高性能。主處理器通常加載并執(zhí)行操作系統(tǒng),該操作系統(tǒng)調(diào)用應(yīng)用程序,反過來,應(yīng)用程序使用支持處理器卸載高度計算任務(wù)。支持處理器通常包括基本DMA控制器,該控制器從主存儲器讀取并向主存儲器中寫入,以便執(zhí)行支持處理器的分配的工作。然而,在多處理器環(huán)境中,一個難題是,支持處理器可能要求主處理器提供協(xié)助,以將數(shù)據(jù)從共享存儲器升級到L2高速緩存中,以便支持處理器的基本DMA控制器以其正確的順序檢索數(shù)據(jù)。
因此,所需要的是,為處理器提供其DMA控制器基于行描述檢索數(shù)據(jù)而不增大處理器負擔(dān)的能力的系統(tǒng)和方法。
發(fā)明內(nèi)容
已經(jīng)發(fā)現(xiàn),如前所述的難題通過在處理器中包括智能DMA控制器來加以解決,該控制器直接解釋行描述信息并獨立地從對應(yīng)于行描述信息的主存儲器中檢索數(shù)據(jù)。處理器包括智能DMA控制器,該控制器接收多維數(shù)組的存儲器位置和維數(shù),包括在多維數(shù)組的空間內(nèi)的行的描述(例如兩個數(shù)據(jù)點),以及處理器的本地存儲區(qū)域中的緩沖器地址。智能DMA控制器使用這些輸入來檢索對應(yīng)于行描述和多維數(shù)組的數(shù)據(jù),并將數(shù)據(jù)存儲在對應(yīng)于緩沖器地址的其本地存儲區(qū)域中。
在一個實施例中,在單處理器計算機系統(tǒng)中,處理器內(nèi)的軟件程序可以將行描述提供到智能DMA控制器。例如,處理器可以執(zhí)行terrain呈現(xiàn)任務(wù),其中terrain呈現(xiàn)任務(wù)包括行描述。在此示例中,terrain-呈現(xiàn)任務(wù)向DMA控制器提供行描述,該控制器從共享存儲器檢索數(shù)據(jù),并將數(shù)據(jù)存儲在支持處理器的本地存儲器中。在另一個實施例中,在多處理器計算機系統(tǒng)中,支持處理器可以從主處理器接收行描述,其中,支持處理器向其智能DMA控制器提供行描述。
智能DMA控制器訪問代表空間中的數(shù)據(jù)點的直線網(wǎng)格的多維數(shù)組,其存儲器位置包括對應(yīng)于空間中的每一個數(shù)據(jù)點的數(shù)據(jù)。智能DMA控制器從其對應(yīng)的數(shù)據(jù)點被從行描述生成的行所“訪問”的主存儲器中檢索數(shù)據(jù),并按照訪問的順序?qū)?shù)據(jù)點加載到本地存儲的指定的緩沖區(qū)中。在一個實施例中,每一個數(shù)據(jù)點都可以代表一個完整的方塊,立方體或超立方體。在此實施例中,如果行與方塊、立方體或超立方體的內(nèi)部交叉,則檢索數(shù)據(jù)點的對應(yīng)的數(shù)據(jù)。
或者,行描述可以包括行的主要和一個或多個次要軸,以及對應(yīng)的主要步驟和一個或多個次要步驟的大小。主要步驟是其單位向量利用行產(chǎn)生最大的絕對值點積的維度。例如,如果行沿著二維存儲器映象中的垂直方向的程度比水平方向的程度大,則行的主要步驟是沿著垂直軸,行的次要步驟是沿著水平軸。同樣,如果行沿著二維存儲器映象中的水平方向的程度比垂直方向的程度大,則行的主要步驟是沿著水平軸,行的次要步驟是沿著垂直軸。
對于每一個主要軸步驟,計算沿著每一個次要軸的對應(yīng)的位置,該位置通常是具有整數(shù)和分數(shù)的數(shù)字。所感興趣的存儲器位置是依賴于應(yīng)用程序的。例如,應(yīng)用程序可以在每一個主軸步驟中使用單個存儲器位置,這是通過次要軸的舍入到整數(shù)的值來索引的。在另一個示例中,應(yīng)用程序可以使用主軸交點的一側(cè)上的點或每一側(cè)上的若干個點。
在一個實施例中,對于行和主要軸交叉之間的每一個交叉點,規(guī)則可以指定,從中收集主要軸交叉的(n-1)維空間內(nèi)的數(shù)據(jù)的交點周圍的鄰近區(qū)域有多大。例如,智能DMA控制器可以收集一個點的最近的鄰居,該點的最近的四個鄰居,或該點的特定一側(cè)上的鄰居。
此外,智能DMA控制器還可以接收一個規(guī)則,如果行在多維數(shù)組的邊界外部行進,則該規(guī)則指定DMA控制器的行為。例如,規(guī)則可以指示智能DMA控制器1)一旦行到界限之外,就停止收集數(shù)據(jù),或2)持續(xù)從數(shù)組的界限外部的存儲器位置收集數(shù)據(jù)。
前述的內(nèi)容是一個概述,因此,只是詳細內(nèi)容的簡化形式;因此,那些精通本技術(shù)的人將理解,概述只是說明性的,而不以任何方式作出限制。如權(quán)利要求所定義的本發(fā)明的其他方面,本發(fā)明的功能,將在非限制性的詳細描述中,變得顯而易見。
通過參考附圖,那些精通本技術(shù)的人將會更好地理解本發(fā)明,本發(fā)明的目標(biāo)、特點和優(yōu)點將變得顯而易見。不同圖形中的相同的參考符號表示類似或相同的項目。
圖1是使用行描述從特定存儲器位置檢索數(shù)據(jù)的支持處理器的DMA控制器的圖表;圖2A是顯示基于其主要步驟位于垂直方向中的行收集的數(shù)據(jù)的圖表;圖2B是顯示基于其主要步驟位于水平方向中的行收集的數(shù)據(jù)的圖表;圖3是顯示在將行描述加載到DMA控制器中時采取的步驟的流程圖,其中,DMA控制器基于行描述從共享存儲器中檢索數(shù)據(jù);圖4是顯示DMA控制器從對應(yīng)于行描述的特定存儲器位置檢索數(shù)據(jù)采取的步驟的流程圖;圖5是顯示對應(yīng)于行的連續(xù)的存儲器位置數(shù)組范圍的圖表;圖6是顯示包括多個異構(gòu)型處理器的處理器元件體系結(jié)構(gòu)的圖表;圖7A說明了一個信息處理系統(tǒng),這是一個能夠執(zhí)行這里所描述的計算操作的計算機系統(tǒng)的簡化示例;以及圖7B是顯示了分成專用存儲器和非專用存儲器的本地存儲區(qū)域的圖表。
具體實施例方式
下面提供了本發(fā)明的示例的詳細描述,而不對本發(fā)明本身作出任何限制。相反,各種變化都在本發(fā)明的范圍內(nèi),本發(fā)明的范圍由說明書后面的權(quán)利要求書進行了定義。
圖1是使用行描述從特定存儲器位置檢索數(shù)據(jù)的支持處理器的DMA控制器的圖表。圖1所示的計算機系統(tǒng)包括主處理器(即,處理器A100)和諸如處理器B120之類的支持處理器。處理器B120包括可編程DMA控制器130,該控制器能夠接收描述了形狀或行的行描述,并基于行描述跨步穿過二維存儲器映象。反過來,DMA控制器向處理器B120提供數(shù)據(jù),因此,處理器B120不請求將L2高速緩存中的數(shù)據(jù)升級主處理器,以供處理器B120進行檢索。
處理器A100向處理器B120發(fā)送行描述110。行描述110描述了行,并可以包括DMA控制器130用來跨步穿過多維存儲器映象的主要步驟和一個或多個次要步驟。例如,行描述110可以包括DMA控制器130用來“在行中行走”并從共享存儲器中檢索對應(yīng)的數(shù)據(jù)的兩個數(shù)據(jù)點。行的主要步驟和次要步驟的方向取決于該行的角度。例如,如果行沿著二維存儲器映象中的垂直方向的程度比水平方向的程度大,則行的主要步驟是沿著垂直軸,行的次要步驟是沿著水平軸。同樣,如果行沿著二維存儲器映象中的水平方向的程度比垂直方向的程度大,則行的主要步驟是沿著水平軸,行的次要步驟是沿著垂直軸(有關(guān)主要步驟和次要步驟方向的更多細節(jié),請參見圖2A、2B,以及對應(yīng)的文字)。
處理器B120接收行描述110,并將行描述加載到DMA控制器130中。DMA控制器130識別開始了對應(yīng)于行描述的存儲器位置的主要步驟和一個或多個次要步驟,并在開始的存儲器位置從共享存儲器150中檢索數(shù)據(jù)160。DMA控制器130將數(shù)據(jù)160存儲在本地存儲器170中,該本地存儲器是處理器B120的專用存儲器。DMA控制器130基于行描述增大主要步驟位置,并增大次要步驟位置。例如,如果開始的存儲器位置為“0主要,0次要”,行描述是這樣的,其對應(yīng)的行對于每一個次要步驟行進四個主要步驟,下一個位置是“1主要,.25次要?!痹诖耸纠?,由于.25不是有效的存儲器位置,因此,DMA控制器130從“1主要,0次要”檢索數(shù)據(jù),并將次要步驟累加器140內(nèi)的次要步驟計數(shù)增大.25。當(dāng)其中一個次要步驟計數(shù)達到“1”時,DMA控制器130增大次要步驟位置,并從增大的次要步驟位置檢索數(shù)據(jù)。使用上文所描述的示例,DMA控制器130從位置“0,0”、“1,0”、“2,0”、“3,0”、“4,1”等等檢索數(shù)據(jù)。(有關(guān)次要步驟增大的細節(jié),請參見圖4和對應(yīng)的文字)。
DMA控制器130持續(xù)從共享存儲器150檢索數(shù)據(jù)160,并將數(shù)據(jù)存儲在本地存儲器170中,直到DMA控制器130達到用戶指定主要步驟限制或者它達到了存儲器映象的末尾。用戶能夠指定DMA控制器應(yīng)該收集多少主要步驟數(shù)據(jù)點。例如,在terrain呈現(xiàn)方案中,用戶可以指示DMA控制器130收集2000個主要步驟數(shù)據(jù)點,因為在2000個主要步驟數(shù)據(jù)點之后圖像是“有云紋”的。一DMA控制器130完成了數(shù)據(jù)收集,處理器B120便從本地存儲器170檢索數(shù)據(jù),并呈現(xiàn)圖像。
在一個實施例中,計算機系統(tǒng)包括主處理器和多個支持處理器。在此實施例中,多個支持處理器中的每一個處理器都包括智能DMA控制器,其中,每一個DMA控制器都能夠獨立地從共享存儲器位置檢索數(shù)據(jù),以便向它們相應(yīng)的支持處理器提供數(shù)據(jù)。
在另一個實施例中,支持處理器內(nèi)的軟件程序可以將行描述提供到DMA控制器。例如,支持處理器可以執(zhí)行terrain呈現(xiàn)任務(wù),其中terrain呈現(xiàn)任務(wù)包括行描述。在此示例中,terrain-呈現(xiàn)任務(wù)向DMA控制器提供行描述,該控制器從共享存儲器檢索數(shù)據(jù),并將數(shù)據(jù)存儲在本地存儲器中。反過來,terrain-呈現(xiàn)任務(wù)使用本地存儲器中的數(shù)據(jù)來完成其任務(wù)。
圖2A是顯示基于其主要步驟位于垂直方向中的行收集的數(shù)據(jù)的圖表。行的主要步驟和次要步驟的方向取決于該行的角度。對于每一個主要軸步驟,計算沿著每一個次要軸的對應(yīng)的位置,該位置通常是分數(shù)值。所感興趣的存儲器位置是依賴于應(yīng)用程序的。在一個實施例中,應(yīng)用程序可以在每一個主軸步驟中使用單個存儲器位置,這是通過次要軸的舍入到整數(shù)的值來索引的。在另一個實施例中,應(yīng)用程序可以使用主軸交點的一側(cè)上的點或每一側(cè)上的若干個點。
垂直主要步驟200顯示了行210沿著垂直方向行進的程度比沿著水平方向行進的程度大。因此,行210的主要步驟是沿著垂直軸的(即,軸230),行的次要步驟是沿著水平軸的(即,軸240)。在數(shù)據(jù)收集過程中,DMA控制器沿著對應(yīng)于行描述的行210從存儲器映象240中收集數(shù)據(jù)。點狀的存儲器點220顯示了,DMA控制器在對應(yīng)于行210的特定存儲器位置收集數(shù)據(jù)。DMA控制器沿著行210持續(xù)收集數(shù)據(jù),直到DMA控制器達到存儲器映象245的末尾,或直到DMA控制器達到用戶指定的主要步驟限制。用戶可以指定DMA控制器應(yīng)該收集多少主要步驟數(shù)據(jù)點以便提高數(shù)據(jù)收集吞吐量。
當(dāng)行的方向沿著水平方向行進的程度比沿著垂直方向行進的程度大時,行的主要步驟是沿著水平軸,行的次要步驟是沿著垂直軸(有關(guān)水平主要步驟的細節(jié),請參見圖2B和對應(yīng)的文字)。
圖2B顯示了根據(jù)其主要步驟在水平方向的行所收集的數(shù)據(jù)。圖2B類似于圖2A,只是行260在水平方向的遍歷要大于在垂直方向的遍歷。為此,行260的主要步驟是沿著水平軸(即軸290),此要步驟是沿著垂直軸(即軸280)。
點狀的存儲器點270顯示了,DMA控制器在對應(yīng)于行260的特定存儲器位置收集數(shù)據(jù)。DMA控制器沿著行260持續(xù)收集數(shù)據(jù),直到DMA控制器達到存儲器映象245的末尾,或直到DMA控制器達到用戶指定的主要步驟限制。
圖3是顯示在將行描述加載到DMA控制器中時采取的步驟的流程圖,其中,DMA控制器基于行描述從共享存儲器中檢索數(shù)據(jù)。支持處理器包括智能DMA控制器,該控制器從諸如處理器A100之類的主處理器接收行描述,基于行描述,從共享存儲器檢索數(shù)據(jù),并將數(shù)據(jù)存儲在支持處理器的專用存儲器中。
處理從300開始,在此,支持處理器在步驟310中從處理器A100中檢索行描述。處理器A100與圖1所示的處理器相同,并可以與支持處理器異構(gòu)。例如,處理器A100可以是基于微處理器的處理器,支持處理器可以是基于數(shù)字信號的處理器。在步驟320中,支持處理器將檢索到的行描述加載到諸如DMA控制器130之類的其DMA控制器中。DMA控制器130與圖1所示的控制器相同,并能夠使用行描述跨步穿過二維存儲器映象(有關(guān)數(shù)據(jù)檢索的細節(jié),請參見圖4和對應(yīng)的文字)。
在步驟330中,支持處理器初始化數(shù)據(jù)收集進程,并選擇要在其中檢索數(shù)據(jù)的第一行。例如,支持處理器可以使用DMA控制器130檢索對應(yīng)于多個行的數(shù)據(jù),支持處理器使用數(shù)據(jù)來在計算機屏幕上呈現(xiàn)圖像。支持處理器的DMA控制器(即,DMA控制器130)基于對應(yīng)于行描述的主要和次要步驟從共享存儲器150中的位置檢索數(shù)據(jù),并將檢索到的數(shù)據(jù)加載到本地存儲器170中,該本地存儲器是支持處理器的專用存儲器(預(yù)定義的處理塊,有關(guān)細節(jié),請參見圖4和對應(yīng)的文字)。共享存儲器150和本地存儲器170與圖1所示的共享存儲器和本地存儲器相同。
在步驟350中,支持處理器從本地存儲器170檢索數(shù)據(jù),并在顯示器360上呈現(xiàn)圖像。例如,支持處理器可以使用數(shù)據(jù)來計算游戲應(yīng)用程序的terrain映像值。
就是否有多行來讓支持處理器檢索數(shù)據(jù)作出判斷(判斷370)。如果將其中檢索對應(yīng)的數(shù)據(jù)的多行,判斷370將轉(zhuǎn)到“是”分支372,該分支將返回以選擇(步驟380)并處理下一行。此循環(huán)持續(xù)進行,直到?jīng)]有將要在其中檢索對應(yīng)的數(shù)據(jù)的行,此時,判斷370轉(zhuǎn)到“否”分支378,在此,處理過程在390中結(jié)束。
在一個實施例中,支持處理器內(nèi)的軟件程序可以將行描述提供到DMA控制器。例如,支持處理器可以執(zhí)行terrain呈現(xiàn)任務(wù),其中terrain呈現(xiàn)任務(wù)包括行描述。在此示例中,terrain-呈現(xiàn)任務(wù)向DMA控制器提供行描述,該控制器從共享存儲器檢索數(shù)據(jù),并將數(shù)據(jù)存儲在本地存儲器中。反過來,terrain-呈現(xiàn)任務(wù)使用本地存儲器中的數(shù)據(jù)來完成其任務(wù)。
圖4是顯示DMA控制器從對應(yīng)于行描述的特定存儲器位置檢索數(shù)據(jù)采取的步驟的流程圖。計算機系統(tǒng)包括主處理器和一個或多個支持處理器。每一個支持處理器都包括智能DMA控制器,該控制器可使每一個支持處理器從共享存儲器位置檢索數(shù)據(jù),而不必從主處理器請求協(xié)助。
數(shù)據(jù)檢索處理過程在400中開始,在此,處理過程在對應(yīng)于所選擇的行的共享存儲器150中識別主要步驟起點位置和次要步驟起點位置。行的主要步驟和次要步驟的方向取決于該行的角度。例如,如果行位于垂直方向的程度比水平方向的程度大,則行的主要步驟是沿著垂直軸,行的次要步驟是沿著水平軸。同樣,如果行沿著水平方向的程度比垂直方向的程度大,則行的主要步驟是沿著水平軸,行的次要步驟是沿著垂直軸(有關(guān)主要步驟和次要步驟方向的更多細節(jié),請參見圖2A、2B,以及對應(yīng)的文字)。
在步驟420中,DMA控制器從對應(yīng)于主要步驟起點和次要步驟起點的共享存儲器位置檢索數(shù)據(jù)。在步驟430中,DMA控制器將檢索到的數(shù)據(jù)存儲在本地存儲器170中。本地存儲器170與圖1所示的本地存儲器相同,是支持處理器的專用存儲器,或內(nèi)部存儲器。在步驟440中,DMA控制器增大主要步驟存儲器位置。在步驟450中,DMA控制器增大基于行描述的次要步驟累加器140中的次要步驟計數(shù)。例如,如果行描述是這樣的,以便對于每一個次要步驟,行行進四個主要步驟,DMA控制器將次要步驟累加器140增大.25。
就次要步驟累加器是否已經(jīng)達到“1”作出判斷(判斷460)。如果次要步驟累加器已經(jīng)達到“1 ”,則判斷460轉(zhuǎn)到“是”分支462,該分支返回以增大次要步驟位置(步驟470),使次要步驟累加器140復(fù)位(步驟480),檢索對應(yīng)于增大的主要步驟和增大的次要步驟的數(shù)據(jù)。
另一方面,如果次要步驟計數(shù)沒有達到“1”,則判斷460轉(zhuǎn)到“否”分支468,在此,就DMA控制器是否已經(jīng)達到用戶指定的主要步驟限制或者DMA控制器是否已經(jīng)達到存儲器映象的末尾作出判斷(判斷490)。用戶能夠指定DMA控制器應(yīng)該收集多少主要步驟數(shù)據(jù)點以便提高數(shù)據(jù)收集吞吐量。例如,在terrain呈現(xiàn)方案中,用戶可以指示DMA控制器收集2000個主要步驟數(shù)據(jù)點,因為在2000個主要步驟數(shù)據(jù)點之后,圖像是“霧蒙蒙”的。
如果DMA控制器沒有達到用戶指定的主要步驟限制或存儲器映象的末尾,則判斷490轉(zhuǎn)到“否”分支492,該分支返回以檢索對應(yīng)于增大的主要步驟的數(shù)據(jù)。此循環(huán)持續(xù)進行,直到DMA控制器達到用戶指定的主要步驟限制或者DMA控制器達到存儲器映象的末尾,此時,判斷490轉(zhuǎn)到“是”分支498,在此,處理過程返回到499。
圖5是顯示對應(yīng)于行的連續(xù)的存儲器位置數(shù)組范圍的圖表。行510沿著存儲器映象500行進,行510的主要步驟位于垂直方向中,行510的次要步驟位于水平方向中。取決于應(yīng)用程序的實現(xiàn)方式,用戶可以選擇指定存儲器點鄰居數(shù)量,以便使用沿著其次要軸的變化率結(jié)合行與子空間交叉的位置來對行進行分析,并沿著行的主軸存儲連續(xù)的存儲器的計算出的范圍。
圖5中的示例顯示了在每一個主軸步驟中檢索最近的四個存儲器點鄰居的實現(xiàn)方式。在此示例中,計算基于所需要的存儲器點鄰居(如,4個鄰居)的數(shù)量和行的斜率。因此,可編程DMA控制器加載每一個范圍中的十二個連續(xù)的地址,以確保獲取適當(dāng)?shù)泥従印?br>
隨著行510開始沿著存儲器映象500行進,可編程DMA控制器基于行510的起點和方向遍歷,加載數(shù)組范圍520到535。數(shù)組范圍520到535提供了四個非連續(xù)的存儲器點,以對應(yīng)于行510的起點,還提供了四個非連續(xù)的存儲器點,直到行510達到主軸行A560,在此,行510與次要軸行交叉。此時,可編程DMA控制器加載數(shù)組范圍540,以便提供四個非連續(xù)的存儲器點。
隨著行510遍歷存儲器映象500行進,可編程DMA控制器在行510與次要軸行交叉的情況下加載數(shù)組范圍。圖5顯示了當(dāng)行510達到主軸行B570時可編程DMA控制器加載數(shù)組范圍545,當(dāng)行510達到主軸行C580時,可編程DMA控制器加載數(shù)組范圍550。通過加載數(shù)組范圍,改善了存儲器子系統(tǒng)性能,而啟動低效率則降至最低。
圖6是顯示包括多個異構(gòu)型處理器的處理器元件體系結(jié)構(gòu)的圖表。異構(gòu)型處理器共享公用存儲器和通用總線。處理器元件體系結(jié)構(gòu)(PEA)600通過輸入輸出端670從外部設(shè)備接收并向外部設(shè)備發(fā)送信息,并使用處理器元件總線660將信息分發(fā)到控制面610和數(shù)據(jù)面640??刂泼?10對PEA 600進行管理,并將工作分發(fā)到基準(zhǔn)面640。
控制面610包括運行操作系統(tǒng)(OS)625的處理單元620。例如,處理單元620可以是嵌入在PEA 600中的Power PC核心,OS 625可以是Linux操作系統(tǒng)。處理單元620對PEA 600的公用存儲器映象表進行管理。存儲器映象表對應(yīng)于PEA 600中包括的存儲器位置,如L2存儲器630,以及640中包括的非專用存儲器(有關(guān)存儲器映射的細節(jié),請參見圖7A、7B)。
數(shù)據(jù)面640包括協(xié)同處理綜合體(SPC)645、650和655。使用每一個SPC來處理數(shù)據(jù)信息,每一個SPC都可以具有不同的指令集。例如,在無線通信系統(tǒng)中可以使用PEA 600,每一個SPC都可以負責(zé)單獨的處理任務(wù),如調(diào)制、芯片速率處理、編碼,以及網(wǎng)絡(luò)接口。在另一個示例中,每一個SPC都可以具有完全相同的指令集,并可以并行地用來執(zhí)行受益于并行處理的操作。每一個SPC都包括協(xié)同處理單元(SPU),該單元是處理核心,如數(shù)字信號處理器、微控制器、微處理器或這些核心的組合。
SPC 645、650和655連接到處理器元件總線660,該總線在控制面610、數(shù)據(jù)面640,以及輸入/輸出670之間傳遞信息??偩€660是芯片內(nèi)相干的多處理器總線,該總線在I/O 670、控制面610,以及數(shù)據(jù)面640之間傳遞信息。輸入/輸出670包括靈活的輸入/輸出邏輯,該邏輯基于連接到PEA 600的外圍設(shè)備動態(tài)地將接口針腳指定到輸入輸出控制器。例如,PEA 600可以連接到兩個外圍設(shè)備,如外圍A和外圍B,其中,每一個外圍都連接到特定數(shù)量的PEA600上的輸入和輸出針腳。在此示例中,靈活的輸入/輸出邏輯被配置為將連接到外圍A的PEA 600的外部輸入和輸出針腳路由到第一輸入輸出控制器(即,IOC A),并將連接到外圍B的PEA 600的外部輸入和輸出針腳路由到第二輸入輸出控制器(即,IOC B)。
圖7A說明了一個信息處理系統(tǒng),這是一個能夠執(zhí)行這里所描述的計算操作的計算機系統(tǒng)的簡化示例。圖7A中的示例顯示了使用公用存儲器映象以便在異構(gòu)型處理器之間共享存儲器的多個異構(gòu)型處理器。設(shè)備700包括處理單元730,該處理單元執(zhí)行設(shè)備700的操作系統(tǒng)。處理單元730類似于圖6所示的處理單元620。處理單元730使用系統(tǒng)存儲器映象720來分配整個設(shè)備700中的存儲器空間。例如,當(dāng)處理單元730接收存儲器請求時,處理單元730使用系統(tǒng)存儲器映象720來識別和分配存儲器區(qū)域。處理單元730訪問L2存儲器725,以便檢索應(yīng)用程序和數(shù)據(jù)信息。L2存儲器725類似于圖6所示的L2存儲器630。
系統(tǒng)存儲器映象720將存儲器映射區(qū)域分為幾個區(qū)域,它們是區(qū)域735、745、750、755、和760。區(qū)域735是可以由單獨的輸入輸出設(shè)備進行控制的外部系統(tǒng)存儲器的映射區(qū)域。區(qū)域745是對應(yīng)于諸如SPC 702之類的一個或多個協(xié)同處理綜合體的非專用存儲器位置的映射區(qū)域。SPC 702類似于圖6所示的SPC,如SPC A 645。SPC 702包括本地存儲器,如本地存儲器710,其中,可以將本地存儲器的部分分配給整個系統(tǒng)存儲器,以便讓其他處理器進行訪問。例如,可以將1MB的本地存儲器710分配給非專用存儲器,其中,它可以被其他異構(gòu)型處理器進行訪問。在此示例中,本地存儲別名745管理1MB的位于本地存儲器710中的非專用存儲器。
區(qū)域750是翻譯后援緩沖器(TLB)和存儲器流控制(MFC)寄存器的映射區(qū)域。翻譯后援緩沖器包括存儲器的最近引用的頁面的虛擬地址和實際地址之間的交叉引用。存儲器流控制在處理器和總線之間提供接口功能,如DMA控制和同步。
區(qū)域755是操作系統(tǒng)的映射區(qū)域,并是具有帶寬和延遲保證的帶插腳的系統(tǒng)存儲器。區(qū)域760是設(shè)備700的外部的輸入輸出設(shè)備的映射區(qū)域,并由系統(tǒng)和輸入輸出體系結(jié)構(gòu)來進行定義。
協(xié)同處理綜合體(SPC)702包括協(xié)同處理單元(SPU)705、本地存儲器710,以及存儲器管理單元(MMU)715。處理單元730響應(yīng)處理單元730指示對SPU 705進行管理并對數(shù)據(jù)進行處理。例如,SPU 705可以是數(shù)字信令處理核心、微處理器核心、微控制器核心,或這些核心的組合。本地存儲器710是SPU 705為專用存儲區(qū)域和非專用存儲區(qū)域配置的存儲區(qū)域。例如,如果SPU 705要求大量的本地存儲器,則SPU 705可以向?qū)S么鎯ζ鞣峙?00%的本地存儲器710。在另一個示例中,如果SPU 705要求最少量的本地存儲器,則SPU 705可以向?qū)S么鎯ζ鞣峙?0%的本地存儲器710,并向非專用存儲器分配其余的90%本地存儲器710(有關(guān)本地存儲器配置的細節(jié),請參見圖7B和對應(yīng)的文字)。
本地存儲器710的被分配給非專用存儲器的那些部分由區(qū)域745中的系統(tǒng)存儲器映象720進行管理。這些非專用存儲器區(qū)域可以被其他SPU或被處理單元730訪問。MMU 715包括直接存儲器訪問(DMA)功能,并將信息從本地存儲器710傳遞到設(shè)備700內(nèi)的其他存儲器位置。
圖7B是顯示了分成專用存儲器和非專用存儲器的本地存儲區(qū)域的圖表。在系統(tǒng)啟動過程中,協(xié)同處理單元(SPU)760將本地存儲器770分為兩個區(qū)域,這兩個區(qū)域是專用存儲區(qū)775和非專用存儲區(qū)780。SPU 760類似于SPU 705,本地存儲器770類似于圖7A所示的本地存儲器710。專用存儲區(qū)775可以被SPU 760訪問,而非專用存儲區(qū)780可以被SPU 760以及特定設(shè)備內(nèi)的其他處理單元訪問。SPU 760使用專用存儲區(qū)775來對數(shù)據(jù)進行快速訪問。例如,SPU 760可以負責(zé)要求SPU 760快速訪問存儲在存儲器中的大量數(shù)據(jù)的復(fù)雜計算。在此示例中,SPU 760可以向?qū)S么鎯^(qū)775分配100%的本地存儲器770,以便確保SPU 760具有足夠的本地存儲器來訪問。在另一個示例中,SPU 760可以不要求大量的本地存儲器,因此,可以向?qū)S么鎯^(qū)775分配10%的本地存儲器770,并向非專用存儲區(qū)780分配其余的90%的本地存儲器770。
諸如本地存儲別名790之類的系統(tǒng)存儲器映射區(qū)域,管理本地存儲器770的被分配給非專用存儲器的那些部分。本地存儲別名790類似于圖7A所示的本地存儲別名745。本地存儲別名790管理每一個SPU的非專用存儲器,并使其他SPU訪問非專用存儲器以及設(shè)備的控制處理單元。
盡管圖6、7A和7B中所描述的計算機系統(tǒng)能夠執(zhí)行這里所描述的過程,但是,此計算機系統(tǒng)只不過是計算機系統(tǒng)的一個示例。那些精通本技術(shù)的人將理解,許多其他計算機系統(tǒng)設(shè)計也能夠執(zhí)行這里所描述的進程。
本發(fā)明的其中一個優(yōu)選實施例是應(yīng)用程序,即,代碼模塊中的一組指令(程序代碼),例如,可以是駐留在計算機的隨機存取存儲器中的一組指令。直到計算機需要,指令集可以存儲在另一臺計算機的存儲器中,例如,存儲在硬盤驅(qū)動器中,或在諸如光盤之類的可移動存儲器中(最終用于CD ROM中)或軟盤(最終用于軟盤驅(qū)動器中),或通過因特網(wǎng)或其他計算機網(wǎng)絡(luò)下載。如此,本發(fā)明可以作為在計算機中使用的計算機程序產(chǎn)品來實現(xiàn)。此外,雖然這里所描述的各種方法可以方便地以通用計算機(有選擇地由軟件激活或重新配置)來實現(xiàn),但是,那些精通本技術(shù)的普通人員也將認識到,這樣的方法可以以硬件、固件或為執(zhí)行所要求的方法步驟所制造的比較專門的設(shè)備來執(zhí)行。
盡管這里顯示和描述了本發(fā)明的特定實施例,但是,對那些精通本技術(shù)的人很明顯,基于這里所提供的原理,在不偏離本發(fā)明的精神和范圍的情況下,可以進行各種修改。因此,所附加的權(quán)利要求包含在它們的范圍內(nèi),所有這樣的更改和修改都在本發(fā)明的真正的精神和范圍內(nèi)。此外,應(yīng)該理解,本發(fā)明只由所附加的權(quán)利要求進行定義。那些精通本技術(shù)的人應(yīng)該理解,給所介紹的權(quán)利要求元素使用了特定的編號,這樣的意圖將在權(quán)利要求書中明確地列舉,在沒有這樣的列舉的情況下,沒有這樣的限制存在。為了便于理解,舉一個非限制性的例子,下面所附的權(quán)利要求包含“至少一個”和“一個或多個”這樣的句子來介紹權(quán)利要求書元素。然而,使用這樣的句子不應(yīng)該被理解為暗指,由不定冠詞“a”或“an”引入的權(quán)利要求元素將包含這樣的引入的權(quán)利要求元素的任何特定權(quán)利要求限制到只包含這樣的元素的發(fā)明,甚至在相同的權(quán)利要求包括引導(dǎo)句子“一個或多個”或“至少一個”以及諸如“a”或“an”時;這也適用于在權(quán)利要求中使用定冠詞的情況。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,包括接收行描述;將行描述加載到位于處理器上的DMA控制器中;基于行描述使用DMA控制器從主存儲器區(qū)域檢索數(shù)據(jù);以及通過處理器中所包括的本地存儲器向處理器提供檢索到的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中,行描述對應(yīng)于主要步驟和次要步驟,主要步驟和次要步驟用于識別從中檢索數(shù)據(jù)的共享存儲器區(qū)域中的位置。
3.根據(jù)權(quán)利要求2所述的方法,進一步包括更新主要步驟;基于行描述,修改對應(yīng)于次要步驟的次要步驟計數(shù);確定次要步驟計數(shù)是否與整數(shù)邊界交叉;以及響應(yīng)判斷結(jié)果,更新次要步驟。
4.根據(jù)權(quán)利要求2所述的方法,進一步包括判斷是否達到了對應(yīng)于主要步驟的用戶指定的限制;以及響應(yīng)沒有達到用戶指定的限制的判斷,執(zhí)行檢索。
5.根據(jù)權(quán)利要求1所述的方法,進一步包括檢索存儲器點鄰居數(shù)量;以及基于存儲器點鄰居數(shù)量,判斷要檢索的數(shù)組范圍的數(shù)量,其中,數(shù)據(jù)被分割為若干個數(shù)組范圍中的每一個。
6.根據(jù)權(quán)利要求1所述的方法,其中,主存儲器區(qū)域是共享存儲器,共享存儲器映射到所述處理器和使用公用存儲器映象的一個或多個其他處理器,其中,行描述被從異構(gòu)的一個其他處理器發(fā)送到所述處理器。
7.根據(jù)權(quán)利要求1所述的方法,其中,行描述包括存在于共享存儲器中的兩個數(shù)據(jù)點。
8.一種程序產(chǎn)品,包括計算機可操作的介質(zhì),具有計算機程序代碼,所述計算機程序代碼能夠接收行描述;將行描述加載到位于處理器上的DMA控制器中;基于行描述使用DMA控制器從主存儲器區(qū)域檢索數(shù)據(jù);以及通過處理器中所包括的本地存儲器向處理器提供檢索到的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的程序產(chǎn)品,其中,行描述對應(yīng)于主要步驟和次要步驟,主要步驟和次要步驟用于識別從中檢索數(shù)據(jù)的共享存儲器區(qū)域中的位置。
10.根據(jù)權(quán)利要求9所述的程序產(chǎn)品,其中,計算機程序代碼進一步能夠更新主要步驟;基于行描述,修改對應(yīng)于次要步驟的次要步驟計數(shù);確定次要步驟計數(shù)是否與整數(shù)邊界交叉;以及響應(yīng)判斷結(jié)果,更新次要步驟。
11.根據(jù)權(quán)利要求9所述的程序產(chǎn)品,其中,計算機程序代碼進一步能夠判斷是否達到了對應(yīng)于主要步驟的用戶指定的限制;以及響應(yīng)沒有達到用戶指定的限制的判斷,執(zhí)行檢索。
12.根據(jù)權(quán)利要求8所述的程序產(chǎn)品,其中,計算機程序代碼進一步能夠檢索存儲器點鄰居數(shù)量;以及基于存儲器點鄰居數(shù)量,判斷要檢索的數(shù)組范圍的數(shù)量,其中,數(shù)據(jù)被分割為若干個數(shù)組范圍中的每一個。
13.根據(jù)權(quán)利要求8所述的程序產(chǎn)品,其中,主存儲器區(qū)域是共享存儲器,共享存儲器映射到所述處理器和使用公用存儲器映象的一個或多個其他處理器,其中,行描述被從異構(gòu)的一個其他處理器發(fā)送到所述處理器。
14.根據(jù)權(quán)利要求8所述的程序產(chǎn)品,其中,行描述包括存在于共享存儲器中的兩個數(shù)據(jù)點。
15.一種信息處理系統(tǒng),包括顯示器;一個或多個處理器;本地存儲器區(qū)域;可以被一個或多個處理器進行訪問的主存儲器;以及用于從主存儲器檢索數(shù)據(jù)的數(shù)據(jù)檢索工具,該數(shù)據(jù)檢索工具包括能夠執(zhí)行下列操作的軟件代碼從其中一個處理器接收行描述;將行描述加載到位于其中一個處理器上的DMA控制器中;基于行描述使用DMA控制器從主存儲器中檢索數(shù)據(jù);以及通過處理器中所包括的本地存儲器向其中一個處理器提供檢索到的數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的信息處理系統(tǒng),其中,行描述對應(yīng)于主要步驟和次要步驟,主要步驟和次要步驟用于識別從中檢索數(shù)據(jù)的共享存儲器區(qū)域中的位置。
17.根據(jù)權(quán)利要求16所述的信息處理系統(tǒng),其中,軟件代碼進一步能夠更新存儲器中的主要步驟;基于行描述,修改對應(yīng)于次要步驟的存儲器中的次要步驟計數(shù);判斷次要步驟計數(shù)是否與整數(shù)邊界交叉;以及響應(yīng)判斷結(jié)果,更新存儲器中的次要步驟。
18.根據(jù)權(quán)利要求16所述的信息處理系統(tǒng),其中,軟件代碼進一步能夠判斷是否達到了對應(yīng)于主要步驟的用戶指定的限制;以及響應(yīng)沒有達到用戶指定的限制的判斷,執(zhí)行檢索。
19.根據(jù)權(quán)利要求15所述的信息處理系統(tǒng),其中,軟件代碼進一步能夠從存儲器中檢索存儲器點鄰居數(shù)量;以及基于存儲器點鄰居數(shù)量,判斷要從存儲器中檢索的數(shù)組范圍的數(shù)量,其中,數(shù)據(jù)被分割為若干個數(shù)組范圍中的每一個。
20.根據(jù)權(quán)利要求15所述的信息處理系統(tǒng),其中,主存儲器區(qū)域是共享存儲器,共享存儲器映射到所述處理器和使用公用存儲器映象的一個或多個其他處理器,其中,行描述被從異構(gòu)的一個其他處理器發(fā)送到所述處理器。
全文摘要
提供了具有多維行行走功能的DMA控制器的系統(tǒng)和方法。處理器包括智能DMA控制器,該控制器加載對應(yīng)于形狀或行的行描述。智能DMA控制器基于包括主要步驟和次要步驟的行描述,在存儲器映象進行移動并檢索數(shù)據(jù)。反過來,智能DMA控制器從共享存儲器中檢索數(shù)據(jù),無需其對應(yīng)的處理器提供協(xié)助。在一個實施例中,智能DMA控制器可以使用沿著其次要軸的變化率結(jié)合行與子空間交叉的位置來對行進行分析,并沿著行的主軸存儲連續(xù)的存儲器的數(shù)組范圍。
文檔編號G06F13/20GK1740994SQ20051007897
公開日2006年3月1日 申請日期2005年6月21日 優(yōu)先權(quán)日2004年8月26日
發(fā)明者丹尼爾·艾倫·布魯肯謝爾, 戈登·克萊德·福薩姆, 巴里·L.·麥納 申請人:國際商業(yè)機器公司