一種數(shù)據(jù)查詢方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例涉及數(shù)據(jù)處理【技術(shù)領域】,尤其涉及一種數(shù)據(jù)查詢方法及系統(tǒng)。該方法包括:接收待查詢數(shù)據(jù);對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中接收的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同;依據(jù)比較結(jié)果確定查詢結(jié)果,并輸出查詢結(jié)果。本發(fā)明實施例在同一時鐘能夠查詢一個數(shù)位對應的數(shù)字,從而保證每個待查詢數(shù)據(jù)的最長查詢時間是確定的;另外,本發(fā)明實施例中預設數(shù)據(jù)是存儲于存儲器中而不是存儲于寄存器中,節(jié)省了芯片資源,從而降低硬件成本。
【專利說明】一種數(shù)據(jù)查詢方法及系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)處理【技術(shù)領域】,尤其涉及一種數(shù)據(jù)查詢方法及系統(tǒng)。
【背景技術(shù)】
[0002]在電視機頂盒的軟件中,從云端接收下來的電視信號會包含一個長度可能很長的節(jié)目(Program ID, PID)列表,可能會有多用戶端在點播,因此需要響應多用戶端的查詢請求,即查詢PID列表中是否存在匹配用戶請求的PID。
[0003]現(xiàn)有的軟件傳統(tǒng)查詢方法中,通常逐個讀取RAM (Ramdom Access Memory,易揮發(fā)性隨機存取存儲)中的預設數(shù)據(jù),并將待查詢數(shù)據(jù)與各預設數(shù)據(jù)一一比對。這種做法簡單,但是隨著預設數(shù)據(jù)的個數(shù)的增加,軟件消耗在比對上的時間會越來越多。圖1是軟件傳統(tǒng)查詢方法的示意圖,如圖1所示,存儲器中存儲有N個預設數(shù)據(jù),在每個時鐘點分別從存儲器中讀取一個預設數(shù)據(jù),并比較該預設數(shù)據(jù)是否為待查詢數(shù)據(jù),即該方法需要TN個時鐘才能完成對待查詢數(shù)據(jù)的查詢。
[0004]而后衍生出相關的各類加速算法,例如,軟件二分法查詢將RAM中的數(shù)據(jù)先進行大小排序,如從小到大排序,然后,用二分法進行讀取比對,即讀取N/2地址中的數(shù)據(jù),和用戶數(shù)據(jù)比對,若小于,則下次的查詢范圍縮小到I?N/2之間,若大于,則下次的查詢范圍縮小到N/2?N之間。依次類推,直至找到或者沒有地址空間可查。
[0005]軟件二分法查詢可以大幅度改善查詢時間這個問題,但是,它將大量的時間用在了 RAM數(shù)據(jù)的大小排序中,對于靜態(tài)固定的比對數(shù)據(jù)表,這種方法也許可以接受,但是對于會隨時間變化,實時動態(tài)更新比對數(shù)據(jù)表,如Demux的PID Filter,這樣的時間消耗將是不被允許的,這種方法并不能從根本解決軟件的困境。
[0006]現(xiàn)有的數(shù)據(jù)查詢方法還包括硬件并行查詢方法,其中預設數(shù)據(jù)不存放在RAM中,而是存放在開放式的寄存器(Register,REG)中。圖2是硬件并行查詢方法的示意圖,如圖2所示,接收待查詢數(shù)據(jù)后,在一個時鐘點即能夠完成待查詢數(shù)據(jù)的查詢操作。這種做法最大程度的節(jié)省了時間,但是隨著比對的預設數(shù)據(jù)個數(shù)的增加,硬件會消耗越來越多寄存器資源,導致芯片面積增大。
[0007]綜上,目前尚且缺乏綜合考慮時間成本消耗和硬件成本消耗的數(shù)據(jù)查詢方法。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的是提出一種數(shù)據(jù)查詢的方法及系統(tǒng),以提供一種綜合考慮時間成本消耗和硬件成本消耗的數(shù)據(jù)查詢方式。
[0009]一方面,本發(fā)明提供了一種數(shù)據(jù)查詢方法,包括:
[0010]接收待查詢數(shù)據(jù);
[0011]對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同;
[0012]依據(jù)比較結(jié)果確定查詢結(jié)果,并輸出查詢結(jié)果。
[0013]另一方面,本發(fā)明提供了一種數(shù)據(jù)查詢系統(tǒng),包括存儲器、比較器和寄存器,其中,
[0014]所述存儲器,用于向所述比較器發(fā)送各預設數(shù)據(jù);
[0015]所述比較器,用于執(zhí)行如下操作:接收待查詢數(shù)據(jù);對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從所述存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同;向寄存器發(fā)送所述比較結(jié)果;
[0016]所述寄存器,用于接收并依據(jù)所述比較結(jié)果確定查詢結(jié)果,且輸出查詢結(jié)果。
[0017]本發(fā)明實施例中提供的數(shù)據(jù)查詢方法及系統(tǒng),提供了一種綜合考慮時間成本消耗和硬件成本消耗的數(shù)據(jù)查詢方式。本發(fā)明實施例中,對于待查詢數(shù)據(jù)中的每個數(shù)位,同時比較所述待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字,與從存儲器中接收的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,即在同一時鐘能夠查詢一個數(shù)位對應的數(shù)字,從而保證每個待查詢數(shù)據(jù)的最長查詢時間是確定的;另外,本發(fā)明實施例中預設數(shù)據(jù)是存儲于存儲器中而不是存儲于寄存器中,節(jié)省了芯片資源,從而降低硬件成本。
【專利附圖】
【附圖說明】
[0018]此處所說明的附圖用來提供對本發(fā)明實施例的進一步理解,構(gòu)成本發(fā)明實施例的一部分,并不構(gòu)成對本發(fā)明實施例的限定。在附圖中:
[0019]圖1是軟件傳統(tǒng)查詢方法的示意圖;
[0020]圖2是硬件并行查詢方法的示意圖;
[0021]圖3是本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法的實現(xiàn)流程圖;
[0022]圖4是本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法的示意圖;
[0023]圖5是本發(fā)明第一實施例中提供的確定起始數(shù)位的方法的示意圖;
[0024]圖6是本發(fā)明第一實施例中的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖;
[0025]圖7是本發(fā)明第二實施例中提供的數(shù)據(jù)查詢方法的實現(xiàn)流程圖;
[0026]圖8是本發(fā)明第二實施例中提供的雙數(shù)據(jù)并發(fā)查詢系統(tǒng)的示意圖;
[0027]圖9是本發(fā)明第三實施例中提供的數(shù)據(jù)查詢方法的示意圖;
[0028]圖10是本發(fā)明第三實施例中提供的數(shù)據(jù)查詢結(jié)果示意圖;
[0029]圖11是各數(shù)據(jù)查詢方法的第一效果示意圖;
[0030]圖12是各數(shù)據(jù)查詢方法的第二效果示意圖;
[0031]圖13是各數(shù)據(jù)查詢方法的第三效果示意圖。
【具體實施方式】
[0032]下面結(jié)合附圖及具體實施例對本發(fā)明實施例進行更加詳細與完整的說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅用于解釋本發(fā)明實施例,而非對本發(fā)明實施例的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明實施例相關的部分而非全部內(nèi)容。
[0033]第一實施例:
[0034]圖3是本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法的實現(xiàn)流程圖,圖6是本發(fā)明第一實施例中的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)用于執(zhí)行本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法。如圖3所示,該實現(xiàn)流程包括:
[0035]步驟11、接收待查詢數(shù)據(jù)。
[0036]其中,待查詢數(shù)據(jù)的位數(shù)可以為預設固定值,且待查詢數(shù)據(jù)中每個數(shù)位分別對應于一個數(shù)字,如待查詢數(shù)據(jù)為二進制數(shù)字10010,則該待查詢數(shù)據(jù)的位數(shù)是5,且該待查詢數(shù)據(jù)包括數(shù)位(bit)O, bitl, bit2, bit3和bit4共5個數(shù)位(從右到左),且bitO對應的數(shù)字為0,bitl對應的數(shù)字為1,bit2對應的數(shù)字為0,bit3對應的數(shù)字為0,bit4對應的數(shù)字為I。
[0037]步驟12、對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同。
[0038]對于待查詢數(shù)據(jù)中的任一數(shù)位,在一個時鐘內(nèi)將該數(shù)位對應的數(shù)字,與從存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字進行比較。因此,在預設值個時鐘內(nèi)能夠完成待查詢數(shù)據(jù)中每個數(shù)位的比較操作,其中預設值為待查詢數(shù)據(jù)的位數(shù)。
[0039]圖4是本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法的示意圖,如圖4所示,對于待查詢數(shù)據(jù)10010(從右到左:bit0對應的數(shù)字為0,bitl對應的數(shù)字為1,bit2對應的數(shù)字為O, bit3對應的數(shù)字為0,bit4對應的數(shù)字為I),在第一時鐘點從存儲器中獲取各預設數(shù)據(jù)中bito對應的各數(shù)字與待查詢數(shù)據(jù)中bito對應的數(shù)字O進行比較,在第二時鐘點從存儲器中獲取各預設數(shù)據(jù)中bitl對應的各數(shù)字與待查詢數(shù)據(jù)中bitl對應的數(shù)字I進行比較,依次類推,在第五時鐘點獲取各預設數(shù)據(jù)中bit4對應的各數(shù)字與待查詢數(shù)據(jù)中bit4對應的數(shù)字I進行比較。
[0040]需要說明的是,本發(fā)明實施例中查詢待查詢數(shù)據(jù)時,除了上述提供的從bitO開始比較外,也可以從其他數(shù)位開始比較。
[0041]圖5是本發(fā)明第一實施例中提供的確定起始數(shù)位的方法的示意圖,如圖5所示,接收待比較數(shù)據(jù)時可以隨機設定起始數(shù)位,只需確保待比較數(shù)據(jù)中每個數(shù)位對應的數(shù)字均被比較即可,如對于第一待查詢數(shù)據(jù)依次查詢bit4、bitO、bitl、bit2和bit3,對于第二待查詢數(shù)據(jù)依次查詢bit0、bitl、bit2、bit3和bit4,對于第三待查詢數(shù)據(jù)分別查詢bit2、bit3、bit4、bitO 和 bitlο
[0042]其中,對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中接收的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,可以包括:同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與所述各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,并重復執(zhí)行該比較操作直到所述待查詢數(shù)據(jù)中每一個數(shù)位對應的數(shù)字均被比較為止。
[0043]其中,同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與所述各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,并重復執(zhí)行該比較操作直到所述待查詢數(shù)據(jù)中每一個數(shù)位對應的數(shù)字均被比較為止,可以包括:
[0044]A、將所述待查詢數(shù)據(jù)對應的計數(shù)器設置為所述待查詢數(shù)據(jù)的位數(shù)。
[0045]接收到待查詢數(shù)據(jù)后,將計數(shù)器設置為待查詢數(shù)據(jù)的位數(shù),其中計數(shù)器的初始狀態(tài)為零。
[0046]B、同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述計數(shù)器減一,直到所述計數(shù)器為零時停止執(zhí)行比較操作。
[0047]重復執(zhí)行各數(shù)位對應的比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將計數(shù)器減一,當計數(shù)器為零時,停止執(zhí)行比較操作。本發(fā)明實施例中通過計數(shù)器控制比較器的工作狀態(tài),在計數(shù)器為零時,停止執(zhí)行比較操作,以節(jié)省能源消耗。
[0048]其中,所述各預設數(shù)據(jù)中相同數(shù)位對應的各數(shù)字存儲于存儲器中的同一存儲地址。
[0049]對于任意一個數(shù)位,各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字均存儲于存儲器中的該數(shù)位對應的存儲地址。如預設數(shù)據(jù)的位數(shù)為5,那么每個預設數(shù)據(jù)的bitO對應的數(shù)字均存儲于存儲器中地址O空間,每個預設數(shù)據(jù)的bitl對應的數(shù)字均存儲于存儲器中地址I空間,依次類推,每個預設數(shù)據(jù)的bit4對應的數(shù)字均存儲于存儲器中地址4空間。
[0050]因此,只需從存儲器中獲取某個地址對應的各數(shù)字就能夠獲得預設數(shù)據(jù)中某個數(shù)位對應的各數(shù)字,使得在同一時鐘內(nèi)能夠快速獲取各預設數(shù)據(jù)中同一數(shù)位對應的各數(shù)字,提高比較器獲取預設數(shù)據(jù)的效率,從而提高待查詢數(shù)據(jù)的查詢效率。
[0051]步驟13、依據(jù)比較結(jié)果確定查詢結(jié)果,并輸出查詢結(jié)果。
[0052]其中,依據(jù)比較結(jié)果確定查詢結(jié)果,可以包括:將每個數(shù)位對應的比較結(jié)果均為相同的預設數(shù)據(jù)確定為所述待查詢數(shù)據(jù)對應的查詢結(jié)果。即將與待查詢數(shù)據(jù)相同的預設數(shù)據(jù)確定為待查詢數(shù)據(jù)的查詢結(jié)果,存儲并輸出查詢結(jié)果。
[0053]其中,接收待查詢數(shù)據(jù)之后,還可以包括:解碼器解析所述待查詢數(shù)據(jù),得到所述待查詢數(shù)據(jù)中各數(shù)位對應的各數(shù)字,并向比較器發(fā)送各數(shù)字,使所述比較器執(zhí)行如下比較操作:對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中接收獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同。
[0054]解碼器獲得待查詢數(shù)據(jù)中各數(shù)位對應的各數(shù)字,向各比較器發(fā)送該數(shù)字,與從存儲器中接收獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字進行比較,如將解析得到的bitO對應的數(shù)字發(fā)送給各比較器,同時從存儲器中獲取的各預設數(shù)據(jù)中O數(shù)位對應的數(shù)字發(fā)送給各比較器,進行兩兩比較。
[0055]需要說明的是,本發(fā)明實施例中還提供一種數(shù)據(jù)查詢系統(tǒng),用于執(zhí)行本發(fā)明任意實施例中提供的數(shù)據(jù)查詢方法。
[0056]圖6是本發(fā)明第一實施例中提供的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖,該數(shù)據(jù)查詢系統(tǒng)用于執(zhí)行本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法。如圖6所示,該數(shù)據(jù)查詢系統(tǒng)包括:I個解碼器、I個計數(shù)器、I個存儲器、比較器和寄存器,其中,比較器的數(shù)目和寄存器的數(shù)目均與預設數(shù)據(jù)的個數(shù)相同,且所述存儲器,于向所述比較器發(fā)送各預設數(shù)據(jù);所述比較器,用于執(zhí)行如下操作:接收待查詢數(shù)據(jù);對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從所述存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同;向寄存器發(fā)送所述比較結(jié)果;所述寄存器,用于接收并依據(jù)所述比較結(jié)果確定查詢結(jié)果,且輸出查詢結(jié)果。
[0057]本發(fā)明第一實施例中提供的數(shù)據(jù)查詢方法,在同一時鐘能夠查詢一個數(shù)位對應的數(shù)字,從而保證每個待查詢數(shù)據(jù)的最長查詢時間是確定的,且預設數(shù)據(jù)是存儲于存儲器中而不是存儲于寄存器中,節(jié)省了芯片資源。
[0058]第二實施例:
[0059]圖7是本發(fā)明第二實施例中提供的數(shù)據(jù)查詢方法的實現(xiàn)流程圖,如圖7所示,本發(fā)明實施例中提供的數(shù)據(jù)查詢方法,包括:
[0060]步驟21、接收第一待查詢數(shù)據(jù),將第一待查詢數(shù)據(jù)對應的第一計數(shù)器設置為所述第一待查詢數(shù)據(jù)的位數(shù)。
[0061]其中,第一待查詢數(shù)據(jù)的位數(shù)與預設數(shù)據(jù)的位數(shù)相同。
[0062]步驟22、同時比較所述第一待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述第一計數(shù)器減一。
[0063]步驟23、接收第二待查詢數(shù)據(jù),將第二待查詢數(shù)據(jù)對應的第二計數(shù)器設置為所述第二待查詢數(shù)據(jù)的位數(shù)。
[0064]在第一待查詢數(shù)據(jù)的查詢過程中,接收第二待查詢數(shù)據(jù),并將第二待查詢數(shù)據(jù)對應的第二計數(shù)器設置為所述第二待查詢數(shù)據(jù)的位數(shù)。其中,第一待查詢數(shù)據(jù)的位數(shù)和所述第二待查詢數(shù)據(jù)的位數(shù)相同。
[0065]步驟24、對于所述第一待查詢數(shù)據(jù)中任意一個未被比較的數(shù)位,同時比較所述第一待查詢數(shù)據(jù)和所述第二待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述第一待查詢數(shù)據(jù)對應的第一計數(shù)器減一,并將第二計數(shù)器減一,直到所述第一計數(shù)器為零時停止執(zhí)行對第一待查詢數(shù)據(jù)的比較操作。
[0066]接收第二待查詢數(shù)據(jù)之后,對于第一待查詢數(shù)據(jù)中任意一個未被比較的數(shù)位,同時比較第一待查詢數(shù)據(jù)和第二待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作,將第一計數(shù)器和第二計數(shù)器均減一,直到第一計數(shù)器為零時,停止執(zhí)行對第一待查詢數(shù)據(jù)的比較操作,繼續(xù)執(zhí)行步驟25。
[0067]步驟25、對于所述第二待查詢數(shù)據(jù)中未被比較的數(shù)位,同時比較所述第二待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述第二計數(shù)器減一,直到所述第二計數(shù)器為零時停止執(zhí)行對第二待查詢數(shù)據(jù)的比較操作。
[0068]圖8是本發(fā)明第二實施例中提供的雙數(shù)據(jù)并發(fā)查詢系統(tǒng)的示意圖,如圖8所示,雙數(shù)據(jù)并發(fā)查詢系統(tǒng)包括兩個數(shù)據(jù)查詢單元,其中每個數(shù)據(jù)查詢單元分別包括一個解碼器,M個比較器和M個寄存器(其中,M為預設數(shù)據(jù)的個數(shù)),且這兩個數(shù)據(jù)查詢單元共用同一個存儲器,即存儲器與該系統(tǒng)中每個比較器連接。
[0069]需要說明的是,本發(fā)明實施例中對數(shù)據(jù)并發(fā)查詢系統(tǒng)中數(shù)據(jù)查詢單元的個數(shù)不作具體限定,只需每個數(shù)據(jù)查詢單元中的比較器均連接于相同的存儲器即可。
[0070]本發(fā)明第二實施例中提高的數(shù)據(jù)查詢方法以及該方法對應的數(shù)據(jù)查詢系統(tǒng),能夠并發(fā)執(zhí)行對多個待查詢數(shù)據(jù)的查詢操作,從而提高數(shù)據(jù)查詢效率。
[0071]第三實施例:
[0072]圖9是本發(fā)明第三實施例中提供的數(shù)據(jù)查詢方法的示意圖,圖10是本發(fā)明第三實施例中提供的數(shù)據(jù)查詢結(jié)果示意圖。如圖9所示,預設數(shù)據(jù)包括:00011、10000、01001、11000U000U00111和10110等,圖10中示出了圖9所示查詢方法的結(jié)果,結(jié)合圖9和圖10所示,Ti I時刻開始查詢第一待查詢數(shù)據(jù)10010,Ti 2時刻開始查詢第二待查詢數(shù)據(jù)00000,Ti 4時刻開始查詢第三待查詢數(shù)據(jù)11000,其中,第一待查詢數(shù)據(jù)的查詢時間為T' 1-Ti 5,第二待查詢數(shù)據(jù)的查詢時間為T' 2-T/ 6,及第三待查詢數(shù)據(jù)的查詢時間為T' 4-Τ' 8,S卩,每個待查詢數(shù)據(jù)的時間長度均等于預設數(shù)據(jù)的位數(shù)。
[0073]需要說明的是,第三實施例是假設系統(tǒng)在多次查詢過程中的某一次查詢,而不是第一次查詢,因此系統(tǒng)查詢狀態(tài)在Iw O時刻停留在bit4,而不是bitO。
[0074]查詢效果示例一:
[0075]在待查詢數(shù)據(jù)的位數(shù)為5,預設數(shù)據(jù)的個數(shù)為20時,采用軟件傳統(tǒng)查詢方法、軟件二分法查詢、硬件并行查詢以及本發(fā)明實施例中提供的數(shù)據(jù)查詢方法查詢一個待查詢數(shù)據(jù)所消耗的時間、硬件資源和存儲數(shù)據(jù)所需的成本如圖11所示。在待查詢數(shù)據(jù)的位數(shù)為10,預設數(shù)據(jù)的個數(shù)為600時,采用軟件傳統(tǒng)查詢方法、軟件二分法查詢、硬件并行查詢以及本發(fā)明實施例中提供的數(shù)據(jù)查詢方法查詢一個待查詢數(shù)據(jù)所消耗的時間、硬件資源和存儲數(shù)據(jù)所需的成本如圖12所示。
[0076]由圖11和圖12可知,當待查詢數(shù)據(jù)的位數(shù)成倍增長時,各數(shù)據(jù)查詢方法的效果如下:軟件傳統(tǒng)查詢方法所需的查詢比較時間是最長的;硬件并行查詢方法,雖然查詢比較時間只有I個時鐘點,但是硬件資源的消耗相當厲害;軟件二分法看上去是在查詢比較時間和硬件資源上最合理的,但是需要動態(tài)更新一張預存數(shù)據(jù)表所需消耗的時間是要遠大于其它幾種方法;本發(fā)明實施例中提供的數(shù)據(jù)查詢方法所用的查詢比較時間僅比軟件二分法多了幾個時鐘點,它所用的硬件資源相比軟件方法不同的是,軟件所用的是CPU專用的比較器,而本發(fā)明實施例中用的是Mbit的比較器(M等于預設數(shù)據(jù)的個數(shù)),Ibit位比較器一般用一個異或門(XOR)即可實現(xiàn),對于類似機頂盒這種百萬門級的芯片來說,這樣的硬件開銷是在可接受范圍內(nèi)的;最后,本發(fā)明實施例初始化一張預存數(shù)據(jù)表所需消耗的時間5*M個時鐘點,相對于傳統(tǒng)方式看上去多了點,但是這只是針對預存數(shù)據(jù)是一個一個依次得到的情況下,Max(最多)所用的時鐘點,但是實際上,若是更新時能一次性得到多個數(shù)據(jù),那么這個時間是可以減少的。
[0077]查詢效果示例二:
[0078]在待查詢數(shù)據(jù)的位數(shù)為5,預設數(shù)據(jù)的個數(shù)為20,采用軟件傳統(tǒng)查詢方法、軟件二分法查詢、硬件并行查詢以及本發(fā)明實施例中提供的數(shù)據(jù)查詢方法查詢兩個待查詢數(shù)據(jù)所消耗的時間、硬件資源和存儲數(shù)據(jù)所需的成本如圖13所示。
[0079]比較圖11和圖13可知,當待查詢數(shù)據(jù)成倍增長時,各數(shù)據(jù)查詢方法的效果如下:軟件傳統(tǒng)查詢方法和軟件二分法,第二待查詢數(shù)據(jù)最多可能要多等一倍的時間,此時,軟件二分法在查詢比較時間上的優(yōu)勢將不復存在;硬件并行查詢方法,查詢比較時間不變,而比較器和存儲結(jié)果的寄存器是成倍增長的,使得原本資源的消耗更為厲害;本發(fā)明實施例中提供的方法,所用的查詢比較時間是固定的,所以在多數(shù)據(jù)并發(fā)查詢的時候就體現(xiàn)出查詢時間短的優(yōu)勢了 ;另一方面,它所用的比較器和存儲結(jié)果的寄存器資源也是隨著待查詢數(shù)據(jù)增長的,但其數(shù)量要遠小于硬件并行查詢方法,這就要看芯片設計的規(guī)模和需求而定了一選取查詢時間最優(yōu)的,還是選取資源最優(yōu)的,一般情況下,對于類似機頂盒這種百萬門級芯片的硬件開銷,本發(fā)明實施例所用的這些資源還是可以接受的。
[0080]另外,需要說明的是,以上分析存在幾點假設:
[0081]I)軟件比較、存儲一個數(shù)據(jù)的時鐘點單元和硬件比較、存儲一個數(shù)據(jù)的時鐘點單元是相同的;
[0082]2)軟件二分法采用的是二分查找算法:讀取N/2地址中的預存數(shù)據(jù),和待查詢數(shù)據(jù)比對,若等于,則找到該數(shù)據(jù),若小于,則下次的查詢范圍縮小到I?N/2之間,若大于,則下次的查詢范圍縮小到N/2?N之間,依次類推,直至找到或者沒有地址空間可查;所以最少比較用時是I個時鐘點,最大比較用時是M個時鐘點;
[0083]3)軟件的預存數(shù)據(jù)存儲在RAM中,當軟件需要比較、更新預存數(shù)據(jù)時,將預存數(shù)據(jù)表讀入到CPU高速緩存中,處理結(jié)束后再寫入RAM中,過程中沒有考慮總線對于數(shù)據(jù)存儲時間的影響,以此計算,一次比較(一讀)Min(最少)用時M個時鐘點,一次完整的數(shù)據(jù)更新(一讀一寫)Min (最少)用時2*M個時鐘點,(M等于預設數(shù)據(jù)的個數(shù))。
[0084]然而在實際芯片工作時,軟件在高速緩存中比較的速度是要高于硬件的比較的速度,數(shù)據(jù)在CPU中處理的時間很少;而軟件的預存數(shù)據(jù)是存儲在總線的RAM上的,軟件訪問RAM 一般是需要通過總線的,相比硬件一般不通過總線,是和RAM直接連接的,軟件訪問RAM的速度,主要取決于總線對CPU (Central Processing Unit,中央處理器)的響應速度,例AXI總線,最快的CPU響應時間也會比硬件響應時間長很多,所以硬件訪問、刷新RAM的速度要明顯大于軟件,軟件處理一次比較的時間不會少于硬件,而硬件刷新RAM的預存數(shù)據(jù)時間也不會像看到的差別這么多。
[0085]綜上可見,本發(fā)明提供的數(shù)據(jù)查詢方法在有限的可實現(xiàn)的資源下,最大程度地滿足了多用戶大容量的查詢需求,在實際應用環(huán)境中,如PID過濾器,性價比還是很高的。
[0086]以上所述僅為本發(fā)明實施例的優(yōu)選實施例,并不用于限制本發(fā)明實施例,對于本領域技術(shù)人員而言,本發(fā)明實施例可以有各種改動和變化。凡在本發(fā)明實施例的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本發(fā)明實施例的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)查詢方法,其特征在于,包括: 接收待查詢數(shù)據(jù); 對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同; 依據(jù)比較結(jié)果確定查詢結(jié)果,并輸出查詢結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中接收的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,包括: 同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與所述各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,并重復執(zhí)行該比較操作直到所述待查詢數(shù)據(jù)中每一個數(shù)位對應的數(shù)字均被比較為止。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與所述各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,并重復執(zhí)行該比較操作直到所述待查詢數(shù)據(jù)中每一個數(shù)位對應的數(shù)字均被比較為止,包括: 將所述待查詢數(shù)據(jù)對應的計數(shù)器設置為所述待查詢數(shù)據(jù)的位數(shù); 同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述計數(shù)器減一,直到所述計數(shù)器為零時停止執(zhí)行比較操作。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述各預設數(shù)據(jù)中相同數(shù)位對應的各數(shù)字存儲于存儲器中的同一存儲地址。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,接收待查詢數(shù)據(jù)之后,還包括: 解碼器解析所述待查詢數(shù)據(jù),得到所述待查詢數(shù)據(jù)中各數(shù)位對應的各數(shù)字,并向比較器發(fā)送各數(shù)字,使所述比較器執(zhí)行如下比較操作:對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從存儲器中接收獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述各預設數(shù)據(jù)的個數(shù)大于所述待查詢數(shù)據(jù)的位數(shù)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,依據(jù)比較結(jié)果確定查詢結(jié)果,包括: 將每個數(shù)位對應的比較結(jié)果均為相同的預設數(shù)據(jù)確定為所述待查詢數(shù)據(jù)對應的查詢結(jié)果。
8.根據(jù)權(quán)利要求3所述的方法,其特征在于,若所述待查詢數(shù)據(jù)為第一待查詢數(shù)據(jù), 同時比較所述待查詢數(shù)據(jù)中的任意一個數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述計數(shù)器減一,直到所述計數(shù)器為零時停止執(zhí)行比較操作,包括: 接收第二待查詢數(shù)據(jù)時,將所述第二待查詢數(shù)據(jù)對應的第二計數(shù)器設置為所述第二待查詢數(shù)據(jù)的位數(shù); 對于所述第一待查詢數(shù)據(jù)中任意一個未被比較的數(shù)位,同時比較所述第一待查詢數(shù)據(jù)和所述第二待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字,與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述第一待查詢數(shù)據(jù)對應的第一計數(shù)器和所述第二計數(shù)器減一,直到所述第一計數(shù)器為零時停止執(zhí)行對第一待查詢數(shù)據(jù)的比較操作; 對于所述第二待查詢數(shù)據(jù)中未被比較的數(shù)位,同時比較所述第二待查詢數(shù)據(jù)中該數(shù)位對應的數(shù)字與各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同,重復執(zhí)行該比較操作,且每執(zhí)行一個數(shù)位對應的比較操作將所述第二計數(shù)器減一,直到所述第二計數(shù)器為零時停止執(zhí)行對第二待查詢數(shù)據(jù)的比較操作。
9.一種數(shù)據(jù)查詢系統(tǒng),其特征在于,該系統(tǒng)包括存儲器、比較器和寄存器,其中, 所述存儲器,用于向所述比較器發(fā)送各預設數(shù)據(jù); 所述比較器,用于執(zhí)行如下操作:接收待查詢數(shù)據(jù);對于所述待查詢數(shù)據(jù)中的每個數(shù)位,同時比較該數(shù)位對應的數(shù)字,與從所述存儲器中獲取的各預設數(shù)據(jù)中該數(shù)位對應的各數(shù)字是否相同;向寄存器發(fā)送所述比較結(jié)果; 所述寄存器,用于接收并依據(jù)所述比較結(jié)果確定查詢結(jié)果,且輸出查詢結(jié)果。
【文檔編號】G06F17/30GK104331467SQ201410606260
【公開日】2015年2月4日 申請日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】萬瑛嫻 申請人:上?,|舟微電子科技有限公司