一種數(shù)據(jù)緩存方法及一種緩沖存儲(chǔ)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)緩存方法及一種緩沖存儲(chǔ)器。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,單核處理器受性能的限制已不能滿足人們?nèi)找嬖龆嗟男枨?,為了?shí)現(xiàn)更高的性能需要,多核處理器的研宄與應(yīng)用與日俱增。如何提高多核系統(tǒng)的并行處理能力和實(shí)現(xiàn)更高的存儲(chǔ)帶寬,越來越受到重視。在多核系統(tǒng)運(yùn)行中,每個(gè)核心是協(xié)同處理的,對(duì)于每個(gè)核心產(chǎn)生的共享數(shù)據(jù),需要進(jìn)行緩沖再處理,否則會(huì)出現(xiàn)亂序,一致性的問題。為了避免產(chǎn)生這些問題,在內(nèi)核與存儲(chǔ)體、外設(shè)之間使用共享存儲(chǔ)端的結(jié)構(gòu),它能夠起到數(shù)據(jù)緩沖與處理的作用。
[0003]現(xiàn)有技術(shù)中,緩沖存儲(chǔ)器中通過端口接收外部輸入源發(fā)來的數(shù)據(jù),將同一拍的數(shù)據(jù)存儲(chǔ)在同一個(gè)緩存單元中,將不同拍的數(shù)據(jù)存儲(chǔ)在不同的緩存單元中。
[0004]通過上述描述可見,現(xiàn)有技術(shù)的緩沖存儲(chǔ)器在一拍的數(shù)據(jù)比較少時(shí),也要通過一個(gè)緩存單元來存儲(chǔ),浪費(fèi)了存儲(chǔ)空間。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種數(shù)據(jù)緩存方法及一種緩沖存儲(chǔ)器,能夠節(jié)省存儲(chǔ)空間。
[0006]一方面,本發(fā)明提供了一種數(shù)據(jù)緩存方法,包括:
[0007]S1:接收輸入源發(fā)來的緩存數(shù)據(jù);
[0008]S2:根據(jù)當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)及當(dāng)前拍的緩存數(shù)據(jù),判斷當(dāng)前拍的緩存數(shù)據(jù)是否滿足歸并條件,如果是,則執(zhí)行步驟S3,否則,將下一個(gè)空閑緩存單元作為當(dāng)前緩存單元,執(zhí)行步驟S3 ;
[0009]S3:將當(dāng)前拍的緩存數(shù)據(jù)存儲(chǔ)到當(dāng)前緩存單元中,返回步驟SI。
[0010]進(jìn)一步地,在所述SI之前,還包括:預(yù)先設(shè)置寫數(shù)據(jù)的緩存單元和讀數(shù)據(jù)的緩存單元,其中,緩存單元包括:寫數(shù)據(jù)的緩存單元、讀數(shù)據(jù)的緩存單元,所述緩存數(shù)據(jù)包括??寫數(shù)據(jù)、讀數(shù)據(jù);
[0011]所述S2中,所述將下一個(gè)空閑緩存單元作為當(dāng)前緩存單元,包括:將下一個(gè)空閑寫數(shù)據(jù)的緩存單元作為當(dāng)前寫數(shù)據(jù)的緩存單元,將下一個(gè)空閑讀數(shù)據(jù)的緩存單元作為當(dāng)前讀數(shù)據(jù)的緩存單元;
[0012]所述S3,包括:將當(dāng)前拍的緩存數(shù)據(jù)中的寫數(shù)據(jù)存儲(chǔ)到當(dāng)前寫數(shù)據(jù)的緩存單元中,將當(dāng)前拍的緩存數(shù)據(jù)中的讀數(shù)據(jù)存儲(chǔ)到當(dāng)前讀數(shù)據(jù)的緩存單元中。
[0013]進(jìn)一步地,還包括:
[0014]所述S2,包括:
[0015]B1:判斷當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)及當(dāng)前拍的緩存數(shù)據(jù)是否都滿足讀數(shù)據(jù)和寫數(shù)據(jù)均小于等于第一預(yù)設(shè)值,如果是,則執(zhí)行步驟B2,否則,判定當(dāng)前拍的緩存數(shù)據(jù)不滿足歸并條件;
[0016]B2:獲取當(dāng)前拍的緩存數(shù)據(jù)的輸入源的地址和當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的輸入源的地址,判斷將當(dāng)前拍的緩存數(shù)據(jù)的所有輸入源的地址與當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的所有輸入源的地址中,是否存在相同的地址,如果是,則判定當(dāng)前拍的數(shù)據(jù)不滿足歸并條件,否則,判定當(dāng)前拍的數(shù)據(jù)滿足歸并條件。
[0017]進(jìn)一步地,所述S2,包括:
[0018]Al:判斷當(dāng)前拍的緩存數(shù)據(jù)的數(shù)量與當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的數(shù)量之和是否小于等于第二預(yù)設(shè)值,如果是,則執(zhí)行步驟A2,否則,判定當(dāng)前拍的緩存數(shù)據(jù)不滿足歸并條件;
[0019]A2:獲取當(dāng)前拍的緩存數(shù)據(jù)的輸入源的地址和當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的輸入源的地址,判斷將當(dāng)前拍的緩存數(shù)據(jù)存儲(chǔ)到當(dāng)前緩存單元中是否會(huì)造成地址訪問順序錯(cuò)誤,如果是,則判定當(dāng)前拍的數(shù)據(jù)不滿足歸并條件,否則,判定當(dāng)前拍的數(shù)據(jù)滿足歸并條件。
[0020]進(jìn)一步地,還包括:預(yù)先設(shè)置用于指示寫位置的寫指針和用于指示讀位置的讀指針;
[0021]實(shí)時(shí)判斷寫指針與讀指針的差值的絕對(duì)值是否小于等于第三預(yù)設(shè)值,當(dāng)判斷結(jié)果為是時(shí),向所述輸入源發(fā)送停止發(fā)送緩存數(shù)據(jù)的信號(hào),以使所述輸入源停止發(fā)送緩存數(shù)據(jù),當(dāng)判斷結(jié)果為否時(shí),不向所述輸入源發(fā)送停止發(fā)送緩存數(shù)據(jù)的信號(hào),以使所述輸入源繼續(xù)發(fā)送緩存數(shù)據(jù);
[0022]其中,由緩存單元組成的緩存體是先入先出的結(jié)構(gòu)。
[0023]另一方面,本發(fā)明提供了一種緩沖存儲(chǔ)器,包括:
[0024]接收單元,用于接收輸入源發(fā)來的緩存數(shù)據(jù);
[0025]第一判斷單元,用于根據(jù)當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)及當(dāng)前拍的緩存數(shù)據(jù),判斷當(dāng)前拍的緩存數(shù)據(jù)是否滿足歸并條件,當(dāng)判斷結(jié)果為是時(shí),通知存儲(chǔ)單元,當(dāng)判斷結(jié)果為否時(shí),將下一個(gè)空閑緩存單元作為當(dāng)前緩存單元,通知存儲(chǔ)單元;
[0026]存儲(chǔ)單元,用于將當(dāng)前拍的緩存數(shù)據(jù)存儲(chǔ)到當(dāng)前緩存單元中,通知接收單元。
[0027]進(jìn)一步地,還包括:
[0028]第一設(shè)置單元,用于設(shè)置寫數(shù)據(jù)的緩存單元和讀數(shù)據(jù)的緩存單元,其中,緩存單元包括:寫數(shù)據(jù)的緩存單元、讀數(shù)據(jù)的緩存單元,所述緩存數(shù)據(jù)包括:寫數(shù)據(jù)、讀數(shù)據(jù);
[0029]所述第一判斷單元,用于將下一個(gè)空閑寫數(shù)據(jù)的緩存單元作為當(dāng)前寫數(shù)據(jù)的緩存單元,將下一個(gè)空閑讀數(shù)據(jù)的緩存單元作為當(dāng)前讀數(shù)據(jù)的緩存單元;
[0030]所述存儲(chǔ)單元,用于將當(dāng)前拍的緩存數(shù)據(jù)中的寫數(shù)據(jù)存儲(chǔ)到當(dāng)前寫數(shù)據(jù)的緩存單元中,將當(dāng)前拍的緩存數(shù)據(jù)中的讀數(shù)據(jù)存儲(chǔ)到當(dāng)前讀數(shù)據(jù)的緩存單元中。
[0031]進(jìn)一步地,所述第一判斷單元,包括:第一判斷子單元、第二判斷子單元;
[0032]第一判斷子單元,用于判斷當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)及當(dāng)前拍的緩存數(shù)據(jù)是否都滿足讀數(shù)據(jù)和寫數(shù)據(jù)均小于等于第一預(yù)設(shè)值,當(dāng)判斷結(jié)果為是時(shí),通知所述第二判斷子單元,當(dāng)判斷結(jié)果為否時(shí),判定當(dāng)前拍的緩存數(shù)據(jù)不滿足歸并條件;
[0033]第二判斷子單元,用于獲取當(dāng)前拍的緩存數(shù)據(jù)的輸入源的地址和當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的輸入源的地址,判斷將當(dāng)前拍的緩存數(shù)據(jù)的所有輸入源的地址與當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的所有輸入源的地址中,是否存在相同的地址,當(dāng)判斷結(jié)果為是時(shí),則判定當(dāng)前拍的數(shù)據(jù)不滿足歸并條件,當(dāng)判斷結(jié)果為否時(shí),判定當(dāng)前拍的數(shù)據(jù)滿足歸并條件。
[0034]進(jìn)一步地,所述第一判斷單元,包括:第三判斷子單元、第四判斷子單元;
[0035]所述第三判斷子單元,用于判斷當(dāng)前拍的緩存數(shù)據(jù)的數(shù)量與當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的數(shù)量之和是否小于等于第二預(yù)設(shè)值,當(dāng)判斷結(jié)果為是時(shí),通知所述第四判斷子單元,當(dāng)判斷結(jié)果為否時(shí),判定當(dāng)前拍的緩存數(shù)據(jù)不滿足歸并條件;
[0036]所述第四判斷子單元,用于獲取當(dāng)前拍的緩存數(shù)據(jù)的輸入源的地址和當(dāng)前緩存單元中存儲(chǔ)的緩存數(shù)據(jù)的輸入源的地址,判斷將當(dāng)前拍的緩存數(shù)據(jù)存儲(chǔ)到當(dāng)前緩存單元中是否會(huì)造成地址訪問順序錯(cuò)誤,當(dāng)判斷結(jié)果為是時(shí),則判定當(dāng)前拍的數(shù)據(jù)不滿足歸并條件,當(dāng)判斷結(jié)果為否時(shí),判定當(dāng)前拍的數(shù)據(jù)滿足歸并條件。
[0037]進(jìn)一步地,所述緩沖存儲(chǔ)器包括:緩存體;所述緩存體包括:所述緩存單元;所述緩存體是先入先出的結(jié)構(gòu);
[0038]還包括:第二設(shè)置單元,用于設(shè)置用于指示寫位置的寫指針和用于指示讀位置的讀指針;
[0039]第二判斷單元,用于實(shí)時(shí)判斷寫指針與讀指針的差值的絕對(duì)值是否小于等于第三預(yù)設(shè)值,當(dāng)判斷結(jié)果為是時(shí),向所述輸入源發(fā)送停止發(fā)送緩存數(shù)據(jù)的信號(hào),以使所述輸入源停止發(fā)送緩存數(shù)據(jù),當(dāng)判斷結(jié)果為否時(shí),不向所述輸入源發(fā)送停止發(fā)送緩存數(shù)據(jù)的信號(hào),以使所述輸入源繼續(xù)發(fā)送緩存數(shù)據(jù);
[0040]和/ 或,
[0041]所述緩沖存儲(chǔ)器的緩存體是寄存器文件的結(jié)構(gòu),所述緩存單元包括寄存器;
[0042]和/ 或,
[0043]還包括:狀態(tài)監(jiān)控單元,用于通過有效寄存器來記錄每個(gè)緩存單元的狀態(tài),在當(dāng)前的緩存單元能夠存儲(chǔ)接收到的緩存數(shù)據(jù)時(shí),將當(dāng)前的緩存單元標(biāo)記為空閑,否則,標(biāo)記為不空閑。
[0044]本發(fā)明提供了一種數(shù)據(jù)緩存方法及一種緩沖存儲(chǔ)器,在存儲(chǔ)接到的緩存數(shù)據(jù)之前,確定當(dāng)前拍的緩存數(shù)據(jù)是否滿足歸并條件,如果滿足歸并條件則可以將當(dāng)前拍的緩存數(shù)據(jù)與之前拍的緩存數(shù)據(jù)存儲(chǔ)到同一個(gè)緩存單元中,不用將不同拍的數(shù)據(jù)存儲(chǔ)在不同的緩存單元中,節(jié)省了存儲(chǔ)空間。
【附圖說明】
[0045]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1是