專利名稱:存儲、查詢方法及存儲控制器和查詢系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)管理技術(shù)領(lǐng)域,具體涉及表項的存儲、查詢方法及存儲控制器和查詢系統(tǒng)。
背景技術(shù):
目前通信設(shè)備中大量使用動態(tài)隨機訪問存儲器DRAM(Dynamic RandomAccess Memory)作為表項存儲介質(zhì),例如單倍數(shù)據(jù)速率同步動態(tài)存儲器SDRSDRAM(Single Data Rate Synchronous Dynamic Random Access Memory)、雙倍數(shù)據(jù)速率同步動態(tài)存儲器DDR SDRAM(Double Data Rate SynchronousDynamic Random Access Memory)等。動態(tài)隨機訪問存儲器DRAM中包括多個存儲體bank,存儲體bank中含有存儲單元,用于存儲表項。這里所說的表項是指一個表中的某一行內(nèi)容,一個表項可以占用DRAM的連續(xù)若干個存儲單元。
現(xiàn)有的表項存儲方法是根據(jù)表項索引存儲表項。這里的表項索引是指表項所占DRAM的bank內(nèi)存儲單元的地址,若一個表項占用多個存儲單元,那么表項索引可以是其中的最低地址。
請參閱圖1,是現(xiàn)有存儲方法流程圖,包括A1、將表的所有表項都存儲在DRAM中的一個bank中;根據(jù)表項索引確定DRAM的bank內(nèi)存儲單元地址后,將某個表的所有表項都存儲在DRAM中的一個bank中。
A2、在DRAM的各個bank中重復(fù)存儲同樣的表。
將某個表的所有表項在一個bank中存儲后,再在其他各個bank中重復(fù)存儲。例如某種DDR SDRAM含有4個bank,則在bank1到bank4都存儲同樣的表。
因此,對于同一個表項,在多個bank中是重復(fù)存儲了,這樣的存儲方法浪費了bank的存儲空間。
當(dāng)對DRAM進行表項查詢時,因為DRAM對于同一bank中不同行的兩次讀操作之間要求至少間隔tRC時間,所以查詢效率受到限制。tRC時間是指同一個bank中在兩個相鄰的激活A(yù)CTIVE命令之間的時間間隔。例如某種DDR SDRAM含有4個bank,tRC=60納秒(ns)時,對同一bank的兩次讀操作之間要求至少間隔60納秒時間。采用隨機查表方法時,有可能連續(xù)若干次讀操作都對應(yīng)到同一個bank,這時查一次表至少要花60納秒時間,這樣查表性能就是大約16M次/秒,效率比較低。因此,目前一般采用多bank輪流訪問的方法在各個bank中輪流進行讀操作。
仍以某種DRAM中含有4個bank為例,請參閱圖2,是現(xiàn)有查詢方法流程圖,包括B1、將查詢請求按順序分發(fā)給各存儲體bank;接收查詢請求后,將第一個查詢請求分發(fā)到bank1進行查詢,將第二個查詢請求分發(fā)到bank2進行查詢,其他以此類推,查詢請求分發(fā)到bank4后,下一個查詢請求再分發(fā)到bank1進行查詢。
B2、根據(jù)查詢請求中的查表索引確定需查找的表項在bank中的存儲地址;查詢請求中含有查表索引,查表索引也就是表項所占DRAM的bank內(nèi)存儲單元的地址,因此可以確定需查找的表項在bank中的存儲地址。
B3、根據(jù)存儲地址在bank中查詢表項;具體查詢時,根據(jù)存儲單元的存儲地址讀取表項內(nèi)容。
B4、輸出查詢結(jié)果。
采用多bank輪流訪問的方法可以讓連續(xù)的若干次查表在4個bank中輪流進行,那么在一個60納秒的周期內(nèi)最多可以完成4次查表操作。因為不同bank的Active操作之間是沒有tRC的要求,只有tRRD時間的要求,tRRD時間是指在不同的bank之間執(zhí)行兩個ACTIVE命令之間的時間間隔,這個時間間隔比較小。那么這時的查詢效率可以達到前面所說的隨機查表方法的4倍,即60M次/秒左右。
雖然現(xiàn)有采用多bank輪流訪問的方法比隨機查表方法效率要高,但因為是基于各bank重復(fù)存儲同樣表項的方法基礎(chǔ)上進行查找,所以對于DRAM存儲空間的利用率還是比較低,例如4個bank輪流訪問時,存儲空間的利用率僅為25%。
發(fā)明內(nèi)容
本發(fā)明實施例要解決的技術(shù)問題是提供一種存儲、查詢方法及存儲控制器和查詢系統(tǒng),能夠節(jié)省存儲空間,提高存儲空間利用率。
為解決上述技術(shù)問題,本發(fā)明實施例通過以下技術(shù)方案實現(xiàn)的本發(fā)明實施例提供一種存儲方法,包括選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體。
本發(fā)明實施例提供一種查詢方法,包括接收查詢表項的表項查詢請求;所述表項的存儲方式為不同的所述表項存儲在動態(tài)隨機訪問存儲器的不同存儲體中;將所述表項查詢請求分類;按輪詢方式調(diào)度所述分類的查詢請求;根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址查詢表項。
本發(fā)明實施例提供一種存儲控制器,用于選擇不同表項在動態(tài)隨機訪問存儲器中存儲的所述不同存儲體,并將所述不同表項配置到所述選擇的存儲體。
本發(fā)明實施例提供一種查詢系統(tǒng),包括調(diào)度單元,用于將接收的查詢請求分類存儲后按輪詢方式調(diào)度所述分類的查詢請求;查詢單元,用于對動態(tài)隨機訪問存儲器存儲的表項進行查詢,不同表項存儲在動態(tài)隨機訪問存儲器的不同存儲體中,所述查詢單元根據(jù)調(diào)度單元調(diào)度的所述查詢請求中的查表索引確定表項在所述動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址在所述動態(tài)隨機訪問存儲器的存儲體中查詢表項。
從以上本發(fā)明實施例技術(shù)方案可以看出現(xiàn)有存儲方法對于同一個表項,在多個存儲體bank中是重復(fù)存儲的,浪費了存儲空間,而本發(fā)明實施例通過選擇不同表項在動態(tài)隨機訪問存儲器中存儲的存儲體;將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的不同存儲體,從而將不同表項存儲到不同的存儲體bank中,節(jié)約了存儲空間,還可以減少表項存儲所花費的時間;現(xiàn)有查詢方法基于各bank重復(fù)存儲同樣表項的方法基礎(chǔ)上進行查找,對于DRAM存儲空間的利用率還是比較低,而本發(fā)明實施例提供的查詢方法,基于將不同表項存儲到不同bank的存儲方法基礎(chǔ)上進行查找,通過將查詢請求分類存儲;按輪詢方式調(diào)度所述分類的查詢請求;根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址查詢表項,從而也能利用多bank輪流訪問的高效方式,提高DRAM的存儲空間利用率。
圖1是現(xiàn)有技術(shù)存儲方法流程圖;圖2是現(xiàn)有技術(shù)查詢方法流程圖;圖3是本發(fā)明實施例存儲方法流程圖;圖4是本發(fā)明實施例一查詢方法流程圖;圖5是本發(fā)明實施例二查詢方法流程圖;圖6是本發(fā)明實施例存儲控制器結(jié)構(gòu)示意圖;圖7是本發(fā)明實施例查詢系統(tǒng)結(jié)構(gòu)示意圖。
具體實施例方式
現(xiàn)有的表項存儲方法是將某個表的所有表項都存儲在DRAM中的一個bank中,并且每個bank重復(fù)存儲相同的表,本發(fā)明實施例提供一種存儲方法,將表項不重復(fù)地存儲在DRAM中的不同bank中,可以節(jié)省存儲空間,并且可以減少表項存儲及更新所花費的時間。
以下介紹本發(fā)明實施例的存儲方法,請參閱圖3,是本發(fā)明實施例存儲方法流程圖,包括C1、選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體,可以是一張表的每個不同的表項選擇存儲在動態(tài)隨機訪問存儲器中不同的存儲體,也可以是其中幾個不同表項選擇存儲的是同一個存儲體,其他表項各自選擇存儲在不同的存儲體中。
以DRAM含有4個bank為例進行說明。首先,將表項索引的最低兩位數(shù)值作為選擇的DRAM的bank的標(biāo)號,即最低兩位為存儲體選擇位,例如最低兩位數(shù)值為00表示對應(yīng)bank1,最低兩位數(shù)值為01表示對應(yīng)bank2,最低兩位數(shù)值為10表示對應(yīng)bank3,最低兩位數(shù)值為11表示對應(yīng)bank4。然后,采用表項索引剩下的位數(shù)的全部或部分?jǐn)?shù)值作為bank內(nèi)存儲單元地址。
C2、將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體。
選擇出不同表項在DRAM中存儲的存儲體bank和對應(yīng)的bank內(nèi)存儲單元地址后,根據(jù)這些存儲單元地址將表的相應(yīng)表項存儲到相應(yīng)bank的存儲單元中。
這樣,就把一張表的不同表項存儲到不同bank中。此時,每個bank中存儲的表項都是不重復(fù)的,與現(xiàn)有技術(shù)存儲方法相比就節(jié)省了存儲空間,可以存儲更多的表項內(nèi)容,而且對于容量較小的表項也能保證分布在多個bank中,另外,因為對于一個表項存儲時只需寫入一次,所以還可以減少表項存儲及更新所花費的時間。
需要說明的是,本發(fā)明實施例存儲方法可以和現(xiàn)有的存儲方法結(jié)合起來應(yīng)用,即在某些bank中可以重復(fù)存儲同樣的表項。
還需要說明的是,這里只是以DRAM含有4個bank為例進行說明但并不局限于此,例如DRAM含有8個bank,則可采用3位二進制數(shù)選擇bank。另外,表項索引中對應(yīng)選擇bank和對應(yīng)作為bank內(nèi)存儲單元地址的數(shù)值的位置并不限定,可以是在表項索引中的任何位置。
基于上述本發(fā)明實施例的存儲方法,以下介紹本發(fā)明實施例的查詢方法。
因為表項的存儲方法發(fā)生變化,相應(yīng)的本發(fā)明實施例的查詢方法相對于現(xiàn)有的查詢方法發(fā)生改變。以下本發(fā)明實施例的查詢方法以DRAM含有4個bank為例進行說明。
請參閱圖4,是本發(fā)明實施例一查詢方法流程圖,包括D1、為查詢請求分配序號;接收查詢請求后,按接收的順序為查詢請求分配序號。一般采用循環(huán)方式分配序號。序號的范圍根據(jù)具體需要選擇。
D2、根據(jù)查詢請求中的查表索引將查詢請求放入相應(yīng)請求隊列;查詢請求中含有查表索引,根據(jù)查詢請求中的查表索引的最低兩位數(shù)值將查詢請求放入相應(yīng)的請求隊列中,請求隊列數(shù)目根據(jù)存儲體bank數(shù)目確定,并且與存儲體bank一一對應(yīng)。例如查表索引的最低兩位為存儲體選擇位,其數(shù)值為00表示需查找的表項對應(yīng)存儲在bank1,放入請求隊列1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在bank2,放入請求隊列2,最低兩位數(shù)值為10表示需查找的表項對應(yīng)存儲在bank3,放入請求隊列3,最低兩位數(shù)值為11表示需查找的表項對應(yīng)存儲在bank4,放入請求隊列4。
D3、按輪詢方式調(diào)度請求隊列,并取出請求隊列中所含的查詢請求;對4個請求隊列按輪詢方式進行調(diào)度,先調(diào)度請求隊列1,再調(diào)度請求隊列2,以此類推,調(diào)度出請求隊列后從請求隊列中取出所含的查詢請求。每次從調(diào)度出的請求隊列中取出一個查詢請求。因為4個隊列中的查詢請求在執(zhí)行查表操作時與4個bank是一一對應(yīng),所以也相當(dāng)于使用到多bank輪流訪問的高效方式。即將請求隊列1中的第一個查詢請求取出分發(fā)到bank1進行查詢,接著將請求隊列2中的第一個查詢請求取出分發(fā)到bank2進行查詢,其他以此類推,如果請求隊列中沒有查詢請求,則調(diào)度下一請求隊列,當(dāng)將請求隊列4中的第一個查詢請求取出分發(fā)到bank4后,再將請求隊列1中的第二個查詢請求取出分發(fā)到bank1進行查詢,后續(xù)類推。
D4、根據(jù)查詢請求中的查表索引確定需查找的表項所對應(yīng)的DRAM中的存儲體bank和在對應(yīng)bank中的存儲地址;取出查詢請求后,可以根據(jù)查詢請求中的查表索引的最低2位數(shù)值確定需查找的表項所對應(yīng)的DRAM中的存儲體bank,例如最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在bank1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在bank2,最低兩位數(shù)值為10表示需查找的表項對應(yīng)存儲在bank3,最低兩位數(shù)值為11表示需查找的表項對應(yīng)存儲在bank4。查表索引的剩下的位數(shù)的全部或部分?jǐn)?shù)值表示查找的表項在對應(yīng)bank內(nèi)存儲單元地址。
D5、根據(jù)所述存儲地址在對應(yīng)bank中查詢表項。
確定需查找的表項所對應(yīng)的DRAM中的存儲體bank和在對應(yīng)內(nèi)存儲單元地址后,則可以根據(jù)所述存儲單元地址在對應(yīng)bank中的存儲單元讀取表項內(nèi)容。
D6、對查詢結(jié)果按序號進行重排序后輸出查詢結(jié)果。
得到查詢結(jié)果后,進行重排序。重排序可以為設(shè)置一定空間的緩沖區(qū),并設(shè)置一定的緩存時間。當(dāng)排序單元得到查詢結(jié)果后,先將查詢結(jié)果存儲在緩沖區(qū)中,當(dāng)設(shè)置的緩存時間已經(jīng)到達或緩沖空間已經(jīng)或即將耗盡時,先從緩沖區(qū)中選出當(dāng)前最大序號,然后在與該最大序號之差不超過整個序號范圍一半的范圍內(nèi)選擇最小序號,然后將該最小序號的查詢結(jié)果輸出。例如分配的整個序號范圍為0到99,共100個序號,則整個序號范圍的一半為50,假如當(dāng)前緩沖區(qū)的最大序號為98,則98-50=48,則與該最大序號之差不超過整個序號范圍一半的范圍為48到98,在緩沖區(qū)中選出落在該范圍內(nèi)的最小序號。如果當(dāng)前緩沖區(qū)中有0、50、98這三個序號,那應(yīng)該選擇50作為最小序號,而不應(yīng)該選擇0作為最小序號。
需要說明的是,這里只是以DRAM含有4個bank為例進行說明但并不局限于此,例如DRAM含有8個bank,則可采用3位數(shù)值對應(yīng)bank。另外,查表索引中對應(yīng)bank和對應(yīng)作為bank內(nèi)存儲單元地址的數(shù)值的位置并不限定,可以是在表項索引中的任何位置。而且,還可以采用bank分組的方式,此時的一組bank相當(dāng)于原來的一個bank,例如最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在第一組bank中,其他以此類推。
還需要說明的是,本實施例步驟D2是以將查詢請求放入相應(yīng)請求隊列中舉例說明,但不局限于此,還可以通過其他方式存儲對應(yīng)的查詢請求,例如可以通過劃分出幾個存儲區(qū),將對應(yīng)不同bank的查詢請求放入不同存儲區(qū)。存儲區(qū)數(shù)目根據(jù)存儲體bank數(shù)目確定,并且與存儲體bank一一對應(yīng)。
可以發(fā)現(xiàn),本發(fā)明實施例的查詢方法基于將不同表項配置到不同bank的存儲方法基礎(chǔ)上進行查找,從而也能利用多bank輪流訪問的高效方式,提高DRAM的存儲空間利用率。
請參閱圖5,是本發(fā)明實施例二查詢方法流程圖,與實施例一相比增加了一個高速緩存Cache機制。增加高速緩存機制,主要是為了避免查詢請求種類較少時,對應(yīng)查找存儲體不夠均勻而導(dǎo)致查表性能損失。圖5中包括E1、為查詢請求分配序號;接收查詢請求后,按接收的順序為查詢請求分配序號。一般采用循環(huán)方式分配序號。序號的范圍根據(jù)具體需要選擇。
E2、根據(jù)查詢請求中的查表索引在高速緩存Cache中進行查詢;在Cache中存儲有以前的查詢結(jié)果,則可以根據(jù)查表索引先到Cache中進行查找相關(guān)表項內(nèi)容。若在Cache中能查到含有相同索引的表項,則進入步驟E7直接將該查詢結(jié)果和序號傳送給排序單元進行重排序;若在Cache中不能查到含有相同索引的表項,進入步驟E3。
E3、根據(jù)查詢請求中的查表索引將查詢請求放入相應(yīng)請求隊列;查詢請求中含有查表索引,根據(jù)查詢請求中的查表索引的最低兩位數(shù)值將查詢請求放入相應(yīng)的請求隊列中,請求隊列數(shù)目根據(jù)存儲體bank數(shù)目確定,并且與存儲體bank一一對應(yīng)。例如查表索引的最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在bank1,放入請求隊列1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在bank2,放入請求隊列2,最低兩位數(shù)值為10表示需查找的表項對應(yīng)存儲在bank3,放入請求隊列3,最低兩位數(shù)值為11表示需查找的表項對應(yīng)存儲在bank4,放入請求隊列4。
E4、按輪詢方式調(diào)度請求隊列,并取出請求隊列中所含的查詢請求;對4個請求隊列按輪詢方式進行調(diào)度,先調(diào)度請求隊列1,再調(diào)度請求隊列2,以此類推,調(diào)度出請求隊列后從請求隊列中取出所含的查詢請求。每次從調(diào)度出的請求隊列中取出一個查詢請求。因為4個隊列中的查詢請求在執(zhí)行查表操作時與4個bank是一一對應(yīng),所以也相當(dāng)于使用到多bank輪流訪問的高效方式。即將請求隊列1中的第一個查詢請求取出分發(fā)到bank1進行查詢,接著將請求隊列2中的第一個查詢請求取出分發(fā)到bank2進行查詢,其他以此類推,如果請求隊列中沒有查詢請求,則調(diào)度下一請求隊列,當(dāng)將請求隊列4中的第一個查詢請求取出分發(fā)到bank4后,再將請求隊列1中的第二個查詢請求取出分發(fā)到bank1進行查詢,后續(xù)類推。
E5、根據(jù)查詢請求中的查表索引確定需查找的表項所對應(yīng)的DRAM中的存儲體bank和在對應(yīng)bank中的存儲地址;取出查詢請求后,可以根據(jù)查詢請求中的查表索引的最低2位數(shù)值確定需查找的表項所對應(yīng)的DRAM中的存儲體bank,例如最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在bank1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在bank2,最低兩位數(shù)值為10表示需查找的表項對應(yīng)存儲在bank3,最低兩位數(shù)值為11表示需查找的表項對應(yīng)存儲在bank4。查表索引的剩下的位數(shù)的全部或部分?jǐn)?shù)值表示查找的表項在對應(yīng)bank內(nèi)存儲單元地址。
E6、根據(jù)所述存儲地址在對應(yīng)bank中查詢表項。
確定需查找的表項所對應(yīng)的DRAM中的存儲體bank和在對應(yīng)內(nèi)存儲單元地址后,則可以根據(jù)所述存儲單元地址在對應(yīng)bank中的存儲單元讀取表項內(nèi)容。
E7、對查詢結(jié)果按序號進行重排序后輸出查詢結(jié)果,并將查詢結(jié)果存入高速緩存Cache中。
得到查詢結(jié)果后,進行重排序。重排序可以為設(shè)置一定空間的緩沖區(qū),并設(shè)置一定的緩存時間。排序單元得到查詢結(jié)果后,先將查詢結(jié)果存儲在緩沖區(qū)中,當(dāng)設(shè)置的緩存時間已經(jīng)到達或緩沖空間已經(jīng)或即將耗盡時,先從緩沖區(qū)中選出當(dāng)前最大序號,然后在與該最大序號之差不超過整個序號范圍一半的范圍內(nèi)選擇最小序號,然后將該最小序號的查詢結(jié)果輸出。同時,將查詢結(jié)果存入Cache中。對于步驟E2中直接在Cache中查找的結(jié)果,則不需要再次存入Cache中。
需要說明的是,該實施例步驟E2的Cache查找過程設(shè)置在步驟E1序號分配和步驟E3查詢請求放入請求隊列這兩個步驟之間,實際上也可以將Cache查找步驟設(shè)置在其它位置,例如設(shè)置在步驟E4取出請求隊列中所含的查詢請求之后。
為解決Cache空間耗盡時新查詢結(jié)果無法存入Cache的問題,可以采取新查詢結(jié)果進入時淘汰舊查詢結(jié)果的方法,為每個Cache中的查詢結(jié)果設(shè)置一個計時器,用于記錄該查詢結(jié)果在Cache中有多長時間沒有被查詢,當(dāng)記錄的時間超過一定時間后則刪除該查詢結(jié)果。另外,也可以采用對Cache中的查詢結(jié)果進行定時老化的方法,即設(shè)置一個公共定時時間,每次到達定時時間,則刪除Cache中的所有查詢結(jié)果,比如每10ms進行一次刪除Cache中所有查詢結(jié)果的操作。當(dāng)然,也可以將這兩種處理方式相結(jié)合。
本實施例采用Cache機制之后,對于查詢請求種類較少的情況,例如查詢請求基本集中在對應(yīng)bank1,而對應(yīng)其他bank的查詢請求比較少時,除了初次查詢請求外,那么后續(xù)查詢請求有可能在Cache中直接找到結(jié)果,這樣可保證在查詢請求種類較少的情況下也能達到比較高的查詢效率。
還需要說明的是,如果DRAM中已存儲的表項進行重新存儲時,同時查找Cache中是否存在相同索引的表項,若存在,則同時更新Cache中該表項內(nèi)容,這樣可以保證Cache中的查詢結(jié)果和DRAM中存儲的內(nèi)容是一致的。
前面介紹本發(fā)明實施例存儲方法時,提到本發(fā)明實施例存儲方法可以和現(xiàn)有的存儲方法結(jié)合起來應(yīng)用,即在某些bank中可以重復(fù)存儲同樣的表項,那么相應(yīng)的,本發(fā)明實施例一和實施二的查詢方法中,還可以根據(jù)此種表項存儲情況,結(jié)合現(xiàn)有技術(shù)的查詢方法進行應(yīng)用。
對于重復(fù)存儲了同樣表項的多個bank,或沒有重復(fù)存儲表項的單個bank,分別看作獨立的bank組。然后將請求隊列不再與各bank一一對應(yīng),而是與各bank組一一對應(yīng)。例如bank1和bank2中是重復(fù)存儲了同樣表項,屬于bank組1,bank3沒有重復(fù)存儲表項,屬于bank組2,bank4沒有重復(fù)存儲表項,屬于bank組3。查表索引的最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在bank組1,放入請求隊列1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在bank組2,放入請求隊列2,其他以此類推。在查詢請求的調(diào)度環(huán)節(jié)上則相應(yīng)設(shè)置兩個層次,第一個層次使用查表索引的若干位數(shù)值選擇bank組對應(yīng)的請求隊列,第二個層次對于bank組內(nèi)各bank含有重復(fù)存儲了同樣表項的情況下,將請求隊列中的查詢請求輪流分發(fā)到該bank組內(nèi)各bank中進行訪問操作,對于bank組只含單個bank且bank沒有重復(fù)存儲表項的情況,按本發(fā)明實施例一和實施二所述方法處理。可以看出,本發(fā)明實施例一和實施二的查詢方法結(jié)合現(xiàn)有技術(shù)的查詢方法進行應(yīng)用,可以提高查詢請求種類較少時的查表性能,相對現(xiàn)有技術(shù)也提高了DRAM空間利用率。
上述介紹了本發(fā)明實施例的存儲方法和查詢方法,相應(yīng)的,本發(fā)明實施例提供一種存儲控制器和查詢系統(tǒng)。
請參閱圖6,是本發(fā)明實施例存儲控制器結(jié)構(gòu)示意圖。
存儲控制器包括存儲體選擇單元101和表項配置單元102。存儲體選擇單元101,用于根據(jù)表項索引選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;表項配置單元102,用于根據(jù)表項索引將不同表項配置到所述存儲體選擇單元101選擇的存儲體的相應(yīng)存儲地址。
表項索引的部分位為存儲體選擇位,其數(shù)值對應(yīng)表項存儲的存儲體;所述表項索引除存儲體選擇位外的剩余位的全部或部分?jǐn)?shù)值對應(yīng)表項在所述存儲體中的存儲地址。例如動態(tài)隨機訪問存儲器含有4個存儲體,表項索引最低兩位數(shù)值為00表示對應(yīng)存儲體1,最低兩位數(shù)值為01表示對應(yīng)存儲體2,最低兩位數(shù)值為10表示對應(yīng)存儲體3,最低兩位數(shù)值為11表示對應(yīng)存儲體4。然后,采用表項索引剩下的位數(shù)的全部或部分?jǐn)?shù)值作為各存儲體內(nèi)存儲單元地址。
存儲體選擇單元101根據(jù)表項索引的存儲體選擇位的數(shù)值選擇不同表項存儲的不同存儲體,表項配置單元102根據(jù)表項索引除存儲體選擇位外的剩余位的全部或部分?jǐn)?shù)值作為各存儲體內(nèi)存儲單元地址,將不同表項配置到所述選擇的存儲體的存儲單元中。
需要說明的是,存儲控制器也可以根據(jù)需要將表項重復(fù)配置到不同存儲體中。
還需要說明的是,這里只是以動態(tài)隨機訪問存儲器含有4個存儲體為例進行說明但并不局限于此,例如動態(tài)隨機訪問存儲器含有8個存儲體,則在表項索引中可采用3位數(shù)值對應(yīng)存儲體。
本發(fā)明實施例還提供一種查詢系統(tǒng),請參閱圖7,是本發(fā)明實施例查詢系統(tǒng)結(jié)構(gòu)示意圖。
該查詢系統(tǒng)包括調(diào)度單元60和查詢單元70。
調(diào)度單元60,用于將接收的查詢請求分類存儲后按輪詢方式調(diào)度所述分類的查詢請求。查詢請求中含有查表索引,調(diào)度單元60根據(jù)查詢請求中的查表索引的最低兩位數(shù)值將查詢請求放入相應(yīng)的請求隊列中,請求隊列數(shù)目根據(jù)動態(tài)隨機訪問存儲器的存儲體數(shù)目確定,并且與存儲體一一對應(yīng)。例如查表索引最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在動態(tài)隨機訪問存儲器的存儲體1,放入請求隊列1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在存儲體2,放入請求隊列2,其他以此類推。需要說明的是,還可以通過其他方式存儲對應(yīng)的查詢請求,例如可以通過劃分出幾個存儲區(qū),將對應(yīng)不同存儲體的查詢請求放入不同存儲區(qū)。存儲區(qū)數(shù)目根據(jù)存儲體數(shù)目確定,并且與存儲體一一對應(yīng)。
調(diào)度單元60將查詢請求分類存儲到各請求隊列后,按輪詢方式調(diào)度所述分類的查詢請求。先調(diào)度請求隊列1,再調(diào)度請求隊列2,以此類推,調(diào)度出請求隊列后從請求隊列中取出所含的查詢請求。每次從調(diào)度出的請求隊列中取出一個查詢請求。
需要說明的是,如果動態(tài)隨機訪問存儲器的部分存儲體中重復(fù)存儲了同樣的表項,則對于重復(fù)存儲了同樣表項的多個存儲體,或沒有重復(fù)存儲表項的單個存儲體,可分別看作獨立的存儲體組。此時,請求隊列不再與各存儲體一一對應(yīng),而是與各存儲體組一一對應(yīng)。調(diào)度單元60在查詢請求的調(diào)度環(huán)節(jié)上則相應(yīng)設(shè)置兩個層次,第一個層次使用查表索引的若干位數(shù)值選擇存儲體組對應(yīng)的請求隊列,第二個層次對于存儲體組內(nèi)各存儲體含有重復(fù)存儲了同樣表項的情況下,將請求隊列中的查詢請求輪流分發(fā)到該存儲體組內(nèi)各存儲體中進行訪問操作。
查詢單元70,用于對動態(tài)隨機訪問存儲器存儲的表項進行查詢,不同表項存儲在動態(tài)隨機訪問存儲器的不同存儲體中,查詢單元70用于根據(jù)所述查詢請求中的查表索引確定表項在所述動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址在動態(tài)隨機訪問存儲器的存儲體中查詢表項。例如可以根據(jù)查詢請求中的查表索引的最低兩位數(shù)值確定需查找的表項所對應(yīng)的動態(tài)隨機訪問存儲器的存儲體,最低兩位數(shù)值為00表示需查找的表項對應(yīng)存儲在動態(tài)隨機訪問存儲器的存儲體1,最低兩位數(shù)值為01表示需查找的表項對應(yīng)存儲在存儲體2,其他以此類推。查表索引的剩下的位數(shù)的全部或部分?jǐn)?shù)值表示查找的表項在對應(yīng)存儲體內(nèi)存儲單元地址。根據(jù)所述存儲地址就可以在對應(yīng)的存儲體中查詢表項。
該查詢系統(tǒng)進一步包括序號分配單元80和排序單元81。序號分配單元80,用于為所述接收的查詢請求分配序號后傳送給調(diào)度單元60進行分類存儲;排序單元81,用于獲取查詢單元70的查詢結(jié)果后根據(jù)查詢請求的所述序號進行排序,并在排序后輸出。排序具體可以為,當(dāng)設(shè)置的緩存時間已經(jīng)到達或緩沖空間已經(jīng)或即將耗盡時,先從緩沖區(qū)中選出當(dāng)前最大序號,然后在與該最大序號之差不超過整個序號范圍一半的范圍內(nèi)選擇最小序號,然后將該最小序號的查詢結(jié)果輸出。
該查詢系統(tǒng)進一步包括高速緩存器90和預(yù)查單元91。高速緩存器90,用于存儲查詢單元70的查詢結(jié)果;預(yù)查單元91,用于接收已分配序號的查詢請求后根據(jù)所述查詢請求中的查表索引在高速緩存器90中查詢表項,若沒有查詢到相應(yīng)表項,將查詢請求傳送給調(diào)度單元60,若查到相應(yīng)表項,則將該查詢結(jié)果和序號傳送給排序單元81進行重排序。
綜上所述,現(xiàn)有存儲方法對于同一個表項,在多個存儲體bank中是重復(fù)存儲的,浪費了存儲空間,而本發(fā)明實施例提供的存儲方法和動態(tài)隨機訪問存儲器,通過選擇不同表項在動態(tài)隨機訪問存儲器中存儲的存儲體;將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體,從而將不同表項存儲到不同的存儲體bank中,各存儲體中存儲的表項都是不重復(fù)的,從而節(jié)約了存儲空間,還可以減少表項存儲及更新所花費的時間;現(xiàn)有查詢方法基于各bank重復(fù)存儲同樣表項的方法基礎(chǔ)上進行查找,對于DRAM存儲空間的利用率還是比較低,而本發(fā)明實施例提供的查詢方法和查詢系統(tǒng),基于將不同表項存儲到不同bank的存儲方法基礎(chǔ)上進行查找,通過將查詢請求分類存儲;按輪詢方式調(diào)度所述分類的查詢請求;根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址查詢表項,從而也能利用多bank輪流訪問的高效方式,提高DRAM的存儲空間利用率;進一步的,本發(fā)明實施例提供的技術(shù)方案還增加了高速緩存機制,通過高速緩存Cache存儲查詢結(jié)果,接收查詢請求后可以根據(jù)查表索引先到Cache中進行查找相關(guān)表項內(nèi)容。若在Cache中能查到含有相同索引的表項,則直接將該查詢結(jié)果和序號傳送給排序單元進行重排序;若在Cache中不能查到含有相同索引的表項,再將查詢請求進行分類,從而可以避免查詢請求種類較少時,對應(yīng)查找存儲體不夠均勻而導(dǎo)致的查表性能損失,也提高了查詢效率;更進一步的,本發(fā)明實施例還提供一種結(jié)合現(xiàn)有技術(shù)的查詢方法,對于重復(fù)存儲了同樣表項的多個bank,或沒有重復(fù)存儲表項的單個bank,分別看作獨立的bank組,然后將請求隊列不再與各bank一一對應(yīng),而是與各bank組一一對應(yīng)。在查詢請求的調(diào)度環(huán)節(jié)上則相應(yīng)設(shè)置兩個層次,第一個層次使用查表索引的若干位數(shù)值選擇bank組對應(yīng)的請求隊列,第二個層次對于bank組內(nèi)各bank含有重復(fù)存儲了同樣表項的情況下,將請求隊列中的查詢請求輪流分發(fā)到該bank組內(nèi)各bank中進行訪問操作,從而可以提高查詢請求種類較少時的查表性能,相對現(xiàn)有技術(shù)也提高了DRAM空間利用率。
以上對本發(fā)明實施例所提供的存儲、查詢方法及存儲控制器和查詢系統(tǒng)進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明實施例的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明實施例的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實施例的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明實施例的限制。
權(quán)利要求
1.一種存儲方法,其特征在于,包括選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體。
2.根據(jù)權(quán)利要求1所述的存儲方法,其特征在于所述表項的表項索引的部分位為存儲體選擇位;所述選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體具體為根據(jù)所述表項索引的所述存儲體選擇位的數(shù)值選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;所述將不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體具體為根據(jù)所述表項索引中除所述存儲體選擇位的剩余位的全部或部分?jǐn)?shù)值確定所述不同表項在所述選擇的存儲體中的存儲地址,并按照所述存儲地址進行存儲。
3.一種查詢方法,其特征在于,包括接收查詢表項的表項查詢請求;所述表項的存儲方式為不同的所述表項存儲在動態(tài)隨機訪問存儲器的不同存儲體中;將所述表項查詢請求分類;按輪詢方式調(diào)度所述分類的查詢請求;根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址查詢表項。
4.根據(jù)權(quán)利要求3所述的查詢方法,其特征在于,所述查表索引的部分位為存儲體選擇位;所述根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址具體為根據(jù)查詢請求中的查表索引的所述存儲體選擇位的數(shù)值確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體;根據(jù)所述查詢請求中的查表索引中除所述存儲體選擇位的剩余位的全部或部分?jǐn)?shù)值確定表項在所屬存儲體的存儲地址。
5.根據(jù)權(quán)利要求3或4所述的查詢方法,其特征在于所述將表項查詢請求分類具體指,根據(jù)查詢請求中的查表索引將查詢請求存入與存儲體或與存儲體組對應(yīng)的隊列。
6.根據(jù)權(quán)利要求3或4所述的查詢方法,其特征在于在所述將表項查詢請求分類存儲之前進一步包括,為所述查詢請求分配序號;在所述根據(jù)存儲地址查詢表項之后進一步包括,根據(jù)查詢請求的所述序號將查詢表項得到的結(jié)果進行排序。
7.根據(jù)權(quán)利要求5所述的查詢方法,其特征在于若查詢請求是存入與存儲體組對應(yīng)的隊列時,并且該存儲體組內(nèi)的存儲體重復(fù)存儲同樣表項,則所述按輪詢方式調(diào)度所述分類的查詢請求具體為將該隊列中的查詢請求輪流分發(fā)到存儲體組內(nèi)各存儲體。
8.根據(jù)權(quán)利要求3所述的查詢方法,其特征在于,所述根據(jù)存儲地址查詢表項之后進一步包括將查詢表項得到的查詢結(jié)果存入高速緩存器;所述將表項查詢請求分類存儲之前進一步包括根據(jù)查詢請求中的查表索引在高速緩存器查詢表項,并確定沒有查詢到相應(yīng)表項。
9.一種存儲控制器,其特征在于用于選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體,并將所述不同表項配置到所述選擇的存儲體。
10.根據(jù)權(quán)利要求9所述的存儲控制器,其特征在于,進一步包括存儲體選擇單元,用于根據(jù)表項索引的存儲體選擇位的數(shù)值選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;表項配置單元,用于根據(jù)表項索引中除所述存儲體選擇位的剩余位的全部或部分?jǐn)?shù)值確定所述不同表項在所述選擇的存儲體中的存儲地址,并按照所述存儲地址進行存儲。
11.一種查詢系統(tǒng),其特征在于,包括調(diào)度單元,用于將接收的查詢請求分類存儲后按輪詢方式調(diào)度所述分類的查詢請求;查詢單元,用于對動態(tài)隨機訪問存儲器存儲的表項進行查詢,不同表項存儲在動態(tài)隨機訪問存儲器的不同存儲體中,所述查詢單元根據(jù)調(diào)度單元調(diào)度的所述查詢請求中的查表索引確定表項在所述動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址在所述動態(tài)隨機訪問存儲器的存儲體中查詢表項。
12.根據(jù)權(quán)利要求11所述的查詢系統(tǒng),其特征在于,進一步包括序號分配單元,用于為所述接收的查詢請求分配序號后傳送給所述調(diào)度單元進行分類存儲;排序單元,用于獲取所述查詢單元的查詢結(jié)果后根據(jù)所述序號分配單元為查詢請求分配的所述序號進行排序。
13.根據(jù)權(quán)利要求11或12所述的查詢系統(tǒng),其特征在于,進一步包括高速緩存器,用于存儲所述查詢單元的查詢結(jié)果;預(yù)查單元,用于接收查詢請求后根據(jù)所述查詢請求中的查表索引在高速緩存器查詢表項,若沒有查詢到相應(yīng)表項,將查詢請求傳送給所述調(diào)度單元。
全文摘要
本發(fā)明實施例公開一種存儲方法,包括選擇不同表項在動態(tài)隨機訪問存儲器中存儲的不同存儲體;將所述不同表項存儲到所述選擇的動態(tài)隨機訪問存儲器的存儲體。基于所述存儲方法,本發(fā)明實施例提供一種查詢方法,包括將表項的查詢請求分類存儲;按輪詢方式調(diào)度所述分類的查詢請求;根據(jù)查詢請求中的查表索引確定表項在動態(tài)隨機訪問存儲器中所屬的存儲體和確定表項在所屬存儲體的存儲地址,并根據(jù)所述存儲地址查詢表項。相應(yīng)的,本發(fā)明實施例還提供一種存儲控制器和查詢系統(tǒng)。本發(fā)明實施例提供的技術(shù)方案能夠節(jié)省存儲空間,減少表項存儲所花費的時間,并提高存儲空間利用率。
文檔編號G06F17/30GK101021814SQ20071008751
公開日2007年8月22日 申請日期2007年3月16日 優(yōu)先權(quán)日2007年3月16日
發(fā)明者楊雄 申請人:華為技術(shù)有限公司