用於改進的dmac翻譯機制的系統和方法
2023-04-22 19:32:21 2
專利名稱:用於改進的dmac翻譯機制的系統和方法
技術領域:
本發明涉及用於改進的DMA控制器翻譯機制的系統和方法。更 具體地,本發明涉及用於將實際頁號存儲在DMA命令欄位中,以便 在DMA命令調出期間使用實際頁號的系統和方法。
背景技術:
計算機系統應用一般指定一個有效地址或間接地址來存儲和取回 數據。為了完成數據存儲或取出請求,計算機系統將有效地址翻譯成 與存儲器中的物理位置相對應的實際地址或物理地址。計算機系統一般包括用於提供有效地址到實際地址翻譯的存儲器 管理單元(MMU)。在一種配置中,由於所有的加載和存儲指令需要 地址翻譯,所以DMA隊列一直在訪問MMU,這增加了延時並消耗 了更多的功率。另一種配置使用有效地址到實際地址翻譯器(ERAT)加上第二 級MMU。 ERAT包括用於存儲以前的地址翻譯的查找表。當DMA 隊列向ERAT發送DMA請求(包括有效地址)時,ERAT查看自己 的查找表以尋找有效地址匹配。如果存在匹配,則ERAT提供相應的 實際地址,而避免了 MMU訪問。然而,如果ERAT沒有找到與DMA 請求的有效地址相對應的條目,則ERAT向MMU發送"未命中", MMU接著執行在前面第一種配置中討論的相同步驟。當MMU識別出對應的實際頁號時,MMU將該實際頁號發送到 ERAT,由ERAT將其加栽到自己的表中。使用這種配置,由於在ERAT 發現與有效地址之間的匹配時不需要訪問MMU,所以ERAT提供了 電路性能改進。然而,面臨的挑戰是為了使ERAT獲得良好的"命 中率",ERAT的查找表必須包括大量條目,這可能消耗大量的功率和物理面積。此外,面臨的另一項杏k戰是ERAT仍然為每一個DMA 請求執行查找,這也增加了延時。因此,需要一種用於改進的有效地址到實際地址翻譯機制的系統 和方法。發明內容已經發現,使用用於將實際頁號存儲在DMA命令欄位中,以便 在DMA命令調出期間使用這些實際頁號的系統和方法,就能解決上 述挑戰。DMA隊列從存儲器管理單元接收實際頁號並將這些實際頁號 存儲在相應的DMA命令欄位中用於後續的DMA請求。這樣,DMA 隊列就不那麼頻繁地訪問MMU以進行地址翻譯,而這通過更低的延 時和功耗又提高了系統性能。DMA隊列包括具有相應的DMA命令欄位的DMA命令,所述 DMA命令欄位包括1)隊列條目有效位,2)有效地址欄位,3)實 際地址有效位,4)實際頁號欄位,5)傳輸類型欄位,和6)傳輸大小 欄位。隊列條目有效位標識相應的DMA命令是否有效。有效地址字 段包含相應的DMA命令的有效地址。實際地址有效位標識在實際頁 號欄位中的實際頁號是否有效。傳輸類型欄位標識DMA命令的類型, 例如加載或存儲。另外,傳輸大小欄位包括剩餘還未傳輸的數據量。DMA隊列識別準備好發出的DMA命令(例如,無依賴性)。在 命令從DMA隊列分派出去後,下遊邏輯檢查DMA命令的相應的實 際地址有效位,以《更確定是否訪問MMU以進行地址翻譯。如果DMA 命令的實際地址有效位被置位,則包括在實際頁號欄位中的實際頁號 通過復用器被發送到總線接口單元,所述復用器被配置為從DMA隊 列接收實際頁號。此外,DMA隊列將DMA請求(包括有效地址)和 命令參數(包括傳輸大小)發送到調出邏輯。調出邏輯使傳輸大小遞 減,確定DMA隊列是否可以使用現有的實際頁號用於後面的調出 DMA請求,並向DMA隊列發送"寫回信息"。接著,DMA隊列將該 寫回信息存儲到DMA命令的命令欄位中。這樣,當DMA隊列"調出"相同的DMA命令並執行另一個DMA請求時,下遊邏輯檢查實際地 址有效位,如果它被置位,則從DMA命令的實際頁號輸出中提取實 際頁號,並將它發送到總線接口單元。結果,MMU不被頻繁地訪問, 這改進了總體系統性能。在一種實施方式中,無論實際地址有效位的值是什麼,由於硬體 約束,DMA請求都被自動發送到MMU。在該實施方式中,DMA邏 輯使用實際地址有效位加上其它參數來確定是否需要翻譯請求。翻譯 請求或者有效地址有效請求是從DMA邏輯發送到MMU的。如果該 請求被斷言(assert),那麼MMU尋找相應的實際頁號並通過復用器 將新的實際頁號發送到總線接口單元,所述復用器選擇該新的實際頁 號輸出。此外,MMU將該新的實際頁號發送到DMA隊列,在DMA 隊列中,該新的實際頁號被寫回到相應的實際頁號欄位中,用於後面 的DMA請求。當MMU執行地址翻譯時,調出邏輯還接收DMA請求以及命令 參數。接著,調出邏輯使傳輸大小遞減,確定MMU是否完成了成功 的地址翻譯,並發送寫回信息到DMA隊列,由DMA隊列將其存儲 在DMA命令的相應的命令欄位中,用於後面的DMA請求。以上就是對發明內容的概述,因而在必要的情況下包含了細節的 簡化、概括和省略;因此,本領域的技術人員將會理解該
發明內容
部分只是示意性的,而絕非限制性的。在以下闡述的非限制性的詳細 描述中將會清楚僅由權利要求限定的本發明的其它方面、創新特徵和 優點。
參照附圖,可以更好地理解本發明,使本領域的技術人員清楚它 的多個目的,特徵和優點。圖1是示出將有效地址翻譯成實際頁號的存儲器管理單元 (MMU)的圖;圖2是示出正在執行地址翻譯的有效地址到實際地址翻譯器(ERAT)和存儲器管理單元(MMU)的圖;圖3是示出從MMU接收實際頁號並將該實際頁號存儲在相應的 DMA命令欄位中以在後面的DMA請求中使用的DMA隊列的圖;圖4是示出多個DMA請求以及如何基於三種不同的配置進行地 址翻譯的表;圖5是示出具有DMA命令以及相應的命令欄位的DMA隊列的圖;圖6是示出在發送出去或發出DMA命令時採用的步驟的高級流程圖;圖7是示出在調出處理,例如使DMA命令傳輸大小遞減以及提 供寫回信息到DMA隊列時採用的步驟的流程圖;圖8是示出在存儲器管理單元接收翻譯請求以及向總線接口單元 和DMA隊列提供實際頁號時釆用的步驟的流程圖;以及圖9圖示了一個信息處理系統,它是能夠執行這裡描述的運算操 作的計算機系統的一個簡化例子。
具體實施方式
下面想要給出對本發明的一個例子的詳細描迷,但不應被拿來限 制發明本身。相反,任意數量的變型可以落入本發明的範圍內,這在 說明書所附的權利要求書中限定。圖1是示出將有效地址翻譯成實際頁號的存儲器管理單元 (MMU)的圖。圖1顯示現有技術中用來處理DMA命令(例如,存 儲器加載和存儲操作)的地址翻譯配置。根據DMA命令的傳輸大小 以及計算機系統一次傳輸的數據量,DMA命令被"解開"。例如,如果 計算機系統以128位元組的增量傳輸數據,而DMA命令是512位元組, 那麼DMA命令被解開到4個DMA請求中(128x4=512)。圖1包括DMA隊列100、 MMU 120和總線接口單元140。 DMA 隊列IOO識別準備好發出(例如,無依賴性)的DMA命令,並發送 DMA請求110到MMU 120,該請求包括對應於DMA命令的有效地址。MMU 120接收DMA請求110並且訪問包括有效地址和對應的實 際頁號的查找表。如果包括在DMA請求110中的有效地址與在查找 表中存儲的有效地址匹配,則MMU 120將相應的實際頁號130發送 到總線接口單元140。另一方面,如果MMU 120沒有找到與DMA請求110相對應的 匹配的有效地址,那麼MMU 120通知DMA隊列100發生了"未命中"。 MMU 120還向存儲器請求翻譯信息並將來自存儲器的翻譯信息加栽 到查找表中。在加載完成後,MMU 120告知DMA隊列100重新發送 先前未命中的相同的DMA請求。這樣,圖1中所示的配置對於每個DMA請求執行查找或存儲器 訪問,即使該DMA請求是對於同一 DMA命令的多個DMA請求的一 部分,這樣效率不高並且降低了處理器性能。圖2是示出正在進行地址翻譯的有效地址到實際地址翻譯器 (ERAT )和存儲器管理單元(MMU )的圖。圖2示出了 一種替代的 地址翻譯配置。ERAT 200跟蹤以前的地址翻譯結果,因此不是對於 每個DMA請求都訪問MMU 120。然而,正如下面所討論的,ERAT 200仍然對於每個DMA請求都執4亍查找,這在功率和面積方面仍然效 率不高,但是與圖1中的配置相比改進了延時。DMA隊列100向ERAT 200發送與準備好發出的DMA命令相對 應的DMA請求IIO,該DMA請求包括對應於DMA命令的有效地址。 接著,ERAT 200訪問包含有效地址和相應的實際頁號的查找表。 ERAT 200進行檢查以發現查找表是否包括與包括在DMA請求110 中的有效地址相關的條目。如果包括在DMA請求110中的有效地址 與查找表中的存儲的有效地址匹配,則ERAT 200將實際頁號130發 送到總線接口單元140。 DMA隊列100、 DMA請求110、實際頁號 130和總線接口單元140與圖1中所示的相同。另一方面,如果ERAT 200沒有發現與DMA請求110的有效地 址相對應的匹配,則ERAT 200將未命中220發送到MMU120。MMU 120然後對包括在DMA請求110中的有效地址進行地址翻譯。接著,MMU 120訪問它的包括有效地址和相應的實際頁號的查找 表,以發現對於DMA請求110的有效地址是否存在匹配(例如在圖1 中討論的步驟)。如果查找表包含有效地址,則MMU 120識別其對 應的實際頁號並將MMU RPN 230發送到ERAT 200。 ERAT 200將有 效地址和MMURPN 230包括在其查找表中,以供後面引用。此外, DMA請求必須被重新發送。當請求被再次重發時,ERAT 200對有效 地址進行匹配,並將RPN輸送到總線接口單元。MMU120與圖1中 所示的相同。如果MMU 120在其查找表中沒有找到與DMA請求110的有效 地址相對應的條目,那麼MMU 120訪問存儲器,以便獲得正確的地 址翻譯(例如,在圖1中討論的步驟)。 一旦MMU 120識別出與DMA 請求110的有效地址相對應的實際頁號,那麼MMU 120發送MMU RPN 230到ERAT 200,由ERAT 200將其存儲在自己的查找表中。 DMA請求必須糹皮再次重發,此時ERAT 200對有效地址進行匹配並將 RPN 130輸送到BIU 140。可以看出,DMA隊列100訪問ERAT 200 以對每個DMA請求進行地址翻譯,即使該DMA請求是對於同一 DMA命令的多個DMA請求的一部分。圖3是示出從MMU接收實際頁號並將該實際頁號存儲在相應的 DMA命令欄位中以用於後面的DMA請求的DMA隊列的圖。因此, 圖3所示的配置比圖l和2所示的配置效率更高。DMA隊列300包括具有相應的DMA命令欄位的DMA命令,所 述DMA命令欄位包括1)隊列條目有效位,2)有效地址欄位,3)實 際地址有效位,4)實際頁號欄位,5)傳輸類型,和6)傳輸大小欄位。 隊列條目有效位標識相應的DMA命令是否有效。有效地址欄位包含 相應的DMA命令的有效地址。實際地址有效位標識包括在實際頁號 欄位中的實際頁號是否有效。傳輸類型標識DMA命令的類型,例如 加載或存儲。另外,傳輸大小欄位包括剩餘還未傳輸的數據量(參考 附圖5和相應的文字描述以了解有關DMA命令欄位的更多細節)。DMA隊列300識別準備好發出的DMA命令(例如,無依賴性),並且檢查DMA命令的相應的實際地址有效位,以便確定是否訪問 MMU 320進行地址翻譯。如果DMA命令的實際地址位被置位,那麼 DMA隊列300從實際頁號欄位提取實際頁號並且通過復用器370將實 際頁號360發送到總線接口單元380 ,復用器370被配置為從DMA隊 列300接收實際頁號。此外,DMA隊列300將DMA請求308和命令 參數325發送到調出邏輯330,所述命令參數325包括DMA命令的傳 輸大小。調出邏輯330使傳輸大小遞減,確定DMA隊列300是否可 以使用現有的實際頁號用於後面的調出DMA請求,並發送寫回信息 340到DMA隊列300(參考圖7和相應的文字描述以了解有關調出處 理的更多細節)。接著,DMA隊列300將寫回信息340加栽到DMA 命令的命令欄位中。因此,當DMA隊列300"調出,,相同的DMA命令 來執行另一個DMA請求時,DMA隊列300檢查實際地址有效位,如 果它被置位,則從DMA命令的實際頁號欄位提取實際頁號,並將實 際頁號360發送到總線接口單元380。結果,MMU320不被那麼頻繁 地訪問,這改進了整體系統性能。
邏輯310控制被發送到MMU 320的有效地址(EA俯求有效315, 該有效地址請求有效315是基於幾種因素而定的。首先,在實模式中, MMU320不執行任何翻譯,因此,EA請求有效315被反斷言。其次, 諸如"sync,,和"eido,,等命令類型不需要翻譯,因而EA請求有效315 保持反斷言。第三,在缺少最初兩個條件的情況下,邏輯310使用RA 有效305來確定EA請求有效315是否應被斷言。
當邏輯310識別出DMA命令的實際地址有效位沒有被置位(上 面第三個前述條件),因此需要地址翻譯時,邏輯310激活EA請求 有效315。同時,DMA隊列300從DMA隊列300向MMU 320發送 DMA請求308。接著,MMU 320尋找相應的實際頁號並通過復用器 370將新的實際頁號350發送到總線接口單元380,所述復用器370選 擇新的實際頁號350作為輸入。此外,MMU320將新的實際頁號350 發送到DMA隊列300,由DMA隊列300將其加載到相應的實際頁號 欄位中用於後面的DMA請求。如果MMU 320在自己的查找表中沒有找到與DMA請求308的 有效地址相對應的條目,則MMU 320訪問存儲器以便獲得正確的地 址翻譯。對於DMA命令設置MMU發出依賴性,使得該命令不被重 發,直到MMU已從存儲器加載了翻譯。 一旦MMU發出依賴性清零, 則DMA命令重新發出,並且它的有效地址產生"命中,,。參考圖7和8, 了解有關更多細節的相應文字描述。
當邏輯310在缺少用於確定EA請求有效315的最初兩個因素(上 面已討論)的情況下識別出RA有效305被斷言時,不需要任何翻譯, 因此邏輯310不斷言EA請求有效315。在這種情況下,DMA 300經 由復用器370將實際頁號360輸送到BIU 380。
調出邏輯330接收DMA請求308和命令參數325。接著,調出邏 輯330使傳輸大小遞減,確定MMU 320是否執行了成功的地址翻譯, 並且發送寫回信息340到DMA隊列300,由DMA隊列300將該信息 存儲到DMA命令的相應的命令欄位中(參考圖7和相應的文字描述 以了解有關調出處理的更多細節)。
圖4是示出基於三種不同配置的多個DMA請求以及它們的地址 翻譯位置的表。表400包括列420到440,它們分別對應於在表1-3 中示出的配置。歹。420到440包括用於在DMA命令被調出時提供地 址翻譯的DMA請求活動。在圖4中示出的例子對應於請求傳輸4KB 數據的DMA命令,計算機系統以128位元組增量來傳輸數據。因此, 為了執行DMA命令,需要三十二次請求(由列410指示) (128Bx32-4KB )。
列420顯示對於圖1所示的實施方式,DMA隊列對於三十二次請 求中的每次請求都訪問存儲器管理單元。列430顯示對於圖2所示的 實施方式,DMA隊列對於第一次請求訪問ERAT,接下來ERAT訪 問MMU。對於第2次到第32次請求,DMA隊列訪問ERAT,由ERAT 從ERAT的查找表提供實際頁號,從而不必訪問MMU。
列440顯示對於這裡描述的發明(圖3) , DMA隊列對於第一次 請求訪問MMU,之後對於第2次到第32次請求,因為DMA隊列在第 一次DMA請求後將實際頁號存儲在DMA命令的相應的DMA命令 欄位中,所以由DMA隊列自己將實際頁號提供給總線接口單元。
圖5是示出具有DMA命令以及相應的命令欄位的DMA隊列的 圖。DMA隊列300與圖3中所示的相同,它包括與具體的DMA命令 相對應的DMA命令欄位(列510到560 )。
列510包括隊列條目有效位,它標明相應的DMA命令是否有效。 在相應的數據被完整地傳輸之前,DMA命令一直保持有效。例如,對 於以128位元組增量傳輸數據的系統以及請求傳輸128位元組以下的數據 的DMA命令,隊列條目有效位對於一次傳輸保持有效,然後被重置。 在另一個例子中,對於以128位元組增量傳輸數據的系統以及請求傳輸 512位元組數據的DMA命令,隊列條目有效位保持有效,直到四次傳輸 被成功地送到總線接口單元(128x4),然後隊列條目有效位被重置。
列520包括DMA命令有效地址,它們被翻譯成實際頁號並被存 儲在列540中。列530包括實際地址有效位,它標明包括在列540中 的實際頁號是否有效。使用上面有關請求傳輸512位元組數據的DMA 命令的例子,在第一次傳輸時,DMA命令的實際頁號欄位沒有有效的 實際頁號,因而實際地址有效位未被置位。DMA隊列300在第一次傳 輸時從MMU接收實際頁號,還從包括被置位的實際地址有效位的調 出邏輯接收寫回信息。因此,在第二次到第四次傳輸時,DMA隊列 300將存在於列540中的實際頁號發送到總線接口單元,並且對於第 二次到第四次傳輸不訪問MMU。
列550包括DMA命令的相應的傳輸類型,例如它是加載還是存 儲操作。不需要由MMU進行翻譯的其他命令,例如"sync"和"eieio" 也可以從DMA隊列發出。列560是傳輸大小欄位,它包括DMA命 令傳輸大小值。傳輸大小值對應於在相應的DMA命令下剩餘還未傳 輸的數據量。使用以上請求傳輸512位元組數據的DMA命令的例子, 在第一次傳輸前,傳輸大小值是512位元組。在第二次傳輸前,傳輸大 小值是384位元組(512B-128B),這是從調出邏輯接收的遞減後的傳 輸大小(參考圖7和相應的文字描述以了解有關遞減的傳輸大小的更多細節)。在第三次傳輸前,傳輸大小值是256位元組(384B-128B)。 而在第四次傳輸前,傳輸大小值是128位元組。
DMA隊列300包括對應於DMA命令的行570到595。行570和 595顯示相應的DMA命令是有效的(列510 )並且在列540中包括有 效的實際地址(列530 )。行580顯示相應的DMA命令是有效的(列 510)但在列540中不包括有效的實際地址(列530)。行590顯示相 應的DMA命令不是有效的(列510)並且在列540中不包括有效的實 際地址(列530 )。
圖6是示出在DMA隊列調出DMA命令時採用的步驟的高級流 程圖。DMA隊列使用包括在DMA命令欄位中的信息來確定是自身向 總線接口單元發送實際頁號還是請求存儲器管理單元(MMU )執行地
址翻譯(參考圖5和相應的文字描述以了解有關DMA命令參數的更 多細節)。
處理開始於600,此後在步驟605, DMA隊列識別準備好發出的 DMA命令(例如,無依賴性)。確定DMA命令的相應的實際地址有 效位是否被置位,這表明DMA命令的相應的實際頁號是否有效(判 決610)。
假設系統不在實模式下運行並且命令類型是需要地址翻譯的類 型,如果DMA命令的相應的實際地址有效位被置位,則判決610前 往"是,,分支612,之後處理在步驟650發送命令參數到調出處理。命 令參數包括實際地址有效位值和傳輸大小,其中傳輸大小對應於DMA 命令希望加載或存儲的數據量,例如4KB的數據。調出處理接收命令 參數並且相應地修改命令參數,例如使傳輸大小遞減傳輸大小允許量 (參考圖7和相應的文字描述以了解有關調出處理步驟的更多細節)。
在步驟660, DMA隊列從DMA命令欄位之一提取DMA命令的 實際頁號並且將該實際頁號發送到總線接口單元380。總線接口單元 380與圖3所示的相同,實際頁號在到達總線接口單元380之前可以 通過復用器,例如圖3所示的復用器370。
在步驟670, DMA隊列從調出處理接收寫回信息。寫回信息包括如上所述的實際地址有效位和遞減的傳輸大小。在步驟680, DMA隊 列將寫回信息加載到DMA命令的相應的DMA命令欄位用於後面的 DMA請求。另一方面,如果DMA隊列識別出DMA命令的實際地址有效位 沒有被置位,那麼判決610前往"否"分支618,之後DMA隊列在步驟 620將命令參數發送到調出處理。在步驟625, DMA隊列向執行地址 翻譯的存儲器管理單元(MMU)發送翻譯請求。MMU,例如圖3中 所示的MMU 320,執行地址翻譯並將實際頁號發送到總線接口單元 380。 MMU還將實際頁號提供給DMA隊列,DMA隊列處理在步驟 630接收該實際頁號。在一種實施方式中,如果MMU在它的表中沒有找到對應於有效 地址的表條目,那麼MMU發送"未命中,,到調出處理,並且從存儲器 取得翻譯。在加載了翻譯後,MMU處理髮送"清除依賴性"到DMA 隊列,以通知DMA隊列重發相應的命令(參考圖8和相應的文字描 述以了解有關MMU處理的更多細節)。在步驟640, DMA隊列從調出處理接收寫回信息,並且在步驟 645, DMA隊列將寫回信息和實際頁號加載到DMA命令欄位中。判斷DMA命令是否完成(判決690 )。如果DMA命令需要進一 步的調出(例如,隊列條目有效位^l置位),則判決690前往"是,,分 支692,它循環回去繼續處理DMA命令。該循環一直繼續,直到DMA 命令被調出,此時判決690前往"否,,分支698,之後DMA命令處理在 699結束。圖7是示出在調出處理,例如使DMA命令傳輸大小遞減以及提 供寫回信息到DMA隊列時採用的步驟的流程圖。調出處理開始於 700,之後調出處理在步驟705從DMA隊列處理接收命令參數(參考 圖6和相應的文字描述以了解有關DMA隊列處理的更多細節)。命 令參數包括實際地址有效位和傳輸大小。號到總線接口單元。當實際頁號沒有被置位時,DMA隊列請求存儲器 管理單元(MMU )執行地址翻譯並且提供實際頁號到總線接口單元和 DMA隊列。如果實際頁號有效,則判決710前往"是"分支718,之後處理繞 開存儲器管理單元請求步驟。另一方面,如果實際頁號不是有效的, 則判決710前往"否,,分支712,之後處理在步驟715從MMU接收命 中或未命中信號,表明MMU是否找到了與DMA請求的有效地址相 對應的實際頁號(參考圖8和相應的文字描述以了解有關MMU處理 的更多細節)。判斷MMU是否執行了地址翻譯(判決720)。如果MMU未曾 執行地址翻譯,則判決720前往"否"分支722,之後處理對MMU發 出依賴性位進行置位,該位信息告知DMA隊列特定的指令依賴於 MMU執行地址翻譯(步驟725 )。在稍後MMU已從存儲器收到翻譯 時,MMU發送信號到DMA邏輯以清除MMU發出依賴性。直到從 MMU接收到MMU未命中清零信號,DMA命令才被重發(參考圖8 和相應的文字描述以了解更多的細節)。另一方面,如果MMU執行了地址翻譯,則判決720前往"是"分 支728,之後處理在步驟730對實際地址有效位進行置位,該實際地 址有效位被包括在調出處理髮送到DMA隊列處理的寫回信息中(參 考下文)。在步驟735,處理通過從它在命令參數中接收到的傳輸大小減去 允許的最大傳輸大小而使DMA命令的傳輸大小遞減(參考上面的 705)。例如,如果接收到的傳輸大小是384位元組,允許的最大傳輸大 小是128位元組,則遞減後的傳輸大小是256位元組。通過分析遞減後的 傳輸大小判斷是否還需要其它DMA請求(判決740)。即,如果遞減 後的傳輸大小是零,則不再需要其它DMA請求。然而,如果傳輸大 小不是零,則還需要其它DMA請求以便完成DMA命令。如果不需要其它DMA請求,則判決740前往"否"分支742,之後 處理復位隊列有效位,它表明相應的DMA命令已被完成,因此不再有效(步驟745)。另一方面,如果還需要其它DMA請求,則判決740 前往"是,,分支748,之後處理在步驟750使有效地址遞增到下一地址。判斷DMA命令是否到達了頁的末端(判決760)。例如,存儲器 配置可以具有4KB增量的頁。如果處理已到達頁的末端,則判決760 前往"是,,分支768,之後處理在步驟770復位實際地址有效位,該位 信息通知DMA隊列請求MMU對於DMA命令的下一個翻譯執行地 址翻譯。另一方面,如果處理還沒有到達頁的末端,則判決760前往 "否,,分支762,繞過實際地址有效位復位步驟。在步驟780,調出處理髮送寫回信息到DMA隊列處理。寫回信息 包括最近的變化,例如隊列有效位、實際地址有效位和遞減的傳輸大 小。通過檢查隊列條目有效位來判斷DMA命令是否需要進一步的 DMA請求(判決790)。如果隊列條目有效位被置位,則判決7卯前 往"是"分支792,之後處理循環回去,處理對於DMA命令的更多的 DMA請求。該循環一直繼續,直到DMA命令完成,此時判決790前 往"否,,分支798,之後調出處理在799結束。圖8是示出在存儲器管理單元接收翻譯請求以及向總線接口單元 和DMA隊列提供實際頁號時採用的步驟的流程圖。使用這裡描述的 實施方式,當DMA命令在它的DMA命令欄位之一中不包括有效實 際頁號,傳輸類型是需要翻譯的類型,並且系統正運行在虛模式下(即, 實^=莫式不活動)時,DMA隊列訪問存儲器管理單元(MMU)。MMU處理開始於800,之後MMU在步驟810從DMA隊列接收 DMA請求。在步驟820,處理從DMA請求提取有效地址。MMU在 步驟830訪問MMU表840,以找到與該有效地址相對應的實際頁號。 MMU表840包括一個有效地址和相應的實際頁號的列表。判斷MMU表840是否包括與有效地址相對應的表條目(判決 850)。如果MMU找到了表條目,則判決850前往"是,,分支852,之 後處理在步驟855發送命中信號到調出處理(參考圖7和相應的文字 描述以了解有關調出處理的更多細節)。在步驟860, MMU發送找到 的實際頁號到總線接口單元380和DMA隊列處理,並且MMU處理在890結束。DMA隊列處理將實際頁號與DMA命令存儲在一起,以 便將實際頁號用於後面的DMA請求。總線接口單元380與圖3所示 的相同。另一方面,如果MMU在MMU表840中沒有找到與有效地址相 對應的表條目,則判決850前往"否"分支858,之後處理髮送"未命中,, 到調出處理(步驟870)並從存儲庫875取得翻譯,該翻譯被加載到 MMU表840中。在加載了翻譯後,MMU處理在步驟885發送"清除 依賴性"到DMA隊列,MMU處理在890結束。存儲庫875可以被存 儲在非易失存儲區上,例如計算機硬碟。圖9圖示了一個信息處理系統,它是能夠執行這裡描述的運算操 作的計算機系統的一個簡化例子。寬帶處理器體系結構(BPA) 900 包括在單個晶片上的多個異構處理器(片上系統)、公共存儲器和公共 總線。異構處理器是具有不同指令集的處理器,它們共享公共存儲器 和公共總線。例如,異構處理器之一可以是使用RISC指令集的Power PC,另一個異構處理器可以是使用向量指令集的協同處理單元,二個 處理器共享同一存儲空間。BPA卯O包括協同處理單元(SPC) 910、 930和950。每個SPC 包括被耦合到DMA控制器(DMAC )的處理器核,而DMAC被耦合 到總線接口單元(BIU)。 SPC 910包括處理器核915、 DMAC 920和 BIU 925。 SPC 930包括處理器核935、 DMAC 940和BIU 945。而SPC 950包括處理器核955、 DMAC 960和BIU 965。BPA900還包括處理單元975,處理單元975運行作業系統(OS ) 978。例如,處理單元975可以是被嵌入在BPA卯O中的Power PC核, OS 978可以是Linux作業系統。處理單元975管理用於BPA 900的公 共存儲器映射表。該存儲器映射表對應於包括在BPA 900中的存儲器 位置,例如L2存儲器980以及包括在SPC910、 930和950中的非私 有存儲器。每個SPC被用於處理數據信息,並且每個SPC可以具有不同的 指令集。例如,BPA900可以用於無線通信系統中,每個SPC可以負責單獨的處理任務,例如調製、晶片速率處理、編碼和網絡接口。在另一個例子中,每個SPC可以具有相同的指令集並且可以被並行地用 於執行受益於並行處理的操作。每個SPC都包括協同處理單元(SPU )。 SPU優選地是單指令、多數據(SIMD)處理器,例如數位訊號處理 器、微控制器或者這些核的組合。在一個優選實施方式中,每個SPU 包括局部存儲器、寄存器、四個浮點單元和四個整數單元。然而,根 據所需的處理能力,可以釆用更多或更少的浮點單元和整數單元。SPC 910、 930和950被連接到處理器元件總線970 ,該總線在SPC 、 處理單元975、 L2存儲器980、存儲器控制器985和I/O控制器990 之間傳遞信息。存儲器控制器985與用於存取數據的存儲器件988通 信,而1/0控制器9卯與屬於外圍設備的1/0設備995通信。雖然圖9中所示的計算機系統能夠執行這裡描述的處理,但是該 計算機系統只是計算機系統的 一個例子。本領域的技術人員將認識到, 很多其它計算機系統設計也能夠執行這裡描述的處理。本發明的優選實施方案之一是客戶應用,即在例如可以駐留在計 算機的隨機訪問存儲器中的代碼模塊中的一組指令(程序代碼)。在被 計算機需求前,該組指令可以被存儲在另一個計算機存儲器中,例如 存儲在硬碟驅動器中,或者存儲在可移動存儲器例如光碟(最終用於 CD ROM中)或軟盤(最終用於軟盤驅動器中)中,或者可以通過因 特網或其它計算機網絡下載。因此,本發明可以被實施為用於計算機 中的電腦程式產品。此外,雖然所描述的多種方法被方便地實施在 通過軟體選擇性地激活或重新配置的通用計算機中,但是本領域的技 術人員也會認識到這樣的方法可以用硬體、固件或者被構建來執行所 需的方法步驟的更專用的裝置來實現。雖然已經顯示和描述了本發明的具體實施方式
,但本領域的技術 人員很清楚,根據這裡的教導可以做出多種改變和變形,而不會偏離 本發明及其更寬廣的方面。因此,所附權利要求在它們的範圍內包括 落入本發明的真實精神和範圍內的所有這樣的改變和變形。此外,可 以理解本發明僅由所附的權利要求來限定。本領域的技術人員將會明白,如果想要保護特定數量的引入的權利要求特徵,這樣的意圖將被 直接記載在該權利要求中,在缺少這樣的記載的情況下,則不存在這 樣的限制。舉一個非限制性的例子,為幫助理解,所附權利要求中包 含介紹性的短語"至少一個,,和"一個或多個"的使用,以引入權利要求 的技術特徵。然而,這樣的短語的使用不應被理解為意味著前面加上求限制為僅包含一個這樣的技術特徵的發明,即使當同一權利要求包括介紹性的短語"一個或多個"或"至少一個"和不定冠詞時;對於使用 定冠詞的權利要求同樣如此。
權利要求
1. 一種計算機實施的方法,包括在DMA隊列處選擇DMA命令,該DMA命令包括多個DMA命令欄位;確定包括在所述DMA命令欄位之一中的實際頁號是否有效;以及響應於確定所述實際頁號有效,從所述DMA隊列提供所述實際頁號以處理所述DMA命令。
2. 根據權利要求1所述的方法,還包括檢查包括在所述多個DMA命令欄位之一中的實際地址有效位,該 實際地址有效位表明所述實際頁號是否有效;響應於確定所述實際頁號不是有效的,向存儲器管理單元發送翻譯 請求;以及從所述存儲器管理單元提供新的實際頁號以處理所述DMA命令。
3. 根據權利要求2所述的方法,還包括配置復用器在所述實際頁號有效的情況下選擇所述實際頁號,在所 述實際頁號不是有效的情況下選擇所述新的實際頁號。
4. 根據權利要求2所述的方法,還包括確定所述存儲器管理單元是否找到了與所述翻譯請求相對應的新 的實際頁號;響應於確定所述存儲器管理單元找到了該新的實際頁號,將該新的 實際頁號存儲在所述多個DMA命令欄位之一中;以及響應於確定所述存儲器管理單元找到了該新的實際頁號,置位所述 實際地址有效位。
5. 根據權利要求1所述的方法,還包括接收寫回信息,該寫回信息包括遞減後的傳輸大小和實際頁號;以及將該寫回信息存儲在所述多個DMA命令欄位中。
6. 根據權利要求5所述的方法,還包括識別被包括在所述多個DMA命令欄位之一中的傳輸大小; 檢測與對於相應的DMA命令要傳輸的數據量相對應的最大傳輸大 小允許值;以及從所述傳輸大小減去所述最大傳輸大小允許值,該減法操作產生遞 減後的傳輸大小。
7. 根據權利要求6所述的方法,還包括基於所述遞減後的傳輸大小,識別不需要其它對應於所述DMA命 令的DMA請求;以及響應於識別出不需要其它對應於所述DMA命令的DMA請求,復 位包括在所述多個DMA命令欄位之一中的隊列條目有效位。
8. 根據權利要求6所述的方法,還包括在所述減法操作後,使對應於所述DMA命令的有效地址遞增; 基於遞增後的有效地址確定是否到達了頁的末端;以及 響應於確定到達了頁的末端,復位包括在所述多個DMA命令欄位 之一 中的實際地址有效位。
9. 根據權利要求1所述的方法,其中,所述多個DMA命令欄位 中的至少一個是從隊列條目有效位欄位、實際地址有效位欄位和實際 頁號欄位中選出的。
10. 根據權利要求1所述的方法,還包括其中,使用寬帶處理器體系結構來執行該方法,該寬帶處理器體系 結構包括多個異構處理器、公共存儲器和公共總線;以及其中,所述多個異構處理器使用不同的指令集並且共享所述公共存 儲器和所述公共總線。
11. 根據權利要求10所述的方法,其中,所述寬帶處理器體系結 構是片上系統。
12. —種信息處理系統,包括 一個或多個處理器; 可由所述處理器訪問的存儲器;可由所述處理器訪問的一個或多個非易失存儲裝置;和用於處理DMA命令的DMA命令工具,該DMA命令工具用於 在包括在所述存儲器中的DMA隊列處選擇DMA命令,該DMA命令包括多個DMA命令欄位;確定包括在所述DMA命令欄位之一中的實際頁號是否有效;以及響應於確定所述實際頁號有效,從所述DMA隊列提供所述實 際頁號以處理所述DMA命令。
13. 根據權利要求12所述的信息處理系統,其中,所述DMA命 令工具還用於檢查包括在所述存儲器中的實際地址有效位,該實際地址有效位表 明所述實際頁號是否有效;響應於確定所述實際頁號不是有效的,向存儲器管理單元發送翻譯 請求;從所述存儲器管理單元提供新的實際頁號以處理所述DMA命令; 以及配置復用器在所述實際頁號有效的情況下選擇所述實際頁號,在所 述實際頁號不是有效的情況下選擇所述新的實際頁號。
14. 根據權利要求13所述的信息處理系統,其中,所述DMA命 令工具還用於確定所述存儲器管理單元是否找到了與所述翻譯請求相對應的新 的實際頁號;響應於確定所述存儲器管理單元找到了該新的實際頁號,將該新的 實際頁號存儲在包括在所述存儲器中的多個DMA命令欄位之一中; 以及響應於確定所述存儲器管理單元找到了該新的實際頁號,置位包括 在所述多個DMA命令欄位之一中的實際地址有效位。
15. 根據權利要求12所述的信息處理系統,其中,所述DMA命 令工具還用於接收寫回信息,該寫回信息包括遞減後的傳輸大小和實際頁號;以及將該寫回信息存儲在包括在所述存儲器中的所述多個DMA命令字 段中。
16. 根據權利要求15所迷的信息處理系統,其中,所述DMA命 令工具還用於識別被包括在所述多個DMA命令欄位之一中的傳輸大小; 檢測與對於相應的DMA命令要傳輸的數據量相對應的最大傳輸大 小允許值;從所述傳輸大小減去所述最大傳輸大小允許值,該減法操作產生遞 減後的傳輸大小;基於所述遞減後的傳輸大小,識別不需要其它對應於所述DMA命 令的DMA請求;以及響應於識別出不需要其它對應於所述DMA命令的DMA請求,復 位包括在所述多個DMA命令欄位之一中的隊列條目有效位。
17. 根據權利要求12所述的信息處理系統,其中,該信息處理系 統是寬帶處理器體系結構,該寬帶處理器體系結構包括多個異構處理 器、公共存儲器和公共總線;並且其中,所述多個異構處理器使用不 同的指令集並且共享所述公共存儲器和所述公共總線。
18. 根據權利要求12所述的信息處理系統,其中,該信息處理系 統是片上系統。
19. 根據權利要求12所述的信息處理系統,其中,該信息處理系 統被包括在從遊戲機、筆記本計算機、個人計算機和手持設備中選出 的系統中。
20. —種電腦程式產品,包括具有計算機可讀代碼的計算機可操作介質,該計算機可讀代碼用於在DMA隊列處選擇DMA命令,該DMA命令包括多個DMA 命令欄位;確定包括在所述DMA命令欄位之一中的實際頁號是否有效;以及響應於確定所述實際頁號有效,從所述DMA隊列提供所述實 際頁號以處理所述DMA命令。
21. 根據權利要求20所述的電腦程式產品,其中所述計算機可 讀代碼還用於檢查實際地址有效位,該實際地址有效位表明所述實際頁號是否有效;響應於確定所述實際頁號不是有效的,向存儲器管理單元發送翻譯 請求;從所述存儲器管理單元提供新的實際頁號以處理所述DMA命令;以及配置復用器在所述實際頁號有效的情況下選擇所述實際頁號,在所 述實際頁號不是有效的情況下選擇所述新的實際頁號。
22. 根據權利要求21所述的電腦程式產品,其中所述計算機可 讀代碼還用於確定所述存儲器管理單元是否找到了與所述翻譯請求相對應的新 的實際頁號;響應於確定所述存儲器管理單元找到了該新的實際頁號,將該新的 實際頁號存儲在所述多個DMA命令欄位之一中;以及響應於確定所述存儲器管理單元找到了該新的實際頁號,置位包含 在所述多個DMA命令欄位之一中的實際地址有效位。
23. 根據權利要求20所述的電腦程式產品,其中所述計算機可 讀代碼還用於接收寫回信息,該寫回信息包括遞減後的傳輸大小和實際頁號;以及將該寫回信息存儲在所迷多個DMA命令欄位中。
全文摘要
提供了一種用於改進的DMAC翻譯機制的系統和方法。DMA命令基於該DMA命令的傳輸大小和計算機系統一次傳輸的數據量而被「調出」。對於第一個DMA請求,DMA隊列請求存儲器管理單元執行地址翻譯。DMA隊列從MMU接收實際頁號,在後面的調出請求時,DMA隊列將實際頁號提供給總線接口單元而不訪問MMU,直到傳輸跨入下一頁。調出邏輯在每個DMA請求後使DMA命令的傳輸大小遞減,確定是否已到達了新的頁,確定是否已完成DMA命令,並且發送寫回信息到DMA隊列用於後面的DMA請求。
文檔編號G06F12/10GK101278269SQ200680036685
公開日2008年10月1日 申請日期2006年9月27日 優先權日2005年10月7日
發明者D·穆伊, M·E·金, 培軍·P·劉, 齊潔明 申請人:國際商業機器公司