專利名稱:計(jì)算機(jī)處理器多線程指令級(jí)并行技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可應(yīng)用于計(jì)算機(jī)處理器的技術(shù)多線程指令級(jí)并行技術(shù)(Multi-thread instuction-level parallelism)。
目前,計(jì)算機(jī)中普遍采用指令級(jí)并行技術(shù)(Instuction-level parallelism)來提高計(jì)算機(jī)性能。指令級(jí)并行技術(shù)是指,計(jì)算機(jī)處理器在還沒有完全處理完一條指令的時(shí)候,就開始處理下一條指令;或處理器同時(shí)處理若干條指令的執(zhí)行方式。舉例來說,標(biāo)量(Scalar),超標(biāo)量(Superscalar),流水線(Pipelined),超流水線(Superpipelined)技術(shù)都屬于指令級(jí)并行技術(shù)。然而,指令間依賴性問題(Dependencies)始終阻礙著采用指令級(jí)并行技術(shù)的計(jì)算機(jī)的性能的提高。指令間依賴性問題是指,由于指令間的邏輯上的因果關(guān)系,使程序中位置相近的兩條或多條指令不能同時(shí)執(zhí)行。舉例來說,屬于同一程序的兩條相繼的指令“m=a+5”和“if m>0 goto 100”,因?yàn)楹笠粭l指令的執(zhí)行必須依賴于前一條指令的執(zhí)行結(jié)果,所以不能并行執(zhí)行。
現(xiàn)今的處理器只能被一個(gè)線程(進(jìn)程,程序,任務(wù))所獨(dú)占,對(duì)于某個(gè)特定的處理器而言,任何時(shí)刻都只能有一個(gè)線程處于執(zhí)行狀態(tài)并在這個(gè)處理器中執(zhí)行。在多線程環(huán)境中,操作系統(tǒng)通過中斷來實(shí)現(xiàn)線程之間的切換,使每個(gè)線程輪流在給定的時(shí)間片中執(zhí)行。因?yàn)橹噶铋g依賴性問題存在于屬于同一線程的某些指令之間,所以至今采用指令級(jí)并行技術(shù)的處理器無法回避指令間依賴性問題。
采用多線程指令級(jí)并行技術(shù)(Multi-thread instuction-level parallelism)的計(jì)算機(jī)處理器可允許屬于多個(gè)線程的指令在指令一級(jí)并行執(zhí)行。它主要優(yōu)點(diǎn)在于,可以避開以往采用指令級(jí)并行技術(shù)(Instuction-level parallelism)的計(jì)算機(jī)處理器所遇到的指令間依賴性問題,使采用指令級(jí)并行技術(shù)的處理器始終工作在最佳狀態(tài)。
多線程指令級(jí)并行技術(shù)的獨(dú)特之處在于,多個(gè)線程(進(jìn)程,程序,任務(wù))同時(shí)處于執(zhí)行狀態(tài)并同時(shí)在單個(gè)處理器中執(zhí)行,處理器輪流地從處于執(zhí)行狀態(tài)的線程中取指令,使得在處理器中并行執(zhí)行的若干指令分別來自于不同的線程,因而這些指令間就不存在“指令間依賴性問題”。這樣,采用指令級(jí)并行技術(shù)的處理器的性能的提高就不會(huì)因?yàn)橹噶铋g依賴性問題而受到限制;由于處理器內(nèi)部不再需要專門的模塊檢測(cè)和解決指令間依賴性問題,因而處理器的成本也可降低。
由于處理器必須并行處理幾個(gè)線程的指令,因而,處理器中應(yīng)具有幾個(gè)獨(dú)立的寄存器組,使每個(gè)處于執(zhí)行狀態(tài)的線程都可以在處理器中有供自己獨(dú)自使用的寄存器組,寄存器組的總數(shù)應(yīng)等于可在指令級(jí)并行的最大線程數(shù),同時(shí),寄存器組的總數(shù)可以小于或等于處理器的指令級(jí)并行度。
以下是多線程指令級(jí)并行技術(shù)的兩個(gè)具體的實(shí)施方法。
方法1并行度為n的多線程指令級(jí)并行處理器,可同時(shí)處理n個(gè)線程,共需要n個(gè)寄存器組。執(zhí)行時(shí),處理器依次從n個(gè)線程取指令,每個(gè)線程每次取一條指令。此時(shí),寄存器組的總數(shù)等于處理器的指令級(jí)并行度。
例如,當(dāng)n=4時(shí),其指令執(zhí)行序列如下線程1的第1條指令線程2的第1條指令線程3的第1條指令線程4的第1條指令線程1的第2條指令線程2的第2條指令線程3的第2條指令線程4的第2條指令線程1的第3條指令線程2的第3條指令線程3的第3條指令線程4的第3條指令…可以看到,如果將上述指令序列送入采用多線程指令級(jí)并行技術(shù)的處理器,任何時(shí)刻在處理器中并行執(zhí)行的4條指令都來自4個(gè)不同的線程,所以這些并行執(zhí)行的4條指令之間不存在指令間依賴性問題。
方法2當(dāng)多個(gè)線程處于執(zhí)行狀態(tài)時(shí),處理器選取下一條指令的原則為IF 正在執(zhí)行的線程的下一條指令與處理器中正在執(zhí)行的指令之間存在指令間依賴性問題取另一個(gè)線程的待執(zhí)行指令為處理器將執(zhí)行的下一條指令;ELSE取正在執(zhí)行的線程的下一條指令為處理器將執(zhí)行的下一條指令;此時(shí)寄存器組的總數(shù)可以小于處理器的指令級(jí)并行度。
舉例來說,并行度為8的處理器,線程A的第4條指令依賴于第2條指令的結(jié)果;線程B的第2條指令依賴于第1條指令的結(jié)果。則執(zhí)行序列為線程A的第1條指令線程A的第2條指令線程A的第3條指令線程B的第1條指令線程C的第1條指令線程C的第2條指令線程C的第3條指令線程C的第4條指令…這樣,處理器中并行執(zhí)行的8條指令分別來自3個(gè)線程,一個(gè)線程可以有多條指令在處理器中并行執(zhí)行,但前提條件是這幾條指令不存在指令間依賴性問題。一旦計(jì)算機(jī)的軟件或硬件檢測(cè)到某個(gè)線程的即將被執(zhí)行的指令與這個(gè)線程正在執(zhí)行的指令之間存在著指令間依賴性問題,處理器就轉(zhuǎn)而從另一個(gè)線程中取指令,使并行執(zhí)行的各指令間始終不存在著指令間依賴性問題。
權(quán)利要求
1,計(jì)算機(jī)處理器多線程指令級(jí)并行技術(shù),其特征是,多個(gè)線程(進(jìn)程,程序,任務(wù))同時(shí)處于執(zhí)行狀態(tài)并同時(shí)在單個(gè)計(jì)算機(jī)處理器中執(zhí)行,計(jì)算機(jī)處理器輪流地從這些處于執(zhí)行狀態(tài)的線程中的待執(zhí)行指令中選取指令送入處理器內(nèi)部并行執(zhí)行,選取指令的依據(jù)為(1)在計(jì)算機(jī)處理器內(nèi)并行執(zhí)行的各指令可以分別來自不同的線程;(2)計(jì)算機(jī)處理器內(nèi)并行執(zhí)行的各指令之間不存在“指令間依賴性問題”。
2,按照權(quán)利要求1所述的計(jì)算機(jī)處理器多線程指令級(jí)并行技術(shù),采用多線程指令級(jí)并行技術(shù)的計(jì)算機(jī)處理器,處理器中應(yīng)具有幾個(gè)獨(dú)立的寄存器組,使每個(gè)處于執(zhí)行狀態(tài)的線程都可以在計(jì)算機(jī)處理器中有供自己獨(dú)自使用的寄存器組,寄存器組的總數(shù)應(yīng)等于可在指令級(jí)并行的最大線程數(shù),同時(shí),寄存器組的總數(shù)可以小于或等于計(jì)算機(jī)處理器的指令級(jí)并行度。
全文摘要
計(jì)算機(jī)處理器多線程指令級(jí)并行技術(shù)。本發(fā)明涉及一種可應(yīng)用于計(jì)算機(jī)處理器的技術(shù):多線程指令級(jí)并行技術(shù)(Multi-thread instuction-level parallelism)。采用該技術(shù)的計(jì)算機(jī)處理器可以輪流地從處于執(zhí)行狀態(tài)的線程中取指令,使得在計(jì)算機(jī)處理器中并行執(zhí)行的若干指令分別來自于不同的線程,因而這些指令間不存在“指令間依賴性問題”。
文檔編號(hào)G06F9/38GK1228557SQ9810070
公開日1999年9月15日 申請(qǐng)日期1998年3月6日 優(yōu)先權(quán)日1998年3月6日
發(fā)明者劉殷, 劉永鎮(zhèn) 申請(qǐng)人:劉殷, 劉永鎮(zhèn)