專(zhuān)利名稱(chēng):加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu),尤其涉及一種于一中央處理器內(nèi)部至少設(shè)置有二個(gè)以上的流水線,且各流水線各自設(shè)置有復(fù)數(shù)個(gè)級(jí),對(duì)于一支線中預(yù)測(cè)執(zhí)行的指令失敗時(shí),可藉由另一支線來(lái)執(zhí)行正確的指令,故可有效降低執(zhí)行指令的次數(shù),且于多級(jí)的流水線中具有更佳的降低執(zhí)行指令的次數(shù)的效果。
背景技術(shù):
集成電路設(shè)計(jì)(IC Design)的產(chǎn)業(yè),其是代表我國(guó)于智能財(cái)產(chǎn)權(quán)中的重大貢獻(xiàn),該產(chǎn)業(yè)皆屬于發(fā)明專(zhuān)利的設(shè)計(jì),且具備相當(dāng)高度的創(chuàng)作,若無(wú)頂尖的精英份子從事研究即無(wú)法順利發(fā)展,而為開(kāi)發(fā)中或未開(kāi)發(fā)國(guó)家所無(wú)法輕易跨入的領(lǐng)域,因此集成電路設(shè)計(jì)對(duì)于我國(guó)電子產(chǎn)業(yè)的競(jìng)爭(zhēng)力而言,具有舉足輕重的地位。
于計(jì)算機(jī)用的中央處理器(CPU)的領(lǐng)域中,流水線(Pipeline)于高速的中央處理器中屬于主要的架構(gòu),因?yàn)樵谝粋€(gè)周期(Cycle)內(nèi)不可能完成中央處理器必須執(zhí)行的指令是不可能的,因此一個(gè)被執(zhí)行的指令必須要被分成多級(jí)處理,且每一級(jí)皆可利用一周期來(lái)執(zhí)行,因此一個(gè)高速的中央處理器必須有多級(jí)處理方能獲得較佳的效率。
但于中央處理器設(shè)置流水線時(shí)會(huì)產(chǎn)生”轉(zhuǎn)移預(yù)測(cè)(The Branch Prediction)”的問(wèn)題,假設(shè)有一程序的設(shè)定如下如果預(yù)測(cè)狀態(tài)為A,則一執(zhí)行程序?yàn)锽,而另一執(zhí)行程序?yàn)镃。
中央處理器若欲執(zhí)行程序B與C,必須要等待狀態(tài)A有執(zhí)行出一個(gè)結(jié)果,但是已具流水線的中央處理器不能只為了得到狀態(tài)A的結(jié)果,然后就將程序B、C塞入多級(jí)流水線中,其正確的做法應(yīng)該為已具流水線的中央處理器必預(yù)測(cè)A的結(jié)果,以及讀取程序B、C的指令其中之一者進(jìn)入流水線中,否則具有多級(jí)流水線的中央處理器將處于等待狀態(tài)A的閑置狀態(tài),如果中央處理器所預(yù)測(cè)狀態(tài)A與所讀取程序B的指令皆為正確的,那么所中央處理器即可迅速獲得正確結(jié)果,但是如果中央處理器所預(yù)測(cè)的狀態(tài)A為錯(cuò)誤的,那么中央處理器將會(huì)丟失其結(jié)果及停止B程序,再使C程序進(jìn)行流水線且執(zhí)行它,因此浪費(fèi)許多處理時(shí)間,該已知中央處理器的架構(gòu)雖然為是高速的,但是亦無(wú)法提高其運(yùn)算效能,此即為本發(fā)明欲改進(jìn)的目標(biāo)。
發(fā)明內(nèi)容
基于解決以上所述已知技術(shù)的缺點(diǎn),本發(fā)明為一種加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu),本發(fā)明的主要目的為于一中央處理器內(nèi)部至少設(shè)置有二個(gè)以上的流水線,且各流水線各自設(shè)置有復(fù)數(shù)個(gè)級(jí),對(duì)于一支線中預(yù)測(cè)執(zhí)行的指令失敗時(shí),可藉由另一支線來(lái)執(zhí)行正確的指令,故可有效降低執(zhí)行指令的次數(shù),且于多級(jí)的流水線中具有更佳的降低執(zhí)行指令的次數(shù)的效果。
本發(fā)明的另一目的在于上述二個(gè)以上流水線所設(shè)置的相同功能級(jí)可依設(shè)計(jì)需求做成一合并架構(gòu),用以降低中央處理器的價(jià)格及其設(shè)計(jì)的復(fù)雜性。
本發(fā)明采用以下技術(shù)方案來(lái)實(shí)現(xiàn),按本發(fā)明一種加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu)執(zhí)行指令的方法,該加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu)包括內(nèi)存(1),內(nèi)存控制器(2)及所連接的中央處理器(3),中央處理器內(nèi)部包括有一高速緩沖區(qū)(31),至少兩個(gè)流水線AB,及四個(gè)級(jí),其中A流水線包括A讀取(32)及A解碼(33)二個(gè)級(jí);B流水線包括B讀取(34)及B解碼(35),而二流水線共同使用的級(jí)包括有執(zhí)行(36)及回寫(xiě)(37),該方法的特征在于若轉(zhuǎn)移預(yù)測(cè)結(jié)果是正確的,而平時(shí)中央處理器利用A流水線來(lái)執(zhí)行執(zhí)令,則在第0周期中,A讀取執(zhí)行讀取”CMPR1,R2”動(dòng)作,而B(niǎo)讀取不執(zhí)行該讀取動(dòng)作在第1周期中A解碼執(zhí)行”CMPR1”解碼動(dòng)作,同時(shí)執(zhí)行讀取”JB process_A動(dòng)作,而B(niǎo)解碼不執(zhí)行解碼讀取動(dòng)作;在第2周期中執(zhí)行“CMPR1,R2”動(dòng)作,同時(shí)A讀取執(zhí)行讀取”MOVR3,R1”和解碼“JB process_A”動(dòng)作;在第3周期中,該“CMPR1,R2”執(zhí)行回寫(xiě)動(dòng)作,該“JB process_A”“執(zhí)行”執(zhí)行動(dòng)作,A解碼執(zhí)行“MOVR3,R1”解碼動(dòng)作而不執(zhí)行讀取動(dòng)作,B解碼不執(zhí)行解碼動(dòng)作,但執(zhí)行“MOVR3,R2”讀取動(dòng)作;在第四周期中,’JB process_A”執(zhí)行回寫(xiě)動(dòng)作,“MOVR3,R2”“執(zhí)行”執(zhí)行動(dòng)作,而B(niǎo)解碼執(zhí)行“MOVR3,R2”解碼動(dòng)作。不執(zhí)行讀取動(dòng)作,而A讀取不執(zhí)行解碼讀取動(dòng)作;在第5周期中,“MOVR3,R2”執(zhí)行回寫(xiě)動(dòng)作,而不“執(zhí)行”執(zhí)行動(dòng)作,A解碼,B解碼不執(zhí)行解碼動(dòng)作,A讀取,B讀取不執(zhí)行讀取動(dòng)作。
該方法的特征還在于若“轉(zhuǎn)移預(yù)測(cè)”結(jié)果是錯(cuò)誤的,則在第0周期中A讀取執(zhí)行“CMPR1,R2”讀取動(dòng)作,而B(niǎo)讀取不執(zhí)行讀取動(dòng)作;在第1周期中,A解碼執(zhí)行“CMPR1,R2”解碼動(dòng)作,同時(shí)執(zhí)行讀取“JBprocess_A”動(dòng)作,而B(niǎo)解碼,B解碼不執(zhí)行上述動(dòng)作;在第2周期中,“CMPR1,R2”“執(zhí)行”執(zhí)行動(dòng)作,同時(shí)A讀取執(zhí)行“CMPR3,R1”讀取動(dòng)作,A解碼執(zhí)行“JB process_A”解碼動(dòng)作,而B(niǎo)解碼,B讀取不執(zhí)行上述動(dòng)作;在第3周期中,“CMPR1,R2”“執(zhí)行”回寫(xiě)動(dòng)作,同時(shí)執(zhí)行“JB process_A”執(zhí)行動(dòng)作,A解碼執(zhí)行“MOVR3,R1”解碼動(dòng)作,B解碼不“執(zhí)行”執(zhí)行“MOVR3,R1”解碼動(dòng)作,A讀取不執(zhí)行讀取動(dòng)作,B讀取執(zhí)行“MOVR3,R2”讀取動(dòng)作;在第4周期中,“JB process_A”執(zhí)行回寫(xiě)動(dòng)作,B解碼執(zhí)行“MOVR3,R2”解碼動(dòng)作,A解碼不執(zhí)行“MOVR3,R2”動(dòng)作。A讀取和B讀不執(zhí)行讀取動(dòng)作;在第5周期中,僅執(zhí)行“MOVR3,R2”執(zhí)行動(dòng)作;在第6周期中,僅執(zhí)行“MOVR3,R2”回寫(xiě)動(dòng)作。
以下結(jié)合
及發(fā)明詳細(xì)說(shuō)明進(jìn)一步對(duì)本發(fā)明做更深入的說(shuō)明。
圖1為本發(fā)明裝設(shè)多流水線的中央處理器架構(gòu)的功能方塊圖;圖2為單一流水線架構(gòu)來(lái)執(zhí)行若干指令的第一流程圖表;圖3為單一流水線架構(gòu)來(lái)執(zhí)行若干指令的第二流程圖表;
圖4為利用圖1架構(gòu)來(lái)執(zhí)行若干指令的第一流程圖表;圖5為利用圖1架構(gòu)來(lái)執(zhí)行若干指令的第二流程圖表。
附圖標(biāo)號(hào)說(shuō)明1內(nèi)存;2內(nèi)存控制器;3中央處理器;31高速緩存區(qū);32-A讀??;33-A解碼;34-B讀??;35-B解碼;36執(zhí)行;37回寫(xiě)。
具體實(shí)施例方式
茲配合下列的
本發(fā)明的詳細(xì)結(jié)構(gòu),及其連結(jié)關(guān)系,以利做一一了解。
請(qǐng)參閱圖1所示,為本發(fā)明裝設(shè)多流水線的中央處理器架構(gòu)的功能方塊圖,其中包括一內(nèi)存1及一內(nèi)存控制器2及所連接的中央處理器3,中央處理器3內(nèi)部包括有一高速緩存區(qū)(Cache)31及二個(gè)流水線(Pipeline)及四個(gè)級(jí)(Stage),其中A流水線(Pipeline A)包括有A讀取32及A解碼33的二個(gè)級(jí);B流水線(Pipeline B)包括有B讀取34及B解碼35的二個(gè)級(jí),而二流水線的共同使用級(jí)包括有執(zhí)行36及回寫(xiě)37,當(dāng)然針對(duì)不同的中央處理器的設(shè)計(jì),可以有設(shè)置更多的流水線及級(jí)。
請(qǐng)參閱圖2所示,為單一流水線架構(gòu)來(lái)執(zhí)行若干指令的第一流程圖表,假設(shè)中央處理器正在執(zhí)行下列指令(1)CMP R1,R2(比較R1與R2的數(shù)值)(2)JB process A(若R1大于R2,則執(zhí)行跳至流程A)(3)MOV R3,R2(將R2的數(shù)值搬移R3)流程A(4)MOV R3,R1(將R1的數(shù)值搬移R3)如果裝置一流水線的中央處理器與單一流水線執(zhí)行有關(guān)指令與轉(zhuǎn)移預(yù)測(cè)是R1數(shù)值大于R2,且真實(shí)的情況亦為R1數(shù)值大于R2,此時(shí)執(zhí)行結(jié)果就如圖表所示其中每一個(gè)指令皆必須經(jīng)過(guò)四個(gè)級(jí),其分別依序?yàn)樽x取(Fetch)、解碼(Decode)、執(zhí)行(Execute)及回寫(xiě)(Writeback),方可完成所有的動(dòng)作。
其中在第0個(gè)周期中,“讀取”一“CMP R1,R2”的指令;于第1個(gè)周期中該“CMP R1,R2”進(jìn)行“解碼”動(dòng)作,同時(shí)又讀取下一個(gè)指令“JB processA”;于第2個(gè)周期中,該“CMP R1,R2”進(jìn)行“執(zhí)行”動(dòng)作,同時(shí)“JB processA”進(jìn)行“解碼”動(dòng)作,同時(shí)讀取下一個(gè)指令“MOV R3,R1”(因R1數(shù)值確實(shí)大于R2數(shù)值,故執(zhí)行process A);于第3個(gè)周期中,“CMP R1,R2”進(jìn)行“回寫(xiě)”動(dòng)作,“JB process A”進(jìn)行“執(zhí)行”動(dòng)作,“MOV R3,R1”進(jìn)行“解碼”動(dòng)作;于第4個(gè)周期中,“JB process A”進(jìn)行“回寫(xiě)”動(dòng)作,“MOVR3,R1”進(jìn)行“執(zhí)行”動(dòng)作;于第5個(gè)周期中,“MOV R3,R1”進(jìn)行“回寫(xiě)”動(dòng)作。
由圖表中可看出在“轉(zhuǎn)移預(yù)測(cè)”正確的情況下,僅需要花六個(gè)周期(第0周期至第5周期)即可完成該些指令。
請(qǐng)參閱圖3所示,為單一流水線架構(gòu)來(lái)執(zhí)行若干指令的第二流程圖表,假設(shè)中央處理器正在執(zhí)行下列指令(1)CMP R1,R2(比較R1與R2的數(shù)值)(2)JB process A(若R1大于R2,則執(zhí)行跳至流程A)(3)MOV R3,R2(將R2的數(shù)值搬移R3)流程A(process A)(4)MOV R3,R1(將R1的數(shù)值搬移R3)如果裝置一流水線的中央處理器與單一流水線執(zhí)行有關(guān)指令與轉(zhuǎn)移預(yù)測(cè)是R1數(shù)值大于R2,且真實(shí)的情況為R1數(shù)值卻未大于R2,代表其“轉(zhuǎn)移預(yù)測(cè)”結(jié)果是錯(cuò)誤的,此時(shí)執(zhí)行結(jié)果就如圖表所示其中在第0個(gè)周期中,“讀取”一“CMP R1,R2”的指令;于第1個(gè)周期中該“CMP R1,R2”進(jìn)行“解碼”動(dòng)作,同時(shí)又讀取下一個(gè)指令“JB processA”;于第2個(gè)周期中,該“CMP R1,R2”進(jìn)行“執(zhí)行”動(dòng)作,同時(shí)“JB processA”進(jìn)行“解碼”動(dòng)作,同時(shí)讀取下一個(gè)指令“MOV R3,R1”;于第3個(gè)周期中,“CMP R1,R2”進(jìn)行“回寫(xiě)”動(dòng)作,“JB process A”進(jìn)行“執(zhí)行”動(dòng)作,“MOV R3,R1”進(jìn)行“解碼”動(dòng)作;于第4個(gè)周期中,“JB process A”進(jìn)行“回寫(xiě)”動(dòng)作,“MOV R3,R1”因?yàn)椴环险鎸?shí)故無(wú)法進(jìn)行“執(zhí)行”動(dòng)作,因此又重新讀取一指令“MOV R3,R2”;于第5個(gè)周期中,“MOV R3,R2”進(jìn)行“解碼”動(dòng)作;于第6個(gè)周期中,“MOV R3,R2”進(jìn)行“執(zhí)行”動(dòng)作;于第7個(gè)周期中,“MOV R3,R2”進(jìn)行“回寫(xiě)”動(dòng)作。
我們?cè)诎l(fā)現(xiàn)該轉(zhuǎn)移預(yù)測(cè)結(jié)果若未與真實(shí)情況相同時(shí),此時(shí)必須要花費(fèi)八個(gè)周期方可將指令執(zhí)行完成,其原因是因?yàn)楫?dāng)中央處理器于第三個(gè)周期執(zhí)行跳至流程A時(shí),其結(jié)果是錯(cuò)誤的,因此下一個(gè)指令應(yīng)該是執(zhí)行“將R2的數(shù)值搬移R3”,而非執(zhí)行流程A的“將R1的數(shù)值搬移R3”。
但是中央處理器預(yù)測(cè)的結(jié)果如果是真實(shí)的話,才可執(zhí)行讀取“將R1的數(shù)值搬移R3”進(jìn)入流水線的級(jí),因此中央處理器必須舍棄“將R1的數(shù)值搬移R3”的指令,并重新讀取“將R2的數(shù)值搬移R3”的指令,正因如此而浪費(fèi)了兩個(gè)周期來(lái)處理該些指令。
請(qǐng)參閱圖4所示,為利用圖1架構(gòu)來(lái)執(zhí)行若干指令的第一流程圖表,一個(gè)中央處理器若裝設(shè)有二個(gè)流水線(分別為A流水線及B流水線)來(lái)執(zhí)行上述的若干指令,其中A流水線(Pipeline A)包括有A讀取32及A解碼33的二個(gè)級(jí);B流水線(Pipeline B)包括有B讀取34及B解碼35的二個(gè)級(jí),而二流水線的共同使用級(jí)包括有執(zhí)行36及回寫(xiě)37。而其“轉(zhuǎn)移預(yù)測(cè)”結(jié)果是正確的,平時(shí)中央處理器利用A流水線來(lái)執(zhí)行指令,在第2個(gè)周期中,中央處理器對(duì)于“JBprocess A”這個(gè)指令進(jìn)行譯碼后了解存在有另一個(gè)支線,因此中央處理器于第3個(gè)周期中讀取該“JB process A”以后的其它指令進(jìn)入B流水線中,于第3個(gè)周期之后,中央處理器執(zhí)行“JB process A”指令時(shí)發(fā)現(xiàn)其結(jié)果為真實(shí),因此于A流水線中執(zhí)行下一個(gè)有效指令“將R1的數(shù)值搬移R3”,并同時(shí)放棄執(zhí)行于B流水線中的指令,而中央處理器于六個(gè)周期內(nèi)即將該些指令執(zhí)行完畢。
請(qǐng)參閱圖5所示,為利用圖1架構(gòu)來(lái)執(zhí)行若干指令的第二流程圖表,一個(gè)中央處理器若裝設(shè)有二個(gè)流水線(分別為A流水線及B流水線)來(lái)執(zhí)行上述的若干指令,其中A流水線(Pipeline A)包括有A讀取32及A解碼33的二個(gè)級(jí);B流水線(Pipeline B)包括有B讀取34及B解碼35的二個(gè)級(jí),而二流水線的共同使用級(jí)包括有執(zhí)行36及回寫(xiě)37,其中有關(guān)指令與轉(zhuǎn)移預(yù)測(cè)是R1數(shù)值大于R2,且真實(shí)的情況為R1數(shù)值卻未大于R2,代表其“轉(zhuǎn)移預(yù)測(cè)”結(jié)果是錯(cuò)誤的,在第2個(gè)周期中,中央處理器對(duì)于“JB process A”這個(gè)指令進(jìn)行譯碼后了解存在有另一個(gè)支線,同樣地,中央處理器于第3個(gè)周期中讀取該“JB processA”以后的其它指令進(jìn)入B流水線中,于第三個(gè)周期之后,中央處理器執(zhí)行“JBprocess A”指令時(shí)發(fā)現(xiàn)其結(jié)果為錯(cuò)誤,因此于A流水線中執(zhí)行下一個(gè)指令“將R1的數(shù)值搬移R3”乃于無(wú)效并放棄該指令,且執(zhí)行于B流水線中的有效指令,其共執(zhí)行七個(gè)周期,較圖3所揭示的流程而言,節(jié)省了一個(gè)指令。
更甚者,該二個(gè)以上流水線所設(shè)置的相同功能級(jí)可依設(shè)計(jì)需求做成一合并架構(gòu),用以降低中央處理器的價(jià)格及其設(shè)計(jì)的復(fù)雜性。
藉由上述圖1至圖5的公開(kāi),即可了解本發(fā)明的主要為于一中央處理器內(nèi)部至少設(shè)置有二個(gè)以上的流水線,且各流水線各自設(shè)置有復(fù)數(shù)個(gè)級(jí),對(duì)于一支線中預(yù)測(cè)執(zhí)行的指令失敗時(shí),可藉由另一支線來(lái)執(zhí)行正確的指令,故可有效降低執(zhí)行指令的次數(shù),且于多級(jí)的流水線中具有更佳的降低執(zhí)行指令的次數(shù)的效果,且上述二個(gè)以上流水線所設(shè)置的相同功能級(jí)可依設(shè)計(jì)需求做成一合并架構(gòu),用以降低中央處理器的價(jià)格及其設(shè)計(jì)的復(fù)雜性。上述的技術(shù)手段于市場(chǎng)上具極佳的商業(yè)價(jià)值,故提出專(zhuān)利的申請(qǐng)以尋求專(zhuān)利權(quán)的保護(hù)。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,不能以之限定本發(fā)明所實(shí)施的范圍,即凡依本發(fā)明權(quán)利要求所作的均等變化與修飾,皆應(yīng)仍屬于本發(fā)明權(quán)利要求涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu),其中,是于一中央處理器內(nèi)部至少設(shè)置有二個(gè)以上的流水線,且各流水線各自設(shè)置有復(fù)數(shù)個(gè)級(jí),對(duì)于一支線中預(yù)測(cè)執(zhí)行的指令失敗時(shí),可藉由另一支線來(lái)執(zhí)行正確的指令,故可有效降低執(zhí)行指令的次數(shù),且于多級(jí)的流水線中具有更佳的降低執(zhí)行指令的次數(shù)的效果。
2.如權(quán)利要求第1項(xiàng)所述的加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu),其特征在于該二個(gè)以上流水線所設(shè)置的相同功能級(jí)可依設(shè)計(jì)需求做成一合并架構(gòu),用以降低中央處理器的價(jià)格及其設(shè)計(jì)的復(fù)雜性。
全文摘要
本發(fā)明涉及一種加強(qiáng)轉(zhuǎn)移預(yù)測(cè)的中央處理器架構(gòu),其是于一中央處理器內(nèi)部至少設(shè)置有二個(gè)以上的流水線,且各流水線各自設(shè)置有復(fù)數(shù)個(gè)級(jí),對(duì)于一支線中預(yù)測(cè)執(zhí)行的指令失敗時(shí),可藉由另一支線來(lái)執(zhí)行正確的指令,故可有效降低執(zhí)行指令的次數(shù),且于多級(jí)的流水線中具有更佳的降低執(zhí)行指令的次數(shù)的效果。
文檔編號(hào)G06F9/38GK1904822SQ20051008865
公開(kāi)日2007年1月31日 申請(qǐng)日期2005年7月29日 優(yōu)先權(quán)日2005年7月29日
發(fā)明者郭建成 申請(qǐng)人:宇力電子股份有限公司