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