亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于執(zhí)行dma塊移動的方法及dma設(shè)備的制作方法

文檔序號:6457614閱讀:417來源:國知局
專利名稱:用于執(zhí)行dma塊移動的方法及dma設(shè)備的制作方法
用于執(zhí)行DMA塊移動的方法及DMA i殳備技術(shù)領(lǐng)域本申請通常涉及改進的數(shù)據(jù)處理系統(tǒng)和方法。更具體地說,本申請涉 及具有用于高等待時間和亂序直接存儲器訪問設(shè)備的屏障和中斷機制的直 接存儲器訪問控制器。
背景技術(shù)
許多片上系統(tǒng)(SOC )設(shè)計都包含一種稱為直接存儲器訪問(DMA) 控制器的設(shè)備。DMA的用途是高效地將數(shù)據(jù)塊從存儲器中的一個位置移 動到另一個位置。DMA控制器通常用于在系統(tǒng)存儲器與輸V輸出(I/O) 設(shè)備之間移動數(shù)據(jù),但是也用于在系統(tǒng)存儲器中的一個區(qū)域與另一個區(qū)域 之間移動數(shù)據(jù)。DMA控制器被稱為"直接"是因為移動數(shù)據(jù)時不涉及處 理器。在沒有DMA控制器的情況下,可以通過在軟件控制下,使處理器逐 步地將數(shù)據(jù)從一個存儲器空間復(fù)制到另 一個存儲器空間來移動數(shù)據(jù)塊。這 對于較大數(shù)據(jù)塊而言通常并不可取。當處理器逐步地復(fù)制較大數(shù)據(jù)塊時, 速度比較緩慢,因為處理器沒有較大的存儲器緩沖區(qū)并且必須以較小的大 小低效率地移動數(shù)據(jù),例如每次32位。此外,當處理器進行復(fù)制時,它沒 有時間執(zhí)行其他工作。因此,處理器一直處于使用狀態(tài)直至移動完成。使 DMA控制器承擔這些數(shù)據(jù)塊移動可以更高效,DMA控制器可以更快地并 且與其他工作并行地執(zhí)行這些移動。DMA控制器通常具有多個"通道"。如在此使用的,"通道"指要 通過DMA控制器移動的獨立數(shù)據(jù)流。因此,可以將DMA控制器編程為 在不同的通道上同時執(zhí)行數(shù)個塊移動,從而允許DMA設(shè)備同時向/從數(shù)個 1/0設(shè)備傳輸數(shù)據(jù)。DMA控制器的另一個典型特性是,收集操作。^t/收集操作是指 其中處理器不需要為要從某一源移動到某一目的地的每個數(shù)據(jù)塊對DMA 控制器進行編程的操作。相反,處理器在系統(tǒng)存儲器中建立描述符表或描 述符鏈接列表。描述符表或鏈接列表是一組描述符。每個描述符都描述了 數(shù)據(jù)塊移動,包括源地址、目的地地址以及要傳輸?shù)淖止?jié)數(shù)。將非分* 收集塊移動(直接通過DMA寄存器進行編程)稱為"單個編程"DMA塊 移動。DMA控制器的鏈接列表體系結(jié)構(gòu)比表體系結(jié)構(gòu)更具靈活性和動態(tài)性。 在鏈接列表體系結(jié)構(gòu)中,處理器使DMA通道之一引用鏈中的第一個描述 符,并且鏈接列表中的每個描述符都包含指向存儲器中下一個描述符的指 針。描述符可以位于系統(tǒng)存儲器中的任何位置,并且處理器可以在發(fā)生傳 輸時動態(tài)在列表中進行添加。DMA控制器自動遍歷表或列表并執(zhí)行每個 描述符所描述的數(shù)據(jù)塊移動,直至到M或列表的結(jié)尾?,F(xiàn)代的DMA設(shè)備可以連接到允許讀取數(shù)據(jù)亂序返回的總線。也就是 說,DMA控制器可以向總線發(fā)出數(shù)個全部為相同或不同數(shù)據(jù)塊移動的一 部分的讀取事務(wù),并且目標設(shè)備可以按照與發(fā)出讀取順序不同的順序返回 數(shù)據(jù)。通常,發(fā)起者為每個讀取事務(wù)分配一個"標記"號,以便當讀取數(shù) 據(jù)從總線返回時,發(fā)起者將根據(jù)標記知道數(shù)據(jù)所屬的事務(wù)。排隊的事務(wù)可以以任何順序完成。這允許DMA設(shè)備通過同時將多個 事務(wù)排隊到總線(包括將不同事務(wù)排隊到不同設(shè)備)來實現(xiàn)最佳性能。讀 取事務(wù)可以以任何順序完成,并且當讀取數(shù)據(jù)到達時立即啟動其關(guān)聯(lián)的寫 入。允許按照任何順序完成讀取及其關(guān)聯(lián)寫入將在給定總線上實現(xiàn)可能的 最佳性能,但是可能會導(dǎo)致某些問題。當系統(tǒng)軟件建立要在I/O設(shè)備與存儲器之間移動或從存儲器中的一個 區(qū)域移動到另 一個區(qū)域的大型存儲器塊時,軟件將需要知道何時完成移動 數(shù)據(jù)塊以便它可以對數(shù)據(jù)采取操作。由于處理器或某些其他設(shè)備可能會在 傳輸完成時對數(shù)據(jù)采取操作,所以必須直至所有與移動關(guān)聯(lián)的數(shù)據(jù)都已傳 輸時才能生成中斷;否則,處理器可能會嘗試對尚未傳輸?shù)臄?shù)據(jù)釆取操作,并且因此將讀取錯誤的數(shù)據(jù)。在亂序執(zhí)行時,DMA設(shè)備不能筒單地在塊 中的最后一個事務(wù)完成時生成中斷。某些系統(tǒng)通過當一系列數(shù)據(jù)移動完成時使"完成代碼"移動到"郵箱" 來工作。郵箱是用作消息的先進先出(FIFO)的消息傳送設(shè)備。當DMA 控制器通過寫入郵箱地址來將消息傳送到郵箱時,DMA控制器可以按順 序?qū)⑾魉偷教幚砥鳌O⑼ǔ?艮小,在八字節(jié)或十六字節(jié)的量級。當 軟件在^L/收集列表中建立一系列塊移動時,軟件可以在描述符鏈接列表 中輸入完成消息,以便DMA設(shè)備可以通過同一^t/收集描述符列表來移 動數(shù)據(jù)塊和完成代碼消息兩者。但是,為了使軟件正確工作,當DMA控制器將完成消息寫入郵箱時, 正在寫入郵箱的描述符之前的所有描述符都必須已完成,因為郵箱^象中斷 一樣,將通知處理器已移動一定量的數(shù)據(jù)。由于所有事務(wù)都可以為了性能 而亂序完成,所以DMAi殳備可以在來自先前描述符的某些其他事務(wù)完成 之前將完成消息寫入郵箱,除非存在一種機制來防止這種情況。發(fā)明內(nèi)容示例性實施例認識到現(xiàn)有技術(shù)的缺點,并提供了一種包括屏障和中斷 機制的直接存儲器訪問(DMA)設(shè)備,所述機制允許中斷和郵箱操作以這 樣的方式發(fā)生確保正確的操作,但只要有可能,仍允許發(fā)生高性能的亂 序數(shù)據(jù)移動。將特定描述符定義為"屏障描述符"。當DMA設(shè)備遇到屏 障描述符時,它確保在屏障描述符完成之前完成所有先前描述符。所述 DMA設(shè)備還確保直至與屏障描述符關(guān)聯(lián)的數(shù)據(jù)移動完成,才斷言由屏障 描述符生成的任何中斷。DMA控制器僅允許由屏障描述符生成中斷。屏 障描述符概念還允許軟件將郵箱完成消息嵌入描述符的分散/收集鏈接列 表。在一個示例性實施例中,提供了一種用于在直接存儲器訪問設(shè)備中執(zhí) 行直接存儲器訪問塊移動的方法。所述方法包括接收直接存儲器訪問塊移 動描述符。所述直接存儲器訪問塊移動描述符指示了源和目標。所述直接存儲器訪問塊移動描述符被標識為屏障描述符。所述方法還包括將所述 直接存儲器訪問塊移動描述符轉(zhuǎn)換為所述直接存儲器訪問塊移動描述符的 一個或多個直接存儲器訪問請求;標識所述一個或多個直接存儲器訪問請 求內(nèi)的最后一個直接存儲器訪問請求;以及處理所述一個或多個直接存儲 器訪問請求以滿足直接存儲器訪問塊移動請求,以便所述直接存儲器訪問 設(shè)備在處理所述一個或多個直接存儲器訪問請求內(nèi)的所有其他直接存儲器 訪問請求之前,不會處理所述最后一個直接存儲器訪問請求。在一個示例性實施例中,所述方法還包拾沒置與所述最后一個直接存 儲器訪問請求關(guān)聯(lián)的屏障屬性。在另一個示例性實施例中,所述方法還包 括每次處理屏障描述符時切換屏障標記。在另一個示例性實施例中,所述 方法還包括響應(yīng)于完成所述最后一個直接存儲器訪問請求而生成中斷。在 再一個示例性實施例中,將所述最后一個直接存儲器訪問請求配置為將完 成代碼移動到郵箱。在另一個示例性實施例中,提供了一種用于在直接存儲器訪問設(shè)備內(nèi) 的直接存儲器訪問引擎中執(zhí)行直接存儲器訪問塊移動的方法。所述方法包 括接收直接存儲器訪問塊移動描述符。所述直接存儲器訪問塊移動描述符 指示了源和目標。所述直接存儲器訪問塊移動描述符被標識為屏障描述符。 所述方法還包括將所述直接存儲器訪問塊移動描述符轉(zhuǎn)換為所述直接存 儲器訪問塊移動描述符的一個或多個直接存儲器訪問請求;標識所述一個 或多個直接存儲器訪問請求內(nèi)的最后一個直接存儲器訪問請求;以及設(shè)置 與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的屏障屬性。對于所述一個或多 個直接存儲器訪問請求中的每個給定直接存儲器訪問請求,所述方法判定 是否為所述給定直接存儲器訪問請求設(shè)置了所述屏障屬性;如果設(shè)置了所 述屏障屬性,則判定對于與所述給定直接存儲器訪問請求關(guān)聯(lián)的通道而言 屏障是否未決;以及如果對于與所述給定直接存儲器訪問請求關(guān)聯(lián)的通道 而言屏障沒有未決,則向所述直接存儲器訪問設(shè)備中的總線引擎發(fā)出所述 給定直接存儲器訪問請求。在一個示例性實施例中,所述方法還包括如果沒有為所述給定直接存儲器訪問請求設(shè)置所述屏障屬性,則向所述總線引擎發(fā)出所述給定直接存 儲器訪問。在另一個示例性實施例中,所述方法還包括如果對于與所述給 定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障未決,則保持所述給定直接存 儲器訪問請求,直至從所述總線引擎接收到針對與給定直接存儲器訪問請 求關(guān)聯(lián)的通道的屏障清除信號。在另 一個示例性實施例中,所述方法還包括響應(yīng)于向所述總線引擎發(fā) 出所述給定直接存儲器訪問請求,切換屏障標記,以《更所述屏障第一側(cè)上 的直接存儲器訪問請求使屏障標記被設(shè)置為第 一值,并且所述屏障第二側(cè) 上的直接存儲器訪問請求使屏障標記被設(shè)置為第二值。在另 一個實施例中,所述直接存儲器訪問塊移動描述符設(shè)置了中斷位。 所述方法還包括設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的中斷位。在另 一個示例性實施例中,提供了 一種用于在直接存儲器訪問設(shè)備內(nèi)的總線引擎中執(zhí)行直接存儲器訪問塊移動的方法,所述方法包括從直接 存儲器訪問隊列接收直接存儲器訪問請求;判定所述直接存儲器訪問請求 是否設(shè)置了屏障屬性;如果所述直接存儲器訪問請求設(shè)置了屏障屬性,則 判定所述屏障之前的所有直接存儲器訪問請求是否都已完成;以及如果所 述屏障之前的所有直接存儲器訪問請求尚未完成,則保持所述直接存儲器訪問請求以防止完成。在一個示例性實施例中,所述方法還包括如果所述直接存儲器訪問請求在所述屏障之后并且未設(shè)置屏障屬性,則發(fā)出針對直接存儲器訪問請求 的直接存儲器訪問事務(wù)。在另一個示例性實施例中,所述方法還包括如果 直接存儲器訪問請求所述在屏障之前并且未設(shè)置屏障屬性,則發(fā)出針對所 述直接存儲器訪問請求的直接存儲器訪問事務(wù)。在另一個示例性實施例中,所述方法還包括響應(yīng)于發(fā)出所述直接存儲 器訪問事務(wù),判定所述屏障之前的未設(shè)置所述屏障屬性的所有直接存儲器 訪問請求是否已完成;如果所述屏障之前的未設(shè)置所述屏障屬性的所有直 接存儲器訪問請求都已完成,則判定設(shè)置了所述屏障屬性的屏障直接存儲 器訪問請求是否被保持以防止完成;以及如果設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求被保持以防止完成,則發(fā)出針對所述屏障直接存儲器 訪問請求的直接存儲器訪問事務(wù)。在另一個示例性實施例中,所述方法還包括響應(yīng)于發(fā)出針對屏障直接 存儲器請求的直接存儲器事務(wù),判定是否為所述屏障直接存儲器請求設(shè)置 了中斷位,以及如果為所述屏障直接存儲器訪問請求設(shè)置了中斷位,則生 成中斷。在另一個示例性實施例中,提供了一種直接存儲器訪問設(shè)備,所述設(shè) 備包括直接存儲器訪問引擎和總線引擎。將所述直接存儲器訪問引擎配置 為接收直接存儲器訪問塊移動描述符。所述直接存儲器訪問塊移動描述符 指示了源和目標。將所述直接存儲器訪問塊移動請求標識為屏障描述符。 所述直接存儲器訪問引擎還配置為將所述直接存儲器訪問塊移動描述符轉(zhuǎn) 換為所述直接存儲器訪問塊移動描述符的一個或多個直接存儲器訪問請求;標識所述一個或多個直接存儲器訪問請求內(nèi)的最后一個直接存儲器訪 問請求;設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的屏障屬性;以及 向直接存儲器訪問隊列發(fā)出所述一個或多個直接存儲器訪問請求。所述總 線引擎被配置為從直接存儲器訪問隊列接收直接存儲器訪問請求;判定 所述直接存儲器訪問請求是否設(shè)置了屏障屬性;如果所述直接存儲器訪問 請求設(shè)置了屏障屬性,則判定所述屏障之前的所有直接存儲器訪問請求是 否都已完成;以及如果所述屏障之前的所有直接存儲器訪問請求尚未完成, 則保持所述直接存儲器訪問請求以防止完成。在一個示例性實施例中,所述直接存儲器訪問引擎還配置為如果對于與給定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障未決,則保持所述給定直 接存儲器訪問請求,直至從所述總線引擎接收到針對與所述給定直接存儲 器訪問請求關(guān)聯(lián)的通道的屏障清除信號。在另一個示例性實施例中,所述直接存儲器訪問引擎還配置為響應(yīng)于 向所述總線引擎發(fā)出給定直接存儲器訪問請求,切換屏障標記,以便所述 屏障第一側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置為第 一值,并且所 述屏障第二側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置為第二值。在另 一個示例性實施例中,所述總線引擎還配置為如果所述直接存儲 器訪問請求在所述屏障之前并且未設(shè)置屏障屬性,則發(fā)出針對所述直接存 儲器訪問請求的直接存儲器訪問事務(wù)。在另一個示例性實施例中,所述總線引擎還配置為響應(yīng)于發(fā)出所述直 接存儲器訪問事務(wù),判定所述屏障之前的未設(shè)置所述屏障屬性的所有直接 存儲器訪問請求是否已完成。如果所述屏障之前的未設(shè)置所述屏障屬性的 所有直接存儲器訪問請求都已完成,所述總線引擎配置為判定設(shè)置了所述 屏障屬性的屏障直接存儲器訪問請求是否被保持以防止完成。如果設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求被保持以防止完成,所述總線引 擎配置為發(fā)出針對所述屏障直接存儲器訪問請求的直接存儲器訪問事務(wù)。本發(fā)明的這些和其他特征和優(yōu)點將在以下對本發(fā)明示例性實施例的詳 細說明中進行描述,或者鑒于以下對本發(fā)明示例性實施例的詳細說明,本 發(fā)明的這些和其他特征和優(yōu)點將對本領(lǐng)域的技術(shù)人員變得顯而易見。


當結(jié)合附圖閱讀時,通過參考以下對示例性實施例的詳細說明,可以最佳地理解本發(fā)明及其優(yōu)選使用方式、進一步的目的和優(yōu)點,這些附圖是 圖1是可在其中實現(xiàn)示例性實施例的各方面的數(shù)據(jù)處理系統(tǒng)的示例性 方塊圖;圖2是可在其中實現(xiàn)示例性實施例的各方面的示例性數(shù)據(jù)處理系統(tǒng)的 方塊圖;圖3是示出根據(jù)示例性實施例的南橋的方塊圖; 圖4示出了根據(jù)示例性實施例的具有屏障描述符的直接存儲器訪問設(shè) 備的總體操作;圖5A示出了根據(jù)示例性實施例的實例描述符;圖5B示出了根據(jù)示例性實施例的DMA請求屬性的實例;圖6示出了才艮據(jù)一個示例性實施例的總體總線引擎隊列結(jié)構(gòu);圖7是示出根據(jù)示例性實施例的直接存儲器訪問引擎處理描述符的操作的流程圖;圖8是示出根據(jù)示例性實施例的向總線引擎發(fā)出請求的直接存儲器訪 問引擎的操作的流程圖;以及圖9A和9B是示出根據(jù)示例性實施例的實施屏障的總線引擎的操作的 流程圖。
具體實施方式
現(xiàn)在參考附圖,具體地說,參考圖1-2,提供了可在其中實現(xiàn)本發(fā)明的 示例性實施例的數(shù)據(jù)處理環(huán)境的示意圖。應(yīng)當理解,圖l-2僅是示例性的, 并非旨在斷言或暗示與可在其中實現(xiàn)本發(fā)明的各方面或?qū)嵤├沫h(huán)境有關(guān) 的任何限制??梢詫λ经h(huán)境進行許多修改而不偏離本發(fā)明的精神和范圍。圖1是可在其中實現(xiàn)示例性實施例的各方面的數(shù)據(jù)處理系統(tǒng)的示例性 方塊圖。圖1中所示的示例性數(shù)據(jù)處理系統(tǒng)是單元寬帶引擎(CBE)數(shù)據(jù) 處理系統(tǒng)的實例。雖然CBE將用于本發(fā)明的優(yōu)選實施例的說明中,但是本 發(fā)明并不限于此,如本領(lǐng)域的技術(shù)人員在閱讀以下說明時將顯而易見的那 樣。如圖1所示,CBE 100包括Power處理器元件(PPE) 110,其具有 處理器(PPU) 116及其Ll和L2高速緩存112和114;以及多個協(xié)同處 理器元件(SPE )120-134,每個元件都具有其自己的協(xié)同處理器單元(SPU) 140-154、存儲器流控制155-162、本地存儲器或存儲裝置(LS) 163-170 以及總線接口單元(BIU單元)180-194,所述總線接口單元可以例如是直 接存儲器訪問(DMA)、存儲器管理單元(MMU)和總線接口單元的組 合。還提供了高帶寬內(nèi)部元件互連總線(EIB)196、總線接口控制器(BIC) 197以及存儲器接口控制器(MIC) 198。本地存儲器或本地存儲(LS) 163-170是大型存儲器映射的非相干可 尋址部分,其在物理上可作為連接到SPU 140-154的小型存儲器來提供。 本地存儲163-170可以映射到不同的地址空間。在不具別名的配置中,這 些地址區(qū)域是連續(xù)的。本地存儲163-170通過其地址位置(例如通過下文中更詳細說明的SPU標識寄存器)與其相應(yīng)的SPU 140-154和SPE 120-134 關(guān)聯(lián)。只要本地存儲未置于安全操作模式下,系統(tǒng)中的任何資源都能夠讀 取/寫入本地存儲163-170,在安全操作模式下,只有其關(guān)聯(lián)的SPU可以訪 問本地存儲163-170或本地存儲163-170的指定安全部分。CBE IOO可以是片上系統(tǒng),以便可以在單個微處理器芯片上提供圖1 中所示的每個元件。此外,CBE100是異構(gòu)處理環(huán)境,其中每個SPU都可 以從系統(tǒng)中的每個其他SPU接收不同的指令。此外,SPU的指令集不同于 PPU的指令集,例如,PPU可以執(zhí)行基于精簡指令集計算機(RISC)的指令, 而SPU執(zhí)行向量化的指令。SPE 120-134彼此連接并通過EIB 196連接到L2高速緩存114。此外, SPE 120-134通過EIB 196連接到MIC 198和BIC 197。 MIC 198 4€供了到 共享存儲器199的通信接口。 BIC 197提供了 BPA 100與其他外部總線和 設(shè)備之間的通信接口。PPE 110是雙線程的PPE 110。此雙線程的PPE 110和8個SPE 120-134 的組合使得CBE 100能夠處理IO個同時的線程和多于128個的未完成存儲 器請求。PPE 110充當處理大多數(shù)計算工作負荷的其他8個SPE 120-134 的控制器。例如,PPE 110可用于運行常規(guī)的操作系統(tǒng),而SPE 120-134 執(zhí)行向量化的浮點代碼執(zhí)行。SPE 120-134包括協(xié)處理單元(SPU) 140-154、存儲器流控制單元 155-162、局部存儲器或存儲163-170以及接口單元180-194。在一個示例 性實施例中,局部存儲器或存儲163-170包括256 KB指令和數(shù)據(jù)存儲器, 該存儲器對PPE 110是可見的并且可以由軟件直接尋址。PPE 110可以使用小程序或線程來加載SPE 120-134,將SPE鏈接在一 起以處理復(fù)雜運算中的每個步驟。例如,結(jié)合了 CBE 100的機頂盒可以加 載程序以便讀取DVD、進行視頻和音頻解碼和顯示,并且數(shù)據(jù)將在SPE之 間傳輸,直到最終到達輸出顯示設(shè)備。在4GHz時,每個SPE 120-134提 供理論上為32 GFLOP的性能,且PPE 110具有類似級別的性能。存儲器流控制單元(MFC) 155-162用作SPU到系統(tǒng)的其余部分和其他元件的接口。 MFC 155-162提供了用于在主存儲與局部存儲163-170之間 進行數(shù)據(jù)傳輸、保護和同步的主要機制。對于處理器中的每個SPU都邏輯 地存在MFC。某些實施方式可以在多個SPU之間共享單個MFC的資源。在 這種情況下,為MFC定義的所有工具和命令都必須看起來獨立于每個SPU 的軟件。共享MFC的作用限于實施方式相關(guān)的工具和命令?,F(xiàn)在參考圖2,圖2示出了可在其中實現(xiàn)示例性實施例的各方面的示 例性數(shù)據(jù)處理系統(tǒng)的方塊圖。在所示實例中,數(shù)據(jù)處理系統(tǒng)200采用包括 南橋和輸入/輸出(I/O)控制器集線器(SB/ICH) 204的集線器體系結(jié)構(gòu)。 處理單元202通過存儲器接口控制器(MIC) 210連接到系統(tǒng)存儲器208。 處理單元202通過總線接口控制器(BIC ) 206連接到SB/ICH 204。在所示實例中,局域網(wǎng)(LAN)適配器212連接到SB/ICH204。音頻 適配器216、鍵盤和鼠標適配器220、調(diào)制解調(diào)器222、只讀存儲器(ROM) 224、硬盤驅(qū)動器(HDD)226、 CD-ROM驅(qū)動器230、通用串行總線(USB) 端口和其他通信端口 232以及PCI/PCIe設(shè)備234通過總線238和總線240 連接到SB/ICH 204。 PCI/PCIei殳備可以包括例如以太網(wǎng)適配器、附加卡 以及用于筆記本計算機的PC卡。PCI使用卡總線控制器,而PCIe則不使 用。ROM224可以例如是閃速二進制輸入/輸出系統(tǒng)(BIOS)。HDD 226和CD-ROM驅(qū)動器230通過總線240連接到SB/ICH 204。 HDD 226和CD-ROM驅(qū)動器230可以使用例如集成驅(qū)動器電子設(shè)擬IDE ) 或串行高級技術(shù)附件(SATA)接口。超級1/0 (SIO)設(shè)備236可以連接 到SB/ICH 204。操作系統(tǒng)在處理單元202上運行。操作系統(tǒng)協(xié)調(diào)和提供對圖2中數(shù)據(jù) 處理系統(tǒng)200內(nèi)的各種組件的控制。作為客戶端,操作系統(tǒng)可以是可從市 場上購買的操作系統(tǒng)。面向?qū)ο蟮木幊滔到y(tǒng)(例如JavaTM編程系統(tǒng))可以 與操作系統(tǒng)一起運行,并從數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的JavaTM程序或應(yīng)用 提供到操作系統(tǒng)的調(diào)用(Java是Sun Microsystems, Inc.在美國和/或其他 國家/地區(qū)的商標)。作為服務(wù)器,數(shù)據(jù)處理系統(tǒng)200可以例如是在高級交互執(zhí)行(AIX )操作系統(tǒng)或LINUX⑧操作系統(tǒng)上運行的IBM eServer 861^8@計算機系 統(tǒng) (eServer 、 pSeries 和 AIX 是International Business Machines Corporation在美國和/或其他國家/地區(qū)的商標,而LINUX是Linus Torvalds在美國和/或其他國家/地區(qū)的商標)。數(shù)據(jù)處理系統(tǒng)200可以在 處理單元202中包括多個處理器。備選地,可以使用單處理器系統(tǒng)。用于操作系統(tǒng)、面向?qū)ο蟮木幊滔到y(tǒng)以及應(yīng)用或程序的指令位于存儲 設(shè)備(例如HDD 226 )上,并且可以被加載到主存儲器208中以便由處理 單元202執(zhí)行。處理單元202可以使用計算機可用程序代碼執(zhí)行本發(fā)明的 示例性實施例的過程,所述代碼可以位于諸如主存儲器208、 ROM 224或 一個或多個外圍設(shè)備226和230之類的存儲器中??偩€系統(tǒng)(例如圖2中所示的總線238或總線240)可以包括一條或 多條總線。當然,總線系統(tǒng)可以使用任何類型的通信結(jié)構(gòu)或架構(gòu)實現(xiàn),這 些結(jié)構(gòu)或架構(gòu)可在與它們連接的不同組件或設(shè)備之間傳輸數(shù)據(jù)。通信單元 (例如圖2的調(diào)制解調(diào)器222或網(wǎng)絡(luò)適配器212)可以包括一個或多個用 于傳輸和接收數(shù)據(jù)的設(shè)備。存儲器可以例如是主存儲器208、 ROM 224或 者例如在圖2中的NB/MCH202中找到的高速緩存。本領(lǐng)域的技術(shù)人員將理解,圖1-2中的硬件可以根據(jù)實施方式的不同 而有所變化。除了圖1-2中所示的硬件或替代圖1-2中所示的硬件,還可 以使用其他內(nèi)部硬件或外圍設(shè)備(例如閃存、等效的非易失性存儲器或光 盤驅(qū)動器等)。此外,可以將示例性實施例的過程應(yīng)用于除上述SMP系 統(tǒng)之外的多處理器數(shù)據(jù)處理系統(tǒng)而不偏離本發(fā)明的精神和范圍。此外,翁:據(jù)處理系統(tǒng)200可以采用多種不同的翁:據(jù)處理系統(tǒng)的任何一 種,其中包括客戶端計算設(shè)備、服務(wù)器計算設(shè)備、平板電腦、便攜式計算 機、電話或其他通信^殳備、個人數(shù)字助理(PDA)、視頻游戲控制臺等。 在某些示例性實例中,數(shù)據(jù)處理系統(tǒng)200例如可以是便攜式計算設(shè)備,其 配置有閃存以提供非易失性存儲器來存儲操作系統(tǒng)文件和/或用戶生成的 數(shù)據(jù)。實際上,數(shù)據(jù)處理系統(tǒng)200可以是任何已知或未來開發(fā)的數(shù)據(jù)處理 系統(tǒng)而沒有體系結(jié)構(gòu)限制。南橋204可以包括直接存儲器訪問(DMA)控制器。DMA控制器通 常用于在系統(tǒng)存儲器和輸入/輸出(I/O)設(shè)備之間移動數(shù)據(jù),但是也用于 在系統(tǒng)存儲器中的一個區(qū)域和另 一個區(qū)域之間移動數(shù)據(jù)。如果需要高的總 線使用率,高等待時間設(shè)備存在空前的挑戰(zhàn)。當談及高等待時間設(shè)備時, 必須有足夠的未完成的并行事務(wù),以便從高等待時間設(shè)備接收數(shù)據(jù)所花的 時間少于或等于從排隊在它前面的所有其他未完成事務(wù)來傳輸數(shù)據(jù)所花的 時間量。如果滿足此準則,則總線上很少存在間隙或停止(其中DMA等 待數(shù)據(jù)并且沒有任何其他可供傳輸?shù)臄?shù)據(jù))。隨著進一步集成(具體地說,與片上系統(tǒng)集成)的趨勢,圖2中的許 多設(shè)備都可以集成在南橋204內(nèi)。例如,可以在南橋204內(nèi)集成單條總線。 此外,諸如USB控制器、PCI和PCIe控制器、存儲器控制器之類的控制 器和接口可以集成在南橋204內(nèi)并連接到內(nèi)部總線。此外,南橋204可以 包括存儲器控制器,用于本地存儲器的存儲器模塊可以連接到此控制器。 還要指出的是,處理單元202可以包括內(nèi)部總線(例如圖1中的EIB196), DMA設(shè)備可以通過此總線訪問系統(tǒng)存儲器208。圖3是示出根據(jù)示例性實施例的南橋的方塊圖。處理單元302例如向 南橋300中的總線320發(fā)出DMA命令。南橋300內(nèi)的DMA設(shè)備310然 后可以通過執(zhí)行來自源設(shè)備(例如總線單元設(shè)備322)的讀取操作以及到 目標設(shè)備(例如總線單元設(shè)備324)的寫入操作來執(zhí)行DMA命令。在一 個備選實例中,DMA命令可以請求將數(shù)據(jù)塊從總線單元設(shè)備322移動到 系統(tǒng)存儲器304,或者根據(jù)另一個實例,DMA命令可以請求將數(shù)據(jù)塊從存 儲器304移動到總線單元設(shè)備324??偩€單元設(shè)備322和總線單元設(shè)備324 可以例如是存儲器控制器、USB控制器、PCI控制器、存^i殳備控制器等, 或者是它們的組合。源設(shè)備和目標設(shè)備可以包括低等待時間設(shè)備(例如存儲器)和高等待 時間設(shè)備(例如硬盤驅(qū)動器)。但請要指出的是,通常為低等待時間的設(shè) 備(例如存儲器設(shè)備)在某些情況下可以是高等待時間,這取決于其在總 線和橋?qū)哟谓Y(jié)構(gòu)內(nèi)的位置。為簡單起見,南橋300的許多組件并未示出。本領(lǐng)域的技術(shù)人員將認識到,南橋300將包括圖3中未示出的許多其他特 性和功能。在南橋300中,DMA設(shè)備310包括DMA引擎(DE ) 312和總線引 擎(BE) 314。專用讀-寫(RW)命令允許DE 312更高效地將事務(wù)排隊到 BE 314。使用更標準的實施方式,DE將通過指定BE要在總線上執(zhí)行的每 個事務(wù)來對BE進行孩O見管理。但是在示例性實施例中,專用RW命令允 許DE312同時指定讀取和寫入,以使DE312可以更高效地控制數(shù)據(jù)塊的 移動。BE 314可以讀取通過總線320從處理單元302發(fā)出的DMA命令,例 如塊移動請求。處理單元302可以直接向DMA設(shè)備310發(fā)出DMA命令。 備選地,處理單元302可以使用^t/收集列表(其可以是系統(tǒng)存儲器304 或本地存儲器328中的表或鏈接列表)發(fā)出DMA命令。在后一種情況下, BE 314可以只是從^t/收集列表讀取描述符以接收下一個DMA命令。 DMA設(shè)備310可以將通過本地存儲器控制器326連接的本地存儲器328 用作工作存儲器。根據(jù)例如圖3中所示的示例性實施例,DMA設(shè)備被構(gòu)造為木碌耦合 的DMA引擎(DE)和總線引擎(BE) 。 DE將編程的數(shù)據(jù)塊移動分為單 獨的事務(wù),解釋^/收集描述符,并在通道之間進行仲裁。BE理解DMA 設(shè)備連接到其的總線的總線協(xié)議,并運行由DE發(fā)送的所有事務(wù)。BE必須 支持足夠的并行事務(wù),并且因此具有足夠的緩沖區(qū)以防止數(shù)據(jù)流管線停止。 DE將事務(wù)排隊到BE,并可以通過BE的緩沖區(qū)空間而遠超過BE。 BE通 過筒單的請求/確認握手來限制DE。DE不知道或者不需要知道BE已實現(xiàn)多少緩沖區(qū);因此,可以將不同 的BE與同一 DE —起使用以支持不同的等待時間環(huán)境或連接到不同的總 線。為實現(xiàn)最大的可伸縮性,可以將BE構(gòu)造為邏輯上獨立的"BE單元", 每個單元負責管理DE的一個緩沖區(qū)和一個事務(wù)。BE單元的數(shù)目可以是可 配置的綜合參數(shù)。只要DE接收到對其當前請求的確認,它便可以發(fā)出其他請求。當BE的可用緩沖區(qū)耗盡時,它停止對DE的當前請求的確認,這可阻止DE請 求更多的事務(wù)。當BE中的資源釋放時,它將激活對DE的確認,然后DE 可以請求其他事務(wù)。BE包含總體的緩沖區(qū)池。例如,如果BE包含16個緩沖區(qū),則所有 16個緩沖區(qū)都可以由一個DMA通道使用,或者可以在通道之間按照DE 需要的任何方式分配它們。DE將來自任何通道的事務(wù)排隊到BE。僅當 DE沒有更多工作執(zhí)行或BE停止確認(表明其可用緩沖區(qū)空間耗盡)時, DE才停止排隊事務(wù)。BE才艮據(jù)總線協(xié)議運行所有排隊的事務(wù)并處理可能的總線情況,例如亂 序返回的事務(wù)數(shù)據(jù)以及重試的事務(wù)。針對子塊順序?qū)ζ錈o意義的數(shù)據(jù)塊移 動優(yōu)化了處理亂序數(shù)據(jù)的DMA。在諸如聯(lián)網(wǎng)和視頻流傳輸之類的某些應(yīng) 用中,數(shù)據(jù)必須按順序移動。在DE和BE之間可以具有簡單的接口 , DE可在此接口中將事務(wù)排隊 到BE。 BE運行DE的事務(wù)直至DE已導(dǎo)致移動所有編程的數(shù)據(jù)塊。DE 可以通過指定到BE的每個讀取和每個寫入來導(dǎo)致所有數(shù)據(jù)塊移動,BE將 在總線上執(zhí)行這些讀取和寫入。DE在通道之間進行仲裁并且通常以/>平 的方式從各個通道交叉讀取和寫入,以使來自所有通道的數(shù)據(jù)可以幾乎同 時地傳輸。存在各種可以實現(xiàn)的通道仲裁優(yōu)先級方案。因為DMA涉及移動數(shù)據(jù),所以DE從源地址執(zhí)行的每個讀取事務(wù)最 終都必須后跟到目的地地址的相應(yīng)寫入事務(wù)。又因為DMA移動數(shù)據(jù)而不 是處理數(shù)據(jù),所以由讀取事務(wù)傳輸?shù)臄?shù)據(jù)與由相應(yīng)寫入事務(wù)傳輸?shù)臄?shù)據(jù)是 相同的數(shù)據(jù)。不會以任何方式修改數(shù)據(jù)。因此,根據(jù)示例性實施例,DE 和BE可以通過4吏用可在DE和BE之間排隊的組合讀-寫(RW)命令來 使得此過程更高效。RW事務(wù)同時指定讀取和相應(yīng)的寫入兩者。當DE將RW事務(wù)排隊到 BE時,它將指定源地址、目的地地址,以及僅與單個地址相對的字節(jié)計數(shù) 和與傳統(tǒng)讀取或?qū)懭胧聞?wù)相對的字節(jié)計數(shù)。RW命令簡化了 DE的體系結(jié) 構(gòu),因為DE不必管理它所排隊的每個事務(wù)的讀取和寫入階段。相反,DE可以只是排隊單個RW事務(wù),然后便可以"忘記"此事務(wù)。BE為DE所 排隊的每個RW事務(wù)運行單獨的讀取和寫入。根據(jù)一個示例性實施例,屏障和中斷機制允許中斷和郵箱操作以這樣 的方式發(fā)生確保正確的操作,但只要可能,仍允許發(fā)生高性能的亂序數(shù) 據(jù)移動。將某些描述符定義為"屏障描述符"。當DMA設(shè)備遇到屏障描 述符時,它確保在屏障描述符完成之前完成所有先前的描述符。DMA設(shè) 備還確保直至與屏障描述符關(guān)聯(lián)的數(shù)據(jù)移動完成,才斷言由屏障描述符生 成的任何中斷。DMA控制器僅允許由屏障描述符生成中斷。在這點上,將單個編程 數(shù)據(jù)塊移動視為屏障描述符。這允許軟件可靠地使用它所收到的中斷,因 為當它收到中斷時,它所預(yù)期移動的所有數(shù)據(jù)均保證已被移動。屏障描述符概念還允許軟件將郵箱完成消息嵌入描述符的分散/收集 鏈接列表。此機制簡單地將每個完成消息標記為屏障描述符。此機制確保 直至所有的先前描述符已完成才傳送這些完成消息。屏障和中斷機制創(chuàng)建了一種屏障,可強制順序而不必強制事務(wù)排序和導(dǎo)致不必要的停止。此機制僅在需要時停止-只有屏障描述符的最后一個寫 入事務(wù)可能,皮停止,相應(yīng)的讀取不會4皮停止。當屏障針對所有先前的描述 符強制順序時,DMA控制器可以在屏障描述符的"另一側(cè)"執(zhí)行描述符。 換言之,遇到屏障描述符不會使DMA控制器停止后續(xù)的描述符,除了當 它遇到第二個未完成的屏障描述符時。圖4示出了根據(jù)示例性實施例的具有屏障描述符的直接存儲器訪問設(shè) 備的總體操作。直接存儲器訪問(DMA)設(shè)備400包括DMA引擎(DE ) 410和總線引擎(BE) 430。描述符401-405的鏈接列表駐留在系統(tǒng)存儲器 中。BE 430檢索描述符401-405以供DE 410進行處理。DE 410可以將給定的描述符轉(zhuǎn)換為一個或多個DMA請求。在此實例 中,DE 410將描述符轉(zhuǎn)換為DMA請求421-424。如上所述,根據(jù)一個示 例性實施例,這些請求可以是RW命令。備選地,DMA請求421-424可 以是獨立的讀取和寫入的組合。BE 430通過總線440執(zhí)行DMA請求421-424。才艮據(jù)一個示例性實施例,描述符401-405包括屏障位411和中斷位412。 屏障位411是描述符中表示它是"屏障描述符"的位。每個描述符都有此 位字段。如果設(shè)置或斷言了屏障位,即邏輯1,則描述符是屏障描述符; 否則,它不是屏障描述符。屏障描述符是必須在^t/收集列表中的所有先 前描述符之后完成的描述符。必須將單個編程DMA移動視為屏障描述符, 因為它們可以生成中斷。中斷位412是描述符中表示描述符應(yīng)該在其完成時生成中斷的位。如 果設(shè)置或斷言了中斷位,即邏輯1,則描述符將在其完成時并且當且僅當 描述符也是屏障描述符時生成中斷。如果描述符不是屏障描述符,則中斷 位412的狀態(tài)為"無關(guān)"。當DE 410將請求排隊到BE 430時,DE 410還隨每個請求一^L送 各種屬性,例如源地址、目的地地址、字節(jié)計數(shù)(傳輸大小)以及通道標 識(ID)。根據(jù)示例性實施例,DMA請求421-424還包括屏障屬性431 和屏障標記432。在所示實例中,DMA請求421-424可以與給定的屏障描 述符相對應(yīng)。屏障屬性431是隨每個排隊事務(wù)一起從DE 410發(fā)送到BE 430的單個 位屬性。DE 410僅為屏障描述符的最后一個排隊事務(wù)設(shè)置屏障屬性431。 例如,如果屏障描述符描述了需要多個事務(wù)的大型塊移動,則只有該塊的 最后一個事務(wù)將設(shè)置屏障屬性431。屏障屬性用于標記BE 430中的哪些事 務(wù)必須最后發(fā)送。DE410知道允許它在任何時間,在給定通道上只有一個 已將屏障屬性^1置為l的未完成請求,因為BE 430通常4皮i殳計為支持每個通道一個屏障。不會針對屬于屏障描述符的每個事務(wù)設(shè)置屏障屬性431。 DE 410僅針 對屬于屏障描述符的最后一個事務(wù)設(shè)置屏障屬性。屏障標記432將在發(fā)送設(shè)置了屏障屬性431的事務(wù)之后切換;否則,屏障標記433的狀態(tài)將在不同的事務(wù)之間保持不變。當BE 430收到給定通道的設(shè)置了屏障屬性的事務(wù)時,BE 430將不能針對此事務(wù)啟動寫入,直至此通道沒有其他未決的事務(wù)(在讀取或?qū)懭腙犃兄?。BE 430針對每個通道發(fā)送屏障清除信號。當BE 430針對i史置了 屏障屬性的請求完成寫入時,它將向DE 410斷言與此事務(wù)的所屬通道關(guān) 聯(lián)的屏障清除信號,指示DE 410可以針對關(guān)聯(lián)的通道發(fā)送其他屏障。BE 430必須保留一個與它用于根據(jù)事務(wù)是否位于屏障另一側(cè)判定哪 些事務(wù)可安全發(fā)送的屏障標記相對應(yīng)的標志(未示出)。此標志最初為零 (0) ; BE 430被稱為"置0"。當BE 430置0并實施屏障時,它必須確保在發(fā)送{屏障標記,屏障屬 性} = 01的一個事務(wù)之前發(fā)送{屏障標記,屏障屬性} = 00的所有事務(wù)。BE 430可以發(fā)送{屏障標記,屏障屬性} = 10的事務(wù),因為這些事務(wù)位于屏障 的另一側(cè)。DE410將不會發(fā)送(屏障標記,屏障屬性} = 11的事務(wù),因為它 尚未收到屏障清除信號。當BE 430完成與{屏障標記,屏障屬性} = 01的事務(wù)關(guān)聯(lián)的寫入時, 它將發(fā)送屏障清除信號。DE410然后將切換屏障標記,并在下次發(fā)送請求 時,其屏障標記=1。在此情況下,標志將變?yōu)?; BE430被稱為"置1"。當BE 430置1并實施屏障時,它必須確保在發(fā)送{屏障標記,屏障屬 性} - 11的一個事務(wù)之前發(fā)送{屏障標記,屏障屬性} = 10的所有事務(wù)。BE 430可以發(fā)送{屏障標記,屏障屬性} = 00的事務(wù),因為這些事務(wù)位于屏障 的另一側(cè);但是,DE410將不會發(fā)送(屏障標記,屏障屬性} = 01的請求, 因為它尚未收到屏障清除信號。在開始時,DE410可以在所有通道上發(fā)送屏障。在所示實例中,有四 個通道;但是,才艮據(jù)實施方式的不同可以具有更多或更少的通道。當DE 410 處理給定通道的屏障描述符并發(fā)送設(shè)置了屏障屬性的請求時,它可能不會 針對此通if^送其他設(shè)置了屏障屬性的請求,直至它收到與此通道關(guān)聯(lián)的 屏障清除信號。如上所述,描述符405可以是屏障描述符。在此情況下,軟件在描述 符405中設(shè)置屏障位411。如果將軟件配置為在描述符405完成時接收中 斷,則軟件還在描述符405中設(shè)置中斷位412。當DE 410將描述符405 (在此實例中為屏障描述符)轉(zhuǎn)換為DMA請 求421-424時,DE 410將針對最后一個DMA請求(在此實例中為DMA 請求424 )設(shè)置屏障屬性431。如果在屏障描述符405中設(shè)置了中斷位412, 則DE 410將針對DMA請求424設(shè)置中斷位433 。如果設(shè)置了中斷位433 , 則當BE430完成DMA請求424的事務(wù)時,BE430將生成中斷。某些系統(tǒng)通過當一系列數(shù)據(jù)移動已完成時使"完成代碼"移動到"郵 箱"來工作。郵箱是充當消息的先進先出(FIFO)的消息傳i!B殳備。當通 過寫入郵箱地址將消息傳送到郵箱時,〗更會按順序?qū)⑾魉偷教幚砥鳌?消息通常4艮小,在八字節(jié)或十六字節(jié)的量級。當軟件在^t/收集列表中建立一系列塊移動(例如描述符401-405) 時,軟件可以將完成消息完全放置在描述符鏈接列表中,以便DMA設(shè)備 可以通過同一分^/收集描述符列表來移動數(shù)據(jù)塊和完成代碼消息。DMA 設(shè)備400并不知道DMA請求正在移動完成消息或者目的地是郵箱。在所示實例中,設(shè)置為屏障描述符的描述符405可以指向完成代碼消 息。也就是說,將通過郵箱通知軟件系列塊移動已完成,因為描述符405 將是最后完成的移動。此外,軟件可以針對描述符405設(shè)置中斷位412。圖5A示出了根據(jù)示例性實施例的實例描述符。描述符500定義了源 地址502、目的地地址504以及傳輸大小506。根據(jù)示例性實施例,描述符 500還包括屏障位508和中斷位510。屏障位508是描述符中表示它是"屏 障描述符"的位。中斷位510是描述符中表示描述符應(yīng)該在其完成時生成 中斷的位。圖5B示出了根據(jù)示例性實施例的DMA請求屬性的實例。DMA請求 屬性550包括源地址552、目的地地址554、傳輸大小556以及通道ID 558。 根據(jù)示例性實施例,DMA請求屬性550還可以包括屏障屬性560、屏障標 記562以及中斷位564。中斷位564通知BE DMA請求是還可生成中斷的 屏障描述符。BE將在其發(fā)送屏障清除信號時生成中斷。屏障屬性560是隨每個排隊事務(wù)一起從DE發(fā)送到BE的單個位屬性。 DE僅針對屏障描述符的最后一個排隊事務(wù)設(shè)置屏障屬性560。屏障標記562將在發(fā)送設(shè)置了屏障屬性560的事務(wù)之后切換;否則,屏障標記562 的狀態(tài)將在不同的事務(wù)之間保持不變。圖6示出了根據(jù)一個示例性實施例的整體總線引擎隊列結(jié)構(gòu)。接口 610 從DMA引擎接收DMA命令,并將這些命令放入至少一個讀取隊列(在 所示實例中為讀取隊列602)中。每個DMA移動包M取和寫入。因此, 每個移動都作為讀取隊列602中的讀取開始。總線接口單元(BIU) 620 可以通過FIFO機制按照將讀^UU^讀取隊列602的順序來運行讀取。多路復(fù)用器611從讀取隊列602中選擇讀取以便由總線接口單元620 運行。當BIU 620運行來自讀取隊列602的讀取時,有兩種可能的結(jié)果。 讀取可能會立即完成。例如,對于能夠立即接受事務(wù)的低等待時間目標可 以發(fā)生這種情況。如果DMA命令是組合RW命令,則一旦完成讀取,就 將事務(wù)發(fā)送到寫入隊列606。在備選實施例中,可以使用多個讀取隊列來 處理延遲的讀取。運行讀取時可能出現(xiàn)的第二種結(jié)果是重試讀取。例如,如果目標設(shè)備 忙碌,可能會重試讀取。然后會將重試的忙碌事務(wù)發(fā)送回讀取隊列602, 以便將其按照次序放置以再次運行。備選地,如果"延遲讀取"設(shè)備已將 事務(wù)排隊,則可能會重試讀取。如果設(shè)備在排隊讀取并開始處理讀取的同 時重試讀取,設(shè)備將執(zhí)行延遲的讀取。當設(shè)備處理讀取時,延遲的讀取將 釋放總線。多路復(fù)用器612從寫入隊列606中選擇寫入以便由總線接口單元620 運行。寫入通常按照其相應(yīng)讀取的完成順序運行。當BIU 620運行來自寫 入隊列606的寫入時,有兩種可能的結(jié)果。寫入可能會立即完成。在此情 況下,將完成此事務(wù)指定的事務(wù)數(shù)據(jù)移動??偩€630 —旦接受(確認)寫 入(即,甚至在未將寫入與等待狀態(tài)同步的總線上傳輸數(shù)據(jù)之前),關(guān)聯(lián) 的事務(wù)標記就被"解除分配"并可重新用于新的讀取。在組合RW事務(wù)的 情況下,不會在此點之前發(fā)出其他使用此標記的讀取,因為讀取和相應(yīng)的 寫入共享數(shù)據(jù)緩沖區(qū)位置。實際上,使用上述的組合RW事務(wù)時,給定的 隊列位置指向兩個隊列的同 一數(shù)據(jù)緩沖區(qū)位置。運行寫入時可能出現(xiàn)的第二種情況是重試寫入??赡軙霈F(xiàn)此情況是 因為目標忙碌或者沒有可用的寫入緩沖區(qū)。如果重試寫入,則寫入將停留在寫入隊列606中以再次運行。備選地,BE可以只是立即重復(fù)重試的寫入, 而不是將其重新加載回寫入隊列606中。這將不會導(dǎo)致死鎖,因為寫入的 完成不能依賴于其他事務(wù)(除此寫入之前的其他寫入以外)的完成。當作為屏障描述符的最后一個事務(wù)的讀取完成時,不會將其iiA寫入隊列606。相反,將此讀取》JbVf呆持寄存器650中。每個受支持的未完成 屏障都有一個保持寄存器。寫入然后被保留在保持寄存器650中,直至此 屏障描述符中所有未設(shè)置屏障屬性的事務(wù)完成。當此屏障描述符中所有未 設(shè)置屏障屬性的事務(wù)完成時,將寫入從保持寄存器650移動到寫入隊列 606。多路復(fù)用器615從讀取隊列602和寫入隊列606中選擇事務(wù)??偩€接 口單元620向多路復(fù)用器615提供選擇信號以選擇事務(wù)。保持寄存器650可以包括用于所有DMA通道的單個保持寄存器。也 就是說,DMA設(shè)備可以針對所有通道僅允許一個屏障描述符,因為可能 4艮少具有兩個或更多個未完成的屏障。備選地,保持寄存器650可以包括 兩個或更多個保持寄存器。在一個示例性實施例中,保持寄存器650可以 針對每個DMA通道包括一個保持寄存器,這將允許每個通道有一個未完 成的屏障。但是,根據(jù)使用DMA設(shè)備的應(yīng)用,甚至可以適當?shù)卦试S每個 通道有多個屏障。圖7是示出根據(jù)示例性實施例的直接存儲器訪問引擎處理描述符的操 作的流程圖??梢岳斫?,流程圖的每個方塊以及流程圖中的方塊組合可以 由計算機程序指令來實現(xiàn)??梢詫⑦@些計算機程序指令提供給處理器或其 他可編程數(shù)據(jù)處理裝置以產(chǎn)生機器,以l更在所述處理器或其他可編程數(shù)據(jù) 處理裝置上執(zhí)行的指令將創(chuàng)建用于實現(xiàn)一個或多個流程圖塊中指定的功能 的裝置。這些計算機程序指令也可以被存儲在引導(dǎo)處理器或其他可編程數(shù) 據(jù)處理裝置以特定方式執(zhí)行功能的計算機可讀存儲器或存儲介質(zhì)中,以便 存儲在所述計算才幾可讀存儲器或存儲介質(zhì)中的所述指令產(chǎn)生一件包括實現(xiàn)所述一個或多個流程圖塊中指定的功能的指令裝置的制品。相應(yīng)地,流程圖的多個塊支持用于執(zhí)行指定功能的裝置的組合、用于 q/vru 1曰/<^^7 ;/,PiVjyx'口 ""/tj j WN 1日&7V ,hv,/^《曰々衣且。ili乂旦理解,流程圖中的每個塊和流程圖中的塊的組合可以由執(zhí)行指定功能或步驟 的基于硬件的專用計算機系統(tǒng)來實現(xiàn),或者通過專用硬件和計算機指令的 組合來實現(xiàn)?,F(xiàn)在參考圖7,操作開始,直接存儲器訪問(DMA)引擎(DE)判定 是否有可供處理的描述符(方塊602)。如果沒有可用的描述符,則操作 返回方塊602進行等待,直至存在可用的描述符。如果在方塊702中存在描述符,則DE將描述符轉(zhuǎn)換為一個或多個要 發(fā)出給BE的DMA請求(方塊704 )。此后,DE判定描述符是否為屏障 描述符(方塊706)。如果DE判定描述符不是屏障描述符,則操作返回 方塊702以判定是否有其他要處理的描述符。如果在方塊706中DE判定 描述符是屏障描述符,則DE將為屏障描述符的最后一個請求設(shè)置屏障屬 性(方塊708)。此后,操作返回方塊702以判定是否有其他要處理的描 述符。圖8是示出根據(jù)示例性實施例的向總線引擎發(fā)出請求的直接存儲器訪 問引擎的操作的流程圖。操作開始,直接存儲器訪問(DMA)引擎(DE) 判定DMA通道是否準備好向總線引擎發(fā)出DMA請求(方塊802 )。如果 DMA通道未準備好發(fā)出請求,則操作返回方塊802進行等待,直至DMA 通道準備好發(fā)出請求。如果在方塊802中DMA通道準備好發(fā)出請求,則DE判定是否為請 求設(shè)置了屏障屬性(方塊804)。如果未設(shè)置屏障屬性,則DE向BE發(fā)出 DMA請求(方塊806),并且操作返回方塊802進行等待,直至準備好在 通道上發(fā)出DMA請求。如果在方塊804中為請求,沒置了屏障屬性,則DE將判定對于通道而 言屏障是否未決(方塊808)。如果屏障沒有未決,則DE切換屏障標記 (方塊810)并向BE發(fā)出DMA請求(方塊806)。然后,操作返回方塊802進行等待,直至準備好在通道上發(fā)出DMA請求。如果在方塊808中對于通道而言屏障未決,則DE判定是否為DAM 通道從BE接收到屏障清除信號(方塊812)。如果未收到屏障清除信號, 則操作返回方塊812以等待BE發(fā)出針對通道的屏障清除信號。如果在方 塊812中接收到屏障清除信號,則操作將繼續(xù)到方塊810以切換屏障標記, 然后繼續(xù)到方塊806以向BE發(fā)出DMA請求。此后,操作返回方塊802 進行等待,直至準備好在通道上發(fā)出DMA請求。圖9A和9B是示出根據(jù)示例性實施例的實施屏障的總線引擎的操作的 流程圖。參考圖9A,操作開始于將屏障標記設(shè)置為零。BE將屏障標記設(shè) 置為零(O),并且BE被稱為"置0"(方塊902)。然后,BE判定是否 存在新的DMA請求(方塊卯4)。如果沒有新的DMA請求,則操作返回 方塊904以等待新的DMA請求。如果在方塊卯4中有新的DMA請求,則BE將從隊列接收DMA請 求(方塊906) 。 BE判定是否為請求將屏障標記設(shè)置為0并將屏障屬性設(shè) 置為1 (方塊908)。如果屏障標記設(shè)置為1,意味著請求位于屏障的另一 側(cè),或者屏障屬性設(shè)置為0,意味著請求不是屏障,則BE向總線發(fā)出DMA 事務(wù)(方塊910)。接下來,BE將判定是否已發(fā)送所有將屏障標記設(shè)置為零(0)并將屏 障屬性設(shè)置為零(0)的事務(wù)(方塊912)。也就是說,BE判定是否已處 理屏障描述符的所有事務(wù)(除設(shè)置了屏障屬性的事務(wù)以外)。如果并非如 此,則操作返回方塊904以判定是否有新的DMA請求。返回方塊908,如果屏障標記設(shè)置為0并且屏障屬性設(shè)置為1,意味著 事務(wù)為屏障事務(wù),則BE將判定是否已發(fā)送所有將屏障標記設(shè)置為零(0) 并將屏障屬性設(shè)置為零(0)的事務(wù)(方塊914)。如果在方塊914中尚未 處理屏障描述符的所有事務(wù),則BE將DMA請求放置在保持寄存器中(方 塊916)。然后,操作返回方塊卯4以判定是否有新的DMA請求。如果當前事務(wù)i殳置了屏障描述符,并且在方塊914中已處理屏障描述 符的所有事務(wù)(RH殳置了屏障屬性的事務(wù)以外),則BE將向總線發(fā)出DMA事務(wù)(方塊918)。接下來,BE向DE發(fā)送屏障清除信號(方塊920)。 然后,BE將判定是否為DMA請求設(shè)置了中斷位(方塊922 )。如果設(shè)置 了中斷位,貝'J BE向軟件發(fā)送中斷(方塊924)。此后,或者如果在方塊 922中未設(shè)置中斷位,則BE將屏障標志設(shè)置為1,并且BE被稱為"置1" (圖9B中的方塊926)。然后,操作將繼續(xù)到將在下面進一步詳細描述的 方塊930。返回方塊912,如果BE向總線發(fā)出在方塊910中未針對其設(shè)置屏障屬 性的DMA事務(wù),但是在方塊912中已處理"置0"屏障的所有未設(shè)置屏 障屬性的DMA請求,則BE判定是否針對DMA通道在保持寄存器中保 持DMA請求(方塊928 )。如果未針對通道保持DMA請求,則操作將返 回方塊904以判定是否有新的DMA請求。但是,如果在方塊928中針對 通道保持了DMA請求,則操作將繼續(xù)到方塊918以向總線發(fā)出事務(wù),發(fā) 送屏障清除信號(方塊920),并且如果設(shè)置了中斷位,將向軟件發(fā)送中 斷(方塊922和924)。然后,操作繼續(xù)到方塊926。轉(zhuǎn)向圖9B, BE將屏障標志設(shè)置為1,并且BE被稱為"置1"(方塊 926) 。 BE將判定是否有新的DMA請求(方塊930 )。如果沒有新的DMA 請求,則^^作返回方塊930以等待新的DMA請求。如果在方塊930中有新的DMA請求,則BE將從隊列接收DMA請 求(方塊932 ) 。 BE判定是否為請求將屏障標記設(shè)置為1并將屏障屬性設(shè) 置為1 (方塊934)。如果屏障標記設(shè)置為零,意味著請求位于屏障的另一 側(cè),或者屏障屬性設(shè)置為零,意味著請求不是屏障,則BE向總線發(fā)出DMA 事務(wù)(方塊936)。接下來,BE判定是否已發(fā)送所有將屏障標記設(shè)置為1并將屏障屬性設(shè) 置為零(0)的事務(wù)(方塊938)。也就是說,BE判定是否已處理屏障描 述符的所有事務(wù)(除設(shè)置了屏障屬性的事務(wù)以外)。如果并非如此,則操 作將返回方塊930以判定是否有新的DMA請求。返回方塊934,如果屏障標記設(shè)置為1并且屏障屬性設(shè)置為1,意味著 事務(wù)為屏障事務(wù),則BE判定是否已發(fā)送所有將屏障標記設(shè)置為1并將屏障屬性設(shè)置為0的事務(wù)(方塊940)。如果在方塊940中尚未處理屏障描 述符的所有事務(wù),則BE將DMA請求放置在保持寄存器中(方塊942 )。 然后,操作返回方塊930以判定是否有新的DMA請求。如果當前事務(wù)設(shè)置了屏障描述符,并且在方塊940中已處理屏障描述 符的所有事務(wù)(除設(shè)置了屏障屬性的事務(wù)以外),則BE向總線發(fā)出DMA 事務(wù)(方塊944)。接下來,BE向DE發(fā)送屏障清除信號(方塊946)。 然后,BE判定是否為DMA請求設(shè)置了中斷位(方塊948)。如果設(shè)置了 中斷位,則BE向軟件發(fā)送中斷(方塊950)。此后,或者如果在方塊948 中未設(shè)置中斷位,則BE將屏障標志設(shè)置為零(0),并且BE^皮稱為"置 0"(方塊952)。然后,操作將繼續(xù)到圖9A中的方塊904。返回方塊938,如果BE向總線發(fā)出在方塊936中未針對其設(shè)置屏障屬 性的DMA事務(wù),但是在方塊938中已處理"置0"屏障的所有未設(shè)置屏 障屬性的DMA請求,則BE判定是否針對DMA通道在保持寄存器中保 持DMA請求(方塊954)。如果未針對通道保持DMA請求,則操作返回 方塊930以判定是否有新的DMA請求。但是,如果在方塊954中針對通 道保持了 DMA請求,則操作繼續(xù)到方塊944以向總線發(fā)出事務(wù),發(fā)送屏 障清除信號,并且如果設(shè)置了中斷位,將向軟件發(fā)送中斷。然后,操作將 繼續(xù)到圖9A中的方塊卯4。因此,示例性實施例通過提供構(gòu)造為木i^:耦合DMA引擎(DE)和總 線引擎(BE)的DMA設(shè)備,解決了現(xiàn)有技術(shù)的缺點。DE將編程的數(shù)據(jù) 塊移動分為單獨的事務(wù),解釋^/收集描述符,并在通道之間進行仲裁。 BE理解DMA設(shè)備連接到其的總線的總線協(xié)議,并運行由DE發(fā)送的所有 事務(wù)。DE和BE通過使用可在DE與BE之間排隊的組合讀-寫(RW)命 令,可以使過程更高效。但是,DE和BE也可以使用獨立的讀取和寫入命 令來工作。DMA設(shè)備包括屏障和中斷機制,此機制允許中斷和郵箱操作以這樣 的方式發(fā)生確保正確的操作,但只要可能,仍允許發(fā)生高性能的亂序數(shù) 據(jù)移動。將某些描述符定義為"屏障描述符"。當DMA設(shè)備遇到屏障描述符時,它確保在屏障描述符完成之前完成所有先前的描述符。DMA設(shè) 備還確保直至與屏障描述符關(guān)聯(lián)的數(shù)據(jù)移動完成,才斷言由屏障描述符生 成的任何中斷。DMA控制器僅允許由屏障描述符生成中斷。在這點上,將單個編程 數(shù)據(jù)塊移動^L為屏障描述符。這允許軟件可靠地^f吏用它所收到的中斷,因 為當它收到中斷時,它所預(yù)期移動的所有數(shù)據(jù)均保證已被移動。屏障描述符概念還允許軟件將郵箱完成消息嵌入描述符的分散/收集 鏈接列表。此機制簡單地將每個完成消息標記為屏障描述符。此機制確保 直至所有的先前描述符已完成才傳送這些完成消息。應(yīng)當理解,示例性實施例可以采取完全硬件實施例、完全軟件實施例 或同時包含石更件和軟件元素的實施例的形式。在一個示例性實施例中,示 例性實施例的機制以軟件實現(xiàn),所述軟件包括但不限于固件、駐留軟件、此外,示例性實施例可以采取計算枳4呈序產(chǎn)品的形式,所述計算積4呈 序產(chǎn)品可從提供程序代碼以供或結(jié)合計算機或任何指令執(zhí)行系統(tǒng)使用的計算機可用或計算機可讀介質(zhì)來訪問。出于此描述的目的,計算機可用或計算機可讀介質(zhì)可以是任何可以包含、存儲、傳送、傳播或傳輸程序以供或 結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)^f吏用的裝置。所述介質(zhì)可以是電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)(或裝置或 設(shè)備)或傳播介質(zhì)。計算機可讀介質(zhì)的實例包括半導(dǎo)體、固態(tài)存儲器、磁 帶、可移動計算機盤、隨M取存儲器(RAM)、只讀存儲器(ROM)、 硬磁盤和光盤。光盤的當前實例包括光盤-只讀存儲器(CD-ROM)、光盤 -讀/寫(CD-R/W)和DVD。適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少 一個通過 系統(tǒng)總線直接或間接地連接到存儲器部件的處理器。所述存儲器部件可以 包括在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲裝置以及 對至少某些程序代碼提供臨時存儲以便減少在執(zhí)行期間必須從大容量存儲 裝置檢索代碼的次數(shù)的高速緩沖存儲器。輸入/輸出或i/o設(shè)備(包括但不限于鍵盤、顯示裝置、指點設(shè)備等) 可以直接或通過中間1/0控制器與所述系統(tǒng)相連。網(wǎng)絡(luò)適配器也可以與所述系統(tǒng)相連以便使所述數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)與其他 數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備相連。調(diào)制解調(diào)器、電纜調(diào)制解調(diào) 器以及以太網(wǎng)卡只是少數(shù)幾種當前可用的網(wǎng)絡(luò)適配器類型。出于示例和說明目的給出了對本發(fā)明的描述,并且所述描述并非旨在 是窮舉的或是將本發(fā)明限于所公開的形式。對于本領(lǐng)域的技術(shù)人員來說, 許多修改和變化都將是顯而易見的。實施例的選擇和描述是為了最佳地解 釋本發(fā)明的原理、實際應(yīng)用,并且當適合于所構(gòu)想的特定使用時,使得本 領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實施例。
權(quán)利要求
1.一種用于在直接存儲器訪問設(shè)備中執(zhí)行直接存儲器訪問塊移動的方法,所述方法包括接收直接存儲器訪問塊移動描述符,其中所述直接存儲器訪問塊移動描述符指示了源和目標,并且其中所述直接存儲器訪問塊移動描述符被標識為屏障描述符;將所述直接存儲器訪問塊移動描述符轉(zhuǎn)換為所述直接存儲器訪問塊移動描述符的一個或多個直接存儲器訪問請求;標識所述一個或多個直接存儲器訪問請求內(nèi)的最后一個直接存儲器訪問請求;以及處理所述一個或多個直接存儲器訪問請求以滿足直接存儲器訪問塊移動請求,以便所述直接存儲器訪問設(shè)備在處理所述一個或多個直接存儲器訪問請求內(nèi)的所有其他直接存儲器訪問請求之前,不會處理所述最后一個直接存儲器訪問請求。
2. 根據(jù)權(quán)利要求l的方法,還包括 設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的屏障屬性。
3. 根據(jù)權(quán)利要求l的方法,還包括 每次處理屏障描述符時切換屏障標記。
4. 根據(jù)權(quán)利要求l的方法,還包括響應(yīng)于所述最后一個直接存儲器訪問請求的完成,生成中斷。
5. 根據(jù)權(quán)利要求l的方法,其中所述最后一個直接存儲器訪問請求被 配置為將完成代碼移動到郵箱。
6. —種用于在直接存儲器訪問設(shè)備內(nèi)的直接存儲器訪問引擎中執(zhí)行 直接存儲器訪問塊移動的方法,所述方法包括接收直接存儲器訪問塊移動描述符,其中所述直接存儲器訪問塊移動 描述符指示了源和目標,并且其中所述直接存儲器訪問塊移動描述符#:標 識為屏障描述符;將所述直接存儲器訪問塊移動描述符轉(zhuǎn)換為所述直接存儲器訪問塊移動描述符的一個或多個直接存儲器訪問請求;標識所述一個或多個直接存儲器訪問請求內(nèi)的最后一個直接存儲器訪 問請求;設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的屏障屬性;以及 對于所述一個或多個直接存儲器訪問請求中的每個給定直接存儲器訪 問請求判定是否為所述給定直接存儲器訪問請求設(shè)置了所述屏障屬性; 如果設(shè)置了所述屏障屬性,則判定對于與所述給定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障是否未決;以及如果對于與所述給定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障沒有未決,則向所述直接存儲器訪問設(shè)備中的總線引擎發(fā)出所述給定直接存儲器訪問請求。
7. 根據(jù)權(quán)利要求6的方法,還包括如果沒有為所述給定直接存儲器訪問請求設(shè)置所述屏障屬性,則向所 述總線引擎發(fā)出所述給定直接存儲器訪問請求。
8. 根據(jù)權(quán)利要求6的方法,還包括如果對于與所述給定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障未決, 則保持所述給定直接存儲器訪問請求,直至從所述總線引擎接收到針對與 所述給定直接存儲器訪問請求關(guān)聯(lián)的通道的屏障清除信號。
9. 根據(jù)權(quán)利要求6的方法,還包括響應(yīng)于向所述總線引擎發(fā)出所述給定直接存儲器訪問請求,切換屏障 標記,以便所述屏障第 一側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置為 第 一值,并且所述屏障第二側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置 為第二值。
10. 根據(jù)權(quán)利要求6的方法,其中所述直接存儲器訪問塊移動描述符 i殳置了中斷位,所述方法還包括設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的中斷位。
11. 一種用于在直接存儲器訪問設(shè)備內(nèi)的總線引擎中執(zhí)行直接存儲器訪問塊移動的方法,所述方法包括從直接存儲器訪問隊列接收直接存儲器訪問請求; 判定所述直接存儲器訪問請求是否設(shè)置了屏障屬性; 如果所述直接存儲器訪問請求設(shè)置了屏障屬性,則判定所述屏障之前的所有直接存儲器訪問請求是否都已完成;以及如果所述屏障之前的所有直接存儲器訪問請求尚未完成,則保持所述直接存儲器訪問請求以防止完成。
12. 根據(jù)權(quán)利要求ll的方法,還包括如果所述直接存儲器訪問請求在所述屏障之后并且未設(shè)置屏障屬性, 則發(fā)出針對所述直接存儲器訪問請求的直接存儲器訪問事務(wù)。
13. 根據(jù)權(quán)利要求ll的方法,還包括如果所述直接存儲器訪問請求在所述屏障之前并且未設(shè)置屏障屬性, 則發(fā)出針對所述直接存儲器訪問請求的直接存儲器訪問事務(wù)。
14. 根據(jù)權(quán)利要求13的方法,還包括響應(yīng)于發(fā)出所述直接存儲器訪問事務(wù),判定所述屏障之前的未設(shè)置所 述屏障屬性的所有直接存儲器訪問請求是否已完成;如果所述屏障之前的未設(shè)置所述屏障屬性的所有直接存儲器訪問請求 都已完成,則判定設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求是否被 保持以防止完成;以及如果設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求被保持以防止完 成,則發(fā)出針對所述屏障直接存儲器訪問請求的直接存儲器訪問事務(wù)。
15. 根據(jù)權(quán)利要求14的方法,還包括響應(yīng)于發(fā)出針對所述屏障直接存儲器訪問請求的所述直接存儲器訪問 事務(wù),判定是否為所述屏障直接存儲器訪問請求設(shè)置了中斷位;以及 如果為所述屏障直接存儲器訪問請求設(shè)置了中斷位,則生成中斷。
16. —種直接存儲器訪問設(shè)備,所述設(shè)備包括 直接存儲器訪問引擎,其中所述直接存儲器訪問引擎被配置為接收直接存儲器訪問塊移動描述符,其中所述直接存儲器訪問塊 移動描述符指示了源和目標,并且其中所述直接存儲器訪問塊移動請求被標識為屏障描述符;將所述直接存儲器訪問塊移動描述符轉(zhuǎn)換為所述直接存儲器訪問 塊移動描述符的一個或多個直接存儲器訪問請求;標識所述一個或多個直接存儲器訪問請求內(nèi)的最后一個直接存儲 器訪問請求;設(shè)置與所述最后一個直接存儲器訪問請求關(guān)聯(lián)的屏障屬性;以及 向直接存儲器訪問隊列發(fā)出所述一個或多個直接存儲器訪問請 求;以及總線引擎,其中所述總線引擎被配置為從直接存儲器訪問隊列接收直接存儲器訪問請求; 判定所述直接存儲器訪問請求是否設(shè)置了屏障屬性; 如果所述直接存儲器訪問請求設(shè)置了屏障屬性,則判定所述屏障之前的所有直接存儲器訪問請求是否都已完成;以及如果所述屏障之前的所有直接存儲器訪問請求尚未完成,則保持所述直接存儲器訪問請求以防止完成。
17. 根據(jù)權(quán)利要求16的直接存儲器訪問設(shè)備,其中所述直接存儲器 訪問引擎還配置為如果對于與給定直接存儲器訪問請求關(guān)聯(lián)的通道而言屏障未決,則保 持所述給定直接存儲器訪問請求,直至從所述總線S1擎接收到針對與所述 給定直接存儲器訪問請求關(guān)聯(lián)的通道的屏障清除信號。
18. 根據(jù)權(quán)利要求16的直接存儲器訪問設(shè)備,其中所述直接存儲器 訪問引擎還配置為響應(yīng)于向所述總線引擎發(fā)出給定直接存儲器訪問請求,切換屏障標記, 以便所述屏障第 一側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置為第一 值,并且所述屏障第二側(cè)上的直接存儲器訪問請求使屏障標記被設(shè)置為第 二值。
19. 根據(jù)權(quán)利要求16的直接存儲器訪問設(shè)備,其中所述總線引擎還 配置為如果所述直接存儲器訪問請求在所述屏障之前并且未設(shè)置屏障屬性, 則發(fā)出針對所述直接存儲器訪問請求的直接存儲器訪問事務(wù)。
20. 根據(jù)權(quán)利要求19的直接存儲器訪問設(shè)備,其中所述總線引擎還 配置為響應(yīng)于發(fā)出所述直接存儲器訪問事務(wù),判定所述屏障之前的未設(shè)置所 述屏障屬性的所有直接存儲器訪問請求是否已完成;如果所述屏障之前的未設(shè)置所述屏障屬性的所有直接存儲器訪問請求 都已完成,則判定設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求是否被 保持以防止完成;以及如果設(shè)置了所述屏障屬性的屏障直接存儲器訪問請求被保持以防止完 成,則發(fā)出針對所述屏障直接存儲器訪問請求的直接存儲器訪問事務(wù)。
全文摘要
本發(fā)明涉及用于執(zhí)行DMA塊移動的方法及DMA設(shè)備。直接存儲器訪問(DMA)設(shè)備包括屏障和中斷機制,所述機制允許中斷和郵箱操作以這樣的方式發(fā)生確保正確的操作,但只要有可能,仍允許發(fā)生高性能的亂序數(shù)據(jù)移動。將特定描述符定義為“屏障描述符”。當DMA設(shè)備遇到屏障描述符時,它確保在屏障描述符完成之前完成所有先前描述符。所述DMA設(shè)備還確保直至與屏障描述符關(guān)聯(lián)的數(shù)據(jù)移動完成,才斷言由屏障描述符生成的任何中斷。DMA控制器僅允許由屏障描述符生成中斷。屏障描述符概念還允許軟件將郵箱完成消息嵌入描述符的分散/收集鏈接列表。
文檔編號G06F13/20GK101221544SQ20081000163
公開日2008年7月16日 申請日期2008年1月7日 優(yōu)先權(quán)日2007年1月10日
發(fā)明者B·C·德雷魯普, G·比朗, J·古普塔, 拉 托爾 L·E·德, R·尼古拉斯 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1