專利名稱:多通道緩存分配方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子通信技術(shù)領(lǐng)域,尤其涉及一種多通道緩存分配方法及裝置。
背景技術(shù):
隨著信息技術(shù)以及電路集成規(guī)模的高速發(fā)展,在通信數(shù)據(jù)傳輸系統(tǒng)中,多通 道數(shù)據(jù)緩存處理越來(lái)越成為了一種常見(jiàn)的電路設(shè)計(jì)。例如,在常見(jiàn)的同步數(shù)字體系 (Synchronous Digital Hierarchy,簡(jiǎn)稱SDH)通信網(wǎng)絡(luò)中,按照接口類型便可以劃分為El、 CEl和El-F三種,而其中的El接口按照時(shí)隙又可以劃分為30個(gè)數(shù)據(jù)通道。因而,為了能夠 同時(shí)對(duì)多個(gè)接口及多個(gè)數(shù)據(jù)通道的數(shù)據(jù)傳輸進(jìn)行處理,通常需要為各個(gè)通道分配相應(yīng)的緩 存空間,以滿足各個(gè)通道的數(shù)據(jù)存儲(chǔ)需求?,F(xiàn)有技術(shù)中常見(jiàn)的多通道緩存分配方案有如下兩種第一種方案為固定深度緩存 分配方法,即為每個(gè)數(shù)據(jù)通道均固定分配相同深度的緩存,使得在分配之后,每個(gè)通道可用 的緩存空間大小都是一致的。這種方案存在明顯的缺陷在通信系統(tǒng)中,通常對(duì)應(yīng)于不同的 數(shù)據(jù)通道,其數(shù)據(jù)傳輸能力、即帶寬大小均有可能不同,因此若為具有不同帶寬能力的數(shù)據(jù) 通道分配相同深度的緩存,將導(dǎo)致帶寬較大的通道緩存不夠使用,而帶寬較小的通道存在 剩余緩存的情況,尤其是當(dāng)使用芯片內(nèi)部存儲(chǔ)資源作為各通道的緩存空間時(shí),這種分配方 案是非常不合理的,將造成極大的資源浪費(fèi)。第二種方案為深度可預(yù)設(shè)緩存分配方法,在這種方法中,預(yù)先根據(jù)各通道不同的 帶寬大小,為各個(gè)通道對(duì)應(yīng)分配了大小不同的緩存,使得帶寬較大的通道能分配到較多的 緩存空間,而帶寬較小的通道則分配到較少的緩存空間。但是這種方案同樣存在分配不合 理的缺陷且不論每個(gè)數(shù)據(jù)通道的帶寬可能會(huì)隨著應(yīng)用場(chǎng)景的不同而隨之發(fā)生變化,即使 對(duì)于帶寬大小固定的數(shù)據(jù)通道而言,數(shù)據(jù)處理能力的大小也并不能代表該通道當(dāng)前需處理 數(shù)據(jù)的多少。例如即使對(duì)于一個(gè)帶寬較大的數(shù)據(jù)通道而言,其同樣會(huì)存在無(wú)需進(jìn)行任何數(shù) 據(jù)處理的時(shí)刻,而在該時(shí)刻,該通道所分配的較大的緩存空間便成為了一種浪費(fèi)。因而在該 第二種方案中,由于一旦緩存分配結(jié)束后,每個(gè)數(shù)據(jù)通道可用的緩存空間大小便固定不變, 同樣會(huì)導(dǎo)致緩存分配大小不合理的現(xiàn)象。
發(fā)明內(nèi)容
本發(fā)明提供一種多通道緩存分配方法及裝置,用以克服現(xiàn)有技術(shù)中為多個(gè)通道分 配緩存時(shí)出現(xiàn)的緩存分配大小不合理的缺陷,為實(shí)現(xiàn)上述目的,本發(fā)明提供一種多通道緩存分配方法,包括根據(jù)每個(gè)通道各自的帶寬能力分別為所述每個(gè)通道設(shè)置對(duì)應(yīng)的緩存門限,所述緩 存門限用于標(biāo)識(shí)所述每個(gè)通道最大可占用的緩存單元數(shù)目;當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)所述通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ) 狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及所述數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù) 的容量大小,判斷所述通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;
若所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件,則在所述通道的當(dāng)前寫緩存單元容量未滿 時(shí),將所述待寫入數(shù)據(jù)寫入至所述當(dāng)前寫緩存單元中,并在所述當(dāng)前寫緩存單元容量已滿 時(shí),在所述通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種多通道緩存分配裝置,包括緩存門限設(shè)置模塊,用于根據(jù)每個(gè)通道各自的帶寬能力分別為所述每個(gè)通道設(shè)置 對(duì)應(yīng)的緩存門限,所述緩存門限用于標(biāo)識(shí)所述每個(gè)通道最大可占用的緩存單元數(shù)目;判斷模塊,用于當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)所述通道的當(dāng)前寫緩存 單元的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及所述數(shù)據(jù)寫入請(qǐng) 求中待寫入數(shù)據(jù)的容量大小,判斷所述通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;數(shù)據(jù)寫入模塊,用于若所述判斷模塊判斷出所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件, 則在所述通道的當(dāng)前寫緩存單元容量未滿時(shí),將所述待寫入數(shù)據(jù)寫入至所述當(dāng)前寫緩存單 元中;第一緩存分配模塊,用于在所述當(dāng)前寫緩存單元容量已滿時(shí),在所述通道中為未 寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。本發(fā)明提供的多通道緩存分配方法及裝置,通過(guò)為每個(gè)通道對(duì)應(yīng)設(shè)置一個(gè)合理的 緩存分配上限值,且通過(guò)在當(dāng)某個(gè)通道需要進(jìn)行數(shù)據(jù)傳輸時(shí),依據(jù)該數(shù)據(jù)傳輸請(qǐng)求的緩存 需求以及該通道對(duì)應(yīng)的門限值,動(dòng)態(tài)地為該通道分配所需緩存,而對(duì)于無(wú)需傳輸數(shù)據(jù)的通 道,則不為該通道分配任何緩存資源,從而使得每個(gè)通道占用的緩存資源均不會(huì)超過(guò)預(yù)設(shè) 可調(diào)節(jié)的上限值,且?guī)捿^大的通道可以占用較多的緩存資源,帶寬較小的通道占用較少 的緩存資源,沒(méi)有數(shù)據(jù)傳輸需求的通道則不占用任何緩存資源,避免了多通道緩存分配時(shí) 出現(xiàn)的緩存資源浪費(fèi)及緩存分配不合理的現(xiàn)象,進(jìn)一步地,通過(guò)為每個(gè)通道設(shè)置對(duì)應(yīng)的緩 存上限值,還避免了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響其他通道的數(shù)據(jù)傳輸?shù)?現(xiàn)象。
為了更清楚地說(shuō)明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù) 描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一 些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這 些附圖獲得其他的附圖。圖1為本發(fā)明多通道緩存分配方法實(shí)施例一的流程圖;圖2為本發(fā)明多通道緩存分配方法實(shí)施例二的流程圖;圖3為本發(fā)明中各個(gè)通道對(duì)應(yīng)的已占用緩存單元列表的示意圖;圖4為本發(fā)明中系統(tǒng)對(duì)應(yīng)的緩存單元列表的示意圖;圖5為本發(fā)明多通道緩存分配裝置實(shí)施例一的結(jié)構(gòu)示意圖;圖6為本發(fā)明多通道緩存分配裝置實(shí)施例二的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附 圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明
6一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有 做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明多通道緩存分配方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例具體 包括如下步驟步驟100,根據(jù)每個(gè)通道各自的帶寬能力分別為該每個(gè)通道設(shè)置對(duì)應(yīng)的緩存門限, 該緩存門限用于標(biāo)識(shí)各通道最大可占用的緩存單元數(shù)目;在多通道數(shù)據(jù)通信系統(tǒng)中,對(duì)于分別與多個(gè)端口對(duì)應(yīng)的多個(gè)數(shù)據(jù)通道而言,由于 各個(gè)端口的類型以及各自的帶寬通常會(huì)有所不同,因而各通道分別具備的數(shù)據(jù)傳輸能力也 將相應(yīng)的有所不同。在本實(shí)施例中,為了避免出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響 到其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象,針對(duì)具有不同帶寬的各個(gè)數(shù)據(jù)通道,將根據(jù)各通道各自對(duì) 應(yīng)的帶寬能力,為每個(gè)通道設(shè)置一個(gè)相應(yīng)的緩存門限,即為各個(gè)通道設(shè)置一個(gè)對(duì)應(yīng)的緩存 分配上限值。該緩存門限對(duì)應(yīng)地標(biāo)識(shí)了各個(gè)通道最大可占用的緩存單元數(shù)目,使得對(duì)應(yīng)于 每個(gè)通道,各通道最大所能占用的緩存單元數(shù)目均不能超過(guò)與該通道對(duì)應(yīng)的緩存門限。具體地,該設(shè)置的緩存門限與各通道的帶寬能力相對(duì)應(yīng),而且在整個(gè)多通道系統(tǒng) 中,所有的緩存空間均被合理劃分為固定大小的緩存單元,每個(gè)通道的緩存門限以緩存單 元為單位而設(shè)置得到。對(duì)于帶寬能力較強(qiáng)、平均時(shí)間內(nèi)數(shù)據(jù)傳輸速度較快的通道而言,由于 該通道的數(shù)據(jù)流量相對(duì)較大,數(shù)據(jù)容易在對(duì)應(yīng)的緩存中進(jìn)行積累,相應(yīng)地該通道所需的緩 存空間通常較多,因而本實(shí)施例中為該通道設(shè)置的緩存門限也相應(yīng)較大,即為該通道設(shè)置 的最大可占用的緩存單元數(shù)目也較多;而反之,對(duì)于帶寬能力較差、平均時(shí)間內(nèi)數(shù)據(jù)傳輸速 度較慢的通道而言,由于該通道的數(shù)據(jù)流量相對(duì)較小,數(shù)據(jù)不太容易在對(duì)應(yīng)的緩存中積累, 相應(yīng)地該通道所需的緩存空間通常較少,則本實(shí)施例中為該通道設(shè)置的緩存門限也將相應(yīng) 較小,即為該通道設(shè)置的最大可占用的緩存單元數(shù)目也較少。步驟101,當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)該通道的當(dāng)前寫緩存單元的數(shù) 據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元數(shù)目、對(duì)應(yīng)的緩存門限,以及數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù) 據(jù)的容量大小,判斷該通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;為各個(gè)通道設(shè)置了對(duì)應(yīng)的緩存門限后,各通道所能分配的緩存單元的上限值已經(jīng) 確定,因而在當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),為了得知是否能夠響應(yīng)該數(shù)據(jù)寫入請(qǐng)求, 在本實(shí)施例中,接收到數(shù)據(jù)寫入請(qǐng)求的通道將首先根據(jù)與該通道對(duì)應(yīng)的緩存門限、當(dāng)前已 占用的緩存單元的數(shù)目,以及根據(jù)該通道的當(dāng)前寫緩存單元的當(dāng)前數(shù)據(jù)存儲(chǔ)狀態(tài),以及數(shù) 據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量大小,判斷接收到數(shù)據(jù)寫入請(qǐng)求的該通道是否滿足數(shù)據(jù)寫 入條件,即判斷當(dāng)前狀態(tài)下是否能夠?qū)⒃摯龑懭霐?shù)據(jù)寫入至對(duì)應(yīng)通道所占用的緩存單元 中,以及在待寫入數(shù)據(jù)的容量較大時(shí),是否需要為該通道分配對(duì)應(yīng)的緩存空間。具體地,上述該通道的當(dāng)前寫緩存單元具體指,該通道的當(dāng)前寫指針?biāo)鶎?duì)應(yīng)的緩 存單元。在多數(shù)據(jù)通道的系統(tǒng)中,每個(gè)通道在進(jìn)行數(shù)據(jù)處理時(shí),均有可能根據(jù)數(shù)據(jù)緩存的 需要,被分配了一個(gè)或多個(gè)的緩存單元,但是對(duì)于任意一個(gè)通道而言,其所對(duì)應(yīng)的當(dāng)前寫指 針?biāo)赶虻木彺鎲卧挥幸粋€(gè),該當(dāng)前寫指針指向的緩存單元便為該通道的當(dāng)前寫緩存單 元。當(dāng)該通道存在數(shù)據(jù)寫入需求時(shí),該通道會(huì)根據(jù)其對(duì)應(yīng)的當(dāng)前寫指針,尋址到對(duì)應(yīng)的當(dāng)前 寫緩存單元中,將待寫入的數(shù)據(jù)首先在尋址到的當(dāng)前寫緩存單元中進(jìn)行數(shù)據(jù)寫入處理。而上述的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài)具體指當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)空間處于已滿或者未滿的狀態(tài),以及該當(dāng)前寫緩存單元的容量占用百分比的狀態(tài)。因而根據(jù) 當(dāng)前寫緩存單元的該數(shù)據(jù)存儲(chǔ)狀態(tài),該通道可以得知該當(dāng)前寫緩存單元是否已經(jīng)被存滿或 者還未被存滿,以及若未被存滿時(shí),該當(dāng)前寫緩存單元中還剩余多少未用的空間容量。步驟102,若該通道滿足當(dāng)前的數(shù)據(jù)寫入條件,則在該通道的當(dāng)前寫緩存單元容量 未滿時(shí),將待寫入數(shù)據(jù)寫入至該通道的當(dāng)前寫緩存單元中,并在當(dāng)前寫緩存單元容量已滿 時(shí),在該通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。若經(jīng)過(guò)判斷,該通道得知,對(duì)應(yīng)于接收到的數(shù)據(jù)寫入請(qǐng)求,其滿足當(dāng)前的數(shù)據(jù)寫入 條件,即該通道當(dāng)前已占用的存儲(chǔ)空間的容量未超出為該通道設(shè)置的可用最大緩存空間, 且數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量也未超出該通道的剩余可用存儲(chǔ)容量時(shí),在本實(shí)施例 中,為了不浪費(fèi)當(dāng)前寫緩存單元的緩存空間容量,該通道將首先判斷其對(duì)應(yīng)的當(dāng)前寫緩存 單元是否已被存儲(chǔ)滿,即是否還能存儲(chǔ)更多的數(shù)據(jù)。若根據(jù)判斷得知,該當(dāng)前寫緩存單元的容量還存在剩余空間時(shí),該通道將首先將 待寫入數(shù)據(jù)寫入至該當(dāng)前寫緩存單元的剩余存儲(chǔ)空間中,且同時(shí)判斷在當(dāng)前寫緩存單元的 剩余存儲(chǔ)空間也被存儲(chǔ)滿時(shí),待寫入數(shù)據(jù)是否已被寫完。而若當(dāng)前寫緩存單元已被存儲(chǔ)滿, 但是待寫入數(shù)據(jù)還未被寫完時(shí),系統(tǒng)的緩存分配裝置則將從系統(tǒng)所有尚未被占用的緩存單 元中,獲取與未寫完的剩余待寫入數(shù)據(jù)容量大小相當(dāng)?shù)木彺鎲卧峙浣o接收到數(shù)據(jù)寫入 請(qǐng)求的該通道,以用于存儲(chǔ)剩余部分的待寫入的數(shù)據(jù),從而滿足該通道的數(shù)據(jù)寫入需求。如此一來(lái)可見(jiàn),在本發(fā)明中,對(duì)應(yīng)多個(gè)數(shù)據(jù)通道的通信系統(tǒng),只有在任一通道接收 到數(shù)據(jù)寫入請(qǐng)求,即存在數(shù)據(jù)緩存需求,且同時(shí)該通道的當(dāng)前寫緩存單元已被寫滿時(shí),系統(tǒng) 的緩存分配裝置才會(huì)為其分配大小相當(dāng)?shù)男碌木彺鎲卧?,而?duì)于未存在任何數(shù)據(jù)緩存需求 的通道,該緩存分配裝置則不為其分配任何緩存單元,從而真正實(shí)現(xiàn)了多通道緩存動(dòng)態(tài)的 按需分配,避免了各通道中出現(xiàn)未用緩存單元的浪費(fèi)現(xiàn)象。進(jìn)一步地,通過(guò)預(yù)先為各通道設(shè) 置與其帶寬能力相當(dāng)?shù)木彺骈T限,對(duì)各通道最大可分配的緩存單元數(shù)目進(jìn)行限制,還避免 了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響到其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象。本實(shí)施例的多通道緩存分配方法,通過(guò)為每個(gè)通道對(duì)應(yīng)設(shè)置一個(gè)合理的緩存分配 上限值,且通過(guò)在當(dāng)某個(gè)通道需要進(jìn)行數(shù)據(jù)傳輸時(shí),依據(jù)該數(shù)據(jù)傳輸請(qǐng)求的緩存需求以及 該通道對(duì)應(yīng)的門限值,動(dòng)態(tài)地為該通道分配所需緩存,而對(duì)于無(wú)需傳輸數(shù)據(jù)的通道,則不為 該通道分配任何緩存資源,從而使得每個(gè)通道占用的緩存資源均不會(huì)超過(guò)預(yù)設(shè)可調(diào)節(jié)的上 限值,帶寬較大的通道可以占用較多的緩存資源,帶寬較小的通道占用較少的緩存資源,沒(méi) 有數(shù)據(jù)傳輸需求的通道則不占用任何緩存資源,避免了多通道緩存分配時(shí)出現(xiàn)的緩存資源 浪費(fèi)及緩存分配不合理的現(xiàn)象,進(jìn)一步地,通過(guò)為每個(gè)通道設(shè)置對(duì)應(yīng)的緩存上限值,還避免 了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象。圖2為本發(fā)明多通道緩存分配方法實(shí)施例二的流程圖,如圖2所示,本實(shí)施例具體 包括如下步驟步驟200,根據(jù)每個(gè)通道各自的帶寬能力分別為每個(gè)通道設(shè)置對(duì)應(yīng)的緩存門限;步驟201,為每個(gè)通道分配初始數(shù)目為零的緩存單元;在本實(shí)施例中,對(duì)應(yīng)于多個(gè)通道的緩存分配裝置在根據(jù)多個(gè)通道各自的帶寬能 力,為每個(gè)通道設(shè)置了對(duì)應(yīng)的緩存門限,以對(duì)各個(gè)通道可占用的最大緩存空間進(jìn)行限制后, 為了保證各個(gè)通道在初始狀態(tài)還未開(kāi)始進(jìn)行任何數(shù)據(jù)傳輸,即還無(wú)需使用任何緩存空間時(shí),各個(gè)通道不占且不浪費(fèi)系統(tǒng)的任何緩存空間,緩存分配裝置將為各通道分配初始值數(shù) 目為零的緩存單元,即并不設(shè)置各通道的緩存分配下限值,使得各通道在沒(méi)有數(shù)據(jù)傳輸需 求時(shí)不占用任何的緩存資源。步驟202,任一通道接收到數(shù)據(jù)寫入請(qǐng)求;步驟203,根據(jù)該通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),當(dāng)前已占用的緩存單 元、對(duì)應(yīng)的緩存門限,以及數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量大小,判斷該通道是否滿足當(dāng) 前的數(shù)據(jù)寫入條件;在設(shè)置了各通道的最大的緩存門限,以及為各通道分配了初始值為零的初始緩存 空間之后,當(dāng)多個(gè)通道中的任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),緩存分配裝置可以根據(jù)該通 道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),已占用的緩存單元數(shù)目、對(duì)應(yīng)的緩存門限,以及數(shù)據(jù) 寫入請(qǐng)求中待寫入數(shù)據(jù)的大小,判斷該通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件,是否可以將待 寫入數(shù)據(jù)寫入至對(duì)應(yīng)的通道中,以及是否可以為待寫入數(shù)據(jù)分配相應(yīng)的緩存單元,以對(duì)應(yīng) 地執(zhí)行下一步操作。具體地,該判斷過(guò)程可以包括如下的子步驟步驟2030,根據(jù)該通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),計(jì)算該通道的當(dāng)前寫 緩存單元的剩余可用存儲(chǔ)空間大??;對(duì)于接收到數(shù)據(jù)寫入請(qǐng)求的任一通道而言,在接收到該數(shù)據(jù)寫入請(qǐng)求之前,該通 道可能已經(jīng)被分配、即已經(jīng)占用了 一定數(shù)目的緩存單元,或者該通道還處于初始狀態(tài),并未 分配有任何緩存空間。而對(duì)于已分配有緩存單元的數(shù)據(jù)通道而言,在接收到一數(shù)據(jù)寫入請(qǐng) 求時(shí),為了不浪費(fèi)該數(shù)據(jù)通道的當(dāng)前緩存單元的任何可用緩存空間,緩存分配裝置將首先 根據(jù)該當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),計(jì)算該通道的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空 間大小。具體指,根據(jù)當(dāng)前寫緩存單元的容量占用百分比,以及根據(jù)系統(tǒng)設(shè)置的每個(gè)緩存單 元的容量大小,計(jì)算該當(dāng)前寫緩存單元剩余的可用存儲(chǔ)空間的大小。步驟2031,根據(jù)該通道當(dāng)前已占用的緩存單元數(shù)目、對(duì)應(yīng)的緩存門限,以及計(jì)算得 到的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大小,計(jì)算該通道當(dāng)前可用的最大緩存空間;在計(jì)算得到對(duì)應(yīng)通道的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大小之后,為了進(jìn)一 步計(jì)算該通道當(dāng)前可用的總的最大緩存空間值,緩存分配裝置將進(jìn)一步地根據(jù)該通道已占 用的緩存單元個(gè)數(shù),該通道所對(duì)應(yīng)的緩存門限,以及根據(jù)上一子步驟中計(jì)算得到的該通道 的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大小,計(jì)算當(dāng)前狀態(tài)下,該通道還能夠被使用的最 大緩存空間的容量,即計(jì)算該通道的當(dāng)前可用的最大緩存空間大小值。具體地,根據(jù)該通道已占用的緩存單元個(gè)數(shù)以及該通道的緩存門限,緩存分配裝 置能夠計(jì)算出該通道還可被分配的最大緩存單元數(shù)目,從而根據(jù)可被分配的最大緩存單元 數(shù)目,以及根據(jù)系統(tǒng)為每個(gè)緩存單元設(shè)置的容量大小,緩存分配裝置可以計(jì)算得到該通道 可被分配的最大緩存空間容量大小值。該可被分配的最大緩存空間的容量值與上一步驟中 計(jì)算得到的該通道的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間容量值相加,便得到了該通道當(dāng) 前可用的最大緩存空間值。步驟2032,判斷待寫入數(shù)據(jù)的容量大小是否超出了該通道當(dāng)前可用的最大緩存空 間,若否則執(zhí)行步驟204,若是則執(zhí)行步驟209 ;進(jìn)而,在計(jì)算得到了該通道當(dāng)前可用的最大存儲(chǔ)空間值之后,根據(jù)計(jì)算得到的該 結(jié)果,以及根據(jù)數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量大小,系統(tǒng)的緩存分配裝置便可以判斷并計(jì)算出該通道是否滿足了數(shù)據(jù)寫入請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)寫入條件。若根據(jù)計(jì)算結(jié)果,緩存 分配裝置判斷得到待寫入數(shù)據(jù)的容量大小超出或已達(dá)到了該通道當(dāng)前可用的最大緩存空 間值,則可得知當(dāng)前狀態(tài)下,該通道不符合數(shù)據(jù)寫入請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)寫入條件,而若根據(jù) 計(jì)算結(jié)果,緩存分配裝置判斷得到待寫入數(shù)據(jù)的容量大小未超出該通道當(dāng)前可用的最大緩 存空間值,則可得知當(dāng)前狀態(tài)下,該通道符合數(shù)據(jù)寫入請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)寫入條件,從而根 據(jù)該判斷結(jié)果,該通道能夠?qū)⒋龑懭霐?shù)據(jù)寫入至通道對(duì)應(yīng)的緩存單元中,以響應(yīng)該數(shù)據(jù)寫 入請(qǐng)求。步驟204,在該通道的當(dāng)前寫緩存單元容量未滿時(shí),將待寫入數(shù)據(jù)寫入至該當(dāng)前寫 緩存單元中;步驟205,在當(dāng)前寫緩存單元容量已滿時(shí),在該通道中為未寫完的剩余待寫入數(shù)據(jù) 分配新的緩存單元;步驟206,將剩余的待寫入數(shù)據(jù)寫入至新的緩存單元中;具體地,若根據(jù)判斷,緩存分配裝置得知待寫入數(shù)據(jù)的容量大小尚未超出對(duì)應(yīng)通 道當(dāng)前可分配的最大緩存空間值,即對(duì)應(yīng)通道的當(dāng)前狀態(tài)滿足數(shù)據(jù)寫入請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù) 寫入條件時(shí),為了不浪費(fèi)該通道對(duì)應(yīng)的當(dāng)前寫緩存單元的緩存空間容量,若該通道分配有 當(dāng)前寫緩存單元時(shí),該通道優(yōu)先將待寫入數(shù)據(jù)寫入至對(duì)應(yīng)的當(dāng)前寫緩存單元中。在此之后, 若當(dāng)前寫緩存單元已被存儲(chǔ)滿而還存在未寫完的剩余待寫入數(shù)據(jù)時(shí),緩存分配裝置才將根 據(jù)剩余的待寫入數(shù)據(jù)的容量大小,在對(duì)應(yīng)通道中為該剩余的待寫入數(shù)據(jù)分配大小相當(dāng)?shù)木?存單元,以滿足對(duì)應(yīng)通道的數(shù)據(jù)緩存需求,并將剩余的待寫入數(shù)據(jù)寫入至新分配的緩存單 元中。此外需要說(shuō)明的是,若在上述步驟202中,并非只有一個(gè)通道接收到了數(shù)據(jù)寫入 請(qǐng)求,而是多個(gè)通道同時(shí)接收到數(shù)據(jù)寫入請(qǐng)求,即多個(gè)通道同時(shí)存在數(shù)據(jù)緩存需要,而且緩 存分配裝置根據(jù)對(duì)多個(gè)數(shù)據(jù)通道的當(dāng)前存儲(chǔ)狀態(tài),還判斷得到該多個(gè)通道中的至少兩個(gè) 通道均滿足其各自對(duì)應(yīng)的數(shù)據(jù)寫入條件時(shí)。為了保證滿足數(shù)據(jù)寫入條件的通道能夠有序得 到處理,以有序地分配得到相應(yīng)的緩存空間,在本實(shí)施例中,緩存分配裝置還可以在響應(yīng)多 個(gè)數(shù)據(jù)寫入請(qǐng)求,以及在為各通道分配緩存之前,根據(jù)滿足數(shù)據(jù)寫入條件的各個(gè)通道各自 對(duì)應(yīng)的優(yōu)先級(jí)別高低,對(duì)該各個(gè)通道進(jìn)行調(diào)度,然后再根據(jù)調(diào)度的結(jié)果,依序?yàn)楦鱾€(gè)通道分 配相對(duì)應(yīng)容量大小的緩存單元。從而使得優(yōu)先級(jí)別較高的通道能夠優(yōu)先被處理,其接收到 的數(shù)據(jù)寫入請(qǐng)求能夠被優(yōu)先響應(yīng),在需要分配新的緩存單元時(shí),能夠優(yōu)先被分配到相應(yīng)的 緩存單元;而反之,優(yōu)先級(jí)別較低的通道在等待一段時(shí)間,即等待到優(yōu)先級(jí)別相對(duì)較高的通 道的數(shù)據(jù)寫入請(qǐng)求被處理完成之后,才得到相應(yīng)的處理。從而在系統(tǒng)的總的剩余緩存空間 有限的情況下,能夠保證優(yōu)先級(jí)別高的數(shù)據(jù)通道被優(yōu)先的分配得到所需的緩存資源。步驟207,將分配給通道的新的緩存單元的單元標(biāo)識(shí)更新至該通道對(duì)應(yīng)的已占用 緩存單元列表中,以及從系統(tǒng)未用緩存單元列表中刪除;進(jìn)一步地,若緩存分配裝置在根據(jù)各個(gè)通道的緩存分配需求,以及根據(jù)各通道的 當(dāng)前狀態(tài),為滿足數(shù)據(jù)寫入條件的各通道分配了新的緩存單元,并將待寫入數(shù)據(jù)分別寫入 至為對(duì)應(yīng)通道分配的新的緩存單元中,以響應(yīng)了各通道的數(shù)據(jù)寫入請(qǐng)求之后,為了還能夠 根據(jù)緩存單元的分配結(jié)果,對(duì)系統(tǒng)用于管理所有緩存空間的而創(chuàng)建的索引列表的當(dāng)前狀態(tài) 信息進(jìn)行更新,在本實(shí)施例中,緩存分配裝置還將根據(jù)分配給各通道的所有緩存單元所對(duì)應(yīng)的單元標(biāo)識(shí),對(duì)系統(tǒng)的系統(tǒng)未用緩存單元列表以及分配了緩存單元的通道對(duì)應(yīng)的已占用 緩存單元列表進(jìn)行更新。具體地,緩存分配裝置將分配給各通道的緩存單元所對(duì)應(yīng)的單元標(biāo)識(shí)(通常指緩 存單元編號(hào)),分別對(duì)應(yīng)更新至各通道對(duì)應(yīng)的已占用緩存單元列表中,該已占用緩存單元列 表中存儲(chǔ)了對(duì)應(yīng)的各個(gè)通道當(dāng)前所占用的所有緩存單元的單元標(biāo)識(shí),根據(jù)各通道對(duì)應(yīng)的已 占用緩存單元列表,可以統(tǒng)計(jì)出對(duì)應(yīng)的通道當(dāng)前已占用的緩存空間大小。同時(shí),緩存分配裝 置還將該分配給各通道的緩存單元所對(duì)應(yīng)的單元標(biāo)識(shí),從系統(tǒng)未用緩存單元列表中刪除, 該系統(tǒng)未用緩存單元列表中存儲(chǔ)了系統(tǒng)中所有尚未被占用的緩存單元的單元標(biāo)識(shí),根據(jù)該 系統(tǒng)未用緩存單元列表,可以統(tǒng)計(jì)出系統(tǒng)當(dāng)前所有尚未被分配的緩存空間。通過(guò)該列表更 新步驟,緩存分配裝置在為對(duì)應(yīng)通道分配了緩存單元,以及響應(yīng)了數(shù)據(jù)寫入請(qǐng)求的同時(shí),還 保證了系統(tǒng)用于對(duì)所有緩存空間進(jìn)行管理的緩存單元索引列表中存儲(chǔ)的信息,與各通道及 系統(tǒng)的當(dāng)前狀態(tài)的同步與一致。圖3為本發(fā)明中各個(gè)通道對(duì)應(yīng)的已占用緩存單元列表的示意圖。圖3中以系統(tǒng)中 設(shè)置有32個(gè)獨(dú)立的數(shù)據(jù)通道為例,對(duì)各個(gè)通道的已占用緩存單元列表進(jìn)行了示意說(shuō)明。如 圖3所示,當(dāng)系統(tǒng)中設(shè)置有32個(gè)獨(dú)立的數(shù)據(jù)通道時(shí),針對(duì)該32個(gè)數(shù)據(jù)通道,系統(tǒng)將為每個(gè) 通道設(shè)置一個(gè)對(duì)應(yīng)的已占用緩存單元列表,以用于記錄對(duì)應(yīng)通道已占用的所有緩存單元的 單元編號(hào),從而根據(jù)各通道對(duì)應(yīng)的已占用緩存單元列表,系統(tǒng)可以很容易地統(tǒng)計(jì)出對(duì)應(yīng)的 通道當(dāng)前已占用的緩存空間大小,以及很容易地查詢到每個(gè)已用緩存單元具體被分配到了 哪個(gè)通道。例如如圖3所示,緩存單元編號(hào)為102、2、224、21以及478的緩存單元,被分配 到了通道0中。圖4為本發(fā)明中系統(tǒng)對(duì)應(yīng)的緩存單元列表的示意圖。如圖4所示,對(duì)于系統(tǒng)中所 有還未被占用的緩存單元,系統(tǒng)未用緩存單元列表中均記錄了這些緩存單元的單元編號(hào), 從而根據(jù)該系統(tǒng)未用緩存單元列表,系統(tǒng)可以很容易地統(tǒng)計(jì)出當(dāng)前狀態(tài)下所有尚未被分配 的緩存空間的大小值。優(yōu)化地,在實(shí)際需要時(shí),該統(tǒng)計(jì)出的未用緩存空間的大小值可以記錄 于系統(tǒng)的未用緩存單元統(tǒng)計(jì)列表中。步驟208,將該通道的當(dāng)前寫緩存單元更新為分配給該通道的新的緩存單元;進(jìn)一步地,當(dāng)針對(duì)數(shù)據(jù)寫入請(qǐng)求為對(duì)應(yīng)通道分配了新的緩存單元后,除了根據(jù)分 配給通道的新的緩存單元的單元標(biāo)識(shí),對(duì)該通道的已占用緩存單元列表以及系統(tǒng)未用緩存 單元列表進(jìn)行了更新之外,在本實(shí)施例中,還應(yīng)該對(duì)該通道的當(dāng)前寫緩存單元進(jìn)行更新,具 體指將該通道的當(dāng)前緩存單元更新為分配給該通道的新的緩存單元,以保證新的緩存單元 分配后,該通道的當(dāng)前寫緩存單元的準(zhǔn)確性。實(shí)際應(yīng)用中,如圖4所示,針對(duì)各個(gè)通道的當(dāng)前緩存寫單元,系統(tǒng)中可以設(shè)置一當(dāng) 前緩存寫單元列表,在該列表中,可以記錄每個(gè)通道的當(dāng)前緩存寫單元的單元標(biāo)識(shí),即將各 個(gè)通道的當(dāng)前寫指針?biāo)赶虻木彺鎲卧膯卧獦?biāo)識(shí)記錄于該列表中。從而若在系統(tǒng)中設(shè)置 有該系統(tǒng)當(dāng)前緩存寫單元列表的情形下,在本步驟中,系統(tǒng)還將新分配給當(dāng)前通道的新的 緩存單元的單元標(biāo)識(shí),更新至該系統(tǒng)當(dāng)前緩存寫單元列表的、與該通道對(duì)應(yīng)的記錄欄中。步驟209,判斷待寫入數(shù)據(jù)的數(shù)據(jù)幀狀態(tài)是否為處于幀中,若是返回執(zhí)行步驟 204,若否執(zhí)行步驟210 ;步驟210,丟棄待寫入數(shù)據(jù);
而在上述步驟203中,若緩存分配裝置通過(guò)判斷得到的結(jié)果為數(shù)據(jù)寫入請(qǐng)求中 待寫入數(shù)據(jù)的容量大小超出了對(duì)應(yīng)通道當(dāng)前可用的最大緩存空間,即對(duì)應(yīng)通道的當(dāng)前狀態(tài) 無(wú)法滿足數(shù)據(jù)寫入請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)寫入條件,已經(jīng)無(wú)法為對(duì)應(yīng)通道再分配更多的緩存空 間時(shí),緩存分配裝置本應(yīng)將丟棄掉數(shù)據(jù)寫入請(qǐng)求中的待寫入數(shù)據(jù),不對(duì)該數(shù)據(jù)寫入請(qǐng)求做 出響應(yīng)。但是在本實(shí)施例中還存在一個(gè)例外情況,為了避免當(dāng)數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù) 為一個(gè)數(shù)據(jù)幀的幀中數(shù)據(jù)時(shí),由于該處于幀中的待寫入數(shù)據(jù)不滿足對(duì)應(yīng)的數(shù)據(jù)通道的數(shù)據(jù) 寫入條件,而導(dǎo)致出現(xiàn)的丟幀現(xiàn)象,即避免出現(xiàn)某一數(shù)據(jù)幀的一部分?jǐn)?shù)據(jù)的寫入請(qǐng)求被響 應(yīng)而得以寫入存儲(chǔ),而另一部分的數(shù)據(jù)卻無(wú)法寫入必須丟棄,從而使得該數(shù)據(jù)幀無(wú)法完整 的保存的現(xiàn)象,緩存分配裝置在丟棄不滿足數(shù)據(jù)寫入條件的待寫入數(shù)據(jù)之前,還將進(jìn)一步 地判斷數(shù)據(jù)寫入請(qǐng)求中的待寫入數(shù)據(jù)的數(shù)據(jù)幀狀態(tài)是否為處于幀中狀態(tài)。若判斷得知該待 寫入數(shù)據(jù)處于幀中狀態(tài)時(shí),即使上述步驟的判斷結(jié)果為,該待寫入數(shù)據(jù)不滿足對(duì)應(yīng)的數(shù)據(jù) 寫入條件,緩存分配裝置仍然響應(yīng)該處于幀中的待寫入數(shù)據(jù)的數(shù)據(jù)寫入請(qǐng)求,使得一個(gè)數(shù) 據(jù)幀的數(shù)據(jù)能夠被完整寫入保存。步驟211,任一通道接收到數(shù)據(jù)讀取請(qǐng)求;步驟212,從接收到數(shù)據(jù)讀取請(qǐng)求的通道所占用的緩存單元中讀取出對(duì)應(yīng)的待讀 取數(shù)據(jù);步驟213,將待讀取數(shù)據(jù)對(duì)應(yīng)的緩存單元的單元標(biāo)識(shí),從接收到數(shù)據(jù)讀取請(qǐng)求的通 道對(duì)應(yīng)的已占用緩存單元列表中刪除,以及更新至系統(tǒng)未用緩存單元列表中。此外還需說(shuō)明的是,在本實(shí)施例中,當(dāng)上述步驟200和步驟201中為各通道設(shè)置了 對(duì)應(yīng)的緩存門限,以及為各通道分配了初始值為零的初始緩存空間之后,當(dāng)任一通道接收 到數(shù)據(jù)讀取請(qǐng)求,欲從對(duì)應(yīng)通道讀取出對(duì)應(yīng)的數(shù)據(jù)時(shí),為了響應(yīng)該數(shù)據(jù)讀取請(qǐng)求以及對(duì)相 應(yīng)的緩存單元索引列表的當(dāng)前狀態(tài)信息進(jìn)行更新,在本實(shí)施例中,緩存分配裝置除了從接 收到數(shù)據(jù)讀取請(qǐng)求的通道所占用的緩存空間中讀取出對(duì)應(yīng)的待讀取數(shù)據(jù)外,還將該待讀取 數(shù)據(jù)所對(duì)應(yīng)的緩存單元的標(biāo)識(shí),從接收到該數(shù)據(jù)讀取請(qǐng)求的通道所對(duì)應(yīng)的已占用緩存單元 列表中刪除,以更新對(duì)應(yīng)通道的已占用緩存單元列表中存儲(chǔ)的緩存單元標(biāo)識(shí)。同時(shí),為了將 該已讀取出數(shù)據(jù)的空的緩存單元的標(biāo)識(shí),更新至用于統(tǒng)計(jì)系統(tǒng)所有未使用的緩存單元的系 統(tǒng)未用緩存單元列表中,緩存分配裝置還將該讀取出待讀取數(shù)據(jù)的緩存單元的標(biāo)識(shí),添加 至系統(tǒng)未用緩存單元列表中,從而保持了在數(shù)據(jù)讀取請(qǐng)求響應(yīng)下,系統(tǒng)緩存單元索引列表 中的信息與各通道及系統(tǒng)的當(dāng)前狀態(tài)的同步和一致。本實(shí)施例的多通道緩存分配方法,通過(guò)為每個(gè)通道對(duì)應(yīng)設(shè)置一個(gè)合理的緩存分配 上限值,且通過(guò)在當(dāng)某個(gè)通道需要進(jìn)行數(shù)據(jù)傳輸時(shí),依據(jù)該數(shù)據(jù)傳輸請(qǐng)求的緩存需求以及 該通道對(duì)應(yīng)的門限值,動(dòng)態(tài)地為該通道分配所需緩存,而對(duì)于無(wú)需傳輸數(shù)據(jù)的通道,則不為 該通道分配任何緩存資源,從而使得每個(gè)通道占用的緩存資源均不會(huì)超過(guò)預(yù)設(shè)可調(diào)節(jié)的上 限值,且?guī)捿^大的通道可以占用較多的緩存資源,帶寬較小的通道占用較少的緩存資源, 沒(méi)有數(shù)據(jù)傳輸需求的通道則不占用任何緩存資源,避免了多通道緩存分配時(shí)出現(xiàn)的緩存資 源浪費(fèi)及緩存分配不合理的現(xiàn)象,進(jìn)一步地,通過(guò)為每個(gè)通道設(shè)置對(duì)應(yīng)的緩存上限值,還避 免了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)
12程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序 在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。圖5為本發(fā)明多通道緩存分配裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖5所示,本實(shí)施例 的多通道緩存分配裝置包括緩存門限設(shè)置模塊11、判斷模塊12數(shù)據(jù)寫入模塊13和第一 緩存分配模塊14。其中,緩存門限設(shè)置模塊11用于根據(jù)每個(gè)通道各自的帶寬能力分別為每個(gè)通道 設(shè)置對(duì)應(yīng)的緩存門限,該緩存門限用于標(biāo)識(shí)每個(gè)通道最大可占用的緩存單元數(shù)目;判斷模 塊12用于當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)接收到數(shù)據(jù)寫入請(qǐng)求的通道的當(dāng)前寫 緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及數(shù)據(jù)寫入請(qǐng) 求中待寫入數(shù)據(jù)的容量大小,判斷該通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;數(shù)據(jù)寫入模塊13 用于若判斷模塊12判斷出該通道滿足當(dāng)前的數(shù)據(jù)寫入條件時(shí),則在該通道的當(dāng)前寫緩存 單元容量未滿時(shí),將待寫入數(shù)據(jù)寫入至該當(dāng)前寫緩存單元中;而第一緩存分配模塊14則用 于在當(dāng)前寫緩存單元容量已滿時(shí),在該通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單兀。具體地,本實(shí)施例中的所有模塊所涉及的具體工作過(guò)程,可以參考上述多通道緩 存分配方法所涉及的相關(guān)實(shí)施例揭露的相關(guān)內(nèi)容,在此不再贅述。本實(shí)施例的多通道緩存分配裝置,通過(guò)為每個(gè)通道對(duì)應(yīng)設(shè)置一個(gè)合理的緩存分配 上限值,且通過(guò)在當(dāng)某個(gè)通道需要進(jìn)行數(shù)據(jù)傳輸時(shí),依據(jù)該數(shù)據(jù)傳輸請(qǐng)求的緩存需求以及 該通道對(duì)應(yīng)的門限值,動(dòng)態(tài)地為該通道分配所需緩存,而對(duì)于無(wú)需傳輸數(shù)據(jù)的通道,則不為 該通道分配任何緩存資源,從而使得每個(gè)通道占用的緩存資源均不會(huì)超過(guò)預(yù)設(shè)可調(diào)節(jié)的上 限值,且?guī)捿^大的通道可以占用較多的緩存資源,帶寬較小的通道占用較少的緩存資源, 沒(méi)有數(shù)據(jù)傳輸需求的通道則不占用任何緩存資源,避免了多通道緩存分配時(shí)出現(xiàn)的緩存資 源浪費(fèi)及緩存分配不合理的現(xiàn)象,進(jìn)一步地,通過(guò)為每個(gè)通道設(shè)置對(duì)應(yīng)的緩存上限值,還避 免了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象。圖6為本發(fā)明多通道緩存分配裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖6所示,在上述 多通道緩存分配裝置實(shí)施例一的基礎(chǔ)上,本實(shí)施例的多通道緩存分配裝置還可以包括第二 緩存分配模塊15,該第二緩存分配模塊15用于若判斷模塊12判斷出接收到數(shù)據(jù)寫入請(qǐng)求 的通道不滿足當(dāng)前的數(shù)據(jù)寫入條件,但數(shù)據(jù)寫入請(qǐng)求中的待寫入數(shù)據(jù)的數(shù)據(jù)幀狀態(tài)為處于 幀中時(shí),仍將該處于幀中的所述待寫入數(shù)據(jù)寫入至對(duì)應(yīng)通道的當(dāng)前寫緩存單元中,并在該 當(dāng)前寫緩存單元的容量已滿后,在對(duì)應(yīng)通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單兀。進(jìn)一步地,本實(shí)施例中,上述判斷模塊12還可以包括第一計(jì)算子模塊121、第二 計(jì)算子模塊122以及判斷子模塊123。其中,第一計(jì)算子模塊121用于根據(jù)對(duì)應(yīng)通道的當(dāng)前 寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),計(jì)算該當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大?。坏诙?jì)算 子模塊122用于根據(jù)對(duì)應(yīng)通道當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限、以及根據(jù)第 一計(jì)算子模塊121計(jì)算得到的當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大小,計(jì)算對(duì)應(yīng)通道的 當(dāng)前可用的最大緩存空間,該當(dāng)前可用的最大緩存空間為該通道的當(dāng)前寫緩存單元的剩余 可用緩存空間大小、與該通道可被分配的緩存單元對(duì)應(yīng)的緩存空間大小之和;而判斷子模塊123則用于判斷待寫入數(shù)據(jù)的容量大小是否超出上述第二計(jì)算子模塊122計(jì)算得到的對(duì) 應(yīng)通道當(dāng)前可分配的最大緩存空間,若待寫入數(shù)據(jù)的容量大小未超出了該通道當(dāng)前可分配 的最大緩存空間,則判斷得知該通道滿足當(dāng)前的數(shù)據(jù)寫入條件。更進(jìn)一步地,本實(shí)施例中,多通道緩存分配裝置還可以包括調(diào)度模塊16,用于若 多個(gè)通道同時(shí)接收到數(shù)據(jù)寫入請(qǐng)求且同時(shí)滿足數(shù)據(jù)寫入條件時(shí),則根據(jù)多個(gè)通道各自對(duì)應(yīng) 的優(yōu)先級(jí)別高低,對(duì)該多個(gè)通道進(jìn)行調(diào)度。更進(jìn)一步地,本實(shí)施例中,多通道緩存分配裝置還可以包括第一列表更新模塊 17和當(dāng)前寫緩存單元更新模塊18。該第一列表更新模塊17用于在第一緩存分配模塊14 或者第二緩存分配模塊15為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元之后,將分配的 新的緩存單元的單元標(biāo)識(shí)更新至對(duì)應(yīng)通道的已占用緩存單元列表中,以及從系統(tǒng)未用緩存 單元列表中刪除,該系統(tǒng)未用緩存單元列表用于存儲(chǔ)系統(tǒng)中所有尚未被占用的緩存單元的 單元標(biāo)識(shí),而已占用緩存單元列表用于存儲(chǔ)對(duì)應(yīng)的通道當(dāng)前所占用的所有緩存單元的單元 標(biāo)識(shí);而當(dāng)前寫緩存單元更新模塊18用于將該通道的當(dāng)前寫緩存單元更新為分配給該通 道的所述新的緩存單元。更進(jìn)一步地,本實(shí)施例中,多通道緩存分配裝置還可以包括數(shù)據(jù)讀取模塊19和 第二列表更新模塊110。其中,數(shù)據(jù)讀取模塊19用于當(dāng)任一通道接收到數(shù)據(jù)讀取請(qǐng)求時(shí),從 接收到數(shù)據(jù)讀取請(qǐng)求的該通道所占用的緩存空間中讀取出對(duì)應(yīng)的待讀取數(shù)據(jù);而第二列表 更新模塊110則用于將待讀取數(shù)據(jù)對(duì)應(yīng)的緩存單元的單元標(biāo)識(shí)更新至系統(tǒng)未用緩存單元 列表中,以及從接收到數(shù)據(jù)讀取請(qǐng)求的該通道所對(duì)應(yīng)的已占用緩存單元列表中刪除。其中, 系統(tǒng)未用緩存單元列表用于存儲(chǔ)系統(tǒng)中所有尚未被占用的緩存單元對(duì)應(yīng)的單元標(biāo)識(shí),而已 占用緩存單元列表則用于存儲(chǔ)對(duì)應(yīng)的通道當(dāng)前所占用的所有緩存單元對(duì)應(yīng)的單元標(biāo)識(shí)。具體地,本實(shí)施例中的上述所有模塊所涉及的具體工作過(guò)程,同樣可以參考上述 多通道緩存分配方法所涉及的相關(guān)實(shí)施例揭露的相關(guān)內(nèi)容,在此不再贅述。本實(shí)施例的多通道緩存分配裝置,通過(guò)為每個(gè)通道對(duì)應(yīng)設(shè)置一個(gè)合理的緩存分配 上限值,且通過(guò)在當(dāng)某個(gè)通道需要進(jìn)行數(shù)據(jù)傳輸時(shí),依據(jù)該數(shù)據(jù)傳輸請(qǐng)求的緩存需求以及 該通道對(duì)應(yīng)的門限值,動(dòng)態(tài)地為該通道分配所需緩存,而對(duì)于無(wú)需傳輸數(shù)據(jù)的通道,則不為 該通道分配任何緩存資源,從而使得每個(gè)通道占用的緩存資源均不會(huì)超過(guò)預(yù)設(shè)可調(diào)節(jié)的上 限值,且?guī)捿^大的通道可以占用較多的緩存資源,帶寬較小的通道占用較少的緩存資源, 沒(méi)有數(shù)據(jù)傳輸需求的通道則不占用任何緩存資源,避免了多通道緩存分配時(shí)出現(xiàn)的緩存資 源浪費(fèi)及緩存分配不合理的現(xiàn)象,進(jìn)一步地,通過(guò)為每個(gè)通道設(shè)置對(duì)應(yīng)的緩存上限值,還避 免了出現(xiàn)單個(gè)通道所占用的緩存空間過(guò)大,而影響其他通道的數(shù)據(jù)傳輸?shù)默F(xiàn)象。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
1權(quán)利要求
一種多通道緩存分配方法,其特征在于,包括根據(jù)每個(gè)通道各自的帶寬能力分別為所述每個(gè)通道設(shè)置對(duì)應(yīng)的緩存門限,所述緩存門限用于標(biāo)識(shí)所述每個(gè)通道最大可占用的緩存單元數(shù)目;當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)所述通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及所述數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量大小,判斷所述通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;若所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件,則在所述通道的當(dāng)前寫緩存單元容量未滿時(shí),將所述待寫入數(shù)據(jù)寫入至所述當(dāng)前寫緩存單元中,并在所述當(dāng)前寫緩存單元容量已滿后,在所述通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。
2.根據(jù)權(quán)利要求1所述的多通道緩存分配方法,其特征在于,所述方法還包括若所述通道不滿足當(dāng)前的數(shù)據(jù)寫入條件,但所述待寫入數(shù)據(jù)的數(shù)據(jù)幀狀態(tài)為處于幀中 時(shí),仍將處于幀中的所述待寫入數(shù)據(jù)寫入至所述通道的當(dāng)前寫緩存單元中,并在所述當(dāng)前 寫緩存單元的容量已滿后,在所述通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。
3.根據(jù)權(quán)利要求1或2所述的多通道緩存分配方法,其特征在于,所述根據(jù)所述通道的 當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及所述 數(shù)據(jù)寫入請(qǐng)求中待寫入數(shù)據(jù)的容量大小,判斷所述通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件具體 包括根據(jù)所述通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),計(jì)算所述當(dāng)前寫緩存單元的剩余可 用存儲(chǔ)空間大??;根據(jù)所述通道當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限、以及計(jì)算得到的所述當(dāng) 前寫緩存單元的剩余可用存儲(chǔ)空間大小,計(jì)算所述通道的當(dāng)前可用的最大緩存空間,所述 當(dāng)前可用的最大緩存空間為所述通道的當(dāng)前寫緩存單元的剩余可用緩存空間大小、與所述 通道可被分配的緩存單元對(duì)應(yīng)的緩存空間大小之和;判斷所述待寫入數(shù)據(jù)的容量大小是否超出計(jì)算得到的所述通道的當(dāng)前可用的最大緩 存空間,若所述待寫入數(shù)據(jù)的容量大小未超出所述通道的當(dāng)前可用的最大緩存空間,則判 斷得知所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件。
4.根據(jù)權(quán)利要求1或2所述的多通道緩存分配方法,其特征在于,所述方法還包括 若多個(gè)通道同時(shí)接收到數(shù)據(jù)寫入請(qǐng)求且同時(shí)滿足所述數(shù)據(jù)寫入條件時(shí),根據(jù)所述多個(gè)通道各自對(duì)應(yīng)的優(yōu)先級(jí)別高低,對(duì)所述多個(gè)通道進(jìn)行調(diào)度。
5.根據(jù)權(quán)利要求1或2所述的多通道緩存分配方法,其特征在于,所述在所述通道中為 未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元之后,所述方法還包括將分配給所述通道的新的緩存單元的單元標(biāo)識(shí)更新至所述通道對(duì)應(yīng)的已占用緩存單 元列表中,以及從系統(tǒng)未用緩存單元列表中刪除,所述系統(tǒng)未用緩存單元列表用于存儲(chǔ)系 統(tǒng)中所有尚未被占用的緩存單元的單元標(biāo)識(shí),所述已占用緩存單元列表用于存儲(chǔ)對(duì)應(yīng)的通 道當(dāng)前所占用的所有緩存單元的單元標(biāo)識(shí);將所述通道的當(dāng)前寫緩存單元更新為分配給所述通道的所述新的緩存單元。
6.根據(jù)權(quán)利要求1或2所述的多通道緩存分配方法,其特征在于,所述方法還包括 當(dāng)任一通道接收到數(shù)據(jù)讀取請(qǐng)求時(shí),從所述數(shù)據(jù)讀取請(qǐng)求對(duì)應(yīng)的緩存單元中讀取出所述數(shù)據(jù)讀取請(qǐng)求指定的待讀取數(shù)據(jù);若所述對(duì)應(yīng)的緩存單元在數(shù)據(jù)讀取后容量為空時(shí),將所述對(duì)應(yīng)的緩存單元的單元標(biāo)識(shí) 更新至系統(tǒng)未用緩存單元列表中,以及從接收到所述數(shù)據(jù)讀取請(qǐng)求的通道對(duì)應(yīng)的已占用緩 存單元列表中刪除,所述系統(tǒng)未用緩存單元列表用于存儲(chǔ)系統(tǒng)中所有尚未被占用的緩存單 元的單元標(biāo)識(shí),所述已占用緩存單元列表用于存儲(chǔ)對(duì)應(yīng)的通道當(dāng)前所占用的所有緩存單元 的單元標(biāo)識(shí)。
7.—種多通道緩存分配裝置,其特征在于,包括緩存門限設(shè)置模塊,用于根據(jù)每個(gè)通道各自的帶寬能力分別為所述每個(gè)通道設(shè)置對(duì)應(yīng) 的緩存門限,所述緩存門限用于標(biāo)識(shí)所述每個(gè)通道最大可占用的緩存單元數(shù)目;判斷模塊,用于當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)所述通道的當(dāng)前寫緩存單元 的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,以及所述數(shù)據(jù)寫入請(qǐng)求中 待寫入數(shù)據(jù)的容量大小,判斷所述通道是否滿足當(dāng)前的數(shù)據(jù)寫入條件;數(shù)據(jù)寫入模塊,用于若所述判斷模塊判斷出所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件,則在 所述通道的當(dāng)前寫緩存單元容量未滿時(shí),將所述待寫入數(shù)據(jù)寫入至所述當(dāng)前寫緩存單元 中;第一緩存分配模塊,用于在所述當(dāng)前寫緩存單元容量已滿時(shí),在所述通道中為未寫完 的剩余待寫入數(shù)據(jù)分配新的緩存單元。
8.根據(jù)權(quán)利要求7所述的多通道緩存分配裝置,其特征在于,所述裝置還包括 第二緩存分配模塊,用于若所述判斷模塊判斷出所述通道不滿足當(dāng)前的數(shù)據(jù)寫入條件,但所述待寫入數(shù)據(jù)的數(shù)據(jù)幀狀態(tài)為處于幀中時(shí),仍將處于幀中的所述待寫入數(shù)據(jù)寫入 至所述通道的當(dāng)前寫緩存單元中,并在所述當(dāng)前寫緩存單元的容量已滿后,在所述通道中 為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。
9.根據(jù)權(quán)利要求7或8所述的多通道緩存分配裝置,其特征在于,所述判斷模塊包括 第一計(jì)算子模塊,用于根據(jù)所述通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài),計(jì)算所述當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大?。坏诙?jì)算子模塊,用于根據(jù)所述通道當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限、以 及根據(jù)所述第一計(jì)算子模塊計(jì)算得到的所述當(dāng)前寫緩存單元的剩余可用存儲(chǔ)空間大小,計(jì) 算所述通道的當(dāng)前可用的最大緩存空間,所述當(dāng)前可用的最大緩存空間為所述通道的當(dāng)前 寫緩存單元的剩余可用緩存空間大小、與所述通道可被分配的緩存單元對(duì)應(yīng)的緩存空間大 小之和;判斷子模塊,用于判斷所述待寫入數(shù)據(jù)的容量大小是否超出所述第二計(jì)算子模塊計(jì)算 得到的所述通道的當(dāng)前可用的最大緩存空間,若所述待寫入數(shù)據(jù)的容量大小未超出所述通 道的當(dāng)前可用的最大緩存空間,則判斷得知所述通道滿足當(dāng)前的數(shù)據(jù)寫入條件。
10.根據(jù)權(quán)利要求7或8所述的多通道緩存分配裝置,其特征在于,所述裝置還包括 調(diào)度模塊,用于若所述多個(gè)通道同時(shí)接收到數(shù)據(jù)寫入請(qǐng)求且同時(shí)滿足所述數(shù)據(jù)寫入條件,則根據(jù)所述多個(gè)通道各自對(duì)應(yīng)的優(yōu)先級(jí)別高低,對(duì)所述多個(gè)通道進(jìn)行調(diào)度。
11.根據(jù)權(quán)利要求7或8所述的多通道緩存分配裝置,其特征在于,所述裝置還包括 第一列表更新模塊,用于在所述第一緩存分配模塊或者第二緩存分配模塊在所述通道中為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元之后,將分配給所述通道的新的緩存單 元的單元標(biāo)識(shí)更新至所述通道對(duì)應(yīng)的已占用緩存單元列表中,以及從系統(tǒng)未用緩存單元列表中刪除,所述系統(tǒng)未用緩存單元列表用于存儲(chǔ)系統(tǒng)中所有尚未被占用的緩存單元的單元 標(biāo)識(shí),所述已占用緩存單元列表用于存儲(chǔ)對(duì)應(yīng)的通道當(dāng)前所占用的所有緩存單元的單元標(biāo) 識(shí);當(dāng)前寫緩存單元更新模塊,用于將所述通道的當(dāng)前寫緩存單元更新為分配給所述通道 的所述新的緩存單元。
12.根據(jù)權(quán)利要求7或8所述的多通道緩存分配裝置,其特征在于,所述裝置還包括 數(shù)據(jù)讀取模塊,用于當(dāng)任一通道接收到數(shù)據(jù)讀取請(qǐng)求時(shí),從所述對(duì)應(yīng)的緩存單元中讀 取出所述數(shù)據(jù)讀取請(qǐng)求指定的待讀取數(shù)據(jù);第二列表更新模塊,用于若所述對(duì)應(yīng)的緩存單元在數(shù)據(jù)讀取后容量為空時(shí),則將所述 待讀取數(shù)據(jù)對(duì)應(yīng)的緩存單元的單元標(biāo)識(shí),更新至系統(tǒng)未用緩存單元列表中,以及從所述接 收到所述數(shù)據(jù)讀取請(qǐng)求的通道對(duì)應(yīng)的已占用緩存單元列表中刪除,所述系統(tǒng)未用緩存單元 列表用于存儲(chǔ)系統(tǒng)中所有尚未被占用的緩存單元的單元標(biāo)識(shí),所述已占用緩存單元列表用 于存儲(chǔ)對(duì)應(yīng)的通道當(dāng)前所占用的所有緩存單元的單元標(biāo)識(shí)。
全文摘要
本發(fā)明提供一種多通道緩存分配方法及裝置,方法包括根據(jù)各通道各自的帶寬能力為各通道設(shè)置用于標(biāo)識(shí)該通道最大可占用的緩存單元數(shù)目的緩存門限;當(dāng)任一通道接收到數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)該通道的當(dāng)前寫緩存單元的數(shù)據(jù)存儲(chǔ)狀態(tài)、當(dāng)前已占用的緩存單元個(gè)數(shù)、對(duì)應(yīng)的緩存門限,及待寫入數(shù)據(jù)的容量大小,判斷該通道是否滿足數(shù)據(jù)寫入條件;若該通道滿足數(shù)據(jù)寫入條件,則在該通道的當(dāng)前寫緩存單元容量未滿時(shí),將待寫入數(shù)據(jù)寫入至當(dāng)前寫緩存單元中,并在當(dāng)前寫緩存單元容量已滿后,為未寫完的剩余待寫入數(shù)據(jù)分配新的緩存單元。本發(fā)明動(dòng)態(tài)地為存在數(shù)據(jù)緩存需求的通道分配所需緩存,避免了多通道緩存分配時(shí)出現(xiàn)的緩存資源浪費(fèi)及緩存分配不合理的現(xiàn)象。
文檔編號(hào)G06F12/08GK101957800SQ201010200688
公開(kāi)日2011年1月26日 申請(qǐng)日期2010年6月12日 優(yōu)先權(quán)日2010年6月12日
發(fā)明者彭鼎祥 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司