用于批量線程處理的處理器、處理方法和代碼生成設(shè)備的制作方法
【專利摘要】公開用于批量線程處理的處理器、處理方法和代碼生成設(shè)備。用于批量線程處理的處理器包括:中央寄存器文件;一個(gè)或更多個(gè)批量功能單元,每個(gè)批量功能單元包括兩個(gè)或更多個(gè)功能單元以及一個(gè)或更多個(gè)用于訪問(wèn)中央寄存器文件的端口。批量功能單元中的功能單元執(zhí)行包括一個(gè)或更多個(gè)指令的批量指令,以順序地執(zhí)行批量指令中的一個(gè)或更多個(gè)指令。
【專利說(shuō)明】用于批量線程處理的處理器、處理方法和代碼生成設(shè)備
[0001] 本申請(qǐng)要求于2013年4月22日提交的第10-2013-0044435號(hào)韓國(guó)專利申請(qǐng)的優(yōu) 先權(quán),其公開通過(guò)引用完整地包含于此。
【技術(shù)領(lǐng)域】
[0002] 與示例性實(shí)施例一致的方法和設(shè)備涉及一種用于批量線程處理的處理器、使用所 述處理器的批量線程處理方法和用于支持批量線程處理器的代碼生成設(shè)備。
【背景技術(shù)】
[0003] 粗粒度可重構(gòu)陣列(CGRA)是指具有陣列形式的多個(gè)功能單元(FU)的硬件。CGRA 用于加速操作。此外,即使在數(shù)據(jù)之間存在依賴性,CGRA也可通過(guò)使用軟件流水線技術(shù)來(lái) 最大化吞吐量。然而,在編譯階段執(zhí)行數(shù)據(jù)處理的所有調(diào)度,這增加了編譯時(shí)間。此外,當(dāng) 執(zhí)行多線程時(shí),硬件開銷很大,使得在執(zhí)行具有大的、未定義的延遲時(shí)間的操作(例如,存 儲(chǔ)器訪問(wèn))時(shí)操作效率降低。
[0004] 作為另一示例,單指令多線程(SMT)是與CGRA相似的包括多個(gè)功能單元的架構(gòu)。 SMT在執(zhí)行由每個(gè)功能單元處理的單個(gè)線程的同時(shí)使用由多個(gè)功能單元處理的單個(gè)指令。 根據(jù)SMT,多個(gè)功能單元以相同的指令順序處理大量數(shù)據(jù),從而使需要在同一處理中處理 大量數(shù)據(jù)的大規(guī)模并行數(shù)據(jù)處理應(yīng)用受益。此外,當(dāng)操作延遲高時(shí),SMT通過(guò)執(zhí)行不同線 程的線程切換來(lái)提供優(yōu)越的處理效率。然而,在每個(gè)數(shù)據(jù)之間的依賴性存在于數(shù)據(jù)處理中 的情況下,線程處理非常困難。
【發(fā)明內(nèi)容】
[0005] 根據(jù)不例性實(shí)施例的一方面,一種處理器可包括:中央寄存器文件;第一批量功 能單兀,包括第一多個(gè)功能單兀、第一輸入端口和第一輸出端口,其中,第一多個(gè)功能單兀 通過(guò)第一輸入端口訪問(wèn)中央寄存器文件,并且第一多個(gè)功能單元通過(guò)第一輸出端口訪問(wèn)中 央寄存器文件;第二批量功能單元,包括第二多個(gè)功能單元、第二輸入端口和第二輸出端 口,其中,第二多個(gè)功能單元通過(guò)第二輸入端口訪問(wèn)中央寄存器文件,并且第二多個(gè)功能單 元通過(guò)第二輸出端口訪問(wèn)中央寄存器文件,其中,第一批量功能單元被配置為接收包括程 序的一個(gè)或更多個(gè)第一指令的第一批量指令,并且順序地執(zhí)行所述一個(gè)或更多個(gè)第一指 令,第二批量功能單元被配置為接收包括所述程序的一個(gè)或更多個(gè)第二指令的第二批量指 令,并且順序地執(zhí)行所述一個(gè)或更多個(gè)第二指令。
[0006] 第一批量功能單元還可包括一個(gè)或更多個(gè)第一本地寄存器文件,第一本地寄存器 文件被配置為存儲(chǔ)第一多個(gè)功能單元的輸入/輸出數(shù)據(jù),第二批量功能單元還可包括一個(gè) 或更多個(gè)第二本地寄存器文件,第二本地寄存器文件被配置為存儲(chǔ)第二多個(gè)功能單元的輸 入/輸出數(shù)據(jù)。
[0007] 第一批量功能單元可被配置為通過(guò)使用第一多個(gè)功能單元、第一多個(gè)功能單元之 間的連接以及所述一個(gè)或更多個(gè)第一本地寄存器文件而作為粗粒度可重構(gòu)陣列(CGRA)操 作,第二批量功能單元可被配置為通過(guò)使用第二多個(gè)功能單元、第二多個(gè)功能單元之間的 連接以及所述一個(gè)或更多個(gè)第二本地寄存器文件而作為CGRA操作。
[0008] 第一批量功能單元的結(jié)構(gòu)可與第二批量功能單元的結(jié)構(gòu)相同。
[0009] 第一多個(gè)功能單元可被配置為處理所述一個(gè)或更多個(gè)第一指令,第二多個(gè)功能單 元可被配置為處理所述一個(gè)或更多個(gè)第二指令。
[0010] 第一批量功能單元可被配置為在特定周期期間通過(guò)使用偏移指令信息執(zhí)行所述 一個(gè)或更多個(gè)第二指令中的至少一個(gè)指令,第二批量功能單元可被配置為在特定周期期間 通過(guò)使用偏移指令信息執(zhí)行所述一個(gè)或更多個(gè)第一指令中的至少一個(gè)指令。
[0011] 第一批量指令可包括第一多個(gè)批量指令,第二批量指令可包括第二多個(gè)批量指 令,第一批量功能單元可被配置為,當(dāng)接收到第一多個(gè)批量指令時(shí),以包括一個(gè)或更多個(gè)線 程的線程組為單位順序地執(zhí)行第一多個(gè)批量指令中的每個(gè)批量指令,并且第二批量功能單 元可被配置為,當(dāng)接收到第二多個(gè)批量指令時(shí),以線程組為單位順序地執(zhí)行第二多個(gè)批量 指令中的每個(gè)批量指令。
[0012] 第一批量功能單元和第二批量功能單元可被配置為:如果在針對(duì)批量指令執(zhí)行線 程組期間在特定線程發(fā)生阻塞,并且阻塞持續(xù)到針對(duì)具有對(duì)所述批量指令的依賴性的另一 批量指令執(zhí)行所述線程組的時(shí)刻,則針對(duì)所述另一批量指令以所述線程組中的最后次序執(zhí) 行所述發(fā)生阻塞的特定線程。
[0013] 第一批量功能單元和第二批量功能單元可被配置為:如果在針對(duì)批量指令執(zhí)行線 程組期間發(fā)生條件分支,則將所述線程組劃分為兩個(gè)或更多個(gè)子線程組,并且針對(duì)條件分 支的多個(gè)分支分別執(zhí)行劃分的兩個(gè)或更多個(gè)子線程組。
[0014] 第一批量功能單元和第二批量功能單元可被配置為:如果條件分支的多個(gè)分支結(jié) 束并且合并,則將劃分的兩個(gè)或更多個(gè)子線程組合并為所述線程組并執(zhí)行所述線程組。
[0015] 根據(jù)示例性實(shí)施例的一方面,一種處理器可包括:第一批量功能單元,包括第一多 個(gè)功能單兀、第一輸入端口和第一輸出端口,其中,第一多個(gè)功能單兀通過(guò)第一輸入端口訪 問(wèn)中央寄存器文件,并且第一多個(gè)功能單元通過(guò)第一輸出端口訪問(wèn)中央寄存器文件;第二 批量功能單元,包括第二多個(gè)功能單元、第二輸入端口和第二輸出端口,其中,第二多個(gè)功 能單元通過(guò)第二輸入端口訪問(wèn)中央寄存器文件,并且第二多個(gè)功能單元通過(guò)第二輸出端口 訪問(wèn)中央寄存器文件;多個(gè)偏移寄存器,被分配給第一多個(gè)功能單元和第二多個(gè)功能單元 中的每個(gè)功能單元,其中,使用存儲(chǔ)在批量指令存儲(chǔ)器中的指令,通過(guò)多個(gè)偏移寄存器中的 一個(gè)生成在特定周期期間將被執(zhí)行的偏移指令,并且將生成的偏移指令發(fā)送到分配了多個(gè) 偏移寄存器中的一個(gè)的每個(gè)功能單元。
[0016] 根據(jù)示例性實(shí)施例的另一方面,提供一種用于生成代碼的設(shè)備,所述設(shè)備包括:程 序分析單元,被配置為分析將在包括第一批量功能單元和第二批量功能單元的處理器中處 理的預(yù)定程序,其中,第一批量功能單元包括第一多個(gè)功能單元,第二批量功能單元包括第 二多個(gè)功能單元;批量指令生成單元,被配置為基于分析結(jié)果生成第一批量指令和第二批 量指令,第一批量指令和第二批量指令中的每個(gè)包括將分別在第一批量功能單元和第二批 量功能單元中執(zhí)行的一個(gè)或更多個(gè)指令。
[0017] 根據(jù)示例性實(shí)施例的另一方面,提供一種通過(guò)處理器處理批量線程的方法,包括: 將由代碼生成設(shè)備生成的第一批量指令和第二批量指令輸入到包括第一多個(gè)功能單元的 第一批量功能單元和包括第二多個(gè)功能單元的第二批量功能單元中;分別通過(guò)第一批量功 能單元和第二批量功能單元順序地執(zhí)行第一批量指令和第二批量指令。
[0018] 通過(guò)以下詳細(xì)描述、附圖和權(quán)利要求,以上和其他方面將是清楚的。
【專利附圖】
【附圖說(shuō)明】
[0019] 圖1是示出根據(jù)本公開的示例性實(shí)施例的處理器的示圖。
[0020] 圖2是根據(jù)示例性實(shí)施例的程序的控制流程圖。
[0021] 圖3是示出在一般的SIMT架構(gòu)中執(zhí)行圖2的程序的過(guò)程的示圖。
[0022] 圖4A、圖4B和圖4C是示出在一般的CGRA中執(zhí)行圖2的程序的過(guò)程的示圖。
[0023] 圖5A和圖5B是示出在根據(jù)本公開的示例性實(shí)施例的處理器中執(zhí)行圖2的程序的 過(guò)程的示圖。
[0024] 圖6A和圖6B是示出在根據(jù)本公開的示例性實(shí)施例的處理器的批量功能單元中輸 入的偏移指令(skewed instruction)的不圖。
[0025] 圖7A是示出根據(jù)本公開的另一示例性實(shí)施例的用于偏移指令的輸入的處理器的 示圖。
[0026] 圖7B是示出根據(jù)本公開的另一示例性實(shí)施例的用于偏移指令的輸入的處理器的 示圖。
[0027] 圖8是示出根據(jù)本公開的示例性實(shí)施例的支持用于批量線程處理的處理器的代 碼生成設(shè)備的框圖。
[0028] 圖9是示出根據(jù)本公開的示例性實(shí)施例的使用用于批量線程處理的處理器來(lái)處 理批量線程的方法的流程圖。
[0029] 貫穿附圖和詳細(xì)描述,除非另外描述,否則相同的附圖標(biāo)號(hào)將被理解為指示相同 的元件、特征和結(jié)構(gòu)。為了清楚、說(shuō)明和方便,可能夸大這些元件的相對(duì)大小和描繪。
【具體實(shí)施方式】
[0030] 提供下面的描述以幫助讀者獲得對(duì)這里描述的方法、設(shè)備和/或系統(tǒng)的全面理 解。因此,將向本領(lǐng)域的普通技術(shù)人員推薦這里描述的方法、設(shè)備和/或系統(tǒng)的各種改變、 修改和等同物。此外,為了增加清楚和簡(jiǎn)潔,可省略公知功能和構(gòu)造的描述。此外,以下描 述的術(shù)語(yǔ)是考慮到本公開中的功能而定義的術(shù)語(yǔ),并且可根據(jù)用戶或操作者或常用實(shí)踐而 改變。因此,必須基于整個(gè)公開中的內(nèi)容來(lái)進(jìn)行定義。
[0031] 以下,將參照附圖詳細(xì)描述用于批量線程處理的處理器、使用所述處理器處理批 量線程的方法和用于批量線程處理的代碼生成設(shè)備。
[0032] 圖1是示出根據(jù)本公開的示例性實(shí)施例的處理器的示圖。
[0033] 參照?qǐng)D1,根據(jù)本公開的示例性實(shí)施例的處理器100包括中央寄存器文件110以及 一個(gè)或更多個(gè)批量功能單元120a、120b、120c和120d。雖然為了便于描述各個(gè)批量功能單 元120a、120b、120c和120d中的輸入端口 130和輸出端口 140,將中央寄存器文件110分開 示出在圖1的上部和下部,但是處理器100不包括兩個(gè)中央寄存器文件110。
[0034] 批量功能單元120a、120b、120c和120d中的每個(gè)包括兩個(gè)或更多個(gè)功能單元FU0、 FU1、FU2和FU3。批量功能單元120a、120b、120c和120d中的每個(gè)包括一個(gè)或更多個(gè)輸入 端口 130和一個(gè)或更多個(gè)輸出端口 140,并且通過(guò)一個(gè)或更多個(gè)輸入端口 130和一個(gè)或更多 個(gè)輸出端口 140訪問(wèn)中央寄存器文件110。批量功能單元120a、120b、120c和120d可通過(guò) 中央寄存器文件110彼此執(zhí)行通信,諸如數(shù)據(jù)共享。
[0035] 批量功能單元120a、120b、120c和120d中的每個(gè)可包括一個(gè)或更多個(gè)本地寄存器 文件(LR)。本地寄存器文件LR可包括在一個(gè)或更多個(gè)功能單元中,并且用作用于功能單元 的輸入/輸出數(shù)據(jù)的存儲(chǔ)空間,且以先進(jìn)先出(FIFO)方式操作。
[0036] 根據(jù)本公開的示例性實(shí)施例的處理器100可通過(guò)使用包括在批量功能單元中的 功能單元、功能單元之間的連接以及功能單元的本地寄存器文件LR,而作為粗粒度可重構(gòu) 陣列(CGRA)操作。此外,處理器100可通過(guò)使用兩個(gè)或更多個(gè)批量功能單元120a、120b、 120c和120d而作為單指令多線程(SMT)操作,其中,批量功能單元120a、120b、120c和 120d中的每個(gè)包括兩個(gè)或更多個(gè)功能單元FUO、FU1、FU2和FU3。
[0037] 批量功能單元120a、120b、120c和120d可具有相同的結(jié)構(gòu)。包括在批量功能單元 120a、120b、120c和120d中的每個(gè)批量功能單元中的功能單元FU0、FU1、FU2和FU3可具有 彼此不同的結(jié)構(gòu)。然而,包括在批量功能單元120a、120b、120c和120d中的每個(gè)批量功能 單元中的功能單元FU0、FU1、FU2和FU3不需要具有彼此不同的結(jié)構(gòu),根據(jù)需要,兩個(gè)或更多 個(gè)功能單元可具有相同的結(jié)構(gòu)。
[0038] 例如,批量功能單元120a、120b、120c和120d可包括具有同等的計(jì)算能力的功能 單元FU0、FU1、FU2和FU3。這里,計(jì)算能力可表示由功能單元執(zhí)行的操作(例如,加法、減 法、乘法和除法),并且批量功能單元120a、120b、120c和120d中的每個(gè)可通過(guò)包括執(zhí)行這 種操作的功能單元而具有相同的計(jì)算能力。這樣,根據(jù)本公開的示例性實(shí)施例的處理器100 通過(guò)具有相同的計(jì)算能力的批量功能單元120a、120b、120c和120d而作為SMT操作,從而 支持大規(guī)模并行數(shù)據(jù)線程處理。
[0039] -般的處理器在每個(gè)功能單元的算術(shù)邏輯單元(ALU)具有一個(gè)或更多個(gè)輸入端 口和一個(gè)或更多個(gè)輸出端口以訪問(wèn)中央寄存器文件,但是根據(jù)本公開的示例性實(shí)施例的處 理器100具有用于批量功能單元120a、120b、120c和120d中的每個(gè)批量處理單元的一個(gè)或 更多個(gè)輸入端口 130和一個(gè)或更多個(gè)輸出端口 140以訪問(wèn)中央寄存器文件110,從而減少了 當(dāng)訪問(wèn)中央寄存器文件110時(shí)產(chǎn)生的開銷,并因此提高了處理器100的性能。
[0040] 例如,如果設(shè)置有八個(gè)功能單元的一般的處理器具有用于每個(gè)功能單元的兩個(gè)輸 入端口和一個(gè)輸出端口,貝U通過(guò)十六個(gè)輸入端口和八個(gè)輸出端口實(shí)現(xiàn)對(duì)中央寄存器文件的 訪問(wèn)。相反,如果根據(jù)本公開的示例性實(shí)施例的處理器100以兩個(gè)批量功能單元中的每個(gè) 包括四個(gè)功能單元的形式包括八個(gè)功能單元,并且每個(gè)批量功能單元具有兩個(gè)輸入端口和 一個(gè)輸出端口,則通過(guò)四個(gè)端口和兩個(gè)輸出端口實(shí)現(xiàn)對(duì)中央寄存器文件的訪問(wèn),從而減少 了用于輸入和輸出操作的開銷。
[0041] 批量功能單元120a、120b、120c和120d中的每個(gè)可執(zhí)行一個(gè)或更多個(gè)通過(guò)編譯生 成的批量指令。在這種情況下,每個(gè)批量指令可包括一個(gè)或更多個(gè)指令,并且各個(gè)指令可通 過(guò)與各個(gè)指令對(duì)應(yīng)的功能單元被順序地執(zhí)行。
[0042] 同時(shí),批量功能單元120a、120b、120c和120d可以以線程組為單位執(zhí)行一個(gè)或更 多個(gè)輸入的批量指令,其中,每個(gè)線程組包括一個(gè)或更多個(gè)線程。
[0043] 在這種情況下,如果在批量功能單元120a、120b、120c和120d正針對(duì)特定的批量 指令執(zhí)行預(yù)定線程組的同時(shí)在特定的線程發(fā)生阻塞,并且直到針對(duì)具有對(duì)發(fā)生阻塞的所述 批量指令的依賴性的另一批量指令執(zhí)行所述預(yù)定線程組的線程才解除阻塞,則批量功能單 元120a、120b、120c和120d針對(duì)所述另一批量指令不執(zhí)行發(fā)生阻塞的線程,從而使發(fā)生阻 塞的線程在結(jié)束所述預(yù)定線程組的所有線程的執(zhí)行的最后時(shí)間點(diǎn)才被執(zhí)行。
[0044] 以這種方式,防止連接到在執(zhí)行批量指令時(shí)被阻塞的線程的所有線程被阻塞,從 而提高了處理效率。
[0045] 如果在批量功能單元120a、120b、120c和120d正針對(duì)特定的批量指令執(zhí)行線程組 的同時(shí)發(fā)生條件分支,則將所述線程組劃分為兩個(gè)或更多個(gè)子線程組,并且分別針對(duì)條件 分支的多個(gè)分支執(zhí)行劃分的子線程組。此外,如果針對(duì)各個(gè)分支的條件分支結(jié)束并且分支 合并,則劃分的子線程組被合并為原始的線程組。
[0046] 圖2是在根據(jù)圖1的示例性實(shí)施例的處理器100中執(zhí)行處理批量線程的過(guò)程的程 序的控制流程圖。在圖2中,在彼此具有預(yù)定的數(shù)據(jù)依賴性的同時(shí)執(zhí)行十一個(gè)指令A(yù)至K, 從而在一個(gè)指令的執(zhí)行之后執(zhí)行具有對(duì)所述指令的數(shù)據(jù)依賴性的另一指令。在這種情況 下,延遲表示執(zhí)行每個(gè)指令A(yù)至K所花費(fèi)的周期(cycle)。
[0047] 圖3是示出在一般的SMT架構(gòu)中執(zhí)行圖2的程序的過(guò)程的示圖。當(dāng)通過(guò)不同線程 分別處理128條數(shù)據(jù)時(shí),需要處理總共128個(gè)線程??梢约僭O(shè)具有八個(gè)ALU(ALU0至ALU7) 的一般的SMT將128個(gè)線程劃分為分別包括32個(gè)線程的四個(gè)線程組,并且允許針對(duì)總共 11個(gè)指令A(yù)至K執(zhí)行所述四個(gè)線程組。在這種情況下,如圖3所示,為了使一般的SIMT平 穩(wěn)地操作,每個(gè)指令A(yù)至K被設(shè)置為具有4個(gè)周期的延遲,并且SMT針對(duì)指令A(yù)至K從指 令A(yù)開始到指令K順序地執(zhí)行四個(gè)線程組?;ㄙM(fèi)總共180個(gè)周期。
[0048] 圖4A至圖4C是示出在一般的CGRA中執(zhí)行圖2的程序的過(guò)程的示圖。圖4A示出 與圖3的SMT具有相同數(shù)量的功能單元的一般的CGRA的示例,并且指令從配置存儲(chǔ)器或 高速緩沖存儲(chǔ)器CMEM被輸入。圖4B示出被調(diào)度以在圖4A的CGRA中執(zhí)行的圖2的程序的 示例。圖4C示出執(zhí)行如圖4B所示調(diào)度的11個(gè)指令A(yù)至K的示例。
[0049] 在這種情況下,CGRA的迭代對(duì)應(yīng)于SMT的線程,并且執(zhí)行128個(gè)迭代以處理如圖 3所描述的總共128個(gè)線程。參照?qǐng)D4B,為了針對(duì)11個(gè)指令A(yù)至K執(zhí)行一個(gè)迭代,需要16 個(gè)周期的延遲。參照?qǐng)D4C,當(dāng)在具有啟動(dòng)間隔(II) 2的同時(shí)執(zhí)行總共128個(gè)迭代時(shí),需要總 共272個(gè)周期。
[0050] 圖5A和圖5B是示出在根據(jù)本公開的示例性實(shí)施例的處理器100中執(zhí)行圖2的程 序的過(guò)程的示圖。
[0051] 圖5A示出在編譯階段生成的三個(gè)批量指令,以使圖2的示例性程序在處理器100 中被執(zhí)行,其中,批量指令〇包括四個(gè)指令A(yù)、B、D和E,批量指令1包括四個(gè)指令C、F、G和 H,并且批量指令2包括最后的三個(gè)指令I(lǐng)、J和K。
[0052] 圖5B示出在處理器100具有分別包括四個(gè)功能單元的兩個(gè)批量功能單元的情況 下由批量功能單元中的一個(gè)順序執(zhí)行的三個(gè)批量指令。批量指令中的每個(gè)指令由批量功能 單元中的各個(gè)功能單元執(zhí)行。在批量功能單元中,通過(guò)與本地寄存器文件的互連來(lái)實(shí)現(xiàn)批 量指令內(nèi)的數(shù)據(jù)移動(dòng),并且通過(guò)中央寄存器文件100來(lái)實(shí)現(xiàn)批量指令之間的數(shù)據(jù)移動(dòng)。
[0053] 當(dāng)與圖3中示出的內(nèi)容類似地處理總共128個(gè)線程時(shí),兩個(gè)批量功能單元中的每 個(gè)針對(duì)三個(gè)批量指令執(zhí)行64個(gè)線程,從而需要總共202個(gè)周期。例如,當(dāng)以16個(gè)線程為單 位調(diào)度128個(gè)線程時(shí),批量功能單元中的一個(gè)在以交錯(cuò)方案切換16個(gè)線程的同時(shí)順序地執(zhí) 行三個(gè)指令。也就是說(shuō),針對(duì)16個(gè)線程執(zhí)行輸入的批量指令,針對(duì)所述16個(gè)線程執(zhí)行下一 個(gè)批量指令,并且還針對(duì)所述16個(gè)線程執(zhí)行最后的批量指令。其后,從第一批量指令開始, 針對(duì)16個(gè)新的線程再次執(zhí)行三個(gè)批量指令,以這種方式處理所有線程。在這種情況下,通 過(guò)兩個(gè)批量功能單元執(zhí)行128個(gè)線程的執(zhí)行,并且需要總共202個(gè)周期。
[0054] 圖6A和圖6B是示出在批量功能單元中輸入的偏移指令(skewed instruction) 的示圖。參照?qǐng)D6A和圖6B,利用根據(jù)本公開的示例性實(shí)施例的處理器200,當(dāng)執(zhí)行一個(gè)或 更多個(gè)輸入到每個(gè)批量功能單元中的批量指令時(shí),每個(gè)批量功能單元作為CGRA操作,從而 每個(gè)批量指令中的指令相對(duì)于時(shí)間以交叉的方式被輸入到功能單元中。這里,如以下所討 論的,因?yàn)橛梢粋€(gè)批量功能單元執(zhí)行的批量指令隨時(shí)間改變,所以指令可以是偏移指令。
[0055] 參照?qǐng)D6A,以如下順序改變批量指令:A-B-D-E(周期10)、C-B-D-E(周期17)、 C-F-D-E (周期 21)、C-F-G-E (周期 25)和 C-F-G-H (周期 26)。在 A-B-D-E 和 C-F-G-H 是批 量指令的情況下,以在這兩個(gè)批量指令之間插入偏移指令的形式輸入三個(gè)偏移指令。因此, 在批量功能單元中可(以流水線形式)進(jìn)行連續(xù)的操作。換句話說(shuō),偏移指令可以使批量 功能單元中的功能單元連續(xù)地形成流水線并且進(jìn)行操作。在偏移指令的特定示例中,在周 期17的情況下,四個(gè)指令C、B、D和E被輸入到批量功能單元中的四個(gè)功能單元。然而,如 圖5A所示,指令C被包括在批量指令1中,而其余的指令B、D和E屬于批量指令0。這樣, 當(dāng)在同一周期輸入的指令中的至少一個(gè)屬于不同的批量指令時(shí),在所述周期輸入的指令被 稱為偏移指令,并且處理器100會(huì)需要偏移指令信息以精確地將偏移指令輸入到各個(gè)批量 功能單元中。這樣,一個(gè)批量功能單元可以在特定周期期間通過(guò)使用偏移指令信息執(zhí)行一 個(gè)或更多個(gè)第二指令中的至少一個(gè)指令,而另一個(gè)批量功能單元可以在特定周期期間通過(guò) 使用偏移指令信息執(zhí)行一個(gè)或更多個(gè)第一指令中的至少一個(gè)指令。
[0056] 這種偏移指令信息可以在編譯階段由代碼生成設(shè)備生成。處理器200使用偏移指 令信息通過(guò)每個(gè)批量功能單元的程序計(jì)數(shù)器(PC)來(lái)訪問(wèn)批量指令存儲(chǔ)器(BIM),以將對(duì)應(yīng) 的指令發(fā)送到批量功能單元中的對(duì)應(yīng)的功能單元。
[0057] 圖7A是示出根據(jù)本公開的另一示例性實(shí)施例的用于偏移指令的輸入的處理器的 示圖。
[0058] 參照?qǐng)D7A,處理器300可包括中央寄存器文件(未示出)、一個(gè)或更多個(gè)批量功 能單元和一個(gè)或更多個(gè)偏移寄存器310,其中,每個(gè)批量功能單元包括兩個(gè)或更多個(gè)功能單 元,一個(gè)或更多個(gè)偏移寄存器310被分配給包括在每個(gè)批量功能單元中的功能單元。
[0059] 根據(jù)本公開的示例性實(shí)施例的處理器300包括與功能單元對(duì)應(yīng)的偏移寄存器 310,以更有效地處理上述的偏移指令的輸入。處理器300可使用存儲(chǔ)在批量指令存儲(chǔ)器 BMO、BMl、BM2和BM3中的指令,通過(guò)偏移寄存器310生成將在一個(gè)周期中被執(zhí)行的偏 移指令,并將生成的偏移指令發(fā)送到分配的功能單元。每個(gè)批量功能單元可使用程序計(jì)數(shù) 器(PC)和分配給每個(gè)功能單元的偏移寄存器值來(lái)訪問(wèn)批量指令存儲(chǔ)器。
[0060] 在這種情況下,如圖7A所示,批量指令存儲(chǔ)器和BM3被配置為 被分為兩個(gè)或更多個(gè),以對(duì)應(yīng)于各個(gè)功能單元,并存儲(chǔ)將被發(fā)送到對(duì)應(yīng)的功能單元的指令。
[0061] 圖7B是示出根據(jù)本公開的另一示例性實(shí)施例的用于偏移指令的輸入的處理器的 示圖。除了圖7A的處理器300之外,處理器400還可包括一個(gè)或更多個(gè)內(nèi)核隊(duì)列420。如 圖7B所示,不具有多個(gè)批量指令存儲(chǔ)器BMO、BMl、BM2和BM3,而僅使用一個(gè)批量指令 存儲(chǔ)器BM。
[0062] 參照?qǐng)D7B,處理器400可包括與每個(gè)批量功能單元的功能單元對(duì)應(yīng)的兩個(gè)或更多 個(gè)內(nèi)核隊(duì)列420。處理器400可提取批量指令存儲(chǔ)器的內(nèi)核中的至少部分指令,并將提 取的指令存儲(chǔ)在內(nèi)核隊(duì)列420中。此外,每個(gè)批量功能單元通過(guò)基于它的PC和分配的偏移 寄存器的值訪問(wèn)對(duì)應(yīng)的內(nèi)核隊(duì)列420來(lái)讀取期望的指令,以生成偏移指令并將生成的偏移 指令發(fā)送到功能單元。
[0063] 圖8是示出根據(jù)本公開的示例性實(shí)施例的支持用于批量線程處理的處理器的代 碼生成設(shè)備的框圖。
[0064] 參照?qǐng)D1和圖8,代碼生成設(shè)備500包括程序分析單元510和批量指令生成單元 520,以生成支持能夠處理批量線程的處理器100的批量指令。
[0065] 程序分析單元510分析將被處理的預(yù)定程序,并生成分析結(jié)果。例如,程序分析單 元510可分析程序中的每個(gè)數(shù)據(jù)之間的依賴性以及在程序中是否存在條件分支語(yǔ)句。
[0066] 批量指令生成單元520可基于分析結(jié)果生成將在處理器100的一個(gè)或更多個(gè)批量 功能單元120a、120b、120c和120d中執(zhí)行的一個(gè)或更多個(gè)批量指令。在這種情況下,每個(gè) 批量指令可包括一個(gè)或更多個(gè)指令。
[0067] 批量指令生成單元520可基于分析結(jié)果的依賴性分析信息,生成允許處理器100 通過(guò)使用包括在批量功能單元120a、120b、120c和120d中的功能單元而作為CGRA操作的 代碼??蛇x擇地,批量指令生成單元520可生成用于一個(gè)或更多個(gè)批量指令的代碼,以使功 能單元在每個(gè)批量功能單元中以SIMT架構(gòu)操作。
[0068] 如果分析出在程序中存在條件分支語(yǔ)句,則批量指令生成單元520允許處理?xiàng)l件 分支語(yǔ)句的分支的指令被分別包括在不同的批量指令中。例如,當(dāng)在條件估計(jì)為"真"的情 況下執(zhí)行第一路徑并且在條件估計(jì)為"假"的情況下執(zhí)行第二路徑時(shí),批量指令生成單元 520可允許處理第一路徑的指令和處理第二路徑的指令被分別包括在不同的批量指令中。 [0069] 此外,代碼生成設(shè)備500可生成允許批量功能單元中的一個(gè)順序地執(zhí)行由批量指 令生成單元520生成的用于處理分支的批量指令或者允許不同的批量功能單元分別執(zhí)行 所述批量指令的指令。以這種方式,可有效地處理一般的SMT或CGRA中的與條件分支關(guān) 聯(lián)的約束。
[0070] 批量指令生成單元520可生成批量指令,以使每個(gè)批量指令的總延遲彼此相似。 此外,批量指令生成單元520可考慮批量功能單元120a、120b、120c和120d訪問(wèn)中央寄存 器文件110的輸入/輸出端口的數(shù)量而生成批量指令。例如,批量指令生成單元520可以 以如下方式生成批量指令:防止特定批量指令請(qǐng)求讀取中央寄存器文件的數(shù)量超過(guò)執(zhí)行所 述特定批量指令的批量功能單元的讀取端口的數(shù)量,同時(shí)防止特定批量指令請(qǐng)求寫入的數(shù) 量超過(guò)執(zhí)行所述特定批量指令的批量功能單元的寫入端口的數(shù)量。
[0071 ] 此外,批量指令生成單元520可以以如下方式生成批量指令:防止包括在每個(gè)批 量指令中的指令的數(shù)量超過(guò)包括在每個(gè)批量功能單元中的功能單元的數(shù)量。參照?qǐng)D5A,批 量指令〇和1中的每個(gè)批量指令包括四個(gè)指令,批量指令2包括三個(gè)指令,從而包括在每個(gè) 批量指令中的指令的數(shù)量不超過(guò)4,即,包括在每個(gè)批量功能單元120a、120b、120c和120d 中的功能單元的數(shù)量。
[0072] 同時(shí),批量指令生成單元520可生成批量指令,以使會(huì)在特定批量指令中發(fā)生延 遲的操作的結(jié)果(例如,會(huì)發(fā)生阻塞的操作的結(jié)果)在所述特定批量指令中不用作源。例 如,在調(diào)度期間,批量指令生成單元520可允許發(fā)生阻塞的操作被布置在批量指令的最先 (foremost)的位置,并允許所述操作的線程執(zhí)行結(jié)果以批量指令的最后次序被使用??蛇x 擇地,批量指令生成單元520可允許發(fā)生阻塞的操作被布置在批量指令的最后位置并且在 下一批量指令的執(zhí)行之前被處理。
[0073] 同時(shí),代碼生成設(shè)備500可生成這樣的指令,該指令允許生成的批量指令被同等 地輸入到所有批量功能單元中,或者允許生成的批量指令被劃分并且被分別輸入到兩個(gè)或 更多個(gè)批量功能單元中。
[0074] 代碼生成設(shè)備500可將生成的批量指令信息和各種指令信息存儲(chǔ)在配置存儲(chǔ)器 或高速緩沖存儲(chǔ)器中。同時(shí),批量指令生成單元520可生成如上參照?qǐng)D6A和圖6B描述的 偏移指令信息。
[0075] 以上描述了批量指令生成單元520。根據(jù)示例性實(shí)施例,批量指令生成單元520不 收集可被同時(shí)執(zhí)行的指令,而是通過(guò)收集將被順序地執(zhí)行的指令來(lái)生成批量指令,因此在 生成批量指令的過(guò)程中不存在困難,并且可實(shí)現(xiàn)提高的效率。因?yàn)榭赏ㄟ^(guò)多個(gè)批量功能單 元同時(shí)處理多個(gè)數(shù)據(jù),所以這種生成方式對(duì)于實(shí)現(xiàn)大規(guī)模并行數(shù)據(jù)處理是有效的。
[0076] 這與超長(zhǎng)指令字(VLIW)和超標(biāo)量架構(gòu)形成對(duì)比。
[0077] VLIW是這樣的架構(gòu),其中,編譯器創(chuàng)建由可被同時(shí)執(zhí)行的多個(gè)指令構(gòu)成的超長(zhǎng)指 令字,并且多個(gè)功能單元(或執(zhí)行單元)在單個(gè)時(shí)鐘周期內(nèi)處理VLIW。在數(shù)字信號(hào)處理中廣 泛使用的VLIW架構(gòu)經(jīng)常不能找到足夠的可被同時(shí)執(zhí)行的指令,這會(huì)導(dǎo)致效率降低。此外, 因?yàn)樗泄δ軉卧獞?yīng)該同時(shí)訪問(wèn)中央寄存器文件,所以中央寄存器文件的硬件開銷不利地 增加。
[0078] 超標(biāo)量是這樣一種架構(gòu),其中,硬件發(fā)現(xiàn)可用于在運(yùn)行期間并行執(zhí)行的指令,并且 多個(gè)執(zhí)行單元(或功能單元)處理發(fā)現(xiàn)的指令。這種架構(gòu)也在發(fā)現(xiàn)可被同時(shí)執(zhí)行的指令方 面存在困難,并且會(huì)導(dǎo)致非常復(fù)雜的硬件。
[0079] 另一方面,示例性實(shí)施例可使用多個(gè)批量功能單元同時(shí)處理多個(gè)數(shù)據(jù),這對(duì)于實(shí) 現(xiàn)大規(guī)模并行數(shù)據(jù)處理是有效的。
[0080] 圖9是示出根據(jù)本公開的示例性實(shí)施例的使用用于批量線程處理的處理器來(lái)處 理批量線程的方法的流程圖。在圖9中,示出通過(guò)使用圖1中示出的根據(jù)本公開的示例性 實(shí)施例的處理器100來(lái)處理批量線程的方法。已經(jīng)通過(guò)圖1至圖8描述了批量線程處理的 細(xì)節(jié),以下將簡(jiǎn)要描述批量線程處理。
[0081] 首先,處理器100可將由代碼生成設(shè)備生成的一個(gè)或更多個(gè)批量指令輸入到一個(gè) 或更多個(gè)批量功能單元120a、120b、120c和120d (610)。在這種情況下,處理器100可以以線 程為單位分配所有生成的批量指令,并將分配的批量指令輸入到批量功能單元120a、120b、 120c和120d。即,所有批量指令被同等地輸入到批量功能單元120a、120b、120c和120d中 的每個(gè),以在每個(gè)批量功能單元處理需要被處理的所有線程組的一部分的同時(shí)被順序地執(zhí) 行,進(jìn)而使處理器100作為SIMT操作。
[0082] 可選擇地,批量指令可被劃分并被輸入到批量功能單元120a、120b、120c和120d。 例如,當(dāng)生成的批量指令的數(shù)量為4時(shí),四個(gè)批量指令可被分別輸入到批量功能單元120a、 120b、120c和120d,從而以MMT方案處理線程??蛇x擇地,相同的兩個(gè)批量指令被輸入到 兩個(gè)批量功能單元120a和120b,其余的兩個(gè)批量指令被輸入到其余的兩個(gè)批量功能單元 120c和120d,從而SMT和MMT彼此結(jié)合地被使用。
[0083] 當(dāng)批量指令被劃分并被輸入到批量功能單元120a、120b、120c和120d時(shí),處理?xiàng)l 件分支的批量指令被輸入到不同的批量功能單元120a、120b、120c和120d,從而提高了處 理?xiàng)l件分支的效率。此外,因?yàn)楦鱾€(gè)批量功能單元120a、120b、120c和120d獨(dú)立地操作,所 以即使在一個(gè)批量功能單元中發(fā)生阻塞,其余的批量功能單元也可不管阻塞而執(zhí)行線程處 理。
[0084] 其后,各個(gè)批量功能單元120a、120b、120c和120d可順序地執(zhí)行輸入的一個(gè)或更 多個(gè)批量指令(620)。在這種情況下,各個(gè)批量功能單元120a、120b、120c和120d可以以上 述交錯(cuò)方案,在針對(duì)輸入的批量指令切換每個(gè)線程的同時(shí)執(zhí)行每個(gè)批量指令。
[0085] 同時(shí),如果在批量功能單元120a、120b、120c和120d正在針對(duì)特定批量指令執(zhí)行 預(yù)定線程組的同時(shí)在特定線程發(fā)生阻塞,并且直到針對(duì)具有對(duì)發(fā)生阻塞的所述批量指令的 依賴性的另一批量指令執(zhí)行所述預(yù)定線程組才解除阻塞,則批量功能單元120a、120b、120c 和120d針對(duì)所述另一批量指令不執(zhí)行發(fā)生阻塞的線程,從而使發(fā)生阻塞的線程在結(jié)束所 述預(yù)定線程組的所有線程的執(zhí)行的最后時(shí)間點(diǎn)才被執(zhí)行。
[0086] 此外,如果當(dāng)批量功能單元120a、120b、120c和120d正在針對(duì)特定批量指令執(zhí)行 預(yù)定線程組時(shí)發(fā)生條件分支,則線程組被劃分為兩個(gè)或更多個(gè)子線程組,并且劃分的子線 程組可分別針對(duì)條件分支的多個(gè)分支被執(zhí)行。此外,當(dāng)多個(gè)分支的條件分支結(jié)束并且多個(gè) 分支合并時(shí),劃分的子線程組被合并為原始的線程組。
[0087] 示例性實(shí)施例的功能可被實(shí)現(xiàn)為計(jì)算機(jī)可讀記錄介質(zhì)中的計(jì)算機(jī)可讀代碼。計(jì)算 機(jī)可讀記錄介質(zhì)包括存儲(chǔ)計(jì)算機(jī)可讀數(shù)據(jù)的所有類型的記錄介質(zhì)。計(jì)算機(jī)可讀記錄介質(zhì)的 示例包括ROM、RAM、OT-R0M、磁帶、軟盤和光學(xué)數(shù)據(jù)存儲(chǔ)器。此外,記錄介質(zhì)可以以載波(諸 如在互聯(lián)網(wǎng)傳輸中使用的載波)的形式被實(shí)現(xiàn)。此外,計(jì)算機(jī)可讀記錄介質(zhì)可被分布到網(wǎng) 絡(luò)上的計(jì)算機(jī)系統(tǒng),在網(wǎng)絡(luò)中,計(jì)算機(jī)可讀代碼可以以分布方式被存儲(chǔ)和執(zhí)行。
[0088] 本領(lǐng)域技術(shù)人員還將理解,可以以執(zhí)行特定任務(wù)的軟件和/或硬件組件(諸如現(xiàn) 場(chǎng)可編程門陣列(FPGA)或?qū)S眉呻娐罚ˋSIC))的任意組合來(lái)實(shí)現(xiàn)示例性實(shí)施例。單元 或模塊可被有利地配置為寄存在可尋址的存儲(chǔ)介質(zhì)中,并被配置為在一個(gè)或更多個(gè)處理器 或微處理器上運(yùn)行。因此,作為示例,模塊可包括諸如軟件組件、面向?qū)ο蟮能浖M件、類組 件和任務(wù)組件的組件、進(jìn)程、函數(shù)、屬性、過(guò)程、子程序、程序代碼段、驅(qū)動(dòng)程序、固件、微碼、 電路、數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)、表、數(shù)組和變量的組件。所述組件和單元中提供的功能可被 組合為更少的組件和單元或模塊,或者可被進(jìn)一步分為另外的組件和單元或模塊。
[0089] 以上已經(jīng)描述了多個(gè)示例性實(shí)施例。然而,將理解的是,可進(jìn)行各種修改。例如,如 果描述的技術(shù)以不同的順序被執(zhí)行和/或如果描述的系統(tǒng)、架構(gòu)、裝置或電路中的組件以 不同的方式被組合和/或被其他組件或它們的等同物替換或補(bǔ)充,則可實(shí)現(xiàn)適當(dāng)?shù)慕Y(jié)果。 因此,其他實(shí)施方式包括在權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1. 一種處理器,包括: 中央寄存器文件; 第一批量功能單兀,包括第一多個(gè)功能單兀、第一輸入端口和第一輸出端口,其中,第 一多個(gè)功能單元通過(guò)第一輸入端口訪問(wèn)中央寄存器文件,并且第一多個(gè)功能單元通過(guò)第一 輸出端口訪問(wèn)中央寄存器文件; 第二批量功能單元,包括第二多個(gè)功能單元、第二輸入端口和第二輸出端口,其中,第 二多個(gè)功能單元通過(guò)第二輸入端口訪問(wèn)中央寄存器文件,并且第二多個(gè)功能單元通過(guò)第二 輸出端口訪問(wèn)中央寄存器文件, 其中,第一批量功能單元被配置為接收包括程序的一個(gè)或更多個(gè)第一指令的第一批量 指令,并且順序地執(zhí)行所述一個(gè)或更多個(gè)第一指令,第二批量功能單元被配置為接收包括 所述程序的一個(gè)或更多個(gè)第二指令的第二批量指令,并且順序地執(zhí)行所述一個(gè)或更多個(gè)第 二指令。
2. 如權(quán)利要求1所述的處理器,其中,第一批量功能單元還包括一個(gè)或更多個(gè)第一本 地寄存器文件,第一本地寄存器文件被配置為存儲(chǔ)第一多個(gè)功能單元的輸入/輸出數(shù)據(jù), 其中,第二批量功能單元還包括一個(gè)或更多個(gè)第二本地寄存器文件,第二本地寄存器 文件被配置為存儲(chǔ)第二多個(gè)功能單元的輸入/輸出數(shù)據(jù)。
3. 如權(quán)利要求2所述的處理器,其中,第一批量功能單元被配置為通過(guò)使用第一多個(gè) 功能單元、第一多個(gè)功能單元之間的連接以及所述一個(gè)或更多個(gè)第一本地寄存器文件而作 為粗粒度可重構(gòu)陣列(CGRA)操作, 其中,第二批量功能單元被配置為通過(guò)使用第二多個(gè)功能單元、第二多個(gè)功能單元之 間的連接以及所述一個(gè)或更多個(gè)第二本地寄存器文件而作為CGRA操作。
4. 如權(quán)利要求1所述的處理器,其中,第一批量功能單元的結(jié)構(gòu)與第二批量功能單元 的結(jié)構(gòu)相同。
5. 如權(quán)利要求1所述的處理器,其中,第一多個(gè)功能單元被配置為處理所述一個(gè)或更 多個(gè)第一指令, 其中,第二多個(gè)功能單元被配置為處理所述一個(gè)或更多個(gè)第二指令。
6. 如權(quán)利要求1所述的處理器,其中,第一批量功能單元被配置為在特定周期期間通 過(guò)使用偏移指令信息執(zhí)行所述一個(gè)或更多個(gè)第二指令中的至少一個(gè)指令, 第二批量功能單元被配置為在特定周期期間通過(guò)使用偏移指令信息執(zhí)行所述一個(gè)或 更多個(gè)第一指令中的至少一個(gè)指令。
7. 如權(quán)利要求1所述的處理器,其中,第一批量指令包括第一多個(gè)批量指令,第二批量 指令包括第二多個(gè)批量指令, 其中,第一批量功能單元被配置為當(dāng)接收到第一多個(gè)批量指令時(shí),以包括一個(gè)或更多 個(gè)線程的線程組為單位順序地執(zhí)行第一多個(gè)批量指令中的每個(gè)批量指令,并且第二批量功 能單元被配置為當(dāng)接收到第二多個(gè)批量指令時(shí),以線程組為單位順序地執(zhí)行第二多個(gè)批量 指令中的每個(gè)批量指令。
8. 如權(quán)利要求7所述的處理器,其中,第一批量功能單元和第二批量功能單元被配置 為:如果在針對(duì)批量指令執(zhí)行線程組期間在特定線程發(fā)生阻塞,并且阻塞持續(xù)到針對(duì)具有 對(duì)所述批量指令的依賴性的另一批量指令執(zhí)行所述線程組的時(shí)刻,則針對(duì)所述另一批量指 令以所述線程組中的最后次序執(zhí)行所述發(fā)生阻塞的特定線程。
9. 如權(quán)利要求7所述的處理器,其中,第一批量功能單元和第二批量功能單元被配置 為:如果在針對(duì)批量指令執(zhí)行線程組期間發(fā)生條件分支,則將所述線程組劃分為兩個(gè)或更 多個(gè)子線程組,并且針對(duì)條件分支的多個(gè)分支分別執(zhí)行劃分的兩個(gè)或更多個(gè)子線程組。
10. 如權(quán)利要求9所述的處理器,其中,第一批量功能單元和第二批量功能單元被配置 為:如果條件分支的多個(gè)分支結(jié)束并且合并,則將劃分的兩個(gè)或更多個(gè)子線程組合并為所 述線程組并執(zhí)行所述線程組。
11. 一種處理器,包括: 中央寄存器文件; 第一批量功能單兀,包括第一多個(gè)功能單兀、第一輸入端口和第一輸出端口,其中,第 一多個(gè)功能單元通過(guò)第一輸入端口訪問(wèn)中央寄存器文件,并且第一多個(gè)功能單元通過(guò)第一 輸出端口訪問(wèn)中央寄存器文件; 第二批量功能單元,包括第二多個(gè)功能單元、第二輸入端口和第二輸出端口,其中,第 二多個(gè)功能單元通過(guò)第二輸入端口訪問(wèn)中央寄存器文件,并且第二多個(gè)功能單元通過(guò)第二 輸出端口訪問(wèn)中央寄存器文件; 多個(gè)偏移寄存器,被分配給第一多個(gè)功能單元和第二多個(gè)功能單元中的每個(gè)功能單 元, 其中,使用存儲(chǔ)在批量指令存儲(chǔ)器中的指令,通過(guò)多個(gè)偏移寄存器中的一個(gè)生成在特 定周期期間將被執(zhí)行的偏移指令,并且將生成的偏移指令發(fā)送到分配了多個(gè)偏移寄存器中 的一個(gè)的每個(gè)功能單元。
12. 如權(quán)利要求11所述的處理器,其中,批量指令存儲(chǔ)器被配置為被分為兩個(gè)或更多 個(gè)單元以對(duì)應(yīng)于第一多個(gè)功能單元和第二多個(gè)功能單元中的每個(gè)功能單元,并存儲(chǔ)將被發(fā) 送到與批量指令存儲(chǔ)器對(duì)應(yīng)的功能單元的指令。
13. 如權(quán)利要求11所述的處理器,還包括:一個(gè)或更多個(gè)內(nèi)核隊(duì)列,存儲(chǔ)從批量指令存 儲(chǔ)器的內(nèi)核提取至少部分指令, 其中,使用存儲(chǔ)在每個(gè)內(nèi)核隊(duì)列中的指令,通過(guò)偏移寄存器生成在特定周期期間將被 執(zhí)行的偏移指令,并且將生成的偏移指令發(fā)送到每個(gè)分配的功能單元。
14. 一種用于生成代碼的設(shè)備,所述設(shè)備包括: 程序分析單元,被配置為分析將在包括第一批量功能單元和第二批量功能單元的處理 器中處理的預(yù)定程序,其中,第一批量功能單元包括第一多個(gè)功能單元,第二批量功能單元 包括第二多個(gè)功能單元; 批量指令生成單元,被配置為基于分析結(jié)果生成第一批量指令和第二批量指令,第一 批量指令和第二批量指令中的每個(gè)包括將分別在第一批量功能單元和第二批量功能單元 中執(zhí)行的一個(gè)或更多個(gè)指令。
15. 如權(quán)利要求14所述的設(shè)備,其中,如果作為分析結(jié)果在程序中存在條件分支語(yǔ)句, 則批量指令生成單元允許處理?xiàng)l件分支語(yǔ)句的多個(gè)分支的指令被包括在不同的批量指令 中。
16. 如權(quán)利要求14所述的設(shè)備,其中,批量指令生成單元生成彼此之間具有相似的延 遲的第一批量指令和第二批量指令。
17. 如權(quán)利要求14所述的設(shè)備,其中,批量指令生成單元基于將要執(zhí)行第一批量指令 和第二批量指令的第一批量功能單元或第二批量功能單元的讀取端口的數(shù)量和寫入端口 的數(shù)量生成第一批量指令和第二批量指令。
18. 如權(quán)利要求17所述的設(shè)備,其中,批量指令生成單元生成第一批量指令和第二批 量指令,以防止第一批量指令和第二批量指令針對(duì)中央寄存器文件的讀取請(qǐng)求的數(shù)量和寫 入請(qǐng)求的數(shù)量超過(guò)將要執(zhí)行第一批量指令和第二批量指令的第一批量功能單元或第二批 量功能單元的讀取端口的數(shù)量和寫入端口的數(shù)量。
19. 如權(quán)利要求14所述的設(shè)備,其中,批量指令生成單元生成第一批量指令和第二批 量指令,以防止包括在每個(gè)批量指令中的指令的數(shù)量超過(guò)包括在將要執(zhí)行第一批量指令和 第二批量指令的第一批量功能單元或第二批量功能單元中功能單元的數(shù)量。
20. 如權(quán)利要求14所述的設(shè)備,其中,批量指令生成單元生成第一批量指令和第二批 量指令,以防止特定批量指令中的延遲被用作所述特定批量指令中的源。
21. -種通過(guò)處理器處理批量線程的方法,所述方法包括: 將由代碼生成設(shè)備生成的第一批量指令和第二批量指令輸入到包括第一多個(gè)功能單 元的第一批量功能單元和包括第二多個(gè)功能單元的第二批量功能單元中; 分別通過(guò)第一批量功能單元和第二批量功能單元順序地執(zhí)行第一批量指令和第二批 量指令。
22. 如權(quán)利要求21所述的方法,其中,在輸入一個(gè)或更多個(gè)批量指令時(shí),以線程組為單 位輸入第一批量指令和第二批量指令。
23. 如權(quán)利要求22所述的方法,其中,在執(zhí)行第一批量指令和第二批量指令時(shí),在以交 錯(cuò)方式切換包括在線程組中的每個(gè)線程的同時(shí),針對(duì)每個(gè)批量指令執(zhí)行線程組。
24. 如權(quán)利要求22所述的方法,其中,在執(zhí)行第一批量指令和第二批量指令時(shí),如果在 針對(duì)批量指令執(zhí)行線程組期間在特定線程發(fā)生阻塞,并且阻塞持續(xù)到針對(duì)具有對(duì)所述批量 指令的依賴性的另一批量指令執(zhí)行所述線程組的時(shí)刻,則針對(duì)所述另一批量指令以所述線 程組中的最后次序執(zhí)行所述發(fā)生阻塞的特定線程。
25. 如權(quán)利要求22所述的方法,其中,在執(zhí)行第一批量指令和第二批量指令時(shí),如果在 針對(duì)批量指令執(zhí)行線程組期間發(fā)生條件分支,則將所述線程組劃分為兩個(gè)或更多個(gè)子線程 組,并且針對(duì)條件分支的多個(gè)分支分別執(zhí)行劃分的兩個(gè)或更多個(gè)子線程組。
26. 如權(quán)利要求25所述的方法,其中,在執(zhí)行第一批量指令和第二批量指令時(shí),如果條 件分支的多個(gè)分支結(jié)束并且合并,則將劃分的兩個(gè)或更多個(gè)子線程組合并為所述線程組并 執(zhí)行所述線程組。
【文檔編號(hào)】G06F9/30GK104111818SQ201410163208
【公開日】2014年10月22日 申請(qǐng)日期:2014年4月22日 優(yōu)先權(quán)日:2013年4月22日
【發(fā)明者】鄭武坰, 柳秀晶, 趙淵坤 申請(qǐng)人:三星電子株式會(huì)社