日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

可支持多個內(nèi)部通道軟件請求的直接存儲器存取控制器的制作方法

文檔序號:6564752閱讀:297來源:國知局
專利名稱:可支持多個內(nèi)部通道軟件請求的直接存儲器存取控制器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)傳輸,尤其涉及直接存儲器存取(DMA)控制器,用于最佳化快速存儲器對存儲器的傳輸,以支持內(nèi)部通道(同一直接存儲器存取通道)中多個處于等待的軟件請求(software request)。
背景技術(shù)
在數(shù)據(jù)存儲器裝置的運行中,最好的方式是由直接存儲器存取來執(zhí)行在處于分頁模式的主存儲器和作為數(shù)據(jù)存儲裝置的輔助存儲器之間的數(shù)據(jù)傳輸存取,這種技術(shù)是通過直接存儲器存取控制器來執(zhí)行數(shù)據(jù)傳輸,且不需與數(shù)據(jù)處理器(processor)產(chǎn)生任何相互操作。雖然直接存儲器存取是通過數(shù)據(jù)處理器來啟動操作,但是數(shù)據(jù)在傳輸時并不需要經(jīng)由數(shù)據(jù)處理器。直接存儲器存取裝置可與直接存儲器存取控制器合并,因此可將數(shù)據(jù)從輔助存儲器(例如磁盤驅(qū)動器)直接傳輸給主存儲器。
直接存儲器存取控制器是通過直接存儲器存取請求(DMA request)來執(zhí)行直接存儲器存取傳輸?shù)?。直接存儲器存取請求可以是軟件請求或者是硬件請求。來自或發(fā)送至系統(tǒng)外圍的直接存儲器存取傳輸與系統(tǒng)外圍所產(chǎn)生的直接存儲器存取硬件請求相關(guān),并傳送至直接存儲器存取控制器。而存儲器對存儲器(memory-to-memory)直接存儲器存取傳輸則與軟件請求相關(guān)。大量的直接存儲器存取傳輸是先將數(shù)據(jù)分組拆解成小塊并以突發(fā)傳輸(burst)的方式將數(shù)據(jù)送至系統(tǒng)數(shù)據(jù)總線,且每個數(shù)據(jù)分組或突發(fā)傳輸都與直接存儲器存取的硬件或軟件請求相關(guān)。
如圖1所示,其是直接存儲器存取控制器的結(jié)構(gòu)圖。所述直接存儲器存取控制器100提供數(shù)個可配置在CPU總線上的直接存儲器存取通道。在本實施例中的直接存儲器存取控制器中,直接存儲器存取通道可配置在通道配置寄存器112中,以在“本地存儲器”(local memory)和連接系統(tǒng)總線的外部系統(tǒng)存儲器之間傳輸數(shù)據(jù)。該直接存儲器存取控制器100可包括數(shù)個模塊,如總線接口單元110、直接存儲器存取半隊列(en-queue)引擎130、全隊列(de-queue)引擎150、直接存儲器存取隊列管理器170和系統(tǒng)總線接口190以處理數(shù)據(jù)傳輸。
該直接存儲器存取控制器100用于管理內(nèi)部的數(shù)筆數(shù)據(jù)和控制信息隊列。該直接存儲器存取控制器的通道請求仲裁器134在當(dāng)前的直接存儲器存取傳輸請求之間進行仲裁,這些請求是與通道配置寄存器112中的所有當(dāng)前的直接存儲器存取通道相關(guān),且每個請求涉及數(shù)據(jù)分組的傳輸,例如從本地存儲器(local memory)至外部系統(tǒng)存儲器(直接存儲器存取寫入,DMA Write),或由外部系統(tǒng)存儲器至本地存儲器(直接存儲器存取讀取,DMA Read)。對每個來自通道請求仲裁器134的特定(selected)直接存儲器存取(寫入或讀出)請求,該半隊列引擎130會將數(shù)據(jù)分組列入排程以供直接存儲器存取傳輸之用。針對每個特定的請求,該半隊列引擎130將一控制信息項(entry)寫入到先進先出請求隊列(reqQ)132,并寫入一控制信息項到先進先出命令隊列(cmdQ)174之中。此外,如果是直接存儲器存取寫入請求,則半隊列引擎130會從本地存儲器(未示出)讀取數(shù)據(jù)并將數(shù)據(jù)置于寫入數(shù)據(jù)隊列(wdQ)172。命令隊列(cmdQ)174中的一項可控制每個列入排程的數(shù)據(jù)分組如何送到系統(tǒng)總線上。從外部系統(tǒng)存儲器接收至系統(tǒng)總線上的數(shù)據(jù)放置在讀取數(shù)據(jù)隊列(rdQ)176。與直接存儲器存取寫入和讀取傳輸相關(guān)的系統(tǒng)總線傳輸許可/中止(OKAY/ABORTED)狀態(tài)信息則置放于先進先出響應(yīng)隊列(respQ)178中,所述狀態(tài)信息是來自系統(tǒng)總線上的響應(yīng)信號,而響應(yīng)信號相關(guān)于系統(tǒng)總線上的每筆數(shù)據(jù)傳輸,用以指示數(shù)據(jù)傳輸是否傳輸成功(許可)與否(中止)。請求隊列132的所有項乃對應(yīng)至直接存儲器存取控制器的內(nèi)部隊列中已列入排程或尚在等待中的所有請求。請求隊列132的每一項包含用以描述已列入排程的直接存儲器存取的描述元;直接存儲器存取控制器100依序執(zhí)行請求隊列132中所有的該類項。全隊列引擎150將請求隊列132表頭的一項與響應(yīng)隊列(respQ)178的響應(yīng)信號作配對。與直接存儲器存取讀取傳輸相關(guān)的數(shù)據(jù)自讀取數(shù)據(jù)隊列(rdQ)176傳送到本地存儲器。當(dāng)所有與直接存儲器存取請求相關(guān)的所有響應(yīng)信號都已處理完畢后,請求隊列132表頭的該項會被彈出請求隊列,同時更新相關(guān)的直接存儲器存取通道配置參數(shù),以反映數(shù)據(jù)已在系統(tǒng)總線上成功傳送完畢。假設(shè)數(shù)據(jù)分組或該數(shù)據(jù)分組的部分無法成功傳送,則禁止該直接存儲器存取通道進行下一步的傳輸,同時更新其配置參數(shù)以反映該數(shù)據(jù)傳輸在系統(tǒng)總線上被中止。
一個直接存儲器存取控制器通??芍С侄鄠€直接存儲器存取通道(例如,8個通道),內(nèi)部緩沖器的切割方式可存放至少一最大容量突發(fā)的寫入數(shù)據(jù)于對外寫入數(shù)據(jù)緩沖器(wdQ),而其對內(nèi)讀取數(shù)據(jù)緩沖器(rdQ)可存放至少一最大容量突發(fā)的讀取數(shù)據(jù)。由于隊列的動態(tài)特性,當(dāng)一最大容量突發(fā)傳輸彈出響應(yīng)隊列與讀取數(shù)據(jù)緩沖器的同時,另一最大容量突發(fā)傳輸可傳送到系統(tǒng)總線,而第三個最大容量突發(fā)傳輸則被推入命令隊列與寫入數(shù)據(jù)隊列。
對應(yīng)于多個直接存儲器存取通道的多個請求可同時于直接存儲器存取控制器內(nèi)處于等待。然而,與同一直接存儲器存取通道相關(guān)的存儲器對存儲器傳輸若能越快執(zhí)行越好。因此直接存儲器存取控制器可管理內(nèi)部隊列中接連的多個處于等待的內(nèi)部通道軟件請求乃所期望者。
然而,支持多個處于等待的內(nèi)部通道軟件請求有許多的問題存在。當(dāng)與同一直接存儲器存取通道相關(guān)的其余內(nèi)部通道請求已于直接存儲器存取控制器處于等待的同時,此直接存儲器存取控制器如何計算下個請求的來源與目的地址?再者,直接存儲器存取控制器如何得知當(dāng)前最新的處于等待的請求于何時會使通道到達終端計數(shù)(terminal count)?這些問題的原因在于通道參數(shù)基本上并未更新,直到處于等待的請求已完成,且直接存儲器存取控制器確認(rèn)相關(guān)的數(shù)據(jù)分組已于系統(tǒng)總線上傳輸成功。
因此,提供一個可有效支持多個處于等待的內(nèi)部通道軟件請求的直接存儲器存取控制器,仍為待解決的課題。

發(fā)明內(nèi)容
本發(fā)明提供一種直接存儲器存取控制器以支持同一通道中多個處于等待的軟件請求。
在本發(fā)明的一個實施例中,直接存儲器存取控制器包括通道配置寄存器(channel configuration register)、通道請求仲裁器(channel request arbiter)、尾部搜尋單元(tail search unit)、通道預(yù)測單元(channel prediction)、命令和請求項產(chǎn)生器(command/request entry generator)以及請求隊列(request queue)。該通道配置寄存器輸出一組實際通道參數(shù),該通道預(yù)測單元產(chǎn)生一組預(yù)測通道參數(shù),而命令和請求項產(chǎn)生器依據(jù)尾部搜尋器的輸出發(fā)送一請求至請求隊列。如果在尾部搜尋中沒有找到有效且處于等待的內(nèi)部通道請求,則該命令和請求項產(chǎn)生器使用實際通道參數(shù)值以產(chǎn)生下個命令或請求;否則,該命令和請求項產(chǎn)生器使用于尾部搜尋請求隊列中處于等待的請求中找到預(yù)測通道參數(shù)值。
在本發(fā)明的另一實施例中,提供一種適用于直接存儲器存取控制器的等待請求隊列格式。該等待請求隊列格式包括預(yù)測終端計數(shù)字段(predictedterminal count field)、用于預(yù)測一特定通道是否在一后續(xù)的處于等待的請求成功完成后到達其終端計數(shù),預(yù)測位計數(shù)字段,用于預(yù)測后續(xù)的處于等待的請求成功完成后剩余位的數(shù)目,以及兩個預(yù)測存儲器地址,用于預(yù)測下個傳送的內(nèi)部通道數(shù)據(jù)分組的來源以及目的存儲器啟始地址。該些預(yù)測值組成下個將傳送的內(nèi)部通道數(shù)據(jù)分組的實際通道參數(shù)值。
在本發(fā)明的又一實施例中,提供一種適用于直接存儲器存取控制器傳送多個處于等待的請求的方法。該方法包含下列步驟提供一通道請求,執(zhí)行一尾部搜尋,并依尾部搜尋的結(jié)果執(zhí)行該請求。如果于尾部搜尋中沒有找到處于等待的內(nèi)部通道請求,則使用實際通道參數(shù)值來產(chǎn)生下一個命令和請求;否則,使用于尾部搜尋請求隊列中處于等待的請求所找到的預(yù)測通道參數(shù)值。


以下的附圖是為了使本發(fā)明更易于了解。此附圖與實施方式是為了說明本發(fā)明的實施例,并闡述本發(fā)明的原理。如下所示圖1示出傳統(tǒng)直接存儲器存取控制器。
圖2示出本發(fā)明的一個優(yōu)選實施例的直接存儲器存取控制器的結(jié)構(gòu)圖。
圖3示出本發(fā)明的一個優(yōu)選實施例的通道預(yù)測寄存器配置的方塊圖。
圖4示出本發(fā)明的一個優(yōu)選實施例的、包括錯誤響應(yīng)信號的直接存儲器存取通道參數(shù)更新過程。
圖5示出本發(fā)明的一個優(yōu)選實施例的、內(nèi)部通道分組直接存儲器存取服務(wù)過程的流程圖。
圖6示出本發(fā)明的一個優(yōu)選實施例的直接存儲器存取控制器的尾部搜尋單元的方塊圖。
圖7示出本發(fā)明的一個優(yōu)選實施例的直接存儲器存取控制器的通道預(yù)測單元的方塊圖。
主要元件符號說明212通道組態(tài)暫存器214請求遮罩單元216通道請求仲裁器218尾部搜尋單元220通道預(yù)測單元222命令與請求項目產(chǎn)生器224請求隊列226命令隊列302預(yù)測外部記憶體地址304預(yù)測本地記憶體地址306預(yù)測位元計數(shù)308預(yù)測線路計數(shù)310預(yù)測終端計數(shù)312預(yù)留欄位具體實施方式
本發(fā)明公開了一種可支持同一通道中多個處于等待的軟件請求的直接存儲器存取控制器。本發(fā)明的直接存儲器存取控制器可根據(jù)尾部搜尋結(jié)果動態(tài)產(chǎn)生一組預(yù)測通道參數(shù)。在本發(fā)明的一個優(yōu)選實施例中,當(dāng)其余請求已置入隊列中且后續(xù)的請求正在排程時,可計算預(yù)測參數(shù)值,并伴隨一通道號碼(channel number)放置于請求隊列以做為項目的一部份,以有效解決先前的地址計算與終端計數(shù)問題。
參考圖2,該圖是本發(fā)明的一個優(yōu)選實施例的直接存儲器存取控制器的結(jié)構(gòu)圖。直接存儲器存取控制器200包括多組通道配置寄存器(channelconfiguration register)212、請求屏蔽(request mask,Req Mask)單元214、一個通道請求仲裁器(channel request arbiter)216、尾部搜尋單元(tail searchunit)218、通道預(yù)測單元(channel prediction unit)220、命令和請求項產(chǎn)生器(command/request entry generator)222、請求隊列(request queue,reqQ)224以及命令隊列(command queue,cmdQ)226。
請求屏蔽單元214不僅接收軟件請求也接收與當(dāng)前直接存儲器存取通道相關(guān)的硬件請求,并且將上述的請求傳送到通道請求仲裁器216。當(dāng)通道請求仲裁器216指定某個新軟件請求并將其列入服務(wù)清單時,命令和請求項產(chǎn)生器222首先執(zhí)行所謂的尾部搜尋,以尋找在指定通道的內(nèi)部請求隊列(reqQ)224是否已有處于等待的請求。已列入服務(wù)清單且放進請求隊列的直接存儲器存取請求將由直接存儲器存取控制器依序執(zhí)行。在尾部搜尋期間,命令和請求項產(chǎn)生器222搜尋命令隊列(reqQ)224中具有相同通道號碼的有效項。在一個實施例中,該搜尋從請求隊列224尾部至頭部搜尋所有項,以尋找直接存儲器存取中目前處于等待的最后一個內(nèi)部通道軟件請求。如果找到了該項,則隨后即停止尾部搜尋,而尾部搜尋單元218會將該項的預(yù)測參數(shù)值傳送給通道參數(shù)預(yù)測單元220;否則尾部搜尋單元218傳送該指定通道的實際通道參數(shù)值給通道參數(shù)預(yù)測單元220。通道參數(shù)單元220使用從尾部搜尋接收的數(shù)值來預(yù)測與該軟件請求相關(guān)的新通道參數(shù)。該命令和請求項產(chǎn)生器222將相關(guān)的項推進請求隊列224并將描述元推進命令隊列226以產(chǎn)生并半隊列化新的請求。在一個實施例中,請求隊列和命令隊列都以先進先出為基礎(chǔ)來處理。
參考圖3,其是本發(fā)明的一個優(yōu)選實施例的寄存器配置,其示出請求隊列中包含通道預(yù)測字段的一個項。本范例通過將請求隊列的每一項與一單一80位寄存器相結(jié)合,以實現(xiàn)可支持內(nèi)部通道多個軟件請求的功能。請求隊列項寄存器300包含至少4個字段來表示預(yù)測通道參數(shù),其分別為預(yù)測終端計數(shù)(predicted terminal count)、預(yù)測字節(jié)計數(shù)(predicted byte count),預(yù)測本地存儲器地址(predicted local memory address)、以及預(yù)測外部存儲器地址(extemal memory address)。第一個字段是一位的預(yù)測終端計數(shù)(PRED_TC)310,用以預(yù)測當(dāng)相關(guān)的處于等待的請求完成時,該通道是否將到達終端計數(shù)。第二個字段是16位的預(yù)測位計數(shù)(PRED_BYTE_COUNT)306,用以預(yù)測當(dāng)相關(guān)的處于等待的請求完成之后,剩余需發(fā)送到一特定的通道上的位數(shù)量。第三個字段是16位的預(yù)測本地存儲器地址(PRED_LM_ADDR)304,用以預(yù)測相關(guān)的處于等待的請求完成之后,本地存儲器內(nèi)的下個地址為何。第四個字段是32位的預(yù)測外部存儲器地址(PRED_EM_ADDR)302,用以預(yù)測當(dāng)相關(guān)的處于等待的請求完成之后,外部存儲器地址內(nèi)的下個地址為何。此外,第五個字段是5位的預(yù)測線路計數(shù)(PRED_LN_COUNT)308,可視需要于直接存儲器存取控制器為固定偏移(Offset)分散或集中直接存儲器存取控制器時選擇性使用。預(yù)測線路計數(shù)(PRED_LN_COUNT)308用以預(yù)測當(dāng)相關(guān)的處于等待的請求完成之后,線路計數(shù)值為何。剩余的10位則為保留為預(yù)留字段312。關(guān)于固定偏移分散或聚集直接存儲器存取控制器的詳細(xì)數(shù)據(jù)可在申請人的另一申請“固定偏移分散或聚集直接存儲器存取控制器”得知相關(guān)細(xì)節(jié)。請求項內(nèi)還包含其它未顯示在圖中的信息,例如,用以表示一請求項為有效的有效位,以及結(jié)合一項與直接存儲器存取控制器其中一通道的通道號碼信息字段。
在操作中,當(dāng)一新的軟件請求被列入服務(wù)清單,且尾部搜尋單元218顯示無其它請求處于等待中,命令和請求項產(chǎn)生器222會產(chǎn)生命令描述元傳給命令隊列(cmdQ)226,并依據(jù)通道配置寄存器212中的通道參數(shù)值執(zhí)行通道參數(shù)預(yù)測。另一方面,當(dāng)一個新的軟件請求被列入服務(wù)清單,同時尾部搜尋單元218顯示已有其它請求處于等待中,命令和請求項產(chǎn)生器222則產(chǎn)生命令描述元傳給命令隊列(cmdQ)226,并依據(jù)請求隊列(reqQ)224中最新的預(yù)測通道參數(shù)值執(zhí)行新通道參數(shù)預(yù)測。若預(yù)測終端計數(shù)310為1時,則該內(nèi)部通道軟件請求受請求屏蔽單元214屏蔽。
依據(jù)直接存儲器存取控制器所能提供的功能,通道參數(shù)預(yù)測可增加其它信息類型的預(yù)測。其中的一個范例為預(yù)測線路計數(shù)參數(shù),其為預(yù)測線路區(qū)段計數(shù)值,用以改善固定偏移分散或聚集直接存儲器存取控制器的分散或聚集性能。該控制器的詳細(xì)數(shù)據(jù)在申請人的另一申請案“固定補償分散或聚集直接存儲器存取控制器”,其中有更詳細(xì)的描述。
直接存儲器存取控制器可將直接存儲器存取傳輸分解成較小的數(shù)據(jù)分組,并以突發(fā)傳輸?shù)姆绞剿椭料到y(tǒng)總線,在一個實施例中,該系統(tǒng)總線為先進高效能總線(AHB)。
舉例而言,直接存儲器存取控制器可以1位、2位或4位的單一、4節(jié)拍或8節(jié)拍的突發(fā)傳輸來傳送與接收數(shù)據(jù),其中4位的8節(jié)拍突發(fā)傳輸是在8個連續(xù)數(shù)據(jù)時鐘周期中傳輸4位數(shù)據(jù)。在通道配置時,編程器可決定直接存儲器存取傳輸計數(shù),來源與目的地址以及數(shù)據(jù)應(yīng)如何傳送。舉例而言,如果傳輸計數(shù)設(shè)定為1024字節(jié),則應(yīng)使用4位的8個節(jié)拍突發(fā)傳輸,直接存儲器存取控制器會將傳輸分成32個突發(fā)傳輸(32×8×4=1024)。
當(dāng)突發(fā)傳輸送出后,直接存儲器存取控制器會連續(xù)不斷地更新其通道配置寄存器。先進高效能總線(AHB)的一個重要特征為每個數(shù)據(jù)狀態(tài)傳輸與來自接收終端的響應(yīng)相關(guān)。一個典型實例為,直接存儲器存取控制器隨著OK響應(yīng)而送出或接收突發(fā)傳輸數(shù)據(jù)。在其它實施例中,突發(fā)傳輸可能會等待、分裂或重試,意即突發(fā)傳輸將于稍后完成。無論如何,如果在其中一通道的直接存儲器存取傳輸期間接收到錯誤信息響應(yīng),則直接存儲器存取控制器將會禁止該直接存儲器存取通道,更新該通道的傳輸大小以及來源與目的地址寄存器,使其可反應(yīng)于錯誤信息響應(yīng)發(fā)送之前已成功送出的數(shù)據(jù)數(shù)量,并設(shè)定通道錯誤標(biāo)志。與錯誤信息響應(yīng)相關(guān)的數(shù)據(jù)傳輸將因此中止。在圖4的實施例中,第0數(shù)組是依據(jù)用戶的設(shè)定值。第1列與第2列的數(shù)值對應(yīng)于先進高效能總線上一突發(fā)傳輸成功后所更新的數(shù)值。第3列則反映至接收到錯誤信息響應(yīng)為止所傳送的位數(shù)目。接收到錯誤信息響應(yīng)后,該通道可再一次藉由軟件來執(zhí)行服務(wù)。
當(dāng)一直接存儲器存取通道是用以自本地存儲器傳輸數(shù)據(jù)至外部存儲器配置時,該直接存儲器存取讀取對應(yīng)于本地存儲器的突發(fā)傳輸?shù)臄?shù)據(jù)分組,并將該數(shù)據(jù)分組置入寫入請求隊列(wrQ),而且命令和請求項產(chǎn)生器會產(chǎn)生一寫入命令到命令隊列(cmdQ)中以及一描述請求項到請求隊列(reqQ)。當(dāng)突發(fā)傳輸經(jīng)由系統(tǒng)總線傳輸,與每個數(shù)據(jù)狀態(tài)傳輸相關(guān)的響應(yīng)會以相反方向通過響應(yīng)隊列(respQ)。響應(yīng)分析器接著提供更新的通道信息給通道配置寄存器。命令項(command entry)、請求項(request entry)與響應(yīng)分組(respose packet)都與每一寫入數(shù)據(jù)分組(write-data packet)相關(guān)。
另一方面,當(dāng)直接存儲器存取通道用以自外部存儲器傳輸數(shù)據(jù)至本地存儲器,直接存儲器存取將來自命令和請求項產(chǎn)生器的讀取命令置放至命令隊列(cmdQ)并將請求項置放至請求隊列(reqQ)。當(dāng)突發(fā)傳輸送至系統(tǒng)總線,讀取數(shù)據(jù)被置入讀取數(shù)據(jù)隊列(rdQ),同時相關(guān)響應(yīng)也被置入響應(yīng)隊列(respQ)。響應(yīng)分析器接著提供更新的通道信息給通道配置寄存器。此外,命令項、請求響應(yīng)與應(yīng)答分組都與每一讀取數(shù)據(jù)分組(read-data packet)相關(guān)。
本發(fā)明是關(guān)于直接存儲器存取控制器的設(shè)計,該直接存儲器存取控制器與可支持每筆數(shù)據(jù)傳輸相關(guān)的許可或中止響應(yīng)信號的系統(tǒng)總線相連接,該直接存儲器存取控制器通過支持多個處于等待的內(nèi)部通道軟件請求以最佳化快速存儲器對存儲器傳輸。
傳輸計數(shù)、來源與目的地址寄存器應(yīng)在突發(fā)傳輸已通過系統(tǒng)總線,以及其相關(guān)的許可或中止響應(yīng)已被確認(rèn)之后再做更新較為恰當(dāng)。甚者,若在直接存儲器存取控制器中包含多個屬于同一直接存儲器存取通道的處于等待的請求,且其相關(guān)的數(shù)據(jù)傳輸在總線上被中止,傳輸計數(shù)、來源與目的地址寄存器在分組被列入服務(wù)清單時即迅速更新,則于上述情況發(fā)生時將難以計算正確的值。在一直接存儲器存取數(shù)據(jù)總線傳輸中止后,其相關(guān)的直接存儲器存取通道應(yīng)被禁止,且該通道中的傳輸計數(shù)值、來源與目的地址寄存器應(yīng)反映被終止的數(shù)據(jù)。
當(dāng)一分組列入直接存儲器存取傳輸清單,直到該分組到達目的地的時間點時,可能產(chǎn)生可觀的時間延遲。同時事先可能已有多個處于等待的分組被列入清單了。因此在分組傳送完畢且所有的響應(yīng)都已經(jīng)過確認(rèn)后,再更新通道參數(shù),還可提供追蹤直接存儲器存取傳輸行進的能力。實際通道參數(shù)的更新應(yīng)以可反映已成功傳送的數(shù)據(jù)的方式執(zhí)行。
參考圖5,其是在直接存儲器存取控制器中,運用多個處于等待的軟件請求的內(nèi)部通道數(shù)據(jù)分組直接存儲器存取傳輸過程的流程圖。首先于步驟502設(shè)定直接存儲器存取通道的初始配置,此步驟使用軟件請求與8節(jié)拍突發(fā)傳輸?shù)?位數(shù)據(jù)傳輸,以傳送107位數(shù)據(jù)。直接存儲器存取控制器在504、506與508等三個步驟中分別傳送三個32位分組并于步驟512中傳送11位的分組。這些分組在步驟504、506與508中依序處理。通道參數(shù)如傳輸計數(shù)、來源與目的地址與終端計數(shù)等,在每一次數(shù)據(jù)分組完成傳輸,且其相關(guān)的響應(yīng)信號已經(jīng)確認(rèn)后受到更新,也即在步驟510、514、516與518結(jié)束時。當(dāng)編號#1、#2與#3的分組被列入傳輸清單以備傳輸時,直接存儲器存取控制器內(nèi)已有其它內(nèi)部通道分組處于等待中。因此,直接存儲器存取控制器只有在處理分組#0時會使用通道的配置寄存器內(nèi)的實際參數(shù)值,而在處理其它分組#1、#2與#3時這些參數(shù)值并非最新更新值。
因此,如果在直接存儲器存取控制器內(nèi)有多個處于等待的內(nèi)部通道分組時,如何確定尚有其它的內(nèi)部通道分組也可被列入排程清單;再者,若該內(nèi)部通道分組可被列入排程清單,又要如何決定其大小、來源與目的地址,皆為需解決的課題。
其中一個解決問題的方法是,提供一組與每一通道相關(guān)的預(yù)測通道參數(shù)值,當(dāng)直接存儲器存取通道有一個已列入排程的分組等待傳輸,且其仍于直接存儲器存取控制器內(nèi)等待時,該組參數(shù)為有效值。當(dāng)該組參數(shù)被視為有效值時,則于每次直接存儲器存取通道排定一新的分組進入服務(wù)清單時,使用該組預(yù)測參數(shù)值。該組預(yù)測值是一請求成功完成后所得到的值。依據(jù)該組預(yù)測值,所有與下一內(nèi)部通道的分組相關(guān)的參數(shù),例如分組大小、來源與目的地址寄存器等,可于其它內(nèi)部通道的分組仍在隊列中等待時,即可計算得知。如果直接存儲器存取控制器可支持的處于等待的分組總數(shù)的最大值,比直接存儲器存取通道總數(shù)還多,則該組通道預(yù)測參數(shù)可與每個通道的配置寄存器共同被存儲。然而,當(dāng)受支持的通道數(shù)量要比處于等待的分組的最大總數(shù)量多時,則將此預(yù)測通道參數(shù)提供為請求隊列(reqQ)中處于等待的請求的項的一部分,乃為較節(jié)省成本的作法。
該預(yù)測終端計數(shù)位310由圖2中的請求屏蔽單元214所使用。請求屏蔽單元214監(jiān)控所有與當(dāng)前的直接存儲器存取通道相關(guān)的硬件與軟件請求,遮蔽部分有效請求,并將其它的有效請求送至通道請求仲裁器以作為當(dāng)前的請求。當(dāng)一直接存儲器存取通道已有請求于直接存儲器存取控制器內(nèi)處于等待時,與此通道相關(guān)的硬件請求則永遠被遮蔽。如果一個已啟動的通道包含有效項于請求隊列中,且預(yù)測終端計數(shù)位310被設(shè)為1,則此通道的軟件請求亦被遮蔽。
通道請求仲裁器216監(jiān)視來自請求屏蔽單元214的所有當(dāng)前的請求,并選擇下個欲服務(wù)的直接存儲器存取通道號碼。該通道號碼供予尾部搜尋單元218與命令和請求項產(chǎn)生器222使用,并可用以多任務(wù)輸出與所選定的通道相關(guān)的實際通道參數(shù)212。
參考圖6,是圖解本發(fā)明的一個優(yōu)選實施例的尾部搜尋單元。在本實施例中,尾部搜尋單元800支持3-項深度先進先出請求隊列(reqQ)。尾部搜尋優(yōu)先譯碼器802的輸入包含預(yù)測通道參數(shù)值,請求隊列(reqQ)224中請求隊列項的通道號碼與有效位,其中reqQ[2].*表示來自reqQ的尾部項的參數(shù),而reqQ
.*表示來自reqQ的頭部項的參數(shù)。尾部搜尋優(yōu)先譯碼器802的輸入還包含所選定通道的實際通道參數(shù)值,以ch_nr.*來表示,以及來自通道仲裁器216的所選定的通道號碼arb_ch_nr。如果所選定的通道于請求隊列的項中存在有優(yōu)先譯碼器802所產(chǎn)生的最新預(yù)測的內(nèi)部通道參數(shù)值,則尾部搜尋單元800根據(jù)此預(yù)測參數(shù)值產(chǎn)生數(shù)個輸入?yún)?shù)(于圖6中標(biāo)示為p_X);反之,則依據(jù)所選定通道的實際參數(shù)值來產(chǎn)生。p_X輸入?yún)?shù),例如p_ln_count、p_byte_count、p_em_addr、p_lm_addr,供予前述的通道參數(shù)預(yù)測單元以及命令和請求項產(chǎn)生器使用。
參考圖7,其圖解本發(fā)明的一個優(yōu)選實施例的通道參數(shù)預(yù)測單元900。在本實施例中,通道參數(shù)預(yù)測單元900所接收的輸入包含p_ln_count、p_byte_count、p_em_addr與p_lm_addr等來自尾部搜尋單元的信號,與所選定的通道相關(guān)的某些實際通道參數(shù)以及packet_size等,其中packet_size是由圖2的命令和請求項產(chǎn)生器222依據(jù)所選定的通道其突發(fā)傳輸長度與傳輸大小參數(shù)以及p_byte_count的值計算而得。通道參數(shù)預(yù)測單元900可產(chǎn)生與即將列入排程的新請求相關(guān)的一組新的預(yù)測通道參數(shù)。
本發(fā)明的直接存儲器存取控制器可于監(jiān)控系統(tǒng)總線上的每一數(shù)據(jù)傳輸相關(guān)的響應(yīng)時,隱藏其過程所引起的數(shù)據(jù)分組處理延遲,而達到提升存儲器對存儲器傳輸效率的效果。
雖然本發(fā)明已公開數(shù)個優(yōu)選實施例,但本發(fā)明也同時覆蓋這些實施例的各種變化。在本發(fā)明的實施例是實現(xiàn)一種用于處于等待的請求隊列的格式,但也可以利用其它相似的方法應(yīng)用于其它寄存器配置以達到相似的結(jié)果。
綜上所述,本領(lǐng)域技術(shù)人員應(yīng)可推知,本發(fā)明的范圍并不局限于實施例的公開與描述,且在不違背本說明書所公開原理與新穎特征之下,本發(fā)明的范圍也涵蓋利用本發(fā)明的精神所為的改進與變形。
權(quán)利要求
1.一種直接存儲器存取(DMA)控制器,包括請求隊列,用于存儲至少一個項,每一項至少包含一組預(yù)測參數(shù)和一直接存儲器存取通道號碼;尾部搜尋單元,用于搜尋該請求隊列中屬于一選定的直接存儲器存取通道的處于等待的請求,并輸出通道參數(shù);通道預(yù)測單元,用于產(chǎn)生至少一組與一新請求相關(guān)的預(yù)測通道參數(shù),該新請求根據(jù)該尾部搜尋單元的該通道參數(shù)所排程;以及命令和請求項產(chǎn)生器,用于根據(jù)該尾部搜尋單元的該通道參數(shù)與該通道預(yù)測單元的該組預(yù)測通道參數(shù),發(fā)送該新請求至該請求隊列;其中該尾部搜尋單元于該請求隊列中搜尋不到有效的處于等待的請求時,停止搜尋,并輸出該項的該組預(yù)測通道參數(shù);該通道預(yù)測單元于該請求隊列中搜尋到有效的處于等待的請求時,輸出該選定通道的一組實際通道參數(shù)值。
2.如權(quán)利要求1所述的直接存儲器存取控制器,還包括多個通道配置寄存器,用于存儲多個當(dāng)前的直接存儲器存取通道,并且輸出一組實際通道參數(shù);通道請求仲裁器,用于仲裁該通道配置寄存器中,與所有這些當(dāng)前的直接存儲器存取通道相關(guān)的多個請求,以及選擇欲服務(wù)的下個直接存儲器存取通道號碼;以及請求屏蔽單元,用于接收多個軟件請求以及與當(dāng)前的直接存儲器存取通道相關(guān)的多個硬件請求,并將所述多個軟件請求與多個硬件請求傳送至該通道請求仲裁器以尋求服務(wù);其中該通道請求仲裁器監(jiān)控來自該請求屏蔽單元的所有這些當(dāng)前請求。
3.如權(quán)利要求1所述的直接存儲器存取控制器,其中該預(yù)測通道參數(shù)包括預(yù)測終端計數(shù)字段,用于存儲預(yù)測結(jié)果,以顯示當(dāng)成功完成該處于等待的請求后,該選定的直接存儲器存取通道是否到達其終端計數(shù);預(yù)測位計數(shù)字段,用于存儲當(dāng)成功完成該處于等待的請求后,所需傳送的預(yù)測剩余位的值;二個預(yù)測存儲器地址字段,用于存儲當(dāng)成功完成該處于等待的請求后,預(yù)測來源與目的存儲器地址的值;以及預(yù)測線路計數(shù)字段,用于存儲預(yù)測線路區(qū)段計數(shù)值。
4.如權(quán)利要求1所述的直接存儲器存取控制器,其中該尾部搜尋單元包含下列組件至少一個多任務(wù)器;以及尾部搜尋優(yōu)先譯碼器,用于支持多重項目深度的請求隊列,該尾部搜尋優(yōu)先譯碼器接收所述預(yù)測通道參數(shù)值、該通道號碼與來自該請求隊列中對應(yīng)的所述項的多個有效位,并且該尾部搜尋優(yōu)先譯碼器也接收來自該選定的直接存儲器存取通道的該組實際通道參數(shù)值。
5.如權(quán)利要求4所述的直接存儲器存取控制器,其中該尾部搜尋單元根據(jù)該尾部搜尋優(yōu)先譯碼器所產(chǎn)生最新的預(yù)測內(nèi)部通道參數(shù)值以產(chǎn)生多個輸入?yún)?shù)。
6.一種直接存儲器存取控制器的等待請求隊列,包括預(yù)測終端計數(shù)字段,用于存儲預(yù)測結(jié)果,以顯示當(dāng)成功完成一處于等待的請求后,一特定的通道是否到達其終端計數(shù);預(yù)測位計數(shù)字段,用于存儲當(dāng)成功完成該處于等待的請求后,所需傳送的預(yù)測剩余位的值;以及兩個預(yù)測存儲器地址字段,用于存儲當(dāng)成功完成該處于等待的請求后,預(yù)測來源存儲器地址與預(yù)測目的存儲器地址的值。
7.如權(quán)利要求6所述的等待請求隊列,還包括預(yù)測線路計數(shù)字段,用于存儲預(yù)測線路區(qū)段計數(shù)值。
8.一種在直接存儲器存取控制器中傳輸多個處于等待的請求的方法,包括存儲至少一個項,每個項至少包含預(yù)測參數(shù)值和直接存儲器存取通道號碼;尾部搜尋一指定的直接存儲器存取通道是否有任何請求在一請求隊列處于等待,若在該尾部搜尋期間尋得任何有效的處于等待的內(nèi)部通道請求,則停止該尾部搜尋動作,并且輸出對應(yīng)的該項的預(yù)測參數(shù)值,若尾部搜尋期間找不到有效的處于等待的內(nèi)部通道請求,則輸出該指定的直接存儲器存取通道的一組實際通道參數(shù)值;根據(jù)該尾部搜尋的結(jié)果,產(chǎn)生至少一組與一個被列入排程的新請求相關(guān)的預(yù)測通道參數(shù);以及根據(jù)該尾部搜尋的結(jié)果與該組新的預(yù)測通道參數(shù),傳送該新請求至該請求隊列。
9.如權(quán)利要求8所述的方法,還包括接收與當(dāng)前的多個直接存儲器存取通道相關(guān)的多個軟件請求和多個硬件請求,并對所述多個軟件請求與多個硬件請求進行仲裁。
10.如權(quán)利要求8所述的方法,還包括存儲多個當(dāng)前的直接存儲器存取通道,并且輸出一組實際通道參數(shù),以及仲裁與所有這些當(dāng)前的直接存儲器存取通道相關(guān)的多個有效的直接存儲器存取傳輸請求,并選擇欲服務(wù)的下一個直接存儲器存取通道號碼。
11.如權(quán)利要求8所述的方法,其中該預(yù)測通道參數(shù)包括預(yù)測終端計數(shù)字段,用于存儲預(yù)測結(jié)果,以顯示當(dāng)成功完成該處于等待的請求后,該指定的直接存儲器存取通道是否到達其終端計數(shù);預(yù)測位計數(shù)字段,用于存儲當(dāng)成功完成該處于等待的請求后,所需傳送的預(yù)測剩余位的值;兩個預(yù)測存儲器地址字段,用于存儲當(dāng)成功完成該處于等待的請求后,預(yù)測來源存儲器地址與預(yù)測目的存儲器地址的值;以及預(yù)測線路計數(shù)字段,用于存儲預(yù)測線路區(qū)段計數(shù)值。
12.如權(quán)利要求8所述的方法,還包括接收該預(yù)測通道參數(shù),該直接存儲器存取通道號碼與多個有效位是來自請求隊列中對應(yīng)所述項的多個有效位,同時也接收該指定的直接內(nèi)存通道的該實際通道參數(shù)。
13.如權(quán)利要求12所述的方法,還包括根據(jù)最新的該預(yù)測通道參數(shù),產(chǎn)生多個輸入?yún)?shù)。
全文摘要
本發(fā)明提供一種直接存儲器存取(DMA)控制器,可支持一通道(內(nèi)部通道)中多個處于等待的軟件請求。該直接存儲器存取控制器包含多個通道配置緩存器、通道請求仲裁器、尾部搜尋單元、通道預(yù)測單元、命令和請求項產(chǎn)生器與請求隊列。這些通道配置寄存器可輸出一組實際通道參數(shù),該通道預(yù)測單元則產(chǎn)生一組預(yù)測通道參數(shù),而命令和請求項產(chǎn)生器乃依據(jù)尾部搜尋單元的輸出送出一請求至請求隊列。如果在對直接存儲器存取控制器的當(dāng)前處于等待的請求執(zhí)行尾部搜尋的過程中沒有找到有效的處于等待的內(nèi)部通道請求,則該命令和請求項產(chǎn)生器會使用實際通道參數(shù)值以產(chǎn)生下個命令和請求;否則,該命令和請求項產(chǎn)生器使用最新列入排程的內(nèi)部通道軟件請求的預(yù)測通道參數(shù)值,以產(chǎn)生下個命令和請求。
文檔編號G06F13/28GK1991810SQ200610171740
公開日2007年7月4日 申請日期2006年12月19日 優(yōu)先權(quán)日2005年12月19日
發(fā)明者伊沃·圖西克 申請人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1