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