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