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