一種提高協(xié)處理器運(yùn)算效率的方法
【專利摘要】本發(fā)明公開(kāi)了一種提高協(xié)處理器運(yùn)算效率的方法。該方法向協(xié)處理器中開(kāi)辟的向量數(shù)據(jù)存儲(chǔ)空間不再是一整塊內(nèi)存,而是由n個(gè)N長(zhǎng)度的存儲(chǔ)塊組成的存儲(chǔ)塊陣列。這樣的內(nèi)存結(jié)構(gòu)可在一個(gè)時(shí)鐘內(nèi)同時(shí)對(duì)n個(gè)存儲(chǔ)塊進(jìn)行讀操作,一次讀出n個(gè)數(shù)據(jù)。當(dāng)數(shù)據(jù)進(jìn)入?yún)f(xié)處理器時(shí),協(xié)處理器根據(jù)存儲(chǔ)塊陣列的結(jié)構(gòu),將數(shù)據(jù)寫(xiě)入存儲(chǔ)塊陣列中,每當(dāng)完成一個(gè)完整向量數(shù)據(jù)的接收,則產(chǎn)生一次互相關(guān)使能信號(hào),啟動(dòng)數(shù)據(jù)準(zhǔn)備邏輯電路。在上述高效內(nèi)存結(jié)構(gòu)下,數(shù)據(jù)準(zhǔn)備邏輯電路可以實(shí)現(xiàn)一個(gè)時(shí)鐘周期即準(zhǔn)備好互相關(guān)向量,提供給互相關(guān)運(yùn)算電路,支持該運(yùn)算電路的流水化計(jì)算。這樣就可使得協(xié)處理器在接收數(shù)據(jù)、準(zhǔn)備數(shù)據(jù)的同時(shí)進(jìn)行數(shù)據(jù)的互相關(guān)計(jì)算。
【專利說(shuō)明】一種提高協(xié)處理器運(yùn)算效率的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)硬件方法設(shè)計(jì)領(lǐng)域,具體是一種提高協(xié)處理器運(yùn)算效率的方 法。
【背景技術(shù)】
[0002] 在圖像處理、模式識(shí)別和信息搜索等眾多領(lǐng)域,都需要對(duì)協(xié)處理器中的多個(gè)一維 向量進(jìn)行相關(guān)匹配運(yùn)算,以考查向量間的相關(guān)性。常用的相關(guān)運(yùn)算有絕對(duì)差、均方差和積相 關(guān)等多種,在實(shí)際中會(huì)根據(jù)具體應(yīng)用,從精度、效率和通用性三個(gè)方面來(lái)衡量以選擇較優(yōu)的 算法。雖然相關(guān)算法有所不同,但歸根結(jié)底都是兩個(gè)向量對(duì)應(yīng)點(diǎn)的遍歷計(jì)算。對(duì)于一個(gè)有 N個(gè)η點(diǎn)向量的集合,向量互相關(guān)(兩兩相關(guān))需要進(jìn)行次運(yùn)算(運(yùn)算次 數(shù)是〇(N2)級(jí)),同時(shí)相關(guān)運(yùn)算本身也較為復(fù)雜,所以一維向量互相關(guān)是運(yùn)算密集的算法,運(yùn) 算量較大,在實(shí)時(shí)性要求嚴(yán)格的領(lǐng)域都需要通過(guò)FPGA實(shí)現(xiàn)算法協(xié)處理器來(lái)輔助計(jì)算。
[0003] 對(duì)于N個(gè)η點(diǎn)一維向量的互相關(guān)算法來(lái)說(shuō),傳統(tǒng)按部就班的設(shè)計(jì)方法和工作流程 如下(參見(jiàn)圖1):
[0004] (1)外部處理單元將N個(gè)向量(第一向量、第二向量、......、第N向量,共NXn個(gè) 點(diǎn)數(shù)據(jù))發(fā)送給協(xié)處理器,協(xié)處理器接收到向量數(shù)據(jù)并保存在預(yù)先開(kāi)辟的一整塊足夠大的 內(nèi)存空間中;
[0005] (2)協(xié)處理器完成所有N個(gè)向量的數(shù)據(jù)接收和存儲(chǔ)后啟動(dòng)互相關(guān)運(yùn)算流程?;ハ?關(guān)運(yùn)算流程中包括數(shù)據(jù)準(zhǔn)備和互相關(guān)運(yùn)算兩個(gè)步驟。其中數(shù)據(jù)準(zhǔn)備是將要進(jìn)行互相關(guān)運(yùn)算 的兩個(gè)向量緩存到運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B ;而互相關(guān)運(yùn)算本身則是成熟的硬件電路, 實(shí)現(xiàn)對(duì)運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B中的數(shù)據(jù)進(jìn)行相關(guān)運(yùn)算,能夠流水化計(jì)算;
[0006] (3)在數(shù)據(jù)準(zhǔn)備時(shí),協(xié)處理中的數(shù)據(jù)準(zhǔn)備邏輯電路首先從內(nèi)存中讀取第一向量緩 存到運(yùn)算緩存區(qū)Α,再讀取第二向量緩存到運(yùn)算緩存區(qū)Β,再將運(yùn)算緩存區(qū)A中的第一向量 與運(yùn)算緩存區(qū)B中的第二向量進(jìn)行互相關(guān)運(yùn)算;
[0007] (4)協(xié)處理器完成步驟(3)的互相關(guān)運(yùn)算后讀取第三向量緩存到運(yùn)算緩存區(qū)Β,再 將運(yùn)算緩存區(qū)A中的第一向量與運(yùn)算緩存區(qū)B中的第三向量進(jìn)行互相關(guān)運(yùn)算。以此類推, 即可完成第一向量與第N向量的互相關(guān)運(yùn)算;
[0008] (5)再?gòu)膬?nèi)存空間讀取第二向量緩存到運(yùn)算緩存區(qū)Α,再讀取第三向量緩存到運(yùn) 算緩存區(qū)Β,將運(yùn)算緩存區(qū)A中的第二向量與運(yùn)算緩存區(qū)B中的第三向量進(jìn)行互相關(guān)運(yùn)算, 后續(xù)按照(4)中步驟再依次完成第二向量與第四向量、第五向量到第N向量的互相關(guān)運(yùn) 算;
[0009] (6)按向量順序重復(fù)步驟(5),完成后續(xù)所有向量的兩兩互相關(guān)運(yùn)算。
[0010] 以上傳統(tǒng)設(shè)計(jì)的不足在于數(shù)據(jù)接收與運(yùn)算順序進(jìn)行。一方面在完成全部向量數(shù) 據(jù)接收后才啟動(dòng)運(yùn)算,一定程度上浪費(fèi)了時(shí)間;另一方面,由于每次數(shù)據(jù)準(zhǔn)備工作需要將協(xié) 處理器內(nèi)存中數(shù)據(jù)緩存到緩存區(qū),直接的內(nèi)存數(shù)據(jù)讀取操作較慢(即讀一個(gè)向量的η個(gè)點(diǎn) 數(shù)據(jù)要η個(gè)硬件時(shí)鐘周期),這就使得協(xié)處理器一直處于數(shù)據(jù)準(zhǔn)備一運(yùn)算一數(shù)據(jù)準(zhǔn)備一運(yùn) 算……的順序流程中,即無(wú)法并行工作,也無(wú)法發(fā)揮互相關(guān)電路的流水計(jì)算能力,極大的降 低了協(xié)處理器的運(yùn)算效率。
【發(fā)明內(nèi)容】
[0011] 針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明擬解決的技術(shù)問(wèn)題是:設(shè)計(jì)一種提高協(xié)處理器運(yùn)算 效率的方法。該方法向協(xié)處理器中開(kāi)辟的向量數(shù)據(jù)存儲(chǔ)空間不再是一整塊內(nèi)存,而是由η 個(gè)N長(zhǎng)度的存儲(chǔ)塊組成的存儲(chǔ)塊陣列。這樣的內(nèi)存結(jié)構(gòu)可在一個(gè)時(shí)鐘內(nèi)同時(shí)對(duì)η個(gè)存儲(chǔ) 塊進(jìn)行讀操作,一次讀出η個(gè)數(shù)據(jù)。當(dāng)數(shù)據(jù)進(jìn)入?yún)f(xié)處理器時(shí),協(xié)處理器根據(jù)存儲(chǔ)塊陣列的結(jié) 構(gòu),將數(shù)據(jù)寫(xiě)入存儲(chǔ)塊陣列中,每當(dāng)完成一個(gè)完整向量數(shù)據(jù)的接收,則產(chǎn)生一次互相關(guān)使能 信號(hào),啟動(dòng)數(shù)據(jù)準(zhǔn)備邏輯電路。在上述高效內(nèi)存結(jié)構(gòu)下,數(shù)據(jù)準(zhǔn)備邏輯電路可以實(shí)現(xiàn)一個(gè)時(shí) 鐘周期即準(zhǔn)備好互相關(guān)向量,提供給互相關(guān)運(yùn)算電路,支持該運(yùn)算電路的流水化計(jì)算。這樣 就可使得協(xié)處理器在接收數(shù)據(jù)、準(zhǔn)備數(shù)據(jù)的同時(shí)進(jìn)行數(shù)據(jù)的互相關(guān)計(jì)算。
[0012] 本發(fā)明解決所述技術(shù)問(wèn)題的技術(shù)解決方案是:設(shè)計(jì)一種提高協(xié)處理器運(yùn)算效率的 方法,所述協(xié)處理器包括存儲(chǔ)塊陣列、存儲(chǔ)塊陣列電路、數(shù)據(jù)準(zhǔn)備邏輯電路、運(yùn)算緩存區(qū)Α、 運(yùn)算緩存區(qū)B和互相關(guān)運(yùn)算電路;所述存儲(chǔ)塊陣列分別與存儲(chǔ)塊陣列電路和數(shù)據(jù)準(zhǔn)備邏輯 電路相連接,所述存儲(chǔ)塊陣列電路分別與存儲(chǔ)塊陣列和數(shù)據(jù)準(zhǔn)備邏輯電路相連接,所述數(shù) 據(jù)準(zhǔn)備邏輯電路相連接分別與存儲(chǔ)塊陣列、存儲(chǔ)塊陣列電路、運(yùn)算緩存區(qū)Α、運(yùn)算緩存區(qū)B 和互相關(guān)運(yùn)算電路相連接,所述運(yùn)算緩存區(qū)A分別與數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路 相連接,所述運(yùn)算緩存B分別與數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路相連接,所述互相關(guān) 運(yùn)算電路分別與數(shù)據(jù)準(zhǔn)備邏輯電路、運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B相連接;其特征在于具體 步驟如下:
[0013] (1)外部串行數(shù)據(jù)發(fā)送給協(xié)處理器,按照如下方式保存到協(xié)處理器存儲(chǔ)塊陣列中: 將N個(gè)向量存儲(chǔ)到協(xié)處理器的η個(gè)存儲(chǔ)塊中,每個(gè)向量包含η個(gè)數(shù)據(jù),第一向量中的η個(gè)數(shù) 據(jù)(D1、D2、……、Dn)進(jìn)入后依次保存到第一存儲(chǔ)塊的第一地址處、第二存儲(chǔ)塊的第一地址 處、……、第η存儲(chǔ)塊的第一地址處;第二向量中的η個(gè)數(shù)據(jù)進(jìn)入后依次保存到第一存儲(chǔ)塊 的第二地址處、第二存儲(chǔ)塊的第二地址處、……、第η存儲(chǔ)塊的第二地址處;以此類推完成 N個(gè)向量數(shù)據(jù)的存儲(chǔ);
[0014] (2)在進(jìn)行步驟⑴的數(shù)據(jù)存儲(chǔ)過(guò)程中,當(dāng)完成第一向量的η個(gè)數(shù)據(jù)存儲(chǔ)后沒(méi)有特 殊操作,協(xié)處理器繼續(xù)接收數(shù)據(jù);但當(dāng)?shù)诙蛄康摩莻€(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí), 協(xié)處理器存儲(chǔ)塊陣列電路會(huì)產(chǎn)生一個(gè)互相關(guān)使能信號(hào);后續(xù)每當(dāng)一個(gè)向量,即第二向量到 第N向量的η個(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí),存儲(chǔ)塊陣列電路都會(huì)產(chǎn)生一個(gè)互相關(guān) 使能信號(hào);
[0015] (3)存儲(chǔ)塊陣列電路發(fā)送的互相關(guān)使能信號(hào)使數(shù)據(jù)準(zhǔn)備邏輯電路啟動(dòng);數(shù)據(jù)準(zhǔn)備 邏輯電路首先從存儲(chǔ)塊陣列中讀取最后進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)的第M向量,所述M的取 值范圍是2 < M < Ν,放到運(yùn)算緩存區(qū)A中,再讀取第一向量到運(yùn)算緩存區(qū)Β,同時(shí)向互相關(guān) 運(yùn)算電路給出運(yùn)算使能信號(hào),啟動(dòng)互相關(guān)運(yùn)算電路,計(jì)算運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B中兩 個(gè)向量的互相關(guān);
[0016] (4)在電路設(shè)計(jì)時(shí)序上緊隨步驟(3),數(shù)據(jù)準(zhǔn)備邏輯電路按時(shí)鐘依次再讀取第二 向量、第三向量、……、第M-I向量到運(yùn)算緩存區(qū)Β,以連續(xù)的數(shù)據(jù)流支持互相關(guān)運(yùn)算電路的 計(jì)算流水,流水化的計(jì)算第M向量與第一向量、第二向量、……、第M-I向量的互相關(guān);
[0017] (5)完成步驟(4)中的工作后,數(shù)據(jù)準(zhǔn)備邏輯電路判斷是否有新的產(chǎn)生于步驟(2) 中的互相關(guān)使能信號(hào),如果沒(méi)有,則掛起數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路,等待新的 互相關(guān)使能信號(hào);一旦數(shù)據(jù)準(zhǔn)備邏輯電路獲取新的互相關(guān)使能信號(hào),則按照步驟(3)、步驟 (4)完成新進(jìn)入?yún)f(xié)處理器的第M+1向量與第一向量、第二向量、……、第M向量的互相關(guān)運(yùn) 算;
[0018] (6)重復(fù)上述步驟直至完成所有N個(gè)向量的兩兩互相關(guān)運(yùn)算,由互相關(guān)運(yùn)算電路 將最終的計(jì)算結(jié)果輸出,從而完成提高協(xié)處理器運(yùn)算效率。
[0019] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0020] (1)數(shù)據(jù)存儲(chǔ)空間不再是一整塊內(nèi)存,而是由η個(gè)N長(zhǎng)度的存儲(chǔ)塊組成的存儲(chǔ)塊陣 列,提高了向量數(shù)據(jù)的讀取效率;
[0021] (2)在協(xié)處理器接收向量數(shù)據(jù)的同時(shí)對(duì)向量開(kāi)展互相關(guān)運(yùn)算,不用等到所有數(shù)據(jù) 接收完,提高了協(xié)處理器的運(yùn)算效率;
[0022] (3)通過(guò)設(shè)計(jì)數(shù)據(jù)管理維護(hù)邏輯,實(shí)現(xiàn)了高速的向量數(shù)據(jù)準(zhǔn)備,支持了互相關(guān)運(yùn)算 模塊的流水化計(jì)算要求,進(jìn)一步提高了協(xié)處理器的運(yùn)算效率和內(nèi)部性能和內(nèi)部性能。
【專利附圖】
【附圖說(shuō)明】
[0023] 圖1是傳統(tǒng)的一維向量互相關(guān)電路設(shè)計(jì)算法工作流程圖;
[0024] 圖2是本發(fā)明提高協(xié)處理器運(yùn)算效率的方法設(shè)計(jì)的存儲(chǔ)塊陣列及向量數(shù)據(jù)存儲(chǔ) 方法示意圖;
[0025] 圖3是本發(fā)明提高協(xié)處理器運(yùn)算效率的方法的方法流程圖;
[0026] 圖4是本發(fā)明提高協(xié)處理器運(yùn)算效率的方法一種實(shí)施例設(shè)計(jì)的存儲(chǔ)塊陣列及向 量數(shù)據(jù)存儲(chǔ)方法示意圖;
[0027] 圖5是本發(fā)明提高協(xié)處理器運(yùn)算效率的方法一種實(shí)施例的方法流程圖;
【具體實(shí)施方式】
[0028] 下面將對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施 例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技 術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范 圍。
[0029] 本發(fā)明設(shè)計(jì)的一種提高協(xié)處理器運(yùn)算效率的方法,該方法向協(xié)處理器中開(kāi)辟的向 量數(shù)據(jù)存儲(chǔ)空間不再是一整塊內(nèi)存,而是由η個(gè)N長(zhǎng)度的存儲(chǔ)塊組成的存儲(chǔ)塊陣列(參見(jiàn) 圖2)。這樣的內(nèi)存結(jié)構(gòu)可在一個(gè)時(shí)鐘內(nèi)同時(shí)對(duì)η個(gè)存儲(chǔ)塊進(jìn)行讀操作,一次讀出η個(gè)數(shù)據(jù)。 當(dāng)數(shù)據(jù)進(jìn)入?yún)f(xié)處理器時(shí),協(xié)處理器根據(jù)存儲(chǔ)塊陣列的結(jié)構(gòu),將數(shù)據(jù)寫(xiě)入存儲(chǔ)塊陣列中,每當(dāng) 完成一個(gè)完整向量數(shù)據(jù)的接收,則產(chǎn)生一次互相關(guān)使能信號(hào),啟動(dòng)數(shù)據(jù)準(zhǔn)備邏輯電路。在上 述高效內(nèi)存結(jié)構(gòu)下,數(shù)據(jù)準(zhǔn)備邏輯電路可以實(shí)現(xiàn)一個(gè)時(shí)鐘周期即準(zhǔn)備好互相關(guān)向量,提供 給互相關(guān)運(yùn)算電路,支持該運(yùn)算電路的流水化計(jì)算。這樣就可使得協(xié)處理器在接收數(shù)據(jù)、準(zhǔn) 備數(shù)據(jù)的同時(shí)進(jìn)行數(shù)據(jù)的互相關(guān)計(jì)算。
[0030] 本發(fā)明設(shè)計(jì)的一種提高協(xié)處理器運(yùn)算效率的方法,所述協(xié)處理器包括數(shù)據(jù)準(zhǔn)備邏 輯電路、存儲(chǔ)塊陣列、存儲(chǔ)塊陣列電路、運(yùn)算緩存區(qū)A、運(yùn)算緩存區(qū)B和互相關(guān)運(yùn)算電路;所 述存儲(chǔ)塊陣列分別與存儲(chǔ)塊陣列電路和數(shù)據(jù)準(zhǔn)備邏輯電路相連接,所述存儲(chǔ)塊陣列電路分 別與存儲(chǔ)塊陣列和數(shù)據(jù)準(zhǔn)備邏輯電路相連接,所述數(shù)據(jù)準(zhǔn)備邏輯電路相連接分別與存儲(chǔ)塊 陣列、存儲(chǔ)塊陣列電路、運(yùn)算緩存區(qū)A、運(yùn)算緩存區(qū)B和互相關(guān)運(yùn)算電路相連接,所述運(yùn)算緩 存區(qū)A分別與數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路相連接,所述運(yùn)算緩存B分別與數(shù)據(jù)準(zhǔn) 備邏輯電路和互相關(guān)運(yùn)算電路相連接,所述互相關(guān)運(yùn)算電路分別與數(shù)據(jù)準(zhǔn)備邏輯電路、運(yùn) 算緩存區(qū)A和運(yùn)算緩存區(qū)B相連接;具體步驟如下(參見(jiàn)圖3):
[0031] (1)外部串行數(shù)據(jù)發(fā)送給協(xié)處理器,按照如下方式保存到協(xié)處理器存儲(chǔ)塊陣列中: 將N個(gè)向量存儲(chǔ)到協(xié)處理器的η個(gè)存儲(chǔ)塊中,每個(gè)向量包含η個(gè)數(shù)據(jù),第一向量中的η個(gè)數(shù) 據(jù)(D1、D2、……、Dn)進(jìn)入后依次保存到第一存儲(chǔ)塊的第一地址處、第二存儲(chǔ)塊的第一地址 處、……、第η存儲(chǔ)塊的第一地址處;第二向量中的η個(gè)數(shù)據(jù)進(jìn)入后依次保存到第一存儲(chǔ)塊 的第二地址處、第二存儲(chǔ)塊的第二地址處、……、第η存儲(chǔ)塊的第二地址處;以此類推完成 N個(gè)向量數(shù)據(jù)的存儲(chǔ);
[0032] (2)在進(jìn)行步驟⑴的數(shù)據(jù)存儲(chǔ)過(guò)程中,當(dāng)完成第一向量的η個(gè)數(shù)據(jù)存儲(chǔ)后沒(méi)有特 殊操作,協(xié)處理器繼續(xù)接收數(shù)據(jù);但當(dāng)?shù)诙蛄康摩莻€(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí), 協(xié)處理器存儲(chǔ)塊陣列電路會(huì)產(chǎn)生一個(gè)互相關(guān)使能信號(hào);后續(xù)每當(dāng)一個(gè)向量,即第二向量到 第N向量的η個(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí),存儲(chǔ)塊陣列電路都會(huì)產(chǎn)生一個(gè)互相關(guān) 使能信號(hào);
[0033] (3)存儲(chǔ)塊陣列電路發(fā)送的互相關(guān)使能信號(hào)使數(shù)據(jù)準(zhǔn)備邏輯電路啟動(dòng);數(shù)據(jù)準(zhǔn)備 邏輯電路首先從存儲(chǔ)塊陣列中讀取最后進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)的第M向量,所述M的取 值范圍是2 < M < Ν,放到運(yùn)算緩存區(qū)A中,再讀取第一向量到運(yùn)算緩存區(qū)Β,同時(shí)向互相關(guān) 運(yùn)算電路給出運(yùn)算使能信號(hào),啟動(dòng)互相關(guān)運(yùn)算電路,計(jì)算運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B中兩 個(gè)向量的互相關(guān);
[0034] (4)在電路設(shè)計(jì)時(shí)序上緊隨步驟(3),數(shù)據(jù)準(zhǔn)備邏輯電路按時(shí)鐘依次再讀取第二 向量、第三向量、……、第M-I向量到運(yùn)算緩存區(qū)Β,以連續(xù)的數(shù)據(jù)流支持互相關(guān)運(yùn)算電路的 計(jì)算流水,流水化的計(jì)算第M向量與第一向量、第二向量、……、第M-I向量的互相關(guān);
[0035] (5)完成步驟(4)中的工作后,數(shù)據(jù)準(zhǔn)備邏輯電路判斷是否有新的產(chǎn)生于步驟(2) 中的互相關(guān)使能信號(hào),如果沒(méi)有,則掛起數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路,等待新的 互相關(guān)使能信號(hào);一旦數(shù)據(jù)準(zhǔn)備邏輯電路獲取新的互相關(guān)使能信號(hào),則按照步驟(3)、步驟 (4)完成新進(jìn)入?yún)f(xié)處理器的第Μ+1向量與第一向量、第二向量、……、第M向量的互相關(guān)運(yùn) 算;
[0036] (6)重復(fù)上述步驟直至完成所有N個(gè)向量的兩兩互相關(guān)運(yùn)算,由互相關(guān)運(yùn)算電路 將最終的計(jì)算結(jié)果輸出,從而完成提高協(xié)處理器運(yùn)算效率。
[0037] 實(shí)施例1
[0038] 本發(fā)明設(shè)計(jì)的一種提高協(xié)處理器運(yùn)算效率的方法,以10個(gè)向量,每個(gè)向量包括6 個(gè)數(shù)據(jù)為例,【具體實(shí)施方式】包括以下步驟(參見(jiàn)圖4、圖5) :
[0039] (1)外部串行數(shù)據(jù)發(fā)送給協(xié)處理器,按照如下方式保存到協(xié)處理器存儲(chǔ)塊陣列中: 將10個(gè)向量存儲(chǔ)到協(xié)處理器的6個(gè)存儲(chǔ)塊中,每個(gè)向量包含6個(gè)數(shù)據(jù),第一向量中的6個(gè) 數(shù)據(jù)(D1、D2、D3、D4、D5、D6)進(jìn)入后依次保存到第一存儲(chǔ)塊的第一地址處、第二存儲(chǔ)塊的第 一地址處、……、第六存儲(chǔ)塊的第一地址處;第二向量中的6個(gè)數(shù)據(jù)進(jìn)入后依次保存到第一 存儲(chǔ)塊的第二地址處、第二存儲(chǔ)塊的第二地址處、……、第六存儲(chǔ)塊的第二地址處;以此類 推完成十個(gè)向量數(shù)據(jù)的存儲(chǔ);
[0040] (2)在進(jìn)行步驟⑴的數(shù)據(jù)存儲(chǔ)過(guò)程中,當(dāng)完成第一向量的6個(gè)數(shù)據(jù)存儲(chǔ)后沒(méi)有特 殊操作,協(xié)處理器繼續(xù)接收數(shù)據(jù)。但當(dāng)?shù)诙蛄康?個(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí), 協(xié)處理器存儲(chǔ)塊陣列電路會(huì)產(chǎn)生一個(gè)互相關(guān)使能信號(hào);后續(xù)每當(dāng)一個(gè)向量的6個(gè)數(shù)據(jù)都進(jìn) 入?yún)f(xié)處理器并完成存儲(chǔ)時(shí),存儲(chǔ)塊陣列電路都會(huì)產(chǎn)生一個(gè)互相關(guān)使能信號(hào);
[0041] (3)存儲(chǔ)塊陣列電路發(fā)送的互相關(guān)使能信號(hào)使數(shù)據(jù)準(zhǔn)備邏輯電路啟動(dòng)。數(shù)據(jù)準(zhǔn)備 邏輯電路首先從存儲(chǔ)塊陣列中讀取最后進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)的第六向量(以第六向 量為例),放到運(yùn)算緩存區(qū)A中,再讀取第一向量到運(yùn)算緩存區(qū)B,同時(shí)向互相關(guān)運(yùn)算電路給 出運(yùn)算使能信號(hào),啟動(dòng)互相關(guān)運(yùn)算電路,計(jì)算運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B中兩個(gè)向量的互 相關(guān);
[0042] (4)在電路設(shè)計(jì)時(shí)序上緊隨步驟(3),數(shù)據(jù)準(zhǔn)備邏輯電路按時(shí)鐘依次再讀取第二 向量、第三向量、……、第五向量到運(yùn)算緩存區(qū)B,以連續(xù)的數(shù)據(jù)流支持互相關(guān)運(yùn)算電路的計(jì) 算流水,流水化的計(jì)算第六向量與第一向量、第二向量、……、第五向量的互相關(guān);
[0043] (5)完成步驟(4)中的工作后,第七向量按照此方法進(jìn)入?yún)f(xié)處理器,產(chǎn)生新的互相 關(guān)使能信號(hào),數(shù)據(jù)準(zhǔn)備邏輯電路判斷有新的產(chǎn)生于步驟(2)中的互相關(guān)使能信號(hào),按照步 驟(3)、步驟(4)完成新進(jìn)入?yún)f(xié)處理器的第七向量與第一向量、第二向量、……、第六向量的 互相關(guān)運(yùn)算;
[0044] (6)重復(fù)上述步驟直至完成所有十個(gè)向量的兩兩互相關(guān)運(yùn)算,由互相關(guān)運(yùn)算電路 將最終的計(jì)算結(jié)果輸出,從而完成提高協(xié)處理器運(yùn)算效率。
【權(quán)利要求】
1. 一種提高協(xié)處理器運(yùn)算效率的方法,所述協(xié)處理器包括存儲(chǔ)塊陣列、存儲(chǔ)塊陣列電 路、數(shù)據(jù)準(zhǔn)備邏輯電路、運(yùn)算緩存區(qū)A、運(yùn)算緩存區(qū)B和互相關(guān)運(yùn)算電路;所述存儲(chǔ)塊陣列分 別與存儲(chǔ)塊陣列電路和數(shù)據(jù)準(zhǔn)備邏輯電路相連接,所述存儲(chǔ)塊陣列電路分別與存儲(chǔ)塊陣列 和數(shù)據(jù)準(zhǔn)備邏輯電路相連接,所述數(shù)據(jù)準(zhǔn)備邏輯電路相連接分別與存儲(chǔ)塊陣列、存儲(chǔ)塊陣 列電路、運(yùn)算緩存區(qū)A、運(yùn)算緩存區(qū)B和互相關(guān)運(yùn)算電路相連接,所述運(yùn)算緩存區(qū)A分別與數(shù) 據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路相連接,所述運(yùn)算緩存B分別與數(shù)據(jù)準(zhǔn)備邏輯電路和互 相關(guān)運(yùn)算電路相連接,所述互相關(guān)運(yùn)算電路分別與數(shù)據(jù)準(zhǔn)備邏輯電路、運(yùn)算緩存區(qū)A和運(yùn) 算緩存區(qū)B相連接;其特征在于具體步驟如下: (1) 外部串行數(shù)據(jù)發(fā)送給協(xié)處理器,按照如下方式保存到協(xié)處理器存儲(chǔ)塊陣列中:將N 個(gè)向量存儲(chǔ)到協(xié)處理器的η個(gè)存儲(chǔ)塊中,每個(gè)向量包含η個(gè)數(shù)據(jù),第一向量中的η個(gè)數(shù)據(jù) (Dl、D2、……、Dn)進(jìn)入后依次保存到第一存儲(chǔ)塊的第一地址處、第二存儲(chǔ)塊的第一地址 處、……、第η存儲(chǔ)塊的第一地址處;第二向量中的η個(gè)數(shù)據(jù)進(jìn)入后依次保存到第一存儲(chǔ)塊 的第二地址處、第二存儲(chǔ)塊的第二地址處、……、第η存儲(chǔ)塊的第二地址處;以此類推完成 Ν個(gè)向量數(shù)據(jù)的存儲(chǔ); (2) 在進(jìn)行步驟(1)的數(shù)據(jù)存儲(chǔ)過(guò)程中,當(dāng)完成第一向量的η個(gè)數(shù)據(jù)存儲(chǔ)后沒(méi)有特殊操 作,協(xié)處理器繼續(xù)接收數(shù)據(jù);但當(dāng)?shù)诙蛄康摩莻€(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí),協(xié)處 理器存儲(chǔ)塊陣列電路會(huì)產(chǎn)生一個(gè)互相關(guān)使能信號(hào);后續(xù)每當(dāng)一個(gè)向量,即第二向量到第Ν 向量的η個(gè)數(shù)據(jù)都進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)時(shí),存儲(chǔ)塊陣列電路都會(huì)產(chǎn)生一個(gè)互相關(guān)使能 信號(hào); (3) 存儲(chǔ)塊陣列電路發(fā)送的互相關(guān)使能信號(hào)使數(shù)據(jù)準(zhǔn)備邏輯電路啟動(dòng);數(shù)據(jù)準(zhǔn)備邏輯 電路首先從存儲(chǔ)塊陣列中讀取最后進(jìn)入?yún)f(xié)處理器并完成存儲(chǔ)的第Μ向量,所述Μ的取值范 圍是2 < Μ < Ν,放到運(yùn)算緩存區(qū)Α中,再讀取第一向量到運(yùn)算緩存區(qū)Β,同時(shí)向互相關(guān)運(yùn)算 電路給出運(yùn)算使能信號(hào),啟動(dòng)互相關(guān)運(yùn)算電路,計(jì)算運(yùn)算緩存區(qū)A和運(yùn)算緩存區(qū)B中兩個(gè)向 量的互相關(guān); (4) 在電路設(shè)計(jì)時(shí)序上緊隨步驟(3),數(shù)據(jù)準(zhǔn)備邏輯電路按時(shí)鐘依次再讀取第二向量、 第三向量、……、第M-1向量到運(yùn)算緩存區(qū)B,以連續(xù)的數(shù)據(jù)流支持互相關(guān)運(yùn)算電路的計(jì)算 流水,流水化的計(jì)算第Μ向量與第一向量、第二向量、……、第Μ-1向量的互相關(guān); (5) 完成步驟(4)中的工作后,數(shù)據(jù)準(zhǔn)備邏輯電路判斷是否有新的產(chǎn)生于步驟(2)中的 互相關(guān)使能信號(hào),如果沒(méi)有,則掛起數(shù)據(jù)準(zhǔn)備邏輯電路和互相關(guān)運(yùn)算電路,等待新的互相關(guān) 使能信號(hào);一旦數(shù)據(jù)準(zhǔn)備邏輯電路獲取新的互相關(guān)使能信號(hào),則按照步驟(3)、步驟(4)完 成新進(jìn)入?yún)f(xié)處理器的第Μ+1向量與第一向量、第二向量、……、第Μ向量的互相關(guān)運(yùn)算; (6) 重復(fù)上述步驟直至完成所有Ν個(gè)向量的兩兩互相關(guān)運(yùn)算,由互相關(guān)運(yùn)算電路將最 終的計(jì)算結(jié)果輸出,從而完成提高協(xié)處理器運(yùn)算效率。
【文檔編號(hào)】G06F7/57GK104238994SQ201410440429
【公開(kāi)日】2014年12月24日 申請(qǐng)日期:2014年9月1日 優(yōu)先權(quán)日:2014年9月1日
【發(fā)明者】王可, 曾永紅, 朱天成, 周津, 魯毅, 紀(jì)策 申請(qǐng)人:中國(guó)航天科工集團(tuán)第三研究院第八三五七研究所