一種并行向量查表方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種并行向量查表方法,包括:從待查索引向量寄存器中獲得待查索引數(shù)據(jù),將其分為高位部分和低位部分,并將高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,低位部分發(fā)送給交織模塊;表項輸入模塊輸入待查的所有表項,根據(jù)交織模塊的大小將其劃分為若干個數(shù)據(jù)包,分別發(fā)送到對應(yīng)的交織模塊;每個交織模塊都根據(jù)待查索引數(shù)據(jù)的低位部分,從數(shù)據(jù)包中選擇出一個輸入表項作為查表可能結(jié)果表項;選擇模塊根據(jù)結(jié)果歸并狀態(tài)控制模塊基于高位部分發(fā)送的控制信號,在選擇結(jié)果中選擇最終結(jié)果,并將最終結(jié)果存放在目的向量寄存器中。本發(fā)明的方法和裝置能實現(xiàn)并行訪問多組向量,降低查表操作次數(shù),從而降低存儲訪問開銷。
【專利說明】_種并行向量查表方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及向量型處理器設(shè)計領(lǐng)域,尤其涉及一種并行向量查表方法及裝置。
【背景技術(shù)】
[0002]向量型處理器是針對陣列信號處理的處理器,應(yīng)用于處理高密集型向量,其處理速度快,存儲訪問頻繁,并且經(jīng)常并行訪問多組向量。為了方便開發(fā)向量處理器,能實現(xiàn)并行訪問多組向量,可以并行完成同一張表中多個索引的查找,同時降低存儲訪問開銷,需要設(shè)計一種向量處理器中的查表指令,并且設(shè)計實現(xiàn)該查表指令的執(zhí)行裝置。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明的主要目的之一在于提供一種并行向量查表方法及裝置,以便向量處理器實現(xiàn)并行訪問多組向量,降低存儲訪問開銷。
[0004]為實現(xiàn)上述目的,作為本發(fā)明的一個方面,本發(fā)明提供了一種并行向量查表方法,包括以下步驟:
[0005]從并行向量查表指令的待查索引向量寄存器中獲得待查索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊;
[0006]表項輸入模塊輸入待查的所有表項,根據(jù)所述并行向量查表指令中的查表起始地址、查表長度和每個表項的大小,決定所述輸入的所有表項的位置和總量,所述所有表項根據(jù)交織模塊的大小被劃分為若干個由對應(yīng)某一交織模塊處理的數(shù)據(jù)包,每個數(shù)據(jù)包都由一個或多個輸入表項組成,所有的數(shù)據(jù)包都被分別發(fā)送到對應(yīng)的交織模塊;
[0007]所述每個交織模塊都根據(jù)所述待查索引數(shù)據(jù)的低位部分,從來自表項輸入模塊的數(shù)據(jù)包中選擇出一個輸入表項作為查表可能結(jié)果的表項;
[0008]結(jié)果歸并狀態(tài)控制模塊根據(jù)所述待查索引數(shù)據(jù)的高位部分,向選擇模塊發(fā)送選擇查表結(jié)果的控制信號;
[0009]選擇模塊根據(jù)所述結(jié)果歸并狀態(tài)控制模塊發(fā)送的所述控制信號,在所述選擇結(jié)果中選擇最終結(jié)果,并將所述最終結(jié)果存放在所述并行向量查表指令中的目的向量寄存器中。
[0010]其中,所述所有表項被劃分為若干個數(shù)據(jù)包的步驟中,如果所述所有表項的個數(shù)能夠被數(shù)據(jù)包的個數(shù)整除,則所述所有表項被均勻劃分為若干個數(shù)據(jù)包。
[0011]其中,所述若干個交織模塊的個數(shù)為4的正整數(shù)倍。
[0012]其中,所述所有表項被劃分為若干個數(shù)據(jù)包的步驟中,如果所述數(shù)據(jù)包的個數(shù)多于交織模塊的個數(shù),則會分多次將所述數(shù)據(jù)包發(fā)送到所述交織模塊。
[0013]其中,所述的若干個交織模塊選擇輸出的所述查表可能結(jié)果的表項先存儲在存儲部件中,所述選擇模塊在所述存儲部件存儲的所述選擇結(jié)果中選擇最終結(jié)果。
[0014]作為本發(fā)明的另一個方面,本發(fā)明還提供了一種并行向量查表裝置,包括:
[0015]索引分解模塊,用于從并行向量查表指令的待查索引向量寄存器中獲得索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊;
[0016]表項輸入模塊,用于輸入待查的所有表項,所述表項輸入模塊根據(jù)所述并行向量查表指令中的查表起始地址、查表長度和每個表項的大小,決定輸入數(shù)據(jù)的位置和總量,并根據(jù)交織模塊的大小將所述輸入的所有表項劃分為若干個對應(yīng)某一交織模塊處理的數(shù)據(jù)包,每個數(shù)據(jù)包都由一個或多個輸入表項組成,所有的數(shù)據(jù)包都被分別發(fā)送到對應(yīng)的交織豐吳塊;
[0017]若干個交織模塊,每一個交織模塊都根據(jù)所述待查索引數(shù)據(jù)的低位部分在所述數(shù)據(jù)包中選擇出一個查表可能結(jié)果的表項;
[0018]結(jié)果歸并狀態(tài)控制模塊,根據(jù)所述待查索引數(shù)據(jù)的高位部分,發(fā)送控制選擇模塊輸出查表結(jié)果的控制信號。
[0019]若干個選擇模塊,根據(jù)所述結(jié)果歸并狀態(tài)控制模塊的控制信號,在所述若干個交織模塊選擇的表項結(jié)果中選擇最終結(jié)果并將所述最終結(jié)果輸出,輸出的表項存放在查表指令中的目的向量寄存器中。
[0020]其中,所述表項輸入模塊中,如果所述所有表項的個數(shù)能夠被待分成的數(shù)據(jù)包的個數(shù)整除,則所述所有表項被均勻劃分為若干個數(shù)據(jù)包。
[0021]其中,所述若干個交織模塊的個數(shù)為4的正整數(shù)倍。
[0022]其中,所述表項輸入模塊中,如果所述待分成的數(shù)據(jù)包的個數(shù)多于所述交織模塊的個數(shù),則會分多次將所述數(shù)據(jù)包發(fā)送到所述交織模塊。
[0023]所述并行向量查表裝置還包括存儲部件,所述若干個交織模塊選擇輸出的所述查表可能結(jié)果的表項先存儲在所述存儲部件中,所述選擇模塊在所述存儲部件存儲的所述選擇結(jié)果中選擇最終結(jié)果。
[0024]基于上述技術(shù)方案可知,本發(fā)明的并行向量查表方法和裝置能夠?qū)崿F(xiàn)并行訪問多組向量,索引數(shù)據(jù)量很大時,并行查表方法可以降低查表操作次數(shù),從而降低存儲訪問開銷。
【專利附圖】
【附圖說明】
[0025]圖1是本發(fā)明的并行向量查表裝置的結(jié)構(gòu)示意圖;
[0026]圖2是本發(fā)明中交織模塊輸入、輸出及序號示意圖;
[0027]圖3是本發(fā)明的存儲部件中4個數(shù)據(jù)存儲分布示意圖;
[0028]圖4是本發(fā)明的存儲部件中8個數(shù)據(jù)存儲分布示意圖。
【具體實施方式】
[0029]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明作進(jìn)一步的詳細(xì)說明。
[0030]本發(fā)明公開了一種并行向量查表方法及裝置,為此專門設(shè)計了一套并行向量查表指令,包括:
[0031]一個存儲待查表起始地址的寄存器號,用于存放待查表中表項的開始位置;
[0032]一個存儲表長的寄存器號,用于存放待查表的長度;
[0033]一個存放標(biāo)示表項大小信息的寄存器號,用于獲得查表時每個表項的大小,如字節(jié)、半字、字等;
[0034]一個待查索引向量寄存器號,用于配置待查索引數(shù)據(jù);
[0035]一個目的向量寄存器號,用于存放查表后的結(jié)果。
[0036]采用該并行向量查表指令,本發(fā)明的并行向量查表方法,包括以下步驟:
[0037]索引分解模塊從并行向量查表指令的待查索引向量寄存器中獲得待查索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊;
[0038]表項輸入模塊輸入待查的所有待查表項,根據(jù)所述并行向量查表指令中的查表起始地址、查表長度和每個表項的大小,決定所述輸入的所有表項的位置和總量。所有表項的總數(shù)據(jù)根據(jù)交織模塊的大小被劃分為若干個數(shù)據(jù)包,每個數(shù)據(jù)包都由一個或多個輸入表項組成,所有的數(shù)據(jù)包都被分別對應(yīng)發(fā)送到每個交織模塊;
[0039]所述每個交織模塊都根據(jù)所述待查索引數(shù)據(jù)的低位部分,從來自表項輸入模塊的數(shù)據(jù)包中選擇出一個輸入表項作為查表結(jié)果可能的表項,并將選擇結(jié)果存儲在存儲部件;
[0040]結(jié)果歸并狀態(tài)控制模塊根據(jù)所述待查索引數(shù)據(jù)的高位部分,向選擇模塊發(fā)送選擇查表結(jié)果的控制信號;
[0041]選擇模塊根據(jù)所述結(jié)果歸并狀態(tài)控制模塊的控制信號,在所述存儲部件存儲的所述選擇結(jié)果中選擇最終結(jié)果,并將所述最終結(jié)果存放在所述并行向量查表指令中的目的向量寄存器中。
[0042]其中,所有表項的總數(shù)據(jù)根據(jù)交織模塊的大小劃分為若干個數(shù)據(jù)包的方法如下:以X個N位的交織模塊為例,所有表項的總數(shù)據(jù)量被劃分為若干個N位的數(shù)據(jù)包,每個數(shù)據(jù)包都包含多個表項,如果這些數(shù)據(jù)包的數(shù)量多于交織模塊的個數(shù)X,則會分多次發(fā)送到交織模塊。劃分的數(shù)據(jù)包的個數(shù)可以為任意的自然數(shù),例如3、4、5、6、……,從提高處理器運算效率的角度看,優(yōu)選為4的倍數(shù),例如4、8、12……。
[0043]為執(zhí)行本發(fā)明提出的并行向量查表方法,本發(fā)明還公開了一種并行向量查表裝置,包括:
[0044]索引分解模塊,用于從并行向量查表指令的待查索引向量寄存器中獲得索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊;
[0045]表項輸入模塊,用于輸入待查的所有表項,該模塊是根據(jù)并行向量查表指令中查表起始地址、查表長度和每個表項的大小,決定輸入數(shù)據(jù)的位置和總量;
[0046]若干個交織模塊,每一個交織模塊都根據(jù)待查索引數(shù)據(jù)的低位部分選擇出一個可能作為查表結(jié)果的表項;
[0047]存儲部件,用于存放所述交織模塊選擇出的所有表項。
[0048]結(jié)果歸并狀態(tài)控制模塊,根據(jù)待查索引數(shù)據(jù)的高位部分,發(fā)送控制選擇模塊輸出查表結(jié)果的控制信號。
[0049]若干個選擇模塊,根據(jù)結(jié)果歸并狀態(tài)控制模塊的控制信號,選擇來自存儲部件的表項并將選擇的表項輸出,輸出的表項存放在查表指令中的目的向量寄存器中。
[0050]按照本發(fā)明方法及裝置實現(xiàn)的并行向量查表指令,只需配置待查所有表項的起始地址、長度、每個表項的大小,根據(jù)索引向量寄存器里的待查索引數(shù)據(jù),即可實現(xiàn)查表操作。
[0051]下面通過具體實施例對本發(fā)明做進(jìn)一步的闡述。
[0052]本發(fā)明公開了一種并行向量查表裝置,以4個512位的交織模塊搭建為例,來闡述該裝置的工作過程,圖1示出了該裝置的結(jié)構(gòu)示意圖。如圖1所示,該裝置包括:索引分解模塊101、表項輸入模塊102、交織模塊部件103、存儲部件104、結(jié)果歸并狀態(tài)控制模塊105和選擇模塊106。其中,交織模塊部件103由4個交織模塊107、108、109和110組成。
[0053]以查表索引數(shù)據(jù)11010110對64個32位的表項查表為例闡述。
[0054]首先,64個32位的表項被分成4組,每組16個表項共512位的數(shù)據(jù),表項輸入模塊102將每個512位的數(shù)據(jù)順序輸入,并按序號分配到4個交織模塊107-110上。同時索引分解模塊101將查表索引數(shù)據(jù)分為低位部分和高位部分,并將低位部分發(fā)送到交織模塊部件103的每一個交織模塊上,高位部分被發(fā)送到結(jié)果歸并狀態(tài)控制模塊105,由于每個交織模塊都有16個表項輸入,所以索引數(shù)據(jù)低位部分是4位,索引數(shù)據(jù)的其余4位為高位部分。
[0055]然后,每一個交織模塊根據(jù)索引數(shù)據(jù)的4位低位部分編碼,將512位的數(shù)據(jù)選擇出一個32位的數(shù)據(jù)作為可能的索引結(jié)果存儲到存儲部件104。交織模塊選擇數(shù)據(jù)的過程如圖2所示,一個交織模塊輸入16個32位的數(shù)據(jù),由于索引數(shù)據(jù)的低位部分是0110,所以所有交織模塊都選擇出序號6的數(shù)據(jù),共得到4個32位的數(shù)據(jù)作為可能的結(jié)果發(fā)送到存儲部件104,存儲分布如圖3所示,圖3中301、302、303、304是交織模塊,305是存儲部件104,存儲部件被分為4塊,序號為0-3,分別存放來自不同交織模塊的數(shù)據(jù)。
[0056]之后,存儲部件104將存儲的4個32位數(shù)據(jù)發(fā)送到選擇模塊106。結(jié)果歸并狀態(tài)控制模塊105根據(jù)索引數(shù)據(jù)的高位部分發(fā)送控制選擇模塊106的選擇信號。由于選擇模塊只用從4個數(shù)據(jù)中選擇,所以索引數(shù)據(jù)的高位部分只有01這兩位有效,選擇模塊106根據(jù)選擇信號,選擇來自圖3中序號I的數(shù)據(jù)作為結(jié)果輸出,該輸出是執(zhí)行裝置64個表項中的第23個表項,可見輸出的結(jié)果是索引數(shù)據(jù)010110(十六進(jìn)制16)所要索引的結(jié)果表項。
[0057]下面再以查表索引數(shù)據(jù)11010110對128個32位的表項查表為例闡述本發(fā)明執(zhí)行裝置的工作。
[0058]首先,128個32位的表項被分成8組512位的數(shù)據(jù)輸入到表項輸入模塊102,每組16個表項。8組512位數(shù)據(jù)中的前4組先按序號分配到4個交織模塊107-110上。索引分解模塊101將查表索引數(shù)據(jù)分為低位部分高位部分,并將低位部分發(fā)送到交織部件103的每一個交織模塊上,高位部分被發(fā)送到結(jié)果歸并狀態(tài)控制模塊105,由于每個交織模塊都有16個表項輸入,所以索引數(shù)據(jù)低位部分是4位,索引數(shù)據(jù)的其余4位為高位部分。
[0059]然后,每一個交織模塊根據(jù)索引數(shù)據(jù)的4位低位部分編碼0110,將如圖2中的序號6的數(shù)據(jù)存儲到存儲部件104中。如圖4所示存儲分布,此時得到的4個32位的數(shù)據(jù)存儲在存儲部件序號為0-3的位置。
[0060]之后,交織部件103接收表項輸入模塊102的后4組512位數(shù)據(jù),并按輸入序號分配到每一個交織模塊上。每一個交織模塊再根據(jù)索引數(shù)據(jù)的4位低位部分編碼0110,選擇出32位數(shù)據(jù)存儲到存儲部件104,這次通過交織模塊部件得到的4個數(shù)據(jù)存儲在圖4中序號4-7的位置,這樣存儲模塊中共存有8個32位數(shù)據(jù)作為可能的查表結(jié)果。
[0061]最后,存儲部件將存儲的8個32位數(shù)據(jù)發(fā)送到選擇模塊106。結(jié)果歸并狀態(tài)控制模塊105根據(jù)索引數(shù)據(jù)的高位部分發(fā)送控制選擇模塊106的選擇信號。由于選擇模塊需要從8個數(shù)據(jù)中選擇,所以索引數(shù)據(jù)的高位部分只有101這三位有效,選擇模塊106根據(jù)選擇信號,選擇來自圖4中序號5的數(shù)據(jù)作為結(jié)果輸出,該輸出是執(zhí)行裝置128個表項中的第86個表項,可見輸出的結(jié)果是索引數(shù)據(jù)1010110(十六進(jìn)制56)所要索引的結(jié)果表項。
[0062]以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種并行向量查表方法,包括以下步驟: 從并行向量查表指令的待查索引向量寄存器中獲得待查索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊; 表項輸入模塊輸入待查的所有表項,根據(jù)所述并行向量查表指令中的查表起始地址、查表長度和每個表項的大小,決定所述輸入的所有表項的位置和總量,所述所有表項根據(jù)交織模塊的大小被劃分為若干個由對應(yīng)某一交織模塊處理的數(shù)據(jù)包,每個數(shù)據(jù)包都由一個或多個輸入表項組成,所有的數(shù)據(jù)包都被分別發(fā)送到對應(yīng)的交織模塊; 所述每個交織模塊都根據(jù)所述待查索引數(shù)據(jù)的低位部分,從來自表項輸入模塊的數(shù)據(jù)包中選擇出一個輸入表項作為查表可能結(jié)果的表項; 結(jié)果歸并狀態(tài)控制模塊根據(jù)所述待查索引數(shù)據(jù)的高位部分,向選擇模塊發(fā)送選擇查表結(jié)果的控制信號; 選擇模塊根據(jù)所述結(jié)果歸并狀態(tài)控制模塊發(fā)送的所述控制信號,在所述選擇結(jié)果中選擇最終結(jié)果,并將所述最終結(jié)果存放在所述并行向量查表指令中的目的向量寄存器中。
2.根據(jù)權(quán)利要求1所述的并行向量查表方法,其中所述所有表項被劃分為若干個數(shù)據(jù)包的步驟中,如果所述所有表項的個數(shù)能夠被數(shù)據(jù)包的個數(shù)整除,則所述所有表項被均勻劃分為若干個數(shù)據(jù)包。
3.根據(jù)權(quán)利要求1所述的并行向量查表方法,其中所述若干個交織模塊的個數(shù)為4的正整數(shù)倍。
4.根據(jù)權(quán)利要求1所述的并行向量查表方法,其中所述所有表項被劃分為若干個數(shù)據(jù)包的步驟中,如果所述數(shù)據(jù)包的個數(shù)多于交織模塊的個數(shù),則會分多次將所述數(shù)據(jù)包發(fā)送到所述交織模塊。
5.根據(jù)權(quán)利要求1所述的并行向量查表方法,其中所述的若干個交織模塊選擇輸出的所述查表可能結(jié)果的表項先存儲在存儲部件中,所述選擇模塊在所述存儲部件存儲的所述選擇結(jié)果中選擇最終結(jié)果。
6.一種并行向量查表裝置,包括: 索引分解模塊,用于從并行向量查表指令的待查索引向量寄存器中獲得索引數(shù)據(jù),將所述待查索引數(shù)據(jù)分為高位部分和低位部分,并將所述高位部分發(fā)送給結(jié)果歸并狀態(tài)控制模塊,所述低位部分發(fā)送給交織模塊; 表項輸入模塊,用于輸入待查的所有表項,所述表項輸入模塊根據(jù)所述并行向量查表指令中的查表起始地址、查表長度和每個表項的大小,決定輸入數(shù)據(jù)的位置和總量,并根據(jù)交織模塊的大小將所述輸入的所有表項劃分為若干個對應(yīng)某一交織模塊處理的數(shù)據(jù)包,每個數(shù)據(jù)包都由一個或多個輸入表項組成,所有的數(shù)據(jù)包都被分別發(fā)送到對應(yīng)的交織模塊; 若干個交織模塊,每一個交織模塊都根據(jù)所述待查索引數(shù)據(jù)的低位部分在所述數(shù)據(jù)包中選擇出一個查表可能結(jié)果的表項; 結(jié)果歸并狀態(tài)控制模塊,根據(jù)所述待查索引數(shù)據(jù)的高位部分,發(fā)送控制選擇模塊輸出查表結(jié)果的控制信號。 若干個選擇模塊,根據(jù)所述結(jié)果歸并狀態(tài)控制模塊的控制信號,在所述若干個交織模塊選擇的表項結(jié)果中選擇最終結(jié)果并將所述最終結(jié)果輸出,輸出的表項存放在查表指令中的目的向量寄存器中。
7.根據(jù)權(quán)利要求6所述的并行向量查表裝置,其中所述表項輸入模塊中,如果所述所有表項的個數(shù)能夠被待分成的數(shù)據(jù)包的個數(shù)整除,則所述所有表項被均勻劃分為若干個數(shù)據(jù)包。
8.根據(jù)權(quán)利要求6所述的并行向量查表裝置,其中所述若干個交織模塊的個數(shù)為4的正整數(shù)倍。
9.根據(jù)權(quán)利要求6所述的并行向量查表裝置,其中所述表項輸入模塊中,如果所述待分成的數(shù)據(jù)包的個數(shù)多于所述交織模塊的個數(shù),則會分多次將所述數(shù)據(jù)包發(fā)送到所述交織模塊。
10.根據(jù)權(quán)利要求6所述的并行向量查表裝置,還包括存儲部件,所述若干個交織模塊選擇輸出的所述查表可能結(jié)果的表項先存儲在所述存儲部件中,所述選擇模塊在所述存儲部件存儲的所述選擇結(jié)果中選擇最終結(jié)果。
【文檔編號】G06F17/30GK104504126SQ201410852690
【公開日】2015年4月8日 申請日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
【發(fā)明者】王磊, 王惠娟, 朱夢晨, 謝少林 申請人:中國科學(xué)院自動化研究所