存儲地址標示、配置方法和數(shù)據(jù)存取方法及系統(tǒng)的制作方法
【專利摘要】本申請?zhí)峁┮环N存儲地址標示方法,包括:將存儲區(qū)域平均劃分為若干存儲單元,存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息;根據(jù)存儲單元在所述存儲區(qū)域中的位置,獲得與存儲單元對應的數(shù)據(jù)存儲空間的地址,其中,數(shù)據(jù)存儲空間的地址包括行比特和/或列比特,所述行比特用于指示所述存儲單元在所述存儲區(qū)域中的行位置,所述列比特用于指示所述存儲單元在所述存儲區(qū)域中的列位置,本申請?zhí)峁┑囊环N存儲地址標示方法,在待存儲的數(shù)據(jù)的存儲量一定的情況下,存儲地址占用的存儲空間減小,或者說,在存儲空間一定時,由于存儲空間內(nèi)地址數(shù)增加,所以,可存儲的數(shù)據(jù)量增加,本申請還提供一種存儲地址配置方法和數(shù)據(jù)存取方法及系統(tǒng)。
【專利說明】存儲地址標示、配置方法和數(shù)據(jù)存取方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及通信【技術領域】,尤其涉及一種存儲地址標示、配置方法和數(shù)據(jù)存取方法及系統(tǒng)。
【背景技術】
[0002]在流量管理類芯片處理中,數(shù)據(jù)有好多種類,不同類型的數(shù)據(jù)按照到達的先后順序進入先進先出隊列(First In First 0ut,F(xiàn)IF0)進行緩存,然后再進行分類入隊操作,但是不同類型的數(shù)據(jù)可能會有不同的入隊延時要求,而各種數(shù)據(jù)是按先后順序進入同一 FIFO的,因此,不同類型的數(shù)據(jù)在從FIFO中讀出然后再進入各自的隊列時,會有嚴重的頭阻塞的問題,即優(yōu)先級低的數(shù)據(jù)會阻塞優(yōu)先級高的數(shù)據(jù)。
[0003]為解決頭阻塞問題,現(xiàn)有技術中提供一種共享緩存的數(shù)據(jù)處理方法,該數(shù)據(jù)處理方法借助共享緩存地址池、地址鏈表和隊列指針完成。以兩類數(shù)據(jù)為例,當有數(shù)據(jù)寫入時,從共享緩存地址池中取出地址,為兩類數(shù)據(jù)分別建立鏈表;由兩個寄存器分別維護兩個鏈表的頭尾指針,數(shù)據(jù)寫入時,尾指針更新,數(shù)據(jù)讀出時,頭指針更新為當前頭指針指向的下一指針,當前頭指針所指向的地址被放入共享緩存地址池中做回收地址。
[0004]但是,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有的這種共享緩存的數(shù)據(jù)處理方法中,每個地址需要與緩存能力相對應的位數(shù)來表示。例如,假設有IK個地址,那么每個地址需要10個比特位來表示,那么緩存地址池所占用的空間就為IKX IObit,也就是說,現(xiàn)有技術在實現(xiàn)共享緩存的過程中,在待緩存的地址的數(shù)量一定的情況下,共享緩存地址池所占用的存儲區(qū)域的面積大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種存儲地址標示方法,以解決在待存儲的數(shù)據(jù)的存儲量一定的情況下,共享緩存地址占用的存儲空間大的問題。
[0006]本發(fā)明的第一方面提供一種存儲地址標示方法,包括:
[0007]將存儲區(qū)域平均劃分為若干存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息;
[0008]根據(jù)所述存儲單元在所述存儲區(qū)域中的位置,獲得與所述存儲單元對應的數(shù)據(jù)存儲空間的地址,其中,所述數(shù)據(jù)存儲空間的地址包括行比特和/或列比特,所述行比特用于指示所述存儲單元在所述存儲區(qū)域中的行位置,所述列比特用于指示所述存儲單元在所述存儲區(qū)域中的列位置。
[0009]在第一方面的第一種可能的實現(xiàn)方式中,所述存儲區(qū)域被劃分為一行或一列存儲單元。
[0010]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,數(shù)據(jù)存儲空間的地址包括:行比特或列比特。
[0011]在第一方面的第三種可能的實現(xiàn)方式中,所述存儲區(qū)域被劃分為若干行和若干列存儲單元。
[0012]結(jié)合第一方面的第三種可能實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述數(shù)據(jù)存儲空間的地址包括行比特和列比特。
[0013]本發(fā)明的第二方面提供一種存儲地址配置方法,所述存儲地址所在的存儲區(qū)域包括若干存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,所述數(shù)據(jù)存儲空間的地址由所述數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,所述數(shù)據(jù)存儲空間的地址即為儲存地址,所述方法包括:
[0014]分配地址時,
[0015]讀取存儲區(qū)域中的各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0016]依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0017]數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所述選擇的存儲單元中存儲的分配狀態(tài)信息修改為已分配狀態(tài),還包括
[0018]回收地址時,
[0019]在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0020]依據(jù)所述存儲單元的位置在存儲區(qū)域中查找所述存儲單元;
[0021]將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0022]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能實現(xiàn)方式中,還包括:
[0023]記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0024]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第二方面的第三種可能實現(xiàn)方式中,在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0025]結(jié)合第二方面的第二種或第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,在記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0026]結(jié)合第二方面的第二種或第三種或第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,還包括:
[0027]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0028]本發(fā)明的第三方面提供一種數(shù)據(jù)存取方法,所述數(shù)據(jù)的存儲空間對應于包括若干存儲單元的存儲區(qū)域內(nèi)的存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址有該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,所述方法包括:
[0029]存儲數(shù)據(jù)時,[0030]讀取存儲區(qū)域中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0031]依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0032]依據(jù)所述數(shù)據(jù)存儲空間的地址及所需存儲的數(shù)據(jù)建立鏈表;
[0033]將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);
[0034]讀取數(shù)據(jù)時,
[0035]依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù);
[0036]依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0037]依據(jù)所述存儲單元的位置,在存儲區(qū)域中查找所述存儲單元;
[0038]將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0039]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,還包括:
[0040]記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0041]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0042]結(jié)合第三方面的第一種或第二種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,在記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0043]結(jié)合第三方面的第一種或第二種或第三種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式中,還包括:
[0044]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0045]本發(fā)明的第四方面提供一種存儲區(qū)域劃分系統(tǒng),包括:
[0046]劃分模塊,用于將存儲區(qū)域平均劃分為若干存儲單元,所述存儲單元用于存儲所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息;
[0047]其中,所述存儲單元所對應的數(shù)據(jù)存儲空間的地址根據(jù)所述存儲單元在所述存儲區(qū)域中的位置確定。
[0048]本發(fā)明的第五方面提供一種存儲地址配置系統(tǒng),包括:
[0049]第一存儲器,所述第一存儲器由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置,所述數(shù)據(jù)存儲空間的地址即為存儲地址;
[0050]第一讀取模塊,用于在分配地址時,讀取存儲區(qū)中各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0051]第一確定模塊,用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;[0052]第一修改模塊,用于在數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0053]結(jié)合第五方面,在第五方面第一種可能的實現(xiàn)方式中,還包括:
[0054]第一獲取模塊,用于在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0055]第一查找模塊,用于依據(jù)所述存儲單元的位置,在第一存儲器中查找所述存儲單元;
[0056]第二修改模塊,用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0057]結(jié)合第五方面或第五方面的第一種可能實現(xiàn)方式,在第五方面的第二種可能的實現(xiàn)方式中,還包括:
[0058]第一記錄模塊,用于記錄所述第一存儲器當前行存儲區(qū)域的分配狀態(tài);
[0059]第二記錄模塊,用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0060]結(jié)合第五方面的第二種可能的實現(xiàn)方式,在第五方面的第三種可能的實現(xiàn)方式中,還包括:
[0061]第三修改模塊,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第二記錄模塊記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0062]結(jié)合第五方面的第二種或第三種可能的實現(xiàn)方式,在第五方面的第四種可能的實現(xiàn)方式中,還包括:
[0063]第四修改模塊,用于在所述第二記錄模塊記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將第一存儲器內(nèi)當前行的所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0064]結(jié)合第五方面的第二種或第三種或第四種可能的實現(xiàn)方式,在第五方面的第五種可能的實現(xiàn)方式中,還包括:
[0065]第二三記錄模塊,用于預先讀取第一存儲器內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
[0066]本發(fā)明的第六方面提供一種數(shù)據(jù)存取系統(tǒng),包括:
[0067]第二存儲器,由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定;
[0068]第三讀取模塊,用于在存儲數(shù)據(jù)時,讀取第二存儲器中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0069]第三確定模塊,用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0070]數(shù)據(jù)存儲器,用于依據(jù)所述數(shù)據(jù)存儲空間的地址及待存儲的數(shù)據(jù)建立鏈表;
[0071]第五修改模塊,用于在所述第三讀取模塊選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元后,將所選擇的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);
[0072]第四讀取模塊,用于在讀取數(shù)據(jù)時,依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù);
[0073]第二獲取模塊,用于依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0074]第二查找模塊,用于依據(jù)所述存儲單元的位置,在第二存儲器中查找所述存儲單元;
[0075]第六修改模塊,用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0076]結(jié)合第六方面,在第六方面的第一種可能的實現(xiàn)方式中,還包括:
[0077]第三記錄模塊,用于記錄所述第二存儲器當前行存儲區(qū)域的分配狀態(tài);
[0078]第四記錄模塊,用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0079]結(jié)合第六方面的第一種可能的實現(xiàn)方式,在第六方面的第二種可能的實現(xiàn)方式中,還包括:
[0080]第七修改模塊,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第四記錄模塊記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0081]結(jié)合第六方面的第一種或第二種可能的實現(xiàn)方式,在第六方面的三種可能的實現(xiàn)方式中,還包括:
[0082]第八修改模塊,用于在所述第四記錄模塊記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0083]結(jié)合第六方面的第一種或第二種或第三種可能的實現(xiàn)方式,在第六方面的四種可能的實現(xiàn)方式中,還包括:
[0084]第五記錄模塊,用于預先讀取第二存儲器內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
[0085]本發(fā)明的第七方面提供一種存儲地址配置系統(tǒng),包括:
[0086]至少一個處理器,其被配置為:
[0087]讀取存儲區(qū)域中各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0088]依據(jù)所選擇的存儲單元在所述存儲區(qū)域中的位置地址;
[0089]將數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所選擇的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);以及,
[0090]與所述至少一個處理器耦合的存儲器,,所述存儲器內(nèi)至少包括由若干存儲單元組成的存儲區(qū)域,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定。
[0091]結(jié)合第七方面,在第七方面的第一種可能的實現(xiàn)方式中,所述至少一個處理器進一步被配置為:
[0092]在讀取數(shù)據(jù)存儲空間中的數(shù)據(jù)后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0093]依據(jù)所述存儲單元的位置,在所述存儲區(qū)域中查找所述存儲單元;
[0094]將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0095]結(jié)合第七方面或第七方面的第一種可能的實現(xiàn)方式,在第七方面的第二種可能的實現(xiàn)方式中,所述至少一個處理器進一步被配置為:[0096]記錄所述存儲區(qū)域的當前行行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0097]結(jié)合第七方面的第二種可能的實現(xiàn)方式,在第七方面的第三中可能的實現(xiàn)方式中,所述至少一個處理器進一步被配置為:
[0098]在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對記錄的當前行存儲區(qū)域內(nèi)的存儲單元的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0099]結(jié)合第七方面的第二種或第三種可能的實現(xiàn)方式,在第七方面的第四種可能的實現(xiàn)方式中,所述至少一個處理器進一步被配置為:
[0100]在記錄的與當前行存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0101]結(jié)合第七方面的第二種或第三種或第四種可能的實現(xiàn)方式,在第七方面的第五種可能的實現(xiàn)方式中,所述至少一個處理器進一步被配置為:
[0102]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0103]本發(fā)明實施例提供的一種存儲地址標示方法,建立存儲數(shù)據(jù)的數(shù)據(jù)存儲空間與存儲區(qū)域中的存儲單元之間的映射關系,所述存儲單元內(nèi)存儲的是存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,存儲單元在存儲區(qū)域中的位置則映射到對應的數(shù)據(jù)存儲空間的地址。所述分配狀態(tài)信息可以只用一個比特位來表示,即只占用一個Ibit的存儲單元就可以指示某一個存儲地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài)信息。在使用中,可以直接對存儲單元的位置信息進行運算得到對應的數(shù)據(jù)存儲空間的地址,從而確認該地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài),而不需要通過額外存儲數(shù)據(jù)存儲空間的地址來維持數(shù)據(jù)存儲空間的占用狀態(tài)信息。因此,可以極大地降低分配狀態(tài)信息對于存儲系統(tǒng)的占用。同時,由于每一個存儲單元對應一個存儲地址,而每一個存儲單元的存儲區(qū)域的大小可以為lbit,也就是說,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小可以小于所述存儲地址的位寬,而現(xiàn)有技術中,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小必須等于所述存儲地址的位寬,因此,本申請實施例提供的存儲地址標示方法也可以極大地降低存儲地址對于存儲系統(tǒng)的占用。
[0104]本方案中,所述存儲單元存儲的分配狀態(tài)信息為客觀存在的信息,通過坐標系確定存儲單元的坐標,進而通過坐標值確定存儲單元的地址,由于兩維信息表示的信息量比一維信息表示的信息量大為自然規(guī)律,因此本方案屬于受自然規(guī)律約束的技術手段。
【專利附圖】
【附圖說明】
[0105]圖1是本申請實施例提供的一種存儲地址標示方法的流程圖;
[0106]圖2是本申請實施例提供的存儲區(qū)域被劃分成一行或者一列時的示意圖;
[0107]圖3是本申請實施例提供的存儲區(qū)域被劃分成若干行和若干列時的示意圖;
[0108]圖4為本申請實施例提供的存儲地址配置方法的流程圖;
[0109]圖5為本申請實施例提供的另一種存儲地址配置方法的流程圖;[0110]圖6為本申請實施例提供的一種數(shù)據(jù)存儲方法的流程圖;
[0111]圖7為本申請實施例提供的一種數(shù)據(jù)讀取方法的流程圖;
[0112]圖8為本申請實施例提供的一種存儲區(qū)域劃分系統(tǒng)的結(jié)構(gòu)示意圖;
[0113]圖9為本申請實施例提供的一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0114]圖10為本申請實施例提供的另一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0115]圖11為本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0116]圖12為本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0117]圖13為本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0118]圖14為本申請實施例提供的一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖;
[0119]圖15為本申請實施例提供的又一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖;
[0120]圖16為本申請實施例提供的又一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖;
[0121]圖17為本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖;
[0122]圖18為本申請實施例提供的數(shù)據(jù)存取方法的具體示例的示意圖。
【具體實施方式】
[0123]為了使本領域技術人員能進一步了解本發(fā)明的特征及技術內(nèi)容,請參閱以下有關本發(fā)明的詳細說明與附圖,附圖僅提供參考與說明,并非用來限制本發(fā)明。
[0124]請參看圖1,圖1為本申請實施例提供的一種存儲地址標示方法的流程圖,包括:
[0125]步驟SlOl:將存儲區(qū)域平均劃分為若干存儲單元所述存儲單元用于存儲所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息;
[0126]所述分配狀態(tài)信息用于指示所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài),SP該存儲單元對應的數(shù)據(jù)存儲空間是否已經(jīng)分配給數(shù)據(jù),或者該存儲單元對應的數(shù)據(jù)存儲空間是否已經(jīng)被數(shù)據(jù)占用。
[0127]也就是說,存儲區(qū)域由若干存儲單元組成,各個存儲單元內(nèi)存儲的不是地址,而是該存儲單元所對應的數(shù)據(jù)存儲空間是否已經(jīng)被分配的分配狀態(tài)信息。由于是否被分配這一狀態(tài)信息可以只用一個比特位來表示,例如,可以用“ I ”表示地址還未被分配,而用“O”表示地址已經(jīng)被分配,因此,每一個存儲單元可以至少占用Ibit存儲區(qū)域;其中,分配狀態(tài)信息所使用的比特數(shù)與每一個存儲單元占用的存儲區(qū)域的大小相同。
[0128]步驟S102:根據(jù)所述存儲單元在所述存儲區(qū)域中的位置,獲得與所述存儲單元對應的數(shù)據(jù)存儲空間的地址,其中,所述數(shù)據(jù)存儲空間的地址包括行比特和/或列比特,所述行比特用于指示所述存儲單元在所述存儲區(qū)域中的行位置,所述列比特用于指示所述存儲單元在所述存儲區(qū)域中的列位置。
[0129]所述數(shù)據(jù)存儲空間的地址即為存儲地址。
[0130]在本發(fā)明實施例中,根據(jù)存儲單元在存儲區(qū)域中的位置將存儲單元與用于存儲數(shù)據(jù)的數(shù)據(jù)存儲空間建立映射關系,數(shù)據(jù)存儲空間的地址由相應的存儲單元在存儲區(qū)域中的位置標示,而在存儲單元中存儲的分配狀態(tài)信息就是用于指示存儲單元所對應的用于存儲數(shù)據(jù)的數(shù)據(jù)存儲空間的分配或者占用狀態(tài)。
[0131]在本發(fā)明實施例中,所述行比特和列比特均為用于指示所述存儲單元的行位置和列位置的二進制數(shù)表示。[0132]在本發(fā)明實施例中,所述存儲區(qū)域可能僅被劃分成一行或者一列的存儲單元,具體參照圖2,在這種情況下,所述存儲單元對應的存儲地址僅包括行比特或者列比特。
[0133]所述存儲區(qū)域也可能被劃分成若干行及若干列存儲單元,當所述存儲區(qū)域被劃分為若干行及若干列存儲單元時,具體可參看圖3,此時,一個存儲單元對應的存儲地址包括行比特和列比特。
[0134]需要說明的是,圖2和圖3中的數(shù)據(jù)(0、1、2、3、4、5……)只是為了說明各個存儲單元的行位置和/或列位置,具體各個存儲單元對應的存儲地址的行比特則是該存儲單元的行位置對應的二進制數(shù),而各個存儲單元對應的存儲地址的列比特則是該存儲單元的列位置對應的二進制數(shù),具體的,行比特對應的二進制數(shù)的位數(shù)依據(jù)行位置的最大值(即一行存儲單元的個數(shù))確定,列比特對應的二進制數(shù)的位數(shù)依據(jù)列位置的最大值(即一列存儲單元的個數(shù))確定。
[0135]具體的,當所述存儲區(qū)域被劃分成一行或者一列存儲單元時,一個存儲單元對應的存儲地址的行比特或者列比特的位數(shù)依據(jù)所述存儲區(qū)域的劃分得到存儲單元的個數(shù)確定。例如,假設存儲單元的個數(shù)為M,那么,所述行比特或者列比特的位數(shù)w為滿足公式(4)的最小整數(shù): [0136]M ^ 2W (4);
[0137]例如,假設存儲區(qū)域被劃分成一行或者一列100個存儲單元,即M=100,那么,所述一個存儲單元對應的存儲地址的行比特或列比特的位數(shù)w取值為:w=7 ;假設存儲區(qū)域被劃分成一行或者一列60個存儲單元,即M=60,那么,一個存儲單元對應的存儲地址的行比特或列比特的位數(shù)w取值為:w=6 ;假設存儲區(qū)域被劃分成一行或者一列64個存儲單元,SPM=64,那么,一個存儲單元對應的存儲地址的行比特或列比特的位數(shù)w取值為:w=6。具體的,假如存儲單元對應的存儲地址的行比特或列比特的位數(shù)w=6,則第I個存儲單元對應的存儲地址則僅為其行比特000000,第2個存儲單元的對應的存儲地址為000001,第三個存儲單元對應的存儲地址為000010,以此類推。
[0138]當所述存儲區(qū)域被劃分為若干行及若干列存儲單元時,一個存儲單元對應的存儲地址的行比特的位數(shù)依據(jù)一行存儲單元的個數(shù)確定,而這個存儲單元對應的存儲地址的列比特的位數(shù)依據(jù)一列存儲單元的個數(shù)確定,該存儲單元對應的存儲地址是由所述行比特和列比特組合而成;該存儲單元對應的存儲地址的位數(shù)為所述行比特的位數(shù)和列比特的位數(shù)之和。
[0139]例如,假設存儲區(qū)域被劃分成I行J列存儲單元,那么,一個存儲單元對應的存儲地址的行比特的位數(shù)i為滿足公式(5)的最小整數(shù)值;
[0140]I ( t(5)
[0141]所述列比特的位數(shù)j為滿足公式(6)的最小整數(shù)值;
[0142]J ( 2J(6)
[0143]那么,本示例中,一個存儲單元對應的存儲地址的位數(shù)為i+j ;
[0144]例如,假設存儲區(qū)域被劃分為32行32列存儲單元,那么第O行第O列處的存儲單元對應的存儲地址的行比特和列比特的位數(shù)都為5,那么,第O行第O列處的存儲單元對應的存儲地址的行比特為00000,第O行第O列處的存儲單元對應的存儲地址的列比特為00000,進而,第O行第O列處的存儲單元對應的存儲地址為0000000000 ;同理,第2行第3列處的存儲單元對應的存儲地址的行比特為00010,第2行第3列處的存儲單元對應的存儲地址的列比特為00011,那么,第2行第3列處的存儲單元對應的存儲地址為0001000011,顯然這是以行比特在前,列比特在后來確定存儲單元對應的存儲地址,當然,也可以以列比特在前而行比特在后確定存儲單元對應的存儲地址,這樣的話,第2行第3列處的存儲單元對應的存儲地址就為0001100010,當然在實際應用時,應該以統(tǒng)一的方式確定各個存儲單元對應的存儲地址,即要么統(tǒng)一以列比特在前,行比特在后來確定各個存儲單元對應的存儲地址,要么統(tǒng)一以行比特在前而列比特在后確定各個存儲單元對應的存儲地址。
[0145]當然,基于上述思想,在進行產(chǎn)品設計時,可以依據(jù)所需要存儲的地址的個數(shù)選擇存儲區(qū)域的大小。
[0146]優(yōu)選的,假設需要A個存儲地址(以下簡稱地址),a為滿足公式(3)的最小整數(shù)值,
[0147]A ≤ 2a(3)
[0148]那么,現(xiàn)有技術中,這A個地址所需要的存儲區(qū)域的大小為AXabit,而本申請實施例中,可以選用的存儲區(qū)域的大小可以為AXcbit,其中,c < a,c為小于a的任一正整數(shù),c為在將所選用的存儲區(qū)域進行劃分后,每一個存儲單元所占用的存儲區(qū)域的大小,而每一個存儲單元對應一個地址。也就是說,在地址數(shù)一定的情況下,每一個存儲單元占用的存儲區(qū)域越小(即c越小),就可以選用更小的存儲區(qū)域來提供同樣數(shù)目的地址。
[0149]以1024個地址為例,現(xiàn)有技術中,由于每個地址需要用10位二進制數(shù)來表示,因此,每個地址需要占用IObit存儲區(qū)域,因此,1024個地址需要占用1024X10bit的存儲區(qū)域,也就是說,現(xiàn)有技術中,存儲1024個地址所需的存儲區(qū)域的面積大小為1024X IObit ;而本實施例中,由于所述存儲單元所占用的比特數(shù)可以小于10,也就是說,每一個存儲單元可最多占用9bit的存儲區(qū)域,最少只占用Ibit的存儲區(qū)域,而每一個存儲單元對應一個地址,所以本實施例提供的存儲地址標示方法,其最少可以用1024Xlbit的存儲區(qū)域來提供1024個地址(即可以用1024bit的存儲區(qū)域來存儲1024個地址),也可用1024X9bit的存儲區(qū)域(即每個存儲單元占用9bit存儲區(qū)域時)來提供1024個地址,因此,最少可以節(jié)省1024X10-1024X9 = 1024bit的存儲區(qū)域,最多可以節(jié)省1024X10-1024X1 =1024X9bit的存儲區(qū)域。
[0150]或者說,在存儲區(qū)域的大小一定的情況下,每一個存儲單元占用的存儲區(qū)域越小(即c越小),該存儲區(qū)域可提供的同位寬的地址數(shù)越多;
[0151]例如,假設存儲區(qū)域的大小為1024bit,現(xiàn)在需要位寬為10位的地址(即一個地址用10位二進制數(shù)表示),那么,依據(jù)現(xiàn)有技術,1024bit的存儲區(qū)域僅最多可以提供102個位寬為10位的地址;而由上述分析可知,本申請實施例中,1024bit的存儲區(qū)域可提供1024個位寬為10位的地址。
[0152]可以看到,在本發(fā)明實施例中,存儲單元的位置信息其實是相當于存儲單元在存儲區(qū)域中的坐標值,根據(jù)該坐標值通過二進制算法直接換算得到對應的數(shù)據(jù)存儲空間的地址(即存儲地址),在其他可選擇的實施方式中,該位置信息也可以為排序,通過一定的算法也能得到特定的地址信息,從而同樣建立起存儲單元和數(shù)據(jù)存儲空間之間的對應關系。
[0153]本申請實施例提供的一種存儲地址標示方法,建立存儲數(shù)據(jù)的數(shù)據(jù)存儲空間與存儲區(qū)域中的存儲單元之間的映射關系,所述存儲單元內(nèi)存儲的是存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,存儲單元在存儲區(qū)域中的位置則映射到對應的數(shù)據(jù)存儲空間的地址。所述分配狀態(tài)信息可以只用一個比特位來表示,即只占用一個Ibit的存儲單元就可以指示某一個存儲地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài)信息。在使用中,可以直接對存儲單元的位置信息進行運算得到對應的數(shù)據(jù)存儲空間的地址,從而確認該地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài),而不需要通過額外存儲數(shù)據(jù)存儲空間的地址來維持數(shù)據(jù)存儲空間的占用狀態(tài)信息。因此,可以極大地降低分配狀態(tài)信息對于存儲系統(tǒng)的占用。同時,由于每一個存儲單元對應一個存儲地址,而每一個存儲單元的存儲區(qū)域的大小可以為lbit,也就是說,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小可以小于所述存儲地址的位寬,而現(xiàn)有技術中,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小必須等于所述存儲地址的位寬,因此,本申請實施例提供的存儲地址標示方法也可以極大地降低存儲地址對于存儲系統(tǒng)的占用。
[0154]本方案中,所述存儲單元存儲的分配狀態(tài)信息為客觀存在的信息,通過存儲單元的位置確定存儲單元的行比特和/或列比特,進而通過行比特和/或列比特確定存儲單元的地址,由于兩維信息表不的信息量比一維信息表不的信息量大為自然規(guī)律,因此,本方案通過分配狀態(tài)信息和位置這兩維信息來標示存儲地址屬于受自然規(guī)律約束的技術手段。
[0155]請參看圖4,圖4為本申請實施例提供的一種存儲地址配置方法的流程圖。
[0156]本實施例中,存儲地址所在的存儲區(qū)域包括若干存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息(即,該存儲單元對應的數(shù)據(jù)存儲空間是否已經(jīng)被分配),數(shù)據(jù)存儲空間的地址(即存儲地址)由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,本申請實施例提供的存儲地址配置方法包括:
[0157]步驟S401:讀取存儲區(qū)域中的各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0158]所述分配狀態(tài)信息用于指示存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)。
[0159]在有數(shù)據(jù)存儲,需要分配地址時,從存儲狀態(tài)信息指示為未分配狀態(tài)的存儲單元中選擇存儲單元,對于所選擇的存儲單元,讀取該存儲單元的位置;所述存儲單元的位置可以是所述存儲單元的行位置(存儲區(qū)域只有一行存儲單元時)或列位置(存儲區(qū)域只有一列存儲單元時)或行位置或列位置的組合(存儲區(qū)域由若干行和若干列存儲單元組成時);
[0160]步驟S402:依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0161]當所述存儲區(qū)域內(nèi)只有一行或一列存儲單元時,存儲單元對應的數(shù)據(jù)儲存空間的地址(即存儲地址)為所述存儲單元的位置的二進制數(shù)表示,所述二進制數(shù)的位數(shù)為滿足公式(4)的w的最小值;當所述存儲區(qū)域內(nèi)有若干行和若干列存儲單元時,存儲單元的地址由所述存儲單元的行位置和列位置的二進制數(shù)表示組合而成,所述存儲單元的地址的位數(shù)為所述行位置的二進制數(shù)表示的位數(shù)和列位置的二進制數(shù)表示的位數(shù)之和,其中,行位置對應的二進制數(shù)的位數(shù)由存儲單元所在行的存儲單元的個數(shù)確定,列位置對應的二進制數(shù)的位數(shù)由存儲單元所在列的存儲單元的個數(shù)確定。
[0162]步驟S403:數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,修改所述選擇的存儲單元中存儲的分配狀態(tài)信息為已分配狀態(tài);
[0163]本申請實施例提供的一種存儲地址配置方法,預先建立了存儲數(shù)據(jù)的數(shù)據(jù)存儲空間與存儲區(qū)域中的存儲單元之間的映射關系,所述存儲單元內(nèi)存儲的是存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,存儲單元在存儲區(qū)域中的位置則映射到對應的數(shù)據(jù)存儲空間的地址。所述分配狀態(tài)信息可以只用一個比特位來表示,即只占用一個Ibit的存儲單元就可以指示某一個存儲地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài)信息。在使用中,可以直接對存儲單元的位置信息進行運算得到對應的數(shù)據(jù)存儲空間的地址,從而確認該地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài),而不需要通過額外存儲數(shù)據(jù)存儲空間的地址來維持數(shù)據(jù)存儲空間的占用狀態(tài)信息。因此,可以極大地降低分配狀態(tài)信息對于存儲系統(tǒng)的占用。同時,由于每一個存儲單元對應一個存儲地址,而每一個存儲單元的存儲區(qū)域的大小可以為lbit,也就是說,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小可以小于所述存儲地址的位寬,而現(xiàn)有技術中,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小必須等于所述存儲地址的位寬,因此,本申請實施例提供的存儲地址配置方法也可以極大地降低存儲地址對于存儲系統(tǒng)的占用。
[0164]請參看圖5,圖5為本申請實施例提供的另一種存儲地址配置方法的流程圖;
[0165]進一步的,在數(shù)據(jù)被讀走,需回收存儲地址時,本申請實施例提供的存儲地址配置方法還包括:
[0166]步驟S501在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,根據(jù)所述數(shù)據(jù)存儲空間的地址(即存儲地址),獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0167]具體的,根據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置的方法與依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址方法相反,如果存儲區(qū)域內(nèi)只有一行或者一列存儲單元,則直接將所述數(shù)據(jù)存儲空間的地址轉(zhuǎn)換為用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置,即,將以二進制數(shù)表示的數(shù)據(jù)存儲空間的地址轉(zhuǎn)換為與所述數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的行位置(存儲區(qū)域內(nèi)只有一行存儲單元時)或列位置(存儲區(qū)域內(nèi)只有一列存儲單元時);
[0168]如果存儲區(qū)域內(nèi)有若干行和若干列存儲單元,則先將所述數(shù)據(jù)存儲空間的地址拆分為兩部分,具體拆分方法與依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址方法相反,即,依據(jù)確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址時,兩個維度(行比特和列比特兩個維度)的組合順序以及每一維度的位數(shù)進行拆分,然后分別將每一部分轉(zhuǎn)換為其對應的行位置或列位置(其中,行比特對應行位置,列比特對應列位置)。
[0169]步驟S502:依據(jù)所述存儲單元的位置,在存儲區(qū)域中查找所述存儲單元;
[0170]步驟S503:將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0171]將數(shù)據(jù)讀走后,將存儲地址回收,并修改回收的存儲地址對應的存儲單元內(nèi)的分配狀態(tài)信息,即將存儲地址的分配狀態(tài)從已分配狀態(tài)修改為未分配狀態(tài),以便再次存儲數(shù)據(jù)時可以使用該存儲單元對應的存儲地址。
[0172]為了進一步優(yōu)化上述實施例,本申請實施例提供的存儲地址配置方法,還包括:
[0173]記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。也就是說,不僅在存儲單元內(nèi)存儲存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài),還在存儲區(qū)域之外記錄當前行存儲區(qū)域的存儲狀態(tài),以及與當前行存儲區(qū)域內(nèi)各個列的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)。[0174]具體在進行地址分配時,可以按行輪詢及列輪詢的方式進行分配,即分配完一行再分配下一行。所述存儲區(qū)域內(nèi)當前行存儲區(qū)域的存儲狀態(tài)依據(jù)記錄的與當前行存儲區(qū)域內(nèi)各個存儲單元對應數(shù)據(jù)存儲空間的分配狀態(tài)確定,在記錄的與當前行存儲區(qū)域內(nèi)每一個存儲單元對應的數(shù)據(jù)存儲空間的存儲狀態(tài)都為已分配狀態(tài)時,所述當前行存儲區(qū)域的存儲狀態(tài)為已分配狀態(tài),否則,只要記錄的與當前行的存儲區(qū)域內(nèi)的一個存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)為未分配狀態(tài),則記錄當前行存儲區(qū)域的存儲狀態(tài)為未分配狀態(tài)。
[0175]優(yōu)選的,在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,只對記錄的與當前行存儲區(qū)域內(nèi)的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。也就是說,在當前行存儲區(qū)域內(nèi)有地址回收或有地址分配時,不對存儲區(qū)域內(nèi)的存儲單元進行寫操作,而是只記錄相應存儲單元對應的數(shù)據(jù)存儲空間的當前分配狀態(tài)即可,進一步說,在有數(shù)據(jù)存儲時,先查看當前行存儲區(qū)域的記錄,以記錄的當前行存儲區(qū)域的各個存儲單元的分配狀態(tài)信息來判斷存儲單元對應的數(shù)據(jù)存儲空間是否可用(即是否為未分配狀態(tài))。
[0176]在記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài),即在記錄的與當前行的存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,對存儲區(qū)域進行寫操作。
[0177]當既有地址回收,又有地址分配,且回收的地址與分配的地址不在同一行時,直接對回收的地址對應的存儲單元進行寫操作,即直接將所述回收的地址對應的存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0178]本申請實施例提供的一種存儲地址配置方法,記錄所述存儲區(qū)域的各行存儲區(qū)域的分配狀態(tài),以及每一行存儲單元對應的各個列的存儲單元的分配狀態(tài),在對存儲區(qū)域進行讀寫時,可以不用每一次分配地址或回收地址時都對存儲區(qū)域進行讀或?qū)懖僮鳎窍葘τ涗浀呐c當前行存儲區(qū)域的各個存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,在記錄的與當前行存儲區(qū)域的各個列的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息都為已分配狀態(tài)時,才將當前行的存儲區(qū)域內(nèi)各個存儲單元內(nèi)存儲的分配狀態(tài)修改為已分配狀態(tài),避免了同時對存儲區(qū)域進行讀寫時的沖突,提高了系統(tǒng)的穩(wěn)定性和運行速度。
[0179]上述實施例優(yōu)選的,還可以包括:
[0180]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0181]為了進一步提高存儲區(qū)域的讀寫速度,本實施例中,預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息?;诖耍梢栽诋斍靶写鎯^(qū)域內(nèi)只有一個存儲單元為未分配狀態(tài),其它存儲單元都為已分配狀態(tài),而當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期將記錄的當前行存儲區(qū)域的各個存儲單元的狀態(tài)更新為記錄的當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元的存儲狀態(tài),更新完成后,讀取當前行存儲區(qū)域的下一行存儲區(qū)域的各個存儲單元的存儲狀態(tài)。
[0182]本申請實施例提供的上述存儲地址配置方法,可以避免在當前行存儲區(qū)域的各個存儲單元對應的數(shù)據(jù)存儲空間都為已分配狀態(tài),而當前有地址分配而沒有地址回收時,還要耗費時間讀取存儲區(qū)域內(nèi)當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的狀態(tài)信息的問題,節(jié)省了讀取存儲區(qū)域的時間,提高的存儲區(qū)域的讀寫速度。
[0183]本申請實施例還提供一種數(shù)據(jù)存取方法,請參看圖6、圖7,圖6為本申請實施例提供的一種數(shù)據(jù)存儲方法的流程圖;圖7為本申請實施例提供的一種數(shù)據(jù)讀取方法的流程圖;本實施例中,所述數(shù)據(jù)的存儲空間對應于包括若干存儲單元的存儲區(qū)域內(nèi)的存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,本申請實施例提供的數(shù)據(jù)存取方法包括:
[0184]存儲數(shù)據(jù)時:
[0185]步驟S601:讀取存儲區(qū)域中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0186]存儲數(shù)據(jù)時,從存儲的分配狀態(tài)信息為未分配狀態(tài)的存儲單元中選擇存儲單元,對于所選擇的存儲單元,讀取該存儲單元的位置;所述存儲單元的位置可以是所述存儲單元的行位置(存儲區(qū)域只有一行存儲單元時)或列位置(存儲區(qū)域只有一列存儲單元時)或行位置或列位置的組合(存儲區(qū)域由若干行和若干列存儲單元組成時);
[0187]步驟S602:依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0188]當所述存儲區(qū)域內(nèi)只有一行或一列存儲單元時,存儲單元對應的數(shù)據(jù)存儲空間的地址(即存儲地址)為所述存儲單元的位置的二進制數(shù)表示,所述二進制數(shù)的位數(shù)為滿足公式(4)的w的最小值;當所述存儲區(qū)域內(nèi)有若干行和若干列存儲單元時,存儲單元的地址由所述存儲單元的行位置和列位置的二進制數(shù)表示組合而成,所述存儲單元的地址的位數(shù)為所述行位置的二進制數(shù)表示的位數(shù)和類位置的二進制數(shù)表示的位數(shù)之和,其中,行位置對應的二進制數(shù)的位數(shù)由存儲單元所在行的存儲單元的個數(shù)確定,列位置對應的二進制數(shù)的位數(shù)由存儲單元所在列的存儲單元的個數(shù)確定。
[0189]步驟S603:依據(jù)所述數(shù)據(jù)存儲空間的地址及所需存儲的數(shù)據(jù)建立鏈表;
[0190]本實施例中,所述鏈表由一連串節(jié)點組成,每一個節(jié)點包含任意的實例數(shù)據(jù)和一個或兩個用來指明上一個或下一個節(jié)點的位置的鏈接,不同種類的數(shù)據(jù)可以建立不同的鏈表,即同一種類的數(shù)據(jù)建立一個鏈表,具體如何建立鏈表現(xiàn)有技術已經(jīng)很成熟,為本領域的公知常識,這里不再贅述。
[0191]步驟S604:將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);
[0192]建立鏈表后,修改所述存儲單元存儲的分配狀態(tài)信息,即將未分配狀態(tài)修改為已分配狀態(tài)。
[0193]讀取數(shù)據(jù)時,
[0194]步驟S701:依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù);
[0195]具體如何讀取為本領域的公知常識,這里不再贅述;
[0196]步驟S702:依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0197]具體的,根據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置的方法與依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址方法相反,如果存儲區(qū)域內(nèi)只有一行或者一列存儲單元,則直接將所述數(shù)據(jù)存儲空間的地址轉(zhuǎn)換為用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置,即,將以二進制數(shù)表示的數(shù)據(jù)存儲空間的地址轉(zhuǎn)換為與所述數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的行位置(存儲區(qū)域內(nèi)只有一行存儲單元時)或列位置(存儲區(qū)域內(nèi)只有一列存儲單元時);
[0198]如果存儲區(qū)域內(nèi)有若干行和若干列存儲單元,則先將所述數(shù)據(jù)存儲空間的地址拆分為兩部分,具體拆分方法與依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址方法相反,即,依據(jù)確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址時,兩個維度(行比特和列比特兩個維度)的組合順序以及每一維度的位數(shù)進行拆分,然后分別將每一部分轉(zhuǎn)換為其對應的行位置或列位置(其中,行比特對應行位置,列比特對應列位置)。
[0199]步驟S703:依據(jù)所述存儲單元的位置,在存儲區(qū)域中查找所述存儲單元;
[0200]步驟S704:將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0201]本申請實施例提供的一種數(shù)據(jù)存取方法,預先建立了存儲數(shù)據(jù)的數(shù)據(jù)存儲空間與存儲區(qū)域中的存儲單元之間的映射關系,所述存儲單元內(nèi)存儲的是存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,存儲單元在存儲區(qū)域中的位置則映射到對應的數(shù)據(jù)存儲空間的地址。所述分配狀態(tài)信息可以只用一個比特位來表示,即只占用一個Ibit的存儲單元就可以指示某一個存儲地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài)信息。在使用中,可以直接對存儲單元的位置信息進行運算得到對應的數(shù)據(jù)存儲空間的地址,從而確認該地址的數(shù)據(jù)存儲空間的占用(或分配)狀態(tài),而不需要通過額外存儲數(shù)據(jù)存儲空間的地址來維持數(shù)據(jù)存儲空間的占用狀態(tài)信息。因此,可以極大地降低分配狀態(tài)信息對于存儲系統(tǒng)的占用。同時,由于每一個存儲單元對應一個存儲地址,而每一個存儲單元的存儲區(qū)域的大小可以為lbit,也就是說,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小可以小于所述存儲地址的位寬,而現(xiàn)有技術中,一個位寬一定的存儲地址所占用的存儲區(qū)域的大小必須等于所述存儲地址的位寬,因此,本申請實施例提供的數(shù)據(jù)存取方法也可以極大地降低存儲地址對于存儲系統(tǒng)的占用。
[0202]為了優(yōu)化上述實施例,本申請實施例提供的一種數(shù)據(jù)存取方法還包括:
[0203]記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。也就是說,不僅在存儲單元內(nèi)存儲存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,還在存儲區(qū)域之外記錄當前行存儲區(qū)域的存儲狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)。
[0204]具體在有數(shù)據(jù)存儲需要進行存儲地址分配時,可以按行輪詢及列輪詢的方式進行分配,即分配完一行再分配下一行。所述存儲區(qū)域內(nèi)當前行存儲區(qū)域的存儲狀態(tài)依據(jù)記錄的與當前行存儲區(qū)域內(nèi)各個存儲單元對應數(shù)據(jù)存儲空間的分配狀態(tài)確定,在記錄的與當前行存儲區(qū)域內(nèi)每一個存儲單元對應的數(shù)據(jù)存儲空間的存儲狀態(tài)都為已分配狀態(tài)時,所述當前行存儲區(qū)域的存儲狀態(tài)為已分配狀態(tài),否則,只要記錄的與當前行的存儲區(qū)域內(nèi)的一個存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)為未分配狀態(tài),則記錄當前行存儲區(qū)域的存儲狀態(tài)為未分配狀態(tài)。
[0205]優(yōu)選的,在既有數(shù)據(jù)存儲又有數(shù)據(jù)讀取,且存儲數(shù)據(jù)時為該數(shù)據(jù)分配的地址所對應的存儲單元與讀取數(shù)據(jù)后回收的地址所對應的存儲單元都屬于當前行存儲區(qū)域時,也就是在當前行存儲區(qū)域內(nèi)既有地址回收又有地址分配時,只對記錄的與當前行存儲區(qū)域內(nèi)的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。也就是說,在當前行存儲區(qū)域內(nèi)既有地址回收又有地址分配時,不對存儲區(qū)域內(nèi)的存儲單元進行寫操作,而是只記錄相應存儲單元對應的數(shù)據(jù)存儲空間的當前分配狀態(tài)即可,進一步說,在有數(shù)據(jù)存儲時,先查看當前行存儲區(qū)域的記錄,以記錄的當前行存儲區(qū)域的各個存儲單元的分配狀態(tài)信息來判斷存儲單元對應的數(shù)據(jù)存儲空間是否可用(即是否為未分配狀態(tài))。
[0206]在記錄的與當前行存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài),即在記錄的與當前行的存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,對存儲區(qū)域進行寫操作。
[0207]在既有數(shù)據(jù)存儲又有數(shù)據(jù)讀取,且存儲數(shù)據(jù)時為該數(shù)據(jù)分配的地址所對應的存儲單元與讀取數(shù)據(jù)后回收的地址所對應的存儲單元不屬于同一行存儲區(qū)域時,也就是當既有地址回收,又有地址分配,且回收的地址對應的存儲單元與分配的地址對應的存儲單元不在同一行存儲區(qū)域時,直接對回收的地址對應的存儲單元進行寫操作,即直接將所述回收的地址對應的存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0208]本申請實施例提供的一種數(shù)據(jù)存取方法,記錄所述存儲區(qū)域的各行存儲區(qū)域的分配狀態(tài),以及每一行存儲單元對應的各個列的存儲單元的分配狀態(tài),在對存儲區(qū)域進行讀寫時,可以不用每一次存取數(shù)據(jù)或讀取數(shù)據(jù)需要讀取地址或回收地址時都對存儲區(qū)域進行讀或?qū)懖僮?,而是先對記錄的與當前行存儲區(qū)域的各個存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,在記錄的與當前行存儲區(qū)域的各個列的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息都為已分配狀態(tài)時,才將當前行的存儲區(qū)域內(nèi)各個存儲單元內(nèi)存儲的分配狀態(tài)修改為已分配狀態(tài),避免了同時對存儲區(qū)域進行讀寫時的沖突,提高了系統(tǒng)的穩(wěn)定性和運行速度。
[0209]上述實施例優(yōu)選的,還可以包括:
[0210]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0211]為了進一步提高數(shù)據(jù)存取時存儲區(qū)域的讀寫速度,本實施例中,預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。基于此,可以在當前行存儲區(qū)域內(nèi)只有一個存儲單元為未分配狀態(tài),其它存儲單元都為已分配狀態(tài),而當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期將記錄的當前行存儲區(qū)域的各個存儲單元的狀態(tài)更新為記錄的當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元的存儲狀態(tài),更新完成后,讀取當前行存儲區(qū)域的下一行存儲區(qū)域的各個存儲單元的存儲狀態(tài)。
[0212]本申請實施例提供的上述存儲地址配置方法,可以避免在當前行存儲區(qū)域的各個存儲單元對應的數(shù)據(jù)存儲空間都為已分配狀態(tài),而當前有數(shù)據(jù)存儲而沒有數(shù)據(jù)讀取時(當前有地址分配而沒有地址回收)時,還要耗費時間讀取存儲區(qū)域內(nèi)當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的狀態(tài)信息的問題,節(jié)省了讀取存儲區(qū)域的時間,提高的存儲區(qū)域的讀寫速度。
[0213]與方法實施例相對應,請參看圖8,圖8為本申請實施例提供的一種存儲區(qū)域劃分系統(tǒng)的結(jié)構(gòu)示意圖,包括:
[0214]劃分模塊801,用于將存儲區(qū)域平均劃分為若干存儲單元,所述存儲單元用于存儲所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息;
[0215]所述分配狀態(tài)信息用于指示所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài),SP該存儲單元對應的數(shù)據(jù)存儲空間是否已經(jīng)分配給數(shù)據(jù),或者該存儲單元對應的數(shù)據(jù)存儲空間是否已經(jīng)被數(shù)據(jù)占用。
[0216]也就是說,存儲區(qū)域由若干存儲單元組成,各個存儲單元內(nèi)存儲的不是地址,而是該存儲單元所對應的數(shù)據(jù)存儲空間是否已經(jīng)被分配的分配狀態(tài)信息。由于是否被分配這一狀態(tài)信息可以只用一個比特位來表示,例如,可以用“I”表示地址還未被分配,而用“O”表示地址已經(jīng)被分配,因此,每一個存儲單元可以至少占用Ibit存儲區(qū)域;其中,分配狀態(tài)信息所使用的比特數(shù)與每一個存儲單元占用的存儲區(qū)域的大小相同。
[0217]其中,與所述存儲單元對應的數(shù)據(jù)存儲空間的地址根據(jù)所述存儲單元在所述存儲區(qū)域中的位置確定,所述數(shù)據(jù)存儲空間的地址即為存儲地址,其中,所述存儲單元對應的存儲地址包括行比特和/或列比特,所述行比特用于指示所述存儲單元在所述存儲區(qū)域中的行位置,所述列比特用于指示所述存儲單元在所述存儲區(qū)域中的列位置;
[0218]在本發(fā)明實施例中,根據(jù)存儲單元在存儲區(qū)域中的位置將存儲單元與用于存儲數(shù)據(jù)的數(shù)據(jù)存儲空間建立映射關系,數(shù)據(jù)存儲空間的地址由相應的存儲單元在存儲區(qū)域中的位置標示,而在存儲單元中存儲的分配狀態(tài)信息就是用于指示存儲單元所對應的用于存儲數(shù)據(jù)的數(shù)據(jù)存儲空間的分配或者占用狀態(tài)。
[0219]在本發(fā)明實施例中,所述行比特和列比特均為用于指示所述存儲單元的行位置和列位置的二進制數(shù)表示。
[0220]請參看圖9,圖9為本申請實施例提供的一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖,包括:
[0221 ] 第一存儲器901,第一讀取模塊902,第一確定模塊903和第一修改模塊904,其中,
[0222]第一存儲器901由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址(即存儲地址)由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定;
[0223]第一讀取模塊902用于在分配地址時,讀取存儲區(qū)域中各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0224]第一確定模塊903用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0225]第一修改模塊904用于在數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0226]為了進一步優(yōu)化上述實施例,在圖9所示實施例的基礎上,本申請實施例提供的另一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖如圖10所示,還包括:
[0227]第一獲取模塊1001,第一查找模塊1002和第二修改模塊1003,其中,
[0228]第一獲取模塊1001用于在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,根據(jù)所述數(shù)據(jù)存儲空間的地址(即存儲地址),獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;[0229]第一查找模塊1002用于依據(jù)所述存儲單元的位置,在第一存儲器901中查找所述存儲單元;
[0230]第二修改模塊1003用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0231]為了優(yōu)化上述實施例,本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖如圖11所示,還包括:
[0232]第一記錄模塊1101和第二記錄模塊1102 ;其中,
[0233]第一記錄模塊1101用于記錄所述第一存儲器當前行存儲區(qū)域的分配狀態(tài);
[0234]第二記錄模塊1102用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0235]也就是說,不僅在第一存儲器的存儲單元內(nèi)保存存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài),還在存儲區(qū)域之外記錄當前行存儲區(qū)域的存儲狀態(tài),以及與當前行存儲區(qū)域內(nèi)各個列的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)。
[0236]所述第一記錄模塊1101記錄的存儲狀態(tài)依據(jù)第二記錄模塊1102記錄的各個存儲單元對應數(shù)據(jù)存儲空間的分配狀態(tài)確定,在第二記錄模塊1102記錄的各個存儲單元對應的數(shù)據(jù)存儲空間的存儲狀態(tài)都為已分配狀態(tài)時,所述第一記錄模塊1101記錄的當前行存儲區(qū)域的存儲狀態(tài)為已分配狀態(tài),否則,只要第二記錄模塊1102記錄的與當前行的存儲區(qū)域內(nèi)的一個存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)為未分配狀態(tài),則第一記錄模塊1101記錄的當前行存儲區(qū)域的存儲狀態(tài)為未分配狀態(tài)。
[0237]為了優(yōu)化上述實施例,在圖11所述實施例的基礎上,本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖如圖12所示,還包括:
[0238]第三修改模塊1201,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第二記錄模塊1102記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。也就是說,此時第一修改模塊904和第二修改模塊1003不對第一存儲器901進行讀寫操作。
[0239]具體在進行存儲地址分配時,可以按行輪詢及列輪詢的方式進行分配,即分配完一行再分配下一行。
[0240]優(yōu)選的,在當前行存儲區(qū)域內(nèi)既有地址回收又有地址分配時,只對第二記錄模塊1102記錄的與當前行存儲區(qū)域內(nèi)的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。也就是說,在當前行存儲區(qū)域內(nèi)既有地址回收又有地址分配時,不對存儲區(qū)域內(nèi)的存儲單元進行寫操作,而是只對第二記錄模塊1102記錄的相應的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)進行修改即可,進一步說,在有數(shù)據(jù)存儲時,先查看第二記錄模塊1102的記錄,以第二記錄模塊1102記錄的當前行存儲區(qū)域的各個存儲單元的分配狀態(tài)信息來判斷存儲單元對應的數(shù)據(jù)存儲空間是否可用(即是否為未分配狀態(tài))。
[0241]當既有地址回收,又有地址分配,且回收的地址與分配的地址不在同一行時,直接對回收的地址對應的存儲單元進行寫操作,即直接將所述回收的地址對應的存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0242]為了進一步優(yōu)化上述實施例,在圖11所示實施例的基礎上,本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖如圖13所示,還可以包括:[0243]第四修改模塊1301,用于在所述第二記錄模塊1102記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將第一存儲器901內(nèi)當前行的所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0244]第三記錄模塊1302,用于預先讀取第一存儲器901內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
[0245]為了進一步提高存儲區(qū)域的讀寫速度,本實施例中,第三記錄模塊1302可以在第二記錄模塊1102記錄的當前行存儲區(qū)域內(nèi)的所有存儲單元的分配狀態(tài)都為分配狀態(tài)之前讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息?;诖?,可以在第二記錄模塊1102記錄的當前行存儲區(qū)域內(nèi)只有一個存儲單元為未分配狀態(tài),其它存儲單元都為已分配狀態(tài),而當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期將第二記錄模塊1102記錄的當前行存儲區(qū)域的各個存儲單元的狀態(tài)更新為第三記錄模塊1302記錄的當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元的存儲狀態(tài),即將第三記錄模塊1302記錄的狀態(tài)信息更新到第二記錄模塊1102中,更新完成后,第三記錄模塊1302讀取當前行存儲區(qū)域的下一行存儲區(qū)域的各個存儲單元的存儲狀態(tài)。
[0246]請參看圖14,圖14為本申請實施例提供的一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖,包括:
[0247]第二存儲器1401,第三讀取模塊1402,第三確定模塊1403,數(shù)據(jù)存儲器1404,第五修改模塊1405,第四讀取模塊1406,第二獲取模塊1407,第二查找模塊1408和第六修改模塊1409 ;其中,
[0248]第二存儲器1401由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址(即存儲地址)由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定;
[0249]第三讀取模塊1402用于在存儲數(shù)據(jù)時,讀取第二存儲器中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;
[0250]第三確定模塊1403用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0251]數(shù)據(jù)存儲器1404用于依據(jù)所述數(shù)據(jù)存儲空間的地址及待存儲的數(shù)據(jù)建立鏈表;
[0252]具體如何建立鏈表現(xiàn)有技術已經(jīng)很成熟,為本領域的公知常識,這里不再贅述。
[0253]第五修改模塊1405用于在所述數(shù)據(jù)存儲器1404建立鏈表后,將所選擇的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);
[0254]第四讀取模塊1406用于在讀取數(shù)據(jù)時,依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù);
[0255]第二獲取模塊1407用于依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0256]第二查找模塊1408用于依據(jù)所述存儲單元的位置,在第二存儲器1401中查找存儲單元;
[0257]第六修改模塊1409用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0258]在圖14所示實施例的基礎上,本申請實施例提供的又一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖如圖15所示,還可以包括:
[0259]第三記錄模塊1501和第四記錄模塊1502 ;其中,
[0260]第三記錄模塊1501用于記錄所述第二存儲器1401當前行存儲區(qū)域的分配狀態(tài);
[0261]第四記錄模塊1502用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0262]為了優(yōu)化上述實施例,在圖15所述實施例的基礎上,本申請實施例提供的又一種數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖如圖16所示,還可以包括:
[0263]第七修改模塊1601,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第四記錄模塊1502記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。也就是說,此時,第五修改模塊1405和第六修改模塊1409不對第二存儲器1401進行讀寫操作。
[0264]第八修改模塊1602,用于在所述第四記錄模塊1502記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將第二存儲器1401內(nèi)當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0265]第五記錄模塊1603,用于預先讀取第二存儲器1401內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
[0266]為了進一步提高存儲區(qū)域的讀寫速度,本實施例中,第五記錄模塊1603可以在第四記錄模塊1502記錄的當前行存儲區(qū)域內(nèi)的所有存儲單元的分配狀態(tài)都為分配狀態(tài)之前讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息?;诖耍梢栽诘谒挠涗浤K1502記錄的當前行存儲區(qū)域內(nèi)只有一個存儲單元為未分配狀態(tài),其它存儲單元都為已分配狀態(tài),而當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期將第四記錄模塊1502記錄的當前行存儲區(qū)域的各個存儲單元的狀態(tài)更新為第五記錄模塊1603記錄的當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元的存儲狀態(tài),即將第五記錄模塊1603記錄的狀態(tài)信息更新到第四記錄模塊1502中,更新完成后,第五記錄模塊1603讀取當前行存儲區(qū)域的下一行存儲區(qū)域的各個存儲單元的存儲狀態(tài)。
[0267]請參看圖17,圖17為本申請實施例提供的又一種存儲地址配置系統(tǒng)的結(jié)構(gòu)示意圖,包括:
[0268]至少一個處理器和與所述至少一個處理器耦合的存儲器;
[0269]所述存儲器內(nèi)至少包括由若干存儲單元組成的存儲區(qū)域,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定。
[0270]所述至少一個處理器被配置為:
[0271]讀取存儲區(qū)域中的各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元;其中,所述分配狀態(tài)信息用于指示存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)。
[0272]依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址;
[0273]將數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,修改所述選擇的存儲單元中存儲的分配狀態(tài)信息為已分配狀態(tài)。
[0274]所述至少一個處理器進一步可以被配置為:[0275]在讀取數(shù)據(jù)存儲空間中的數(shù)據(jù)后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置;
[0276]依據(jù)所述存儲單元的位置,在所述存儲區(qū)域中查找所述存儲單元;
[0277]將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
[0278]所述至少一個處理器可以進一步被配置為:
[0279]記錄所述存儲區(qū)域的當前行行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
[0280]所述至少一個處理器進一步被配置為:
[0281]在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,只對記錄的與當前行存儲區(qū)域內(nèi)的存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
[0282]所述至少一個處理器進一步被配置為:
[0283]在記錄的與當前行存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
[0284]所述至少一個處理器進一步被配置為:
[0285]預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信
肩、O
[0286]具體的,上述本發(fā)明實施例揭示的方法可以應用于處理器1701中,或者說由處理器1701實現(xiàn)。處理器1701可能是一種集成電路芯片,具有信號的處理能力。在實現(xiàn)過程中,上述方法的各步驟可以通過處理器1701中的硬件的集成邏輯電路或者軟件形式的指令完成,用于執(zhí)行本發(fā)明實施例揭示的方法,上述的處理器可以是通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等,可以實現(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器,解碼器等。結(jié)合本發(fā)明實施例所公開的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機存儲器RAM、閃存Flash Memory、只讀存儲器R0M,可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領域成熟的存儲介質(zhì)中。該存儲介質(zhì)位于存儲器1702中,處理器讀取存儲器1702中的信息,結(jié)合其硬件完成上述方法的步驟。
[0287]下面以IK緩存能力(即1024個存儲地址,每個存儲地址的位寬為10)為例對本申請中應用上述地址配置方法進行數(shù)據(jù)存取的方法進行具體說明
[0288]如圖18所示,圖18為本申請具體示例的示意圖。
[0289]本示例中通過行輪詢、列輪詢的方式選擇地址。
[0290]本示例中,所選用的存儲區(qū)域的大小為1024bit,該存儲區(qū)域被平均劃分為32 X 32=1024個存儲單元,每個存儲單元占用Ibit存儲區(qū)域,每個存儲單元存儲的初始分配狀態(tài)均為未分配狀態(tài),用“ I”表示,當存儲單元對應的數(shù)據(jù)存儲空間的地址被分配后,所述存儲單元的分配狀態(tài)為已分配狀態(tài),用“O”表示。
[0291]每一個存儲單元的存儲地址由行比特和列比特組合而成,其中行比特和列比特都為5位的二進制數(shù),例如,第4行第6列的存儲單元的地址為0010000110 ;
[0292]其中,行寄存器為32位的寄存器,行寄存器的每一位對應一行存儲區(qū)域的分配狀態(tài),對于每一行存儲區(qū)域,只有當該行的所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,該行對應的行寄存器中的位才為已分配狀態(tài),可以用“O”表示;否則該行對應的行寄存器中的位為未分配狀態(tài),可以用“I”表示;
[0293]第一列寄存器為32位的列寄存器,用于記錄當前行的存儲區(qū)域內(nèi)各個存儲單元的分配狀態(tài);
[0294]只有在第一列寄存器的各個位都指示為已分配狀態(tài)時,當前行存儲區(qū)域在行寄存器中對應的位才刷新為已分配狀態(tài)。
[0295]第二列寄存器為32位的列寄存器,用于記錄當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元當前的分配狀態(tài)。
[0296]鏈表為應用待存儲的數(shù)據(jù)以及為該數(shù)據(jù)配置的地址建立的鏈表,也就是說,鏈表中的地址為已分配地址。
[0297]初始化時,存儲區(qū)域內(nèi)各行全置為1,即未分配狀態(tài),并輸出初始化完成信號。當有數(shù)據(jù)存儲,為該數(shù)據(jù)分配地址后,將已分配的地址對應的存儲單元內(nèi)的分配狀態(tài)信息修改為已分配狀態(tài),即將該存儲單元存儲的分配狀態(tài)信息設置為“0”,分配地址時,需要一讀一寫動作,即讀取存儲單元地址,修改存儲單元的分配狀態(tài);當回收地址時,直接將該地址對應的存儲單元存儲的分配狀態(tài)信息設置為“ I”即可。
[0298]為了減少讀寫沖突,可以采用如下方式:
[0299]為了減少分配地址時的讀寫沖突,在分配地址時,只在第一列寄存器各個位都為已分配狀態(tài)時,才修改存儲區(qū)域內(nèi)當前行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
[0300]當有地址回收,且回收的地址對應的存儲單元不屬于當前行時,就直接對回收的地址對應的存儲單元進行寫操作。
[0301]當分配地址時的讀與回收地址時的寫沖突,即既需要分配地址又需要回收地址,且回收的地址對應的存儲單元屬于當前行存儲區(qū)域時,可以直接更新合并到第一列寄存器中,也就是既不修改第一列寄存器的各個位的狀態(tài),也不對當前行存儲區(qū)域內(nèi)各個存儲單元存儲的狀態(tài)信息進行修改,相當于將回收的地址立即又分配出去。
[0302]行寄存器的刷新可以包括如下兩種刷新來源:
[0303]來源一,第一列寄存器只有一位記錄為未分配狀態(tài),其它各位都記錄為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收;
[0304]當滿足上述條件,即在第一列寄存器只有一位記錄為未分配狀態(tài),其它各位都記錄為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期對行寄存器進行刷新,將行寄存器內(nèi)當前行對應的位設置為“0”,即修改分配狀態(tài)為已分配狀態(tài);
[0305]來源二,當前時鐘周期有地址回收;
[0306]當滿足上述條件時,根據(jù)行地址分配狀況在下一個時鐘周期對行寄存器內(nèi)對應的位進行刷新,包括:當前時鐘周期內(nèi)有地址回收,且回收前回收的地址所屬的行存儲區(qū)域為已分配狀態(tài),則在回收地址后,將行寄存器中,該回收的地址所屬的行存儲區(qū)域所對應的位設置為未分配狀態(tài)。[0307]上述兩個刷新來源可能會存在沖突,當存在沖突時,以優(yōu)先級高的為先,本示例中,來源一的優(yōu)先級高于來源二的優(yōu)先級,具體的,當兩個刷新來源同時存在時,優(yōu)先考慮來源一,再考慮來源二,然后綜合兩種來源對行寄存器進行刷新;
[0308]例如,當前存在兩個刷新來源,分別為:一、第一列寄存器只有一位記錄為未分配狀態(tài),其它各位都記錄為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收;二、當前時鐘周期有地址回收,該回收的地址不是第一列寄存器對應的行存儲區(qū)域內(nèi)的存儲單元對應的數(shù)據(jù)存儲空間的地址;也就是說,當?shù)谝涣屑拇嫫髦挥幸晃挥涗洖槲捶峙錉顟B(tài),其它各位都記錄為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配也有地址回收,且回收的地址對應的存儲單元不屬于第一列寄存器對應的行存儲區(qū)域,那么,根據(jù)沖突處理原則,優(yōu)先根據(jù)刷新來源一判斷刷新方式,此時,判斷出刷新方式應該為將當前行對應的行寄存器中的位設置為0,但此時并不對行寄存器進行設置,而是依據(jù)刷新來源二判斷刷新方式,如果根據(jù)刷新來源二判斷出回收的地址對應的存儲單元所在的行存儲區(qū)域?qū)男屑拇嫫髦械奈粦撛O置為I (即該行存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的地址之前已經(jīng)分配完,回收地址后就有一個存儲單元對應的數(shù)據(jù)存儲空間的地址可用,即回收地址后變?yōu)槲捶峙錉顟B(tài)),則在下一個時鐘周期對行寄存器進行刷新,即,在下一個時鐘周期內(nèi)將行寄存器中當前行對應的位設置為0,同時將行寄存器中回收的地址所對應的存儲單元所在行存儲區(qū)域?qū)奈辉O置為I;而如果依據(jù)刷新來源二判斷出該行對應的行寄存器中的位不變(即回收地址前就為未分配狀態(tài),也就是說,回收地址之前當前行存儲區(qū)域就為未分配狀態(tài),回收地址后該行還為未分配狀態(tài)),則在下一個時鐘周期對行寄存器進行刷新,此時,只將行寄存器中當前行對應的位設置為0,而不修改行寄存器中回收的地址所在行對應的位的值;
[0309]再例如,當前存在兩個刷新來源,分別為:一、第一列寄存器只有一位記錄為未分配狀態(tài),其它各位都記錄為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收;二、當前時鐘周期有地址回收,該回收的地址對應的存儲單元屬于第一列寄存器對應的行存儲區(qū)域;那么,此時,先根據(jù)刷新來源一判斷,需要將當前行對應的行寄存器中的位設置為0,在此基礎上,再由刷新來源二可知,需要將當前行對應的行寄存器中的位再設置為1,也就是說,根據(jù)這兩個來源可以判斷出第一列寄存器對應的行存儲區(qū)域的分配狀態(tài)不變,因此,在這種情況下,可以不對行寄存器中當前行對應的位進行設置,即不對行寄存器進行刷新。
[0310]第一列寄存器的刷新可以包括如下三種刷新來源:
[0311]來源一,分配一個地址后;
[0312]在當前時鐘周期內(nèi)分配一個地址后,在下一個時鐘周期對第一列寄存器進行刷新,將該地址對應的存儲單元在第一列寄存器中的相應位設置為已分配狀態(tài),即,將該地址對應的第一列寄存器中的位設置為O。
[0313]來源二,第一列寄存器中只有一位為未分配狀態(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收;
[0314]當滿足上述條件,即當?shù)谝涣屑拇嫫髦兄挥幸晃粸槲捶峙錉顟B(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一時鐘周期將第二列寄存器中存儲的狀態(tài)信息刷新到第一列寄存器。[0315]來源三,回收的地址時,包括回收的地址對應的存儲單元屬于第一列寄存器對應的行存儲區(qū)域,或者,第一列寄存器中只有一位為未分配狀態(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配,也有地址回收,且回收的地址對應的存儲單元屬于第一列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域;
[0316]當滿足上述條件時,對第一列寄存器進行刷新,修改回收的地址對應的存儲單元在第一列寄存器中的相應位的分配狀態(tài)。
[0317]在當前時鐘周期內(nèi)既有地址分配又有地址回收,且回收的地址對應的存儲單元屬于第一列寄存器對應的行存儲區(qū)域時,可以不對第一列寄存器進行刷新,即將剛回收的地址又分配出去。
[0318]當?shù)谝涣屑拇嫫髦兄挥幸晃粸槲捶峙錉顟B(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配,也有地址回收,且回收的地址對應的存儲單元屬于第一列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域時,在下一個時鐘周期將第二列寄存器中存儲的狀態(tài)信息刷新到第一列寄存器的同時,將回收的地址對應的第一列寄存中的位設置為未分配狀態(tài)。
[0319]第二列寄存器的刷新可以包括如下兩種刷新來源:
[0320]來源一,第一列寄存器中只有一位為未分配狀態(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收;
[0321]當滿足上述條件,即當?shù)谝涣屑拇嫫髦兄挥幸晃粸槲捶峙錉顟B(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配而沒有地址回收時,在下一個時鐘周期對第二列寄存器進行刷新,將第二列寄存器中存儲的狀態(tài)信息刷新到第一列寄存器中,并將第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域的分配狀態(tài)信息讀入到第二列寄存器,也就是說將第二列寄存器存儲的狀態(tài)信息刷新為第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域的存儲狀態(tài)信息。
[0322]來源二,回收地址時,其中包括回收的地址對應的存儲單元屬于第二列寄存器對應的行存儲區(qū)域,或者,第一列寄存器中只有一位為未分配狀態(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配,也有地址回收且回收的地址對應的存儲單元屬于第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域;
[0323]當滿足上述條件,即當回收的地址對應的存儲單元屬于第二列寄存器對應的行存儲區(qū)域或第一列寄存器中只有一位為未分配狀態(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配,也有地址回收且回收的地址對應的存儲單元屬于第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域時,對第二列寄存器進行刷新。
[0324]當?shù)谝涣屑拇嫫髦兄挥幸晃粸槲捶峙錉顟B(tài),其它各位都為已分配狀態(tài),且當前時鐘周期內(nèi)有地址分配,也有地址回收,且回收的地址對應的存儲單元屬于第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域時,在下一個時鐘周期內(nèi)將第二列寄存器存儲的分配狀態(tài)信息刷新為第二列寄存器對應的行存儲區(qū)域的下一行存儲區(qū)域的分配狀態(tài)信息,同時,將第二列寄存器中回收的地址對應的位也進行刷新(即將第二列寄存器中,回收的地址對應的位的分配狀態(tài)設置為未分配狀態(tài))。
[0325]為了方便判斷各個列寄存器中未進行分配的存儲單元的個數(shù),可以針對每一個列寄存器設置一個計數(shù)器,用于對各個列寄存器中未進行分配的存儲單元的個數(shù)進行計數(shù)。[0326]本申請說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
[0327]結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。對所公開的實施例的上述說明,使本領域?qū)I(yè)技術人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應包含在本發(fā)明的權利要求保護范圍之內(nèi)。
【權利要求】
1.一種存儲地址標示方法,其特征在于,包括: 將存儲區(qū)域平均劃分為若干存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息; 根據(jù)所述存儲單元在所述存儲區(qū)域中的位置,獲得與所述存儲單元對應的數(shù)據(jù)存儲空間的地址,其中,所述數(shù)據(jù)存儲空間的地址包括行比特和/或列比特,所述行比特用于指示所述存儲單元在所述存儲區(qū)域中的行位置,所述列比特用于指示所述存儲單元在所述存儲區(qū)域中的列位置。
2.根據(jù)權利要求1所述的方法,其特征在于,所述存儲區(qū)域被劃分為一行或一列存儲單元。
3.根據(jù)權利要求2所述的方法,其特征在于,所述數(shù)據(jù)存儲空間的地址包括:行比特或列比特。
4.根據(jù)權利要求1所述的方法,其特征在于,所述存儲區(qū)域被劃分為若干行和若干列存儲單兀。
5.根據(jù)權利要求4所述的方法,其特征在于,所述數(shù)據(jù)存儲空間的地址包括行比特和列比特。
6.一種存儲地址配置方法,其特征在于,所述存儲地址所在的存儲區(qū)域包括若干存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,所述數(shù)據(jù)存儲空間的地址由所述數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,所述數(shù)據(jù)存儲空間的地址即為儲存地址,所述方法包括: 分配地址時, 讀取存儲區(qū)域中的各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元; 依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址; 數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所述選擇的存儲單元中存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
7.根據(jù)權利要求6所述的方法,其特征在于,還包括: 回收地址時, 在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置; 依據(jù)所述存儲單元的位置在存儲區(qū)域中查找所述存儲單元; 將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
8.根據(jù)權利要求6或7所述的方法,其特征在于,還包括: 記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
9.根據(jù)權利要求8所述的方法,其特征在于,在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
10.根據(jù)權利要求8或9所述的方法,其特征在于,還包括:在記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
11.根據(jù)權利要求8-10任意一項所述的方法,其特征在于,還包括: 預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
12.—種數(shù)據(jù)存取方法,其特征在于,所述數(shù)據(jù)的存儲空間對應于包括若干存儲單元的存儲區(qū)域內(nèi)的存儲單元,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址有該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定,,所述方法包括: 存儲數(shù)據(jù)時, 讀取存儲區(qū)域中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元; 依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址; 依據(jù)所述數(shù)據(jù)存儲空間的地址及所需存儲的數(shù)據(jù)建立鏈表; 將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài); 讀取數(shù)據(jù)時, 依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù); 依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置; 依據(jù)所述存儲單元的位置,在存儲區(qū)域中查找所述存儲單元; 將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
13.根據(jù)權利要求12所述的方法,其特征在于,還包括: 記錄所述存儲區(qū)域的當前行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
14.根據(jù)權利要求13所述的方法,其特征在于,在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
15.根據(jù)權利要求13或14所述的方法,其特征在于,在記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
16.根據(jù)權利要求13-15任意一項所述的方法,其特征在于,還包括: 預先讀取當前行存儲區(qū)域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
17.一種存儲區(qū)域劃分系統(tǒng),其特征在于,包括: 劃分模塊,用于將存儲區(qū)域平均劃分為若干存儲單元,所述存儲單元用于存儲所述存儲單元所對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息; 其中,所述存儲單元所對應的數(shù)據(jù)存儲空間的地址根據(jù)所述存儲單元在所述存儲區(qū)域中的位置確定。
18.一種存儲地址配置系統(tǒng),其特征在于,包括: 第一存儲器,所述第一存儲器由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置,所述數(shù)據(jù)存儲空間的地址即為存儲地址; 第一讀取模塊,用于在分配地址時,讀取存儲區(qū)中各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元; 第一確定模塊,用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置,確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址; 第一修改模塊,用于在數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所述存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
19.根據(jù)權利要求18所述的系統(tǒng),其特征在于,還包括: 第一獲取模塊,用于在數(shù)據(jù)存儲空間中的數(shù)據(jù)被讀取后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置; 第一查找模塊,用于依據(jù)所述存儲單元的位置,在第一存儲器中查找所述存儲單元; 第二修改模塊,用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
20.根據(jù)權利要求18或19所述的系統(tǒng),其特征在于,還包括: 第一記錄模塊,用于記錄所述第一存儲器當前行存儲區(qū)域的分配狀態(tài); 第二記錄模塊,用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
21.根據(jù)權利要求20所 述的系統(tǒng),其特征在于,還包括: 第三修改模塊,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第二記錄模塊記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
22.根據(jù)權利要求20或21所述的系統(tǒng),其特征在于,還包括: 第四修改模塊,用于在所述第二記錄模塊記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將第一存儲器內(nèi)當前行的所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
23.根據(jù)權利要求20-22任意一項所述的系統(tǒng),其特征在于,還包括: 第三記錄模塊,用于預先讀取第一存儲器內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
24.一種數(shù)據(jù)存取系統(tǒng),其特征在于,包括: 第二存儲器,由若干存儲單元組成,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定; 第三讀取模塊,用于在存儲數(shù)據(jù)時,讀取第二存儲器中各個存儲單元保存的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元; 第三確定模塊,用于依據(jù)選擇的存儲單元在所述存儲區(qū)域中的位置確定所選擇的存儲單元對應的數(shù)據(jù)存儲空間的地址; 數(shù)據(jù)存儲器,用于依據(jù)所述數(shù)據(jù)存儲空間的地址及待存儲的數(shù)據(jù)建立鏈表; 第五修改模塊,用于在所述第三讀取模塊選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元后,將所選擇的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài); 第四讀取模塊,用于在讀取數(shù)據(jù)時,依據(jù)所述鏈表讀取數(shù)據(jù)存儲空間中的數(shù)據(jù);第二獲取模塊,用于依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置; 第二查找模塊,用于依據(jù)所述存儲單元的位置,在第二存儲器中查找所述存儲單元; 第六修改模塊,用于將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
25.根據(jù)權利要求24所述的系統(tǒng),其特征在于,還包括: 第三記錄模塊,用于記錄所述第二存儲器當前行存儲區(qū)域的分配狀態(tài); 第四記錄模塊,用于記錄當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
26.根據(jù)權利要求25所述的系統(tǒng),其特征在于,還包括: 第七修改模塊,用于在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,對所述第四記錄模塊記錄的當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
27.根據(jù)權利要求25或26所述的系統(tǒng),其特征在于,還包括: 第八修改模塊,用于在所述第四記錄模塊記錄的當前行存儲區(qū)域內(nèi)所有存儲單元的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
28.根據(jù)權利要求25-26任意一項所述的系統(tǒng),其特征在于,還包括: 第五記錄模塊,用于預先讀取第二存儲器內(nèi)當前行存儲區(qū)域的下一行的存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
29.一種存儲地址配置系統(tǒng),其特征在于,包括: 至少一個處理器,其被配置為: 讀取存儲區(qū)域中各個存儲單元存儲的分配狀態(tài)信息,選擇分配狀態(tài)信息指示為未分配狀態(tài)的存儲單元; 依據(jù)所選擇的存儲單元在所述存儲區(qū)域中的位置地址; 將數(shù)據(jù)存入所述數(shù)據(jù)存儲空間后,將所選擇的存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài);以及, 與所述至少一個處理器耦合的存儲器,,所述存儲器內(nèi)至少包括由若干存儲單元組成的存儲區(qū)域,所述存儲單元用于存儲所述存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)信息,數(shù)據(jù)存儲空間的地址由該數(shù)據(jù)存儲空間對應的存儲單元在存儲區(qū)域中的位置確定。
30.根據(jù)權利要求29所述的系統(tǒng),其特征在于,所述至少一個處理器進一步被配置為: 在讀取數(shù)據(jù)存儲空間中的數(shù)據(jù)后,依據(jù)所述數(shù)據(jù)存儲空間的地址,獲得用于存儲所述數(shù)據(jù)存儲空間的分配狀態(tài)信息的存儲單元的位置; 依據(jù)所述存儲單元的位置,在所述存儲區(qū)域中查找所述存儲單元; 將所述存儲單元存儲的分配狀態(tài)信息修改為未分配狀態(tài)。
31.根據(jù)權利要求29或30所述的系統(tǒng),其特征在于,所述至少一個處理器進一步被配置為: 記錄所述存儲區(qū)域的當前行行存儲區(qū)域的分配狀態(tài),以及當前行存儲區(qū)域內(nèi)各個列的存儲單元的分配狀態(tài)。
32.根據(jù)權利要求31所述的系統(tǒng),其特征在于,所述至少一個處理器進一步被配置為:在當前行存儲區(qū)域內(nèi)有地址回收和/或有地址分配時,只對記錄的當前行存儲區(qū)域內(nèi)的存儲單元的分配狀態(tài)信息進行修改,而不修改當前行存儲區(qū)域內(nèi)的存儲單元存儲的分配狀態(tài)信息。
33.根據(jù)權利要求31或32所述的系統(tǒng),其特征在于,所述至少一個處理器進一步被配置為: 在記錄的與當前行存儲區(qū)域內(nèi)所有存儲單元對應的數(shù)據(jù)存儲空間的分配狀態(tài)都為已分配狀態(tài)時,將當前行存儲區(qū)域內(nèi)所有存儲單元存儲的分配狀態(tài)信息修改為已分配狀態(tài)。
34.根據(jù)權利要求31-33任意一項所述的系統(tǒng),其特征在于,所述至少一個處理器進一步被配置為: 預先讀取當前行存儲區(qū) 域的下一行存儲區(qū)域內(nèi)各個存儲單元存儲的分配狀態(tài)信息。
【文檔編號】G06F12/08GK103605478SQ201310185769
【公開日】2014年2月26日 申請日期:2013年5月17日 優(yōu)先權日:2013年5月17日
【發(fā)明者】段有杰, 金騰 申請人:華為技術有限公司