一種緩存分配方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種緩存分配方法及裝置,從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;從配置的各子緩存塊中,確定最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。與現(xiàn)有技術(shù)中,無(wú)論需要分配的緩存是大還是小均分配固定大小的子緩存塊相比,提高了對(duì)緩存的利用率,使得對(duì)緩存塊的劃分和分配更加合理。本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】。
【專利說(shuō)明】一種緩存分配方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種緩存分配方法及裝置。
【背景技術(shù)】
[0002]緩存的管理和分配在計(jì)算機(jī)編程領(lǐng)域、網(wǎng)絡(luò)通信領(lǐng)域等領(lǐng)域中都有很廣泛的應(yīng)用。因?yàn)樵诤芏嗲闆r下都需要對(duì)一些臨時(shí)數(shù)據(jù)進(jìn)行臨時(shí)存儲(chǔ),例如,一個(gè)程序的運(yùn)行需要為該程序分配緩存,從計(jì)算機(jī)網(wǎng)絡(luò)上接收到數(shù)據(jù)包需要為該數(shù)據(jù)包分配緩存?,F(xiàn)有技術(shù)中,對(duì)緩存管理和分配的方法主要有如下幾種:
[0003]第一種,基于先進(jìn)先出隊(duì)列的緩存管理方法。在該方法中,將緩存塊劃分成固定長(zhǎng)度的子緩存塊,用一個(gè)隊(duì)列來(lái)保存各個(gè)空閑的子緩存塊的地址,當(dāng)需要分配子緩存塊時(shí),從隊(duì)列的隊(duì)列頭取出一個(gè)子緩存塊地址,將該子緩存塊進(jìn)行分配,當(dāng)子緩存塊被釋放之后,即該子緩存塊的狀態(tài)又變?yōu)榭臻e,將該子緩存塊的址插入到隊(duì)列的隊(duì)尾。
[0004]第二種,基于位圖的緩存管理方法。在該方法中,將緩存塊劃分成多個(gè)緩存區(qū)間,每個(gè)緩存區(qū)間包括多個(gè)固定長(zhǎng)度的子緩存塊,針對(duì)每個(gè)緩存區(qū)間,使用一個(gè)一維位圖的各個(gè)比特位表征該緩存區(qū)間中各個(gè)子緩存塊的狀態(tài),例如,當(dāng)位圖的某比特位為I時(shí),表征該比特位對(duì)應(yīng)的子緩存塊的狀態(tài)為被占用,當(dāng)位圖某比特位為O時(shí),表征該比特位對(duì)應(yīng)的子緩存塊的狀態(tài)為空閑。為每個(gè)緩存區(qū)間分配一塊內(nèi)存,對(duì)該緩存區(qū)間中的各個(gè)子緩存塊進(jìn)行管理,例如,該緩存區(qū)間中各子緩存塊的大小、地址范圍等。
[0005]以接收到網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包,為該數(shù)據(jù)包分配子緩存塊為例,當(dāng)接收到數(shù)據(jù)包,為該數(shù)據(jù)包分配子緩存塊時(shí),為該數(shù)據(jù)包分配長(zhǎng)度相同的子緩存塊,當(dāng)接收到的數(shù)據(jù)包小于子緩存塊的長(zhǎng)度,為小數(shù)據(jù)包分配大子緩存塊,降低了緩存的利用率,當(dāng)接收到的數(shù)據(jù)包大于子緩存塊的大小,將由于無(wú)子緩存塊可為數(shù)據(jù)包分配而導(dǎo)致數(shù)據(jù)包丟失。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種緩存分配方法及裝置,用以解決現(xiàn)有技術(shù)中對(duì)緩存塊的劃分以及分配不合理的問(wèn)題。
[0007]基于上述問(wèn)題,本發(fā)明實(shí)施例提供的一種緩存分配方法,包括:
[0008]從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;
[0009]從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,所述各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
[0010]本發(fā)明實(shí)施例提供的一種緩存分配裝置,包括:
[0011]第一確定模塊,用于從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;
[0012]第二確定模塊,用于從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊;
[0013]分配模塊,用于將所述第二確定模塊確定的空閑子緩存塊進(jìn)行分配,其中,所述各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
[0014]本發(fā)明實(shí)施例的有益效果包括:
[0015]本發(fā)明實(shí)施例提供的一種緩存分配方法及裝置,從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;從配置的各子緩存塊中,確定最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。針對(duì)不同的預(yù)設(shè)長(zhǎng)度,每種預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)一種緩存劃分方式,在不同的劃分方式中,劃分的子緩存塊具有不同的長(zhǎng)度,在接收到緩存分配請(qǐng)求時(shí),可以根據(jù)需要分配的緩存長(zhǎng)度,從所有不小于該需要分配的緩存長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度中,確定最小的預(yù)設(shè)長(zhǎng)度;從針對(duì)該最小的預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊所中確定一個(gè)使用狀態(tài)為空閑的子緩存塊,并將該子緩存塊進(jìn)行分配。這樣,能夠根據(jù)需要分配的緩存塊的大小選擇合適的子緩存塊進(jìn)行分配,與現(xiàn)有技術(shù)中,無(wú)論需要分配的緩存是大還是小均分配固定大小的子緩存塊相比,提高了對(duì)緩存的利用率,使得對(duì)緩存塊的劃分和分配更加合理。
【專利附圖】
【附圖說(shuō)明】
[0016]圖1為本發(fā)明實(shí)施例提供的一種緩存分配方法的流程圖;
[0017]圖2為本發(fā)明實(shí)施例1提供的一種緩存分配方法的流程圖;
[0018]圖3a_3f為本發(fā)明實(shí)施例提供的緩存分配示意圖;
[0019]圖4為本發(fā)明實(shí)施例2提供的一種緩存分配方法的流程圖;
[0020]圖5為本發(fā)明實(shí)施例3提供的一種緩存分配方法的流程圖;
[0021]圖6為本發(fā)明實(shí)施例4提供的一種緩存分配方法的流程圖;
[0022]圖7為本發(fā)明實(shí)施例提供的一種緩存分配裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023]本發(fā)明實(shí)施例提供了一種緩存分配方法及裝置,以下結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。并且在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0024]本發(fā)明實(shí)施例提供一種緩存分配方法,如圖1所示,包括:
[0025]S101、從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度。
[0026]S102、從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度。
[0027]S103、從配置的各子緩存塊中,確定S102中確定的最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,配置的各子緩存塊為基于不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
[0028]進(jìn)一步地,上述步驟S102中,從所有不小于需要分配的緩存長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度中,確定最小的預(yù)設(shè)長(zhǎng)度,能夠從待分配的子緩存塊中確定出長(zhǎng)度不小于需要分配的緩存長(zhǎng)度,并且長(zhǎng)度最接近需要分配的緩存長(zhǎng)度的子緩存塊。使得緩存的利用率高。[0029]進(jìn)一步地,上述步驟S103中,可以預(yù)先設(shè)置多個(gè)不同的預(yù)設(shè)長(zhǎng)度,每種預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)一種劃分方式,針對(duì)每種劃分方式,將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的長(zhǎng)度為該劃分方式對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度。
[0030]下面結(jié)合附圖,用具體實(shí)施例對(duì)本發(fā)明提供的方法及裝置進(jìn)行詳細(xì)描述。
[0031]實(shí)施例1:
[0032]本發(fā)明實(shí)施例1提供了一種緩存分配方法,如圖2所述,具體包括:
[0033]S201、從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度。
[0034]S202、從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度。
[0035]S203、根據(jù)基于S202中確定的長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊所對(duì)應(yīng)的二維比特圖中表征各子緩存塊使用狀態(tài)的比特值,確定一個(gè)使用狀態(tài)為空閑的子緩存塊,其中,二維比特圖為分別為基于不同預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊建立的對(duì)應(yīng)的二維比特圖,并且,二維比特圖中的各比特位與該二維比特圖所對(duì)應(yīng)的各子緩存塊一一對(duì)應(yīng),二維比特圖中的比特位的比特值表征與該比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài),且該比特位在二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,用于表征與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址。
[0036]進(jìn)一步地,本步驟中,針對(duì)每個(gè)預(yù)設(shè)長(zhǎng)度,為針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊建立對(duì)應(yīng)的二維比特圖,該二維比特圖中的各個(gè)比特位與針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的各個(gè)子緩存塊一一對(duì)應(yīng),也就是說(shuō),該二維比特圖的總行數(shù)與總列數(shù)的乘積為針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的子緩存塊的個(gè)數(shù),且該二維比特圖中的每個(gè)比特位對(duì)應(yīng)一個(gè)該預(yù)設(shè)長(zhǎng)度的子緩存塊。
[0037]S204、根據(jù)S203中確定的空閑子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行號(hào)和列號(hào),確定該空閑子緩存塊的地址,并將該空閑子緩存塊進(jìn)行分配。
[0038]進(jìn)一步地,針對(duì)每個(gè)二維比特圖,設(shè)該二維比特圖的起始行為第O行,起始列為第O列,則位于第i行第j列的比特位表征的與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址Bddij由下式確定:
[0039]addfG XX+j) Xz ;
[0040]其中,1、j均為非負(fù)整數(shù),X表征該二維比特圖的總列數(shù),z表征與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度。
[0041]下面以一個(gè)具體的例子對(duì)本發(fā)明實(shí)施例1提供的子緩存塊相對(duì)地址確定方法進(jìn)行說(shuō)明。
[0042]假設(shè)緩存塊大小為4M,預(yù)設(shè)長(zhǎng)度分別為128字節(jié)、256字節(jié)、512字節(jié)、1024字節(jié)和2048字節(jié)。針對(duì)上述不同預(yù)設(shè)長(zhǎng)度中的每個(gè)預(yù)設(shè)長(zhǎng)度,分別將該4M的緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊,也就是說(shuō),針對(duì)預(yù)設(shè)長(zhǎng)度128字節(jié),可以將該4M的緩存劃分為32K(4M/128字節(jié)=32K)個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的大小為128字節(jié);針對(duì)預(yù)設(shè)長(zhǎng)度256字節(jié),可以將4Μ的緩存劃分為16Κ(4Μ/256字節(jié)=16Κ)個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的大小為256字節(jié);針對(duì)預(yù)設(shè)長(zhǎng)度512字節(jié),可以將4Μ的緩存劃分為8Κ (4Μ/512字節(jié)=8Κ)個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的大小為512字節(jié);針對(duì)預(yù)設(shè)長(zhǎng)度1024字節(jié),可以將4Μ的緩存劃分為4Κ (4Μ/1024字節(jié)=4Κ)個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的大小為1024字節(jié);針對(duì)預(yù)設(shè)長(zhǎng)度2048字節(jié),可以將4Μ的緩存劃分為2Κ (4Μ/2048字節(jié)=2Κ)個(gè)長(zhǎng)度相等的子緩存塊,每個(gè)子緩存塊的大小為2048字節(jié)。[0043]針對(duì)每個(gè)預(yù)設(shè)長(zhǎng)度,為針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊建立對(duì)應(yīng)的二維比特圖,該二維比特圖的總行數(shù)與總列數(shù)的乘積等于針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的子緩存塊的個(gè)數(shù),且該二維比特圖中的每個(gè)比特位與具有該預(yù)設(shè)長(zhǎng)度的子緩存塊一一對(duì)應(yīng)。以預(yù)設(shè)長(zhǎng)度為128字節(jié)為例,可以將4M的緩存劃分為128X256的二維比特圖,如圖3a所示,該二維比特圖的總行數(shù)為256 (第O行~第255行),總列數(shù)為128 (第O列~第127列)。在該比特圖中,有128\256=321^個(gè)比特位,與將411的緩存劃分成321(個(gè)長(zhǎng)度為128字節(jié)的子緩存塊的劃分方式中,得到的子緩存塊的個(gè)數(shù)相等,并且該二維比特圖中的比特位與劃分的子緩存塊一一對(duì)應(yīng),每一個(gè)比特位表征一個(gè)長(zhǎng)度為128字節(jié)的子緩存塊。且該二維比特圖中,每個(gè)比特位的比特值表征該比特位對(duì)應(yīng)的子緩存塊的當(dāng)前使用狀態(tài),例如,可以用I表征該比特位對(duì)應(yīng)的子緩存塊的當(dāng)前狀態(tài)為被占用,可以用O表征該比特位對(duì)應(yīng)的子緩存塊的當(dāng)前狀態(tài)為空閑。 [0044]同理,針對(duì)預(yù)設(shè)長(zhǎng)度256字節(jié),可以將4M的緩存劃分為64 X 256的二維比特圖,如圖3b所示,該二維比特圖的總行數(shù)為256 (第O行~第255行),總列數(shù)為64 (第O列~第63列);針對(duì)預(yù)設(shè)長(zhǎng)度512字節(jié),可以將4M的緩存劃分為32X256的二維比特圖,如圖3c所示,該二維比特圖的總行數(shù)為256 (第O行~第255行),總列數(shù)為32 (第O列~第31列);針對(duì)預(yù)設(shè)長(zhǎng)度1024字節(jié),可以將4M的緩存劃分為16X256的二維比特圖,如圖3d所示,該二維比特圖的總行數(shù)為256 (第O行~第255行),總列數(shù)為16 (第O列~第15列);針對(duì)預(yù)設(shè)長(zhǎng)度2048字節(jié),可以將4M的緩存劃分為8X256的二維比特圖,如圖3e所示,該二維比特圖的總行數(shù)為256 (第O行~第255行),總列數(shù)為8 (第O列~第7列)。進(jìn)一步地,在針對(duì)某預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊,確定對(duì)應(yīng)的二維比特圖時(shí),該二維比特圖的總行數(shù)和總列數(shù)只要滿足總行數(shù)與總列數(shù)的乘積等于針對(duì)該預(yù)設(shè)長(zhǎng)度劃分的子緩存塊的個(gè)數(shù)即可,不一定按照本實(shí)施例的劃分方式,本實(shí)施例只是舉例說(shuō)明。
[0045]下面介紹如何根據(jù)二維比特圖中的每個(gè)比特位在該二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,確定該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址。下面以圖3a中,針對(duì)預(yù)設(shè)長(zhǎng)度為128字節(jié),將4M的緩存劃分為128X256的二維比特圖為例。根據(jù)本發(fā)明實(shí)施例提出的位于第i行第j列的比特位表征的與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址addu由下式確定^ddij= (i XX+j) Xz ;其中,1、j均為非負(fù)整數(shù),X表征該二維比特圖的總列數(shù),z表征與該二維比特圖對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度。針對(duì)圖3a中,位于第O行,第I列的比特位,i=0,j=l,X=128, z=128,則該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址為:addQ1=(0X128+l)X128=128jp該子緩存塊的相對(duì)地址為0x128;針對(duì)圖3a中,位于第I行,第2列的比特位,i=l,j=2,X=128,z=128,則該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址為:add12= (I X 128+2) X 128=16640,即該子緩存塊的相對(duì)地址為0x16640。
[0046]進(jìn)一步地,因?yàn)橛?jì)算機(jī)中,緩存的地址由二進(jìn)制表示,在二進(jìn)制中,乘法操作相當(dāng)于向左移位,也就是說(shuō),二進(jìn)制數(shù)左移I位相當(dāng)于將該二進(jìn)制數(shù)的數(shù)值乘以2,那么,本發(fā)明實(shí)施例提出的根據(jù)二維比特圖中的每個(gè)比特位在該二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,確定該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址的方法,還可以通過(guò)移位的方式實(shí)現(xiàn),即:
[0047]針對(duì)每個(gè)二維比特圖,設(shè)該二維比特圖的總行數(shù)、總列數(shù)、以及與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度均可以表示為2η,η為非負(fù)整數(shù),且該二維比特圖的起始行為第O行,起始列為第O列,則位于第i行第j列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址addu由下式確定:
[0048]addjj= (i?log2X+j) ?log2z ;
[0049]其中,1、j均為非負(fù)整數(shù),X表征該二維比特圖的總列數(shù),z表征與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度,〈〈為向左移位運(yùn)算符,運(yùn)算規(guī)則為將二進(jìn)制數(shù)向左平移,例如:i?log2X表征將二進(jìn)制數(shù)i向左平移1g2X位,i左移之后移出的低1g2X位補(bǔ)O。
[0050]下面以圖3a中,針對(duì)預(yù)設(shè)長(zhǎng)度為128字節(jié),將4M的緩存劃分為128X256的二維比特圖為例。針對(duì)圖3a中,位于第O行,第I列的比特位,i=0, j=l, X=128, z=128,則該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址為:addQ1= (0?log2128+l) <<log2128=128,即該子緩存塊的相對(duì)地址為0x128 ;針對(duì)圖3a中,位于第I行,第2列的比特位,i=l, j=2, X=128, z=128,則該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址為:add12= (l?log2128+2) ?log2128=16640,即該子緩存塊的相對(duì)地址為0x16640。
[0051]進(jìn)一步地,針對(duì)每個(gè)二維比特圖中的每個(gè)比特位,與該比特位對(duì)應(yīng)的子緩存塊的絕對(duì)地址為該緩存塊的絕對(duì)起始地址與該子緩存塊的相對(duì)地址的和。也就是說(shuō),本發(fā)明實(shí)施例提供的根據(jù)二維比特圖中的每個(gè)比特位在該二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,確定的該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址,為該子緩存塊的相對(duì)位于第O行第O列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址的起始相對(duì)地址,該子緩存塊的絕對(duì)起始地址為該子緩存塊的相對(duì)地址與被劃分的緩存塊的絕對(duì)起始地址的和。
[0052]進(jìn)一步地, 本發(fā)明實(shí)施例提供的根據(jù)二維比特圖中的每個(gè)比特位在該二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,確定該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址的方法,設(shè)置二維比特圖的起始行為第O行,起始列為第O列,使得位于第O行,第O列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址為0,這樣可以便于將緩存塊劃分為的子緩存塊的絕對(duì)地址的計(jì)算,對(duì)于起始行和起始列設(shè)置為非0,并采用本發(fā)明的思想確定子緩存塊的相對(duì)地址方法也屬于本發(fā)明的保護(hù)范圍。
[0053]進(jìn)一步地,為了便于實(shí)現(xiàn)本發(fā)明提供的一種緩存劃分方法,可以將不同預(yù)設(shè)長(zhǎng)度作為二維比特圖的第三維,如圖3f所示,使得本發(fā)明實(shí)施例提供的緩存劃分方法可以作為基于三維比特圖的緩存劃分方法。當(dāng)接收到分配緩存的請(qǐng)求時(shí),可以根據(jù)請(qǐng)求分配的緩存大小查找三維比特圖的第三維,再根據(jù)確定的第三維的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的二維比特圖查找空閑的子緩存塊進(jìn)行分配。
[0054]實(shí)施例2:
[0055]本發(fā)明實(shí)施例2中,提供了一種緩存分配方法,如圖4所示,包括如下步驟:
[0056]S401、從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度。
[0057]S402、從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度。
[0058]S403、從配置的各子緩存塊中,確定S402中確定的最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配。
[0059]S404、將分配的子緩存塊的使用狀態(tài)更新為被占用。
[0060]S405、從基于各第一預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與分配的子緩存塊具有如下位置關(guān)系之一的第一子緩存塊,其中,第一預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除S402中確定的最小的預(yù)設(shè)長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度:[0061]該第一子緩存塊的全部與S403分配的子緩存塊的部分具有重疊位置關(guān)系、該第一子緩存塊的部分與S403分配的子緩存塊的全部具有重疊位置關(guān)系、該第一子緩存塊的部分與S403分配的子緩存塊的部分具有重疊位置關(guān)系。
[0062]本步驟中,由于針對(duì)多個(gè)預(yù)設(shè)長(zhǎng)度對(duì)緩存塊進(jìn)行不同方式的劃分時(shí),針對(duì)的是同一塊緩存,因此,當(dāng)將針對(duì)某一個(gè)預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊中的某個(gè)子緩存塊分配之后,被劃分的緩存塊對(duì)應(yīng)于該子緩存塊的部分被占用,那么在其他劃分方式中,與該被占用子緩存塊有重疊部分的子緩存塊也相當(dāng)于被占用,不能再進(jìn)行分配了。下面以圖3a和圖3b中的兩種劃分子緩存塊的方式舉例說(shuō)明:
[0063]在圖3a中,針對(duì)128 X 256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為128字節(jié),在圖3b中,針對(duì)64X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為256字節(jié),當(dāng)位于128X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊占用時(shí),位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊的部分被占用,那么該64 X 256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊應(yīng)該被標(biāo)記為被占用;當(dāng)位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊被占用時(shí),位于128X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊、以及位于128X256的二維比特圖的第O行第I列的比特位對(duì)應(yīng)的子緩存塊均被占用,那么該位于128X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊、以及位于128X256的二維比特圖的第O行第I列的比特位對(duì)應(yīng)的子緩存塊均應(yīng)標(biāo)記為被占用。
[0064]S406、當(dāng)確定的第一子緩存塊的當(dāng)前使用狀態(tài)為空閑時(shí),將該確定的第一子緩存塊的使用狀態(tài)更新為被占用。
[0065]例如,在圖3a中,針對(duì)128X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊被占用時(shí),在圖3b中,針對(duì)64 X 256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊被標(biāo)記為被占用,當(dāng)位于128X256的二維比特圖的第O行第I列的比特位對(duì)應(yīng)的子緩存塊被占用時(shí),盡管該子緩存塊與位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊重疊,但是位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊已經(jīng)被標(biāo)記為被占用,就不需要再次標(biāo)記了。
[0066]實(shí)施例3:
[0067]本發(fā)明實(shí)施例3中,提供了一種緩存分配方法,如圖5所示,包括如下步驟:
[0068]S501、從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度。
[0069]S502、從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度。
[0070]S503、從配置的各子緩存塊中,確定S502中確定的最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配。
[0071]S504、將分配的子緩存塊的使用狀態(tài)更新為被占用。
[0072]S505、從基于各第一預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與分配的子緩存塊具有如下位置關(guān)系之一的第一子緩存塊,其中,第一預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除S502中確定的最小的預(yù)設(shè)長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度:
[0073]該第一子緩存塊的全部與S503分配的子緩存塊的部分具有重疊位置關(guān)系、該第一子緩存塊的部分與S503分配的子緩存塊的全部具有重疊位置關(guān)系、該第一子緩存塊的部分與S503分配的子緩存塊的部分具有重疊位置關(guān)系。
[0074]S506、當(dāng)確定的第一子緩存塊的當(dāng)前使用狀態(tài)為空閑時(shí),將該確定的第一子緩存塊的使用狀態(tài)更新為被占用。
[0075]S507、將用于為該確定的第一子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值增加一個(gè)計(jì)數(shù)單位。
[0076]本步驟中,可以為每個(gè)子緩存塊設(shè)置占用計(jì)數(shù)器,當(dāng)需要將該子緩存塊標(biāo)記為被占用時(shí),不論此時(shí)該子緩存塊是否已經(jīng)被標(biāo)記為被占用,均為計(jì)數(shù)器的數(shù)值增加一個(gè)計(jì)數(shù)單位。
[0077]進(jìn)一步地,本步驟S506與步驟S507的執(zhí)行沒(méi)有嚴(yán)格的先后順序。
[0078]S508、當(dāng)任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑。
[0079]S509、從基于各第二預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與該釋放子緩存塊具有如下位置關(guān)系之一的第二子緩存塊,其中,第二預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除該釋放子緩存塊的長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度:
[0080]該第二子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的部分具有重疊位置關(guān)系。
[0081]S510、將用于為該第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值減小一個(gè)計(jì)數(shù)單位。
[0082]S511、當(dāng)用于為該第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值為零時(shí),將該第二子緩存塊的使用狀態(tài)更新為空閑。
[0083]本實(shí)施例中,由于針對(duì)多個(gè)預(yù)設(shè)長(zhǎng)度對(duì)緩存塊進(jìn)行不同方式的劃分時(shí),針對(duì)的是同一塊緩存,因此,當(dāng)將針對(duì)某一個(gè)預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊中的某個(gè)被占用的子緩存塊被釋放之后,在其他劃分方式中,與該被占用子緩存塊有重疊部分的子緩存塊也相當(dāng)于被釋放。下面以圖3a和圖3b中的兩種劃分子緩存塊的方式舉例說(shuō)明:
[0084]在圖3a中,針對(duì)128 X 256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為128字節(jié),位于該二維比特圖第O行第I列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為128字節(jié),在圖3b中,針對(duì)64X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為256字節(jié),與位于128X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊以及第O行第I列的比特位對(duì)應(yīng)的子緩存塊重疊。
[0085]當(dāng)位于128X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊占用時(shí),該子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器數(shù)值加一個(gè)計(jì)數(shù)單位,位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊的部分被占用,那么該64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊應(yīng)該被標(biāo)記為被占用,且該子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器數(shù)值加一個(gè)計(jì)數(shù)單位;當(dāng)位于128X256的二維比特圖的第O行第I列的比特位對(duì)應(yīng)的子緩存塊占用時(shí),該子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器數(shù)值加一個(gè)計(jì)數(shù)單位,位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊的另一部分被占用,由于該64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊已經(jīng)被標(biāo)記為被占用,則將該子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器數(shù)再增加一個(gè)計(jì)數(shù)單位,此時(shí)該64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器數(shù)值為兩個(gè)計(jì)數(shù)單位;當(dāng)位于128X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊、以及位于128X256的二維比特圖的第O行第I列的比特位對(duì)應(yīng)的子緩存塊均被釋放時(shí),那么該位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊對(duì)應(yīng)的占用計(jì)數(shù)器才能被清零,才能將該位于64X256的二維比特圖的第O行第O列的比特位對(duì)應(yīng)的子緩存塊標(biāo)記為空閑。
[0086]實(shí)施例4:
[0087]本發(fā)明實(shí)施例4中,提供了一種緩存分配方法,本實(shí)施例中預(yù)設(shè)長(zhǎng)度均為2的正整數(shù)次冪,如圖6所示,包括如下步驟:
[0088]S601、從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度。
[0089]S602、從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度。
[0090]S603、從配置的各子緩存塊中,確定S602中確定的最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配。
[0091]S604、當(dāng)任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑。
[0092]S605、從基于各第三預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,將子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系的子緩存塊的使用狀態(tài)更新為空閑,其中,第三預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度小于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度。
[0093]本步驟中,當(dāng)一個(gè)子緩存塊被釋放,可以將其他劃分方式中,長(zhǎng)度小于該子緩存塊且位置關(guān)系為完全與該子緩存塊重疊的子緩存塊釋放,而對(duì)于長(zhǎng)度大于該子緩存塊且位置關(guān)系為部分與該子緩存塊重疊的子緩存塊,或者長(zhǎng)度小于該子緩存塊且位置關(guān)系為部分與該子緩存塊重疊的子緩存塊,還需要進(jìn)一步確定這些子緩存塊不與該子緩存塊重疊的部分的使用狀態(tài)。
[0094]下面以圖3a、圖3b和圖3c中的三種劃分子緩存塊的方式舉例說(shuō)明:
[0095]假設(shè)在圖3a中,針對(duì)128X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊、以及位于該二維比特圖第O行第I列的比特位對(duì)應(yīng)的子緩存塊被占用,在圖3b中,針對(duì)64X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊被占用,在圖3c中,針對(duì)32X256的二維比特圖,位于該二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊被占用。當(dāng)位于64X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊被釋放時(shí),將位于128X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊、以及位于該二維比特圖第O行第I列的比特位對(duì)應(yīng)的子緩存塊均標(biāo)記為空閑。而位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊則不能馬上標(biāo)記為空閑,因?yàn)槲挥?4X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊僅與位于32 X 256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊的部分重疊,還需要確定與位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊另一部分重疊的子緩存塊是為空閑。
[0096]S606、從基于各第四預(yù)設(shè)長(zhǎng)度劃分的各個(gè)子緩存塊中,確定子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系的第三子緩存塊,其中,第四預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度大于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度。
[0097]S607、針對(duì)每個(gè)第三子緩存塊,從基于該釋放子緩存塊的長(zhǎng)度劃分的、除該釋放子緩存塊之外的各個(gè)子緩存塊中,確定子緩存塊的全部與該第三子緩存塊的部分具有重疊位置關(guān)系的各第四子緩存塊。[0098]進(jìn)一步地,本步驟可以具體實(shí)施為:確定第三子緩存塊的長(zhǎng)度與該釋放子緩存塊的長(zhǎng)度的比值2n中的η的值,其中,η為不小于I的整數(shù);
[0099]確定該釋放子緩存塊的相對(duì)位置;其中,根據(jù)下式確定任一子緩存塊的相對(duì)位置Posij:posiJ=i?log2X+j ;1、j分別為該任一子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行數(shù)和列數(shù),X為該任一子緩存塊對(duì)應(yīng)的比特位所在二維比特圖的總列數(shù),Posij為二進(jìn)制形式;
[0100]當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全O時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;
[0101]當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;
[0102]當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為非全O且非全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,并從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊。
[0103]本實(shí)施例中,當(dāng)預(yù)設(shè)長(zhǎng)度均為2的正整數(shù)次冪時(shí),假設(shè)第一預(yù)設(shè)長(zhǎng)度大于第二預(yù)設(shè)長(zhǎng)度,第一預(yù)設(shè)長(zhǎng)度對(duì)第二預(yù)設(shè)長(zhǎng)度的倍數(shù)也為2的正整數(shù)次冪,即2η,η為正整數(shù),并且第一預(yù)設(shè)長(zhǎng)度的一個(gè)子緩存塊,與第二預(yù)設(shè)長(zhǎng)度的2η個(gè)子緩存塊完全重疊,那么,第二預(yù)設(shè)長(zhǎng)度的2η個(gè)子緩存塊的地址與η有關(guān)。也就是說(shuō),第二預(yù)設(shè)長(zhǎng)度的2η個(gè)子緩存塊的地址是連續(xù)的,并且第二預(yù)設(shè)長(zhǎng)度的2"個(gè)子緩存塊的相對(duì)位置(也就是2"個(gè)子緩存塊地址之間的差異部分)分別為:0到2η-1。
[0104]下面以圖3a和圖3c中的兩種劃分子緩存塊的方式舉例說(shuō)明:
[0105]假設(shè)被釋放的子緩存塊為位于128X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊,確定的一個(gè)第三子緩存塊為位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊,確定第四子緩存塊的過(guò)程如下:
[0106]位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為512
(29)字節(jié),位于128X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊長(zhǎng)度為128
(27)字節(jié),確定29與27之間的比值為22,得到n=2,那么與位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊完全重疊的位于128X256的二維比特圖中的子緩存塊存在4個(gè),并且4個(gè)地址連續(xù)子緩存塊的相對(duì)位置以二進(jìn)制表示分別為:00、01、10和11。
[0107]被釋放位于128X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)位置為00,那么從地址大于該相對(duì)位置為00的子緩存塊的子緩存塊中將相對(duì)位置為01、10和11三個(gè)子緩存塊,即位于128X256的二維比特圖第O行第I列的比特位對(duì)應(yīng)的子緩存塊、128 X 256的二維比特圖第O行第2列的比特位對(duì)應(yīng)的子緩存塊、以及128X256的二維比特圖第O行第3列的比特位對(duì)應(yīng)的子緩存塊確定為第四子緩存塊。[0108]S608、當(dāng)各第四子緩存塊的使用狀態(tài)均為空閑時(shí),將該第三子緩存塊的使用狀態(tài)更新為空閑。
[0109]當(dāng)位于128X256的二維比特圖第O行第I列的比特位對(duì)應(yīng)的子緩存塊、128 X 256的二維比特圖第O行第2列的比特位對(duì)應(yīng)的子緩存塊、以及128X256的二維比特圖第O行第3列的比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài)均為空閑時(shí),可以將第三子緩存塊,也就是位于32X256的二維比特圖第O行第O列的比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài)更新為空閑。
[0110]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種緩存分配裝置,由于這些裝置所解決問(wèn)題的原理與前述緩存分配方法相似,因此該裝置的實(shí)施可以參見(jiàn)前述方法的實(shí)施,重復(fù)之處不再贅述。
[0111]本發(fā)明實(shí)施例提供了一種緩存分配裝置,如圖7所示,包括:
[0112]第一確定模塊701,用于從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;
[0113]第二確定模塊702,用于從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊;
[0114]分配模塊703,用于將所述第二確定模塊702確定的空閑子緩存塊進(jìn)行分配,其中,所述各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
[0115]進(jìn)一步地,所述第二確定模塊702具體用于根據(jù)基于所述最小的預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊所對(duì)應(yīng)的二維比特圖中,表征各子緩存塊使用狀態(tài)的比特值,確定一個(gè)使用狀態(tài)為空閑的子緩存塊;其中,二維比特圖為分別為基于所述不同預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊建立的對(duì)應(yīng)的二維比特圖,并且,二維比特圖中的各比特位與該二維比特圖所對(duì)應(yīng)的各子緩存塊一一對(duì)應(yīng),二維比特圖中的比特位的比特值表征與該比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài),且該比特位在二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,用于表征與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址;
[0116]所述分配模塊703,具體用于根據(jù)確定的空閑子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行號(hào)和列號(hào),確定所述空閑子緩存塊的地址,并將所述空閑子緩存塊進(jìn)行分配。
[0117]進(jìn)一步地,所述裝置還包括:狀態(tài)更新模塊704和第三確定模塊705 ;
[0118]所述狀態(tài)更新模塊704,用于將所述空閑子緩存塊進(jìn)行分配之后,將分配的子緩存塊的使用狀態(tài)更新為被占用;當(dāng)所述第三確定模塊705確定的第一子緩存塊的當(dāng)前使用狀態(tài)為空閑時(shí),將該確定的第一子緩存塊的使用狀態(tài)更新為被占用;
[0119]所述第三確定模塊705,用于從基于各第一預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與所述分配的子緩存塊具有如下位置關(guān)系之一的第一子緩存塊,其中,所述第一預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除所述最小的預(yù)設(shè)長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度:
[0120]該第一子緩存塊的全部與所述分配的子緩存塊的部分具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的全部具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的部分具有重疊位置關(guān)系。
[0121]進(jìn)一步地,所述裝置還包括:計(jì)數(shù)模塊706和第四確定模塊707 ;
[0122]所述計(jì)數(shù)模塊706,用于將用于為該確定的第一子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值增加一個(gè)計(jì)數(shù)單位;將用于為所述第四確定模塊707確定的第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值減小一個(gè)計(jì)數(shù)單位;
[0123]所述狀態(tài)更新模塊704,還用于當(dāng)任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑;當(dāng)用于為所述第四確定模塊確定的第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值為零時(shí),將該第二子緩存塊的使用狀態(tài)更新為空閑
[0124]所述第四確定模塊707,用于從基于各第二預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與該釋放子緩存塊具有如下位置關(guān)系之一的第二子緩存塊,其中,所述第二預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除該釋放子緩存塊的長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度:
[0125]該第二子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的部分具有重疊位置關(guān)系。
[0126]進(jìn)一步地,所述裝置還包括:第五確定模塊708 ;
[0127]所述狀態(tài)更新模塊704還用于當(dāng)所述不同預(yù)設(shè)長(zhǎng)度均為2的正整數(shù)次冪,且任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑;從基于各第三預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,將子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系的子緩存塊的使用狀態(tài)更新為空閑,其中,所述第三預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度小于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度;當(dāng)所述第五確定模塊確定的所述各第四子緩存塊的使用狀態(tài)均為空閑時(shí),將該第三子緩存塊的使用狀態(tài)更新為空閑;
[0128]所述第五確定模塊708,用于從基于各第四預(yù)設(shè)長(zhǎng)度劃分的各個(gè)子緩存塊中,確定子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系的第三子緩存塊,其中,所述第四預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度大于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度;針對(duì)每個(gè)第三子緩存塊,從基于該釋放子緩存塊的長(zhǎng)度劃分的、除該釋放子緩存塊之外的各個(gè)子緩存塊中,確定子緩存塊的全部與該第 三子緩存塊的部分具有重疊位置關(guān)系的各第四子緩存塊。
[0129]進(jìn)一步地,所述第五確定模塊708具體用于確定所述第三子緩存塊的長(zhǎng)度與該釋放子緩存塊的長(zhǎng)度的比值2n中的η的值,其中,η為不小于I的整數(shù);確定該釋放子緩存塊的相對(duì)位置;其中,根據(jù)下式確定任一子緩存塊的相對(duì)位置Posij:posiJ=i?log2X+j ;1、j分別為該任一子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行數(shù)和列數(shù),X為該任一子緩存塊對(duì)應(yīng)的比特位所在二維比特圖的總列數(shù),Posu為二進(jìn)制形式;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全O時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為非全O且非全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,并從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊。[0130]上述各單元的功能可對(duì)應(yīng)于圖1至圖2、圖4至圖6所示流程中的相應(yīng)處理步驟,在此不再贅述。
[0131]本發(fā)明實(shí)施例提供的一種緩存分配方法及裝置,從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度;從配置的各子緩存塊中,確定最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。針對(duì)不同的預(yù)設(shè)長(zhǎng)度,每種預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)一種緩存劃分方式,在不同的劃分方式中,劃分的子緩存塊具有不同的長(zhǎng)度,在接收到緩存分配請(qǐng)求時(shí),可以根據(jù)需要分配的緩存長(zhǎng)度,從所有不小于該需要分配的緩存長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度中,確定最小的預(yù)設(shè)長(zhǎng)度;從針對(duì)該最小的預(yù)設(shè)長(zhǎng)度劃分的多個(gè)子緩存塊所中確定一個(gè)使用狀態(tài)為空閑的子緩存塊,并將該子緩存塊進(jìn)行分配。這樣,能夠根據(jù)需要分配的緩存塊的大小選擇合適的子緩存塊進(jìn)行分配,與現(xiàn)有技術(shù)中,無(wú)論需要分配的緩存是大還是小均分配固定大小的子緩存塊相比,提高了對(duì)緩存的利用率,使得對(duì)緩存塊的劃分和分配更加合理。
[0132]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實(shí)施例可以通過(guò)硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,本發(fā)明實(shí)施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是⑶-R0M,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0133]本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
[0134]本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0135]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0136]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種緩存分配方法,其特征在于,包括: 從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度; 從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,并將確定的空閑子緩存塊進(jìn)行分配,其中,所述各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
2.如權(quán)利要求1所述的方法,其特征在于,從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊,具體包括: 根據(jù)基于所述最小的預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊所對(duì)應(yīng)的二維比特圖中表征各子緩存塊使用狀態(tài)的比特值,確定一個(gè)使用狀態(tài)為空閑的子緩存塊; 其中,二維比特圖為分別為基于所述不同預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊建立的對(duì)應(yīng)的二維比特圖,并且,二維比特圖中的各比特位與該二維比特圖所對(duì)應(yīng)的各子緩存塊一一對(duì)應(yīng),二維比特圖中的比特位的比特值表征與該比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài),且該比特位在二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,用于表征與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址; 將確定的空閑子緩存塊進(jìn)行分配,具體包括: 根據(jù)確定的空閑子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行號(hào)和列號(hào),確定所述空閑子緩存塊的地址,并將所述空閑子緩存塊進(jìn)行分配。
3.如權(quán)利要求2所述的方法,其特征在于,針對(duì)每個(gè)二維比特圖,設(shè)該二維比特圖的起始行為第O行,起始列為第O列,則位于第i行第j列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址addjj由下式確定:`
addjj= (i XX+j) X z ; 其中,1、j均為非負(fù)整數(shù),X表征該二維比特圖的總列數(shù),z表征與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度。
4.如權(quán)利要求2所述的方法,其特征在于,針對(duì)每個(gè)二維比特圖,設(shè)該二維比特圖的總行數(shù)、總列數(shù)、以及與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度均表示為2η,η為非負(fù)整數(shù),且該二維比特圖的起始行為第O行,起始列為第O列,則位于第i行第j列的比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址addij由下式確定:
addjj= (i?log2X+j ) ?log2z ; 其中,1、j均為非負(fù)整數(shù),X表征該二維比特圖的總列數(shù),z表征與該二維比特圖對(duì)應(yīng)的各子緩存塊的長(zhǎng)度,?為向左移位運(yùn)算符。
5.如權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,將所述空閑子緩存塊進(jìn)行分配之后,還包括: 將分配的子緩存塊的使用狀態(tài)更新為被占用; 從基于各第一預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與所述分配的子緩存塊具有如下位置關(guān)系之一的第一子緩存塊,其中,所述第一預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除所述最小的預(yù)設(shè)長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度: 該第一子緩存塊的全部與所述分配的子緩存塊的部分具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的全部具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的部分具有重疊位置關(guān)系; 當(dāng)確定的第一子緩存塊的當(dāng)前使用狀態(tài)為空閑時(shí),將該確定的第一子緩存塊的使用狀態(tài)更新為被占用。
6.如權(quán)利要求5所述的方法,其特征在于,還包括: 將用于為該確定的第一子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值增加一個(gè)計(jì)數(shù)單位; 當(dāng)任一子緩存塊被釋放時(shí),還包括: 將該釋放子緩存塊的使用狀態(tài)更新為空閑; 從基于各第二預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與該釋放子緩存塊具有如下位置關(guān)系之一的第二子緩存塊,其中,所述第二預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除該釋放子緩存塊的長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度: 該第二子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的部分具有重疊位置關(guān)系; 將用于為該第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值減小一個(gè)計(jì)數(shù)單位; 當(dāng)用于為該第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值為零時(shí),將該第二子緩存塊的使用狀態(tài)更新為空閑。
7.如權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述不同預(yù)設(shè)長(zhǎng)度均為2的正整數(shù)次冪; 當(dāng)任一子緩存塊被釋放時(shí),還包括: 將該釋放子緩存塊的使用狀態(tài)更新為空閑; 從基于各第三預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,將子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系的子緩存塊的使用狀態(tài)更新為空閑,其中,所述第三預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度小于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度; 從基于各第四預(yù)設(shè)長(zhǎng)度劃分的各個(gè)子緩存塊中,確定子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系的第三子緩存塊,其中,所述第四預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度大于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度; 針對(duì)每個(gè)第三子緩存塊,從基于該釋放子緩存塊的長(zhǎng)度劃分的、除該釋放子緩存塊之外的各個(gè)子緩存塊中,確定子緩存塊的全部與該第三子緩存塊的部分具有重疊位置關(guān)系的各第四子緩存塊;并 當(dāng)所述各第四子緩存塊的使用狀態(tài)均為空閑時(shí),將該第三子緩存塊的使用狀態(tài)更新為空閑。
8.如權(quán)利要求7所述的方法,其特征在于,從基于該釋放子緩存塊的長(zhǎng)度劃分的、除該釋放子緩存塊之外的各個(gè)子緩存塊中,確定子緩存塊的全部與所述第三子緩存塊的部分具有重疊位置關(guān)系的各第四子緩存塊,具體包括: 確定所述第三子緩存塊的長(zhǎng)度與該釋放子緩存塊的長(zhǎng)度的比值2n中的η的值,其中,η為不小于I的整數(shù); 確定該釋放子緩存塊的相對(duì)位置;其中,根據(jù)下式確定任一子緩存塊的相對(duì)位置Posij:posiJ=i?log2X+j ;1、j分別為該任一子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行數(shù)和列數(shù),X為該任一子緩存塊對(duì)應(yīng)的比特位所在二維比特圖的總列數(shù),Posij為二進(jìn)制形式;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全O時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊; 當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊; 當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為非全O且非全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,并從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊。
9.如權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,基于所述不同預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊的絕對(duì)地址分別為所述緩存塊的絕對(duì)起始地址與該子緩存塊的相對(duì)地址的和。
10.一種緩存分配裝置,其特征在于,包括: 第一確定模塊,用于從不同預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度不小于需要分配的緩存長(zhǎng)度的預(yù)設(shè)長(zhǎng)度,并從確定的預(yù)設(shè)長(zhǎng)度中,確定長(zhǎng)度最小的預(yù)設(shè)長(zhǎng)度; 第二確定模塊,用于從配置的各子緩存塊中,確定所述最小的預(yù)設(shè)長(zhǎng)度對(duì)應(yīng)的且使用狀態(tài)為空閑的子緩存塊; 分配模塊,用于將所述第二確定模塊確定的空閑子緩存塊進(jìn)行分配,其中,所述各子緩存塊為基于所述不同預(yù)設(shè)長(zhǎng)度,分別`將同一緩存塊劃分為多個(gè)長(zhǎng)度相等的子緩存塊。
11.如權(quán)利要求10所述的裝置,其特征在于,所述第二確定模塊具體用于根據(jù)基于所述最小的預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊所對(duì)應(yīng)的二維比特圖中,表征各子緩存塊使用狀態(tài)的比特值,確定一個(gè)使用狀態(tài)為空閑的子緩存塊;其中,二維比特圖為分別為基于所述不同預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊建立的對(duì)應(yīng)的二維比特圖,并且,二維比特圖中的各比特位與該二維比特圖所對(duì)應(yīng)的各子緩存塊一一對(duì)應(yīng),二維比特圖中的比特位的比特值表征與該比特位對(duì)應(yīng)的子緩存塊的使用狀態(tài),且該比特位在二維比特圖中的行號(hào)和列號(hào)之間的數(shù)值關(guān)系,用于表征與該比特位對(duì)應(yīng)的子緩存塊的相對(duì)地址; 所述分配模塊,具體用于根據(jù)確定的空閑子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行號(hào)和列號(hào),確定所述空閑子緩存塊的地址,并將所述空閑子緩存塊進(jìn)行分配。
12.如權(quán)利要求10-11任一項(xiàng)所述的裝置,其特征在于,還包括:狀態(tài)更新模塊和第三確定模塊; 所述狀態(tài)更新模塊,用于將所述空閑子緩存塊進(jìn)行分配之后,將分配的子緩存塊的使用狀態(tài)更新為被占用;當(dāng)所述第三確定模塊確定的第一子緩存塊的當(dāng)前使用狀態(tài)為空閑時(shí),將該確定的第一子緩存塊的使用狀態(tài)更新為被占用; 所述第三確定模塊,用于從基于各第一預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與所述分配的子緩存塊具有如下位置關(guān)系之一的第一子緩存塊,其中,所述第一預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除所述最小的預(yù)設(shè)長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度: 該第一子緩存塊的全部與所述分配的子緩存塊的部分具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的全部具有重疊位置關(guān)系、該第一子緩存塊的部分與所述分配的子緩存塊的部分具有重疊位置關(guān)系。
13.如權(quán)利要求12所述的裝置,其特征在于,還包括:計(jì)數(shù)模塊和第四確定模塊; 所述計(jì)數(shù)模塊,用于將用于為該確定的第一子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值增加一個(gè)計(jì)數(shù)單位;將用于為所述第四確定模塊確定的第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值減小一個(gè)計(jì)數(shù)單位; 所述狀態(tài)更新模塊,還用于當(dāng)任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑;當(dāng)用于為所述第四確定模塊確定的第二子緩存塊進(jìn)行占用計(jì)數(shù)的計(jì)數(shù)器的數(shù)值為零時(shí),將該第二子緩存塊的使用狀態(tài)更新為空閑 所述第四確定模塊,用于從基于各第二預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,確定與該釋放子緩存塊具有如下位置關(guān)系之一的第二子緩存塊,其中,所述第二預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中除該釋放子緩存塊的長(zhǎng)度之外的各預(yù)設(shè)長(zhǎng)度: 該第二子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系、該第二子緩存塊的部分與該釋放子緩存塊的部分具有重疊位置關(guān)系。
14.如權(quán)利要求10-11任一項(xiàng)所述的裝置,其特征在于,還包括:第五確定模塊; 所述狀態(tài)更新模塊還用于當(dāng)所述不同預(yù)設(shè)長(zhǎng)度均為2的正整數(shù)次冪,且任一子緩存塊被釋放時(shí),將該釋放子緩存塊的使用狀態(tài)更新為空閑;從基于各第三預(yù)設(shè)長(zhǎng)度劃分的各子緩存塊中,將子緩存塊的全部與該釋放子緩存塊的部分具有重疊位置關(guān)系的子緩存塊的使用狀態(tài)更新為空閑,其中,所述第三預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度小于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度;當(dāng)所述第五確定模塊確定的所述各第四子緩存塊的使用狀態(tài)均為空閑時(shí),將該第三子緩存塊的使用狀態(tài)更新為空閑; 所述第五確定模塊,用于從基于各第四預(yù)設(shè)長(zhǎng)度劃分的各個(gè)子緩存塊中,確定子緩存塊的部分與該釋放子緩存塊的全部具有重疊位置關(guān)系的第三子緩存塊,其中,所述第四預(yù)設(shè)長(zhǎng)度為所有預(yù)設(shè)長(zhǎng)度中長(zhǎng)度大于該釋放子緩存塊的長(zhǎng)度的各預(yù)設(shè)長(zhǎng)度;針對(duì)每個(gè)第三子緩存塊,從基于該釋放子緩存塊的長(zhǎng)度劃分的、除該釋放子緩存塊之外的各個(gè)子緩存塊中,確定子緩存塊的全部與該第三子緩存塊的部分具有重疊位置關(guān)系的各第四子緩存塊。
15.如權(quán)利要求14所述的裝置,其特征在于,所述第五確定模塊具體用于確定所述第三子緩存塊的長(zhǎng)度與該釋放子緩存塊的長(zhǎng)度的比值2"中的η的值,其中,η為不小于I的整數(shù);確定該釋放子緩存塊的相對(duì)位置;其中,根據(jù)下式確定任一子緩存塊的相對(duì)位置Posij:poSiJ=i?log2X+j ;1、j分別為該任一子緩存塊對(duì)應(yīng)的比特位在二維比特圖中的行數(shù)和列數(shù),X為該任一子緩存塊對(duì)應(yīng)的比特位所在二維比特圖的總列數(shù),Posu為二進(jìn)制形式;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全O時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存塊;當(dāng)該釋放子緩存塊的相對(duì)位置的后η位為非全O且非全I(xiàn)時(shí),則從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址大于該釋放子緩存塊的各子緩存塊中,依次確定各子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全I(xiàn)的子緩存塊,并從基于該釋放子緩存塊的長(zhǎng)度劃分的、地址小于該釋放子緩存塊的各子緩存塊中,依次確定子緩存塊的相對(duì)位置的后η位,直到確定出相對(duì)位置的后η位為全O的子緩存塊,將確定出的所有子緩存塊確定為第四子緩存 塊。
【文檔編號(hào)】G06F12/08GK103699497SQ201310710756
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】趙劍川, 賈克明, 劉福元 申請(qǐng)人:京信通信系統(tǒng)(中國(guó))有限公司