亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多線程流分支控制方法及其控制裝置的制作方法

文檔序號(hào):6352637閱讀:354來源:國知局
專利名稱:一種多線程流分支控制方法及其控制裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明主要涉及到計(jì)算機(jī)流體系結(jié)構(gòu)的設(shè)計(jì)領(lǐng)域,特指一種在流水線中實(shí)現(xiàn)多線 程流分支控制的方法和裝置。
背景技術(shù)
流處理廣泛應(yīng)用于密集數(shù)據(jù)的并行計(jì)算中,它將數(shù)據(jù)組織成由記錄構(gòu)成的流, 然后對流中的所有記錄進(jìn)行順序處理,生成一個(gè)或多個(gè)輸出流。它對流中所有記錄的處 理過程相同,并且各個(gè)記錄的處理是完全并行的。傳統(tǒng)流處理常常采用SIMD (Single Instruction Multi Data,單指令多數(shù)據(jù)流)方式,但這一方式對流的支持過于單一化,應(yīng) 用編程上受到數(shù)據(jù)向量結(jié)構(gòu)束縛,使得其應(yīng)用領(lǐng)域狹窄,大量擁有較好流特征的應(yīng)用無法 高效映射。另一種更加適應(yīng)于復(fù)雜流控制的處理方式就是SPMD (Single Program Multi Data,單程序多數(shù)據(jù)流),在SPMD并行計(jì)算中,每個(gè)處理核上執(zhí)行的是相同的程序,這可視為 獨(dú)立的線程。對于每個(gè)線程來說,需要知道自己的身份標(biāo)識(shí)(一般稱之為線程ID),從而確定 該線程需要完成的任務(wù)。線程控制是并行程序的重要組成部分,所有的數(shù)據(jù)處理和交換過程都離不開進(jìn)程 標(biāo)識(shí)。為了滿足較為復(fù)雜的流處理的需要,往往需要對處理過程中的條件分支進(jìn)行控制。在 高級(jí)語言編程層面,并行的流處理被視為包含多個(gè)線程的線程組。在執(zhí)行中,如果線程組內(nèi) 有線程發(fā)生分支轉(zhuǎn)移,其余路徑的線程就需要等待。而在分支轉(zhuǎn)移之前和分支完成之后,流 水線中線程組內(nèi)所有線程執(zhí)行相同指令。目前,主要采用條件流來解決流處理中分支跳轉(zhuǎn)的控制問題,其實(shí)質(zhì)是在處理流 數(shù)據(jù)之前或之后,依某些條件值的不同隊(duì)流記錄進(jìn)行重組或剔選。重組的流必定滿足某一 相同操作的條件,從而避免在計(jì)算過程中再根據(jù)數(shù)據(jù)選擇不同的操作,實(shí)際上是將控制相 關(guān)轉(zhuǎn)變成了數(shù)據(jù)路由。但是,這一方法需要增加新的硬件邏輯以確定條件輸入流和條件輸 出流,并為此相應(yīng)地增加特殊指令,這樣對編程和編譯方式有了更高的要求,在執(zhí)行上也存 在可靠性上的缺陷。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題就在于針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一 種原理簡單、結(jié)構(gòu)簡單緊湊、成本低廉、可靠性好、響應(yīng)速度快、功耗低的多線程流分支控制 方法及其控制裝置。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案 一種多線程流分支控制方法,其特征在于步驟為①初始化在外部PC寄存器第一次初始化時(shí),每個(gè)標(biāo)量核的內(nèi)部PC寄存器也初始化 為相同值;②取指令階段將每個(gè)標(biāo)量核內(nèi)部PC寄存器的值與外部PC寄存器的值進(jìn)行比較,如 果兩者不相等,不接收當(dāng)前指令,直到外部PC寄存器的值變化到與內(nèi)部PC寄存器的值相等;如果兩者相等,正常進(jìn)行取指令操作;③指令譯碼階段判斷指令類型,如果是分支指令,那么每個(gè)標(biāo)量核中都需要“排空” 流水線,即清除流水線在分支指令之后讀入的任何指令;④執(zhí)行階段未被排空的流水線正常執(zhí)行指令;⑤存儲(chǔ)訪問階段將對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存器值;⑥寫回階段當(dāng)所有標(biāo)量核內(nèi)部PC寄存器的值計(jì)算完成時(shí),對所有值進(jìn)行比較,獲得 一個(gè)最小值,將上述最小值賦值給外部PC寄存器。作為本發(fā)明的進(jìn)一步改進(jìn)在每個(gè)取指令階段結(jié)束前,所述外部PC寄存器要進(jìn)行累加,指向指令存儲(chǔ)器上物理地 址相鄰的下一條指令;所有正常進(jìn)行取指令操作的標(biāo)量核的內(nèi)部PC寄存器也進(jìn)行累加,與 外部PC寄存器的值保持同步。本發(fā)明進(jìn)一步提供一種多線程流分支控制裝置,其特征在于包括組成SPMD流處 理器的多個(gè)標(biāo)量核和一個(gè)外部PC寄存器,所述每個(gè)標(biāo)量核中均包括一個(gè)內(nèi)部PC寄存器以 及依次相連的取指令單元、指令譯碼單元、執(zhí)行單元、存儲(chǔ)訪問單元和寫回單元,所述取指 令單元包括比較器和取值部件,所述比較器將每個(gè)標(biāo)量核的內(nèi)部PC寄存器的值與外部PC 寄存器的值進(jìn)行比較,所述取值部件根據(jù)上述比較器的結(jié)果執(zhí)行或不執(zhí)行取指令操作,所 述指令譯碼單元用來判斷指令類型并根據(jù)指令類型執(zhí)行排空流水線的操作,所述執(zhí)行單元 用來在未被排空的流水線中正常執(zhí)行指令,所述存儲(chǔ)訪問單元對分支指令計(jì)算出每個(gè)標(biāo)量 核的內(nèi)部PC寄存器值,所述寫回單元包括多路比較器和多路選擇器,多路比較器用來對所 有標(biāo)量核內(nèi)部PC寄存器的值進(jìn)行比較,獲得一個(gè)最小值,并通過多路選擇器將上述最小值 賦值給外部PC寄存器。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于1、本發(fā)明提出的控制方法原理十分簡單,且其控制裝置的結(jié)構(gòu)也十分簡單,整體上以 已有的硬件為基礎(chǔ),充分利用了現(xiàn)有的硬件資源,只增加了若干簡單的硬件邏輯,降低了電 路設(shè)計(jì)的復(fù)雜性;2、本發(fā)明提出的結(jié)構(gòu)沒有復(fù)雜的喚醒組合邏輯,以比較器的結(jié)果作為使能端控制分支 指令的選擇,不存在阻塞延時(shí),響應(yīng)速度較快;3、本發(fā)明提出的控制方法能阻止錯(cuò)誤分支中的指令進(jìn)入標(biāo)量核,從而避免了無效的執(zhí) 行操作,降低了電路的功耗。


圖1是本發(fā)明的原理示意圖。
具體實(shí)施例方式以下將結(jié)合說明書附圖和具體實(shí)施例對本發(fā)明做進(jìn)一步詳細(xì)說明。如圖1所示,本發(fā)明所應(yīng)用的SPMD流處理器包括數(shù)個(gè)標(biāo)量核,每個(gè)標(biāo)量核中都有 一個(gè)內(nèi)部PC寄存器,整個(gè)SPMD流處理具有一個(gè)外部PC寄存器。每個(gè)標(biāo)量核內(nèi)的流水線分 為五個(gè)階段取指令階段(IF)、指令譯碼階段(ID)、執(zhí)行階段(EX)、存儲(chǔ)訪問階段(MEM)和 寫回階段(WB)。
本發(fā)明多線程流分支控制方法的詳細(xì)流程為①在外部PC寄存器第一次初始化時(shí)(指向所要執(zhí)行程序的初始位置),每個(gè)標(biāo)量核的 內(nèi)部PC寄存器也初始化為相同值。這樣,可以確保程序的第一條指令得以執(zhí)行。②在取指令階段(IF),每個(gè)標(biāo)量核的內(nèi)部PC寄存器的值都要和外部PC寄存器的 值進(jìn)行比較,如果兩者不相等,這表明準(zhǔn)備獲取的指令不在該標(biāo)量核所需執(zhí)行的分支上,此 時(shí)比較器的結(jié)果作為使能端控制取指令部件,使其不接收當(dāng)前指令,這樣就暫停了該標(biāo)量 核的流水線操作。這相當(dāng)于“凍結(jié)”該標(biāo)量核的流水線。被“凍結(jié)”流水線中標(biāo)量核的內(nèi)部 PC寄存器的值保持不變,直到外部PC寄存器的值變化到與內(nèi)部PC寄存器的值相等。而如 果標(biāo)量核的內(nèi)部PC寄存器的值和外部PC寄存器的值相等,這表明準(zhǔn)備獲取的指令在該標(biāo) 量核所需執(zhí)行的分支上,那么該標(biāo)量核取指部件的使能端將被選通,正常進(jìn)行取指令操作。 在每個(gè)IF階段結(jié)束前,外部PC寄存器要進(jìn)行累加(一般描述為NPCfiPC+4),指向指令存儲(chǔ)器 上物理地址相鄰的下一條指令;所有正常進(jìn)行取指令操作的標(biāo)量核的內(nèi)部PC寄存器也進(jìn) 行累加,與外部PC寄存器的值保持同步。這樣,就實(shí)現(xiàn)了根據(jù)內(nèi)部PC寄存器的值來判定不 同標(biāo)量核上線程所需執(zhí)行的分支路徑。③在指令譯碼階段(ID)會(huì)判斷指令類型。如果是分支指令,那么每個(gè)標(biāo)量核中 都需要“排空”流水線,即清除流水線在分支指令之后讀入的任何指令。這樣,就避免了錯(cuò) 誤的分支路徑上的指令進(jìn)入到流水線。④在執(zhí)行階段(EX)沒有額外的操作,未被排空的流水線正常執(zhí)行指令。⑤在存儲(chǔ)訪問階段(MEM)將對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存器值。 不同標(biāo)量核根據(jù)自己私有的數(shù)據(jù)內(nèi)容對分支有不同的判斷,有的滿足分支條件將進(jìn)行跳轉(zhuǎn) (其內(nèi)部PC寄存器更新為所要跳轉(zhuǎn)到的位置),有的不滿足分支條件將不進(jìn)行跳轉(zhuǎn)(其內(nèi)部 PC寄存器保持不變),也有一些極端情況是都所有標(biāo)量核都進(jìn)行跳轉(zhuǎn)或者都不進(jìn)行跳轉(zhuǎn)。在 遇到分支之前(或者分支執(zhí)行完之后),外部PC寄存器和每個(gè)標(biāo)量核的內(nèi)部PC寄存器的值 都是一樣的(這表明所有標(biāo)量核都在完成同一條指令),而遇到分支指令之后,每個(gè)標(biāo)量核 上執(zhí)行的線程將產(chǎn)生路徑分化。它們需要選擇性地獲取不同路徑上的指令。為此,當(dāng)所有 標(biāo)量核內(nèi)部PC寄存器的值計(jì)算完成時(shí),它們將被送到一個(gè)多路比較器進(jìn)行比較,獲得一個(gè) 最小值。⑥在寫回階段(WB),上述最小值被賦值給外部PC寄存器。對于所有的順序指令操作(即使在一個(gè)分支路徑內(nèi))來說,外部PC寄存器的值每獲 取一條指令之后都是累加的,因此在執(zhí)行不同分支路徑時(shí),物理存儲(chǔ)地址較小的分支得以 優(yōu)先執(zhí)行。這樣,當(dāng)分支結(jié)束后便自然匯合。本發(fā)明同樣適用于分支嵌套情況的處理。從高級(jí)語言編程的角度來看,本發(fā)明所實(shí)現(xiàn)的多線程流分支控制方法就相當(dāng)于串 行化逐個(gè)執(zhí)行分支。如果分支指令很多,它在性能上會(huì)有一定的損失,但是能夠可靠地完成 各分支路徑的指令。參見圖1,本發(fā)明進(jìn)一步提供一種多線程流分支控制裝置,包括組成SPMD流處理 器的多個(gè)標(biāo)量核和一個(gè)外部PC寄存器,每個(gè)標(biāo)量核中均包括一個(gè)內(nèi)部PC寄存器以及依次 相連的取指令單元、指令譯碼單元、執(zhí)行單元、存儲(chǔ)訪問單元和寫回單元,取指令單元包括 比較器和取值部件,比較器將每個(gè)標(biāo)量核的內(nèi)部PC寄存器的值與外部PC寄存器的值進(jìn)行 比較,取值部件根據(jù)上述比較器的結(jié)果執(zhí)行或不執(zhí)行取指令操作,指令譯碼單元用來判斷指令類型并根據(jù)指令類型執(zhí)行排空流水線的操作,執(zhí)行單元用來在未被排空的流水線中正 常執(zhí)行指令,所述存儲(chǔ)訪問單元對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存器值,寫回單 元包括多路比較器和多路選擇器,多路比較器用來對所有標(biāo)量核內(nèi)部PC寄存器的值進(jìn)行 比較,獲得一個(gè)最小值,并通過多路選擇器將上述最小值賦值給外部PC寄存器。
以上僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例, 凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護(hù) 范圍。
權(quán)利要求
1.一種多線程流分支控制方法,其特征在于步驟為①初始化在外部PC寄存器第一次初始化時(shí),每個(gè)標(biāo)量核的內(nèi)部PC寄存器也初始化 為相同值;②取指令階段將每個(gè)標(biāo)量核內(nèi)部PC寄存器的值與外部PC寄存器的值進(jìn)行比較,如 果兩者不相等,不接收當(dāng)前指令,直到外部PC寄存器的值變化到與內(nèi)部PC寄存器的值相 等;如果兩者相等,正常進(jìn)行取指令操作;③指令譯碼階段判斷指令類型,如果是分支指令,那么每個(gè)標(biāo)量核中都需要“排空” 流水線,即清除流水線在分支指令之后讀入的任何指令;④執(zhí)行階段未被排空的流水線正常執(zhí)行指令;⑤存儲(chǔ)訪問階段將對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存器值;⑥寫回階段當(dāng)所有標(biāo)量核內(nèi)部PC寄存器的值計(jì)算完成時(shí),對所有值進(jìn)行比較,獲得 一個(gè)最小值,將上述最小值賦值給外部PC寄存器。
2.根據(jù)權(quán)利要求1所述的多線程流分支控制方法,其特征在于在每個(gè)取指令階段結(jié) 束前,所述外部PC寄存器要進(jìn)行累加,指向指令存儲(chǔ)器上物理地址相鄰的下一條指令;所 有正常進(jìn)行取指令操作的標(biāo)量核的內(nèi)部PC寄存器也進(jìn)行累加,與外部PC寄存器的值保持 同步。
3.一種多線程流分支控制裝置,其特征在于包括組成SPMD流處理器的多個(gè)標(biāo)量核 和一個(gè)外部PC寄存器,所述每個(gè)標(biāo)量核中均包括一個(gè)內(nèi)部PC寄存器以及依次相連的取指 令單元、指令譯碼單元、執(zhí)行單元、存儲(chǔ)訪問單元和寫回單元,所述取指令單元包括比較器 和取值部件,所述比較器將每個(gè)標(biāo)量核的內(nèi)部PC寄存器的值與外部PC寄存器的值進(jìn)行比 較,所述取值部件根據(jù)上述比較器的結(jié)果執(zhí)行或不執(zhí)行取指令操作,所述指令譯碼單元用 來判斷指令類型并根據(jù)指令類型執(zhí)行排空流水線的操作,所述執(zhí)行單元用來在未被排空的 流水線中正常執(zhí)行指令,所述存儲(chǔ)訪問單元對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存 器值,所述寫回單元包括多路比較器和多路選擇器,多路比較器用來對所有標(biāo)量核內(nèi)部PC 寄存器的值進(jìn)行比較,獲得一個(gè)最小值,并通過多路選擇器將上述最小值賦值給外部PC寄 存器。
全文摘要
一種多線程流分支控制方法及其控制裝置,該方法的步驟為①初始化;②取指令階段比較每個(gè)標(biāo)量核內(nèi)部PC寄存器與外部PC寄存器的值;③指令譯碼階段如果是分支指令,每個(gè)標(biāo)量核中都“排空”流水線;④執(zhí)行階段未被排空的流水線正常執(zhí)行指令;⑤存儲(chǔ)訪問階段對分支指令計(jì)算出每個(gè)標(biāo)量核的內(nèi)部PC寄存器值;⑥寫回階段對計(jì)算后所有標(biāo)量核內(nèi)部PC寄存器的值進(jìn)行比較,將最小值賦值給外部PC寄存器。該控制裝置包括多個(gè)標(biāo)量核和一個(gè)外部PC寄存器,每個(gè)標(biāo)量核中均包括一個(gè)內(nèi)部PC寄存器以及依次相連的取指令單元、指令譯碼單元、執(zhí)行單元、存儲(chǔ)訪問單元和寫回單元。本發(fā)明具有原理簡單、成本低廉、可靠性好、響應(yīng)速度快、功耗低等優(yōu)點(diǎn)。
文檔編號(hào)G06F9/38GK102053821SQ20111000155
公開日2011年5月11日 申請日期2011年1月6日 優(yōu)先權(quán)日2011年1月6日
發(fā)明者付桂濤, 何銳, 孟曉冬, 晏小波, 李方圓, 梅家祥, 湯先拓, 王宏燕, 王慶林, 蔡放, 趙齊, 邢座程, 邱建雄, 閔銀皮, 陳小保, 馬安國, 黃平 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1