指令處理方法及裝置、處理器的制造方法
【專利摘要】本發(fā)明公開了指令處理方法及裝置、處理器,當(dāng)從處理器的第二緩存中按序讀取多條指令時(shí),若確定所述多條指令中存在特殊指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一緩存中;若確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述控制碼調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓,可以優(yōu)化處理器執(zhí)行指令的工作效率。
【專利說明】指令處理方法及裝置、處理器
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種指令處理方法及裝置、處理器。
【背景技術(shù)】
[0002] 基于數(shù)據(jù)挖掘方法研究處理器硬件發(fā)現(xiàn):一些特殊指令序列存在緩存缺失率高、 分支預(yù)測(cè)失誤率高等問題,例如,〈load,load,load〉指令序列中的load指令由于緩存缺 失會(huì)導(dǎo)致處理器流水線的停頓;又例如,〈branch,store,load,compare〉指令序列中的 branch指令由于分支預(yù)測(cè)失誤也會(huì)導(dǎo)致處理器流水線的停頓。
[0003] 由此可見,現(xiàn)有處理器的一些特殊指令序列由于緩存缺失率高或分支預(yù)測(cè)失誤等 原因?qū)е绿幚砥鞴ぷ髁魉€的停頓,從而影響了處理器執(zhí)行指令的工作效率。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種指令處理方法及裝置、處理器,用以解決現(xiàn)有處理器的一些指令 序列由于緩存缺失率高或分支預(yù)測(cè)失誤等原因?qū)е绿幚砥鞴ぷ髁魉€的停頓,以及處理器 執(zhí)行指令序列的效率低的問題。
[0005] 第一方面,提供一種指令處理方法,包括:
[0006] 從處理器的第二緩存中按序讀取多條指令,若確定所述多條指令中存在特殊指令 序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;
[0007] 將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一緩存 中;
[0008] 若確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述控 制碼調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓;
[0009] 所述特殊指令序列是指造成所述處理器的流水線停頓的特殊指令序列。
[0010] 基于第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述從處理器的第二緩存中按序讀 取多條指令,若確定所述多條指令中存在特殊指令序列,則確定所述特殊指令序列中各指 令對(duì)應(yīng)的控制碼,包括:
[0011] 從所述處理器的第二緩存中按序讀取多條指令,根據(jù)指令與預(yù)譯碼值之間的對(duì)應(yīng) 關(guān)系,按序分別確定所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值;
[0012] 根據(jù)所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值組成的序列,若確定存在特殊指令 序列對(duì)應(yīng)的預(yù)譯碼值序列,則確定所述多條指令中包括特殊指令序列;
[0013] 根據(jù)所述特殊指令序列中各指令和控制碼之間的對(duì)應(yīng)關(guān)系,確定所述特殊指令序 列中各指令對(duì)應(yīng)的控制碼。
[0014] 基于第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述控制碼包括關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼或關(guān)閉分支預(yù)測(cè)部件的代碼;
[0015] 所述根據(jù)所述控制碼調(diào)整所述處理器的微結(jié)構(gòu),包括:
[0016] 根據(jù)所述關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼,關(guān)閉加載之后所述處理器的指 令預(yù)測(cè)執(zhí)行部件;或
[0017] 根據(jù)所述關(guān)閉分支預(yù)測(cè)部件的代碼,關(guān)閉所述處理器的分支預(yù)測(cè)部件。
[0018] 第二方面,提供一種指令處理裝置,包括:
[0019] 確定模塊,用于從處理器的第二緩存中按序讀取多條指令,若確定所述多條指令 中存在特殊指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;
[0020] 保存模塊,用于將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理 器的第一緩存中;
[0021] 調(diào)整模塊,用于若確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制 碼,則根據(jù)所述控制碼調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓;
[0022] 所述特殊指令序列是指造成所述處理器的流水線停頓的特殊指令序列。
[0023] 基于第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述確定模塊具體包括:
[0024] 第一確定單元,用于從所述處理器的第二緩存中按序讀取多條指令,根據(jù)指令與 預(yù)譯碼值之間的對(duì)應(yīng)關(guān)系,按序分別確定所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值;
[0025] 第二確定單元,用于根據(jù)所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值組成的序列, 若確定存在特殊指令序列對(duì)應(yīng)的預(yù)譯碼值序列,則確定所述多條指令中包括特殊指令序 列;
[0026] 第三確定單元,用于根據(jù)所述特殊指令序列中各指令和控制碼之間的對(duì)應(yīng)關(guān)系, 確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼。
[0027] 基于第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述控制碼包括關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼或關(guān)閉分支預(yù)測(cè)部件的代碼;[0028] 所述調(diào)整模塊具體用于:
[0029] 根據(jù)所述關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼,關(guān)閉加載之后所述處理器的指 令預(yù)測(cè)執(zhí)行部件;或
[0030] 根據(jù)所述關(guān)閉分支預(yù)測(cè)部件的代碼,關(guān)閉所述處理器的分支預(yù)測(cè)部件。
[0031] 第三方面,提供一種處理器,包括:上述指令處理裝置。
[0032] 第四方面,提供一種終端設(shè)備,包括:上述處理器。
[0033] 本發(fā)明實(shí)施例通過對(duì)從處理器的第二緩存中按序讀取多條指令,檢測(cè)是否存在特 殊指令序列,若存在特殊指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;并將 所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一緩存中;之后,若 確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述控制碼調(diào)整所 述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓;上述提供的方案可以避免在執(zhí)行特 殊指令序列時(shí),由于緩存缺失或分支預(yù)測(cè)失誤等原因造成的處理器流水線停頓的問題;因 此,可以優(yōu)化處理器執(zhí)行指令的工作效率。
【專利附圖】
【附圖說明】
[0034] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0035] 圖1為本發(fā)明一實(shí)施例提供的指令處理方法的流程示意圖;
[0036] 圖2為本發(fā)明另一實(shí)施例提供的指令處理裝置的結(jié)構(gòu)示意圖;
[0037] 圖3為圖2所示實(shí)施例的原理框圖;
[0038] 圖4為本發(fā)明另一實(shí)施例提供的指令處理裝置的結(jié)構(gòu)示意圖;
[0039] 圖5為本發(fā)明另一實(shí)施例提供的處理器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0040] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0041] 本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)"第一"、"第二"、"第三""第 四"等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該 理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例例如能夠以 除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語(yǔ)"包括"和"具有"以及他們的任 何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、 產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ?這些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0042] 現(xiàn)有的處理器微結(jié)構(gòu)設(shè)計(jì)主要是根據(jù)已經(jīng)執(zhí)行過的歷史指令預(yù)測(cè)即將執(zhí)行的指 令,調(diào)整對(duì)即將執(zhí)行指令流的處理策略(例如預(yù)測(cè)跳轉(zhuǎn)指令的跳轉(zhuǎn)方向與跳轉(zhuǎn)地址),從而 對(duì)處理器的指令流的整體執(zhí)行效率進(jìn)行優(yōu)化。
[0043] 然而,有些特殊指令序列容易造成處理器的流水線的停頓,例如,指令序列 〈load,load,load〉中的Load指令就是要從存儲(chǔ)器中取回?cái)?shù)據(jù)到寄存器,如果數(shù)據(jù)高速緩 沖存儲(chǔ)器(Cache)中包含這需要取回的數(shù)據(jù),處理器執(zhí)行指令的流水線就可以流暢運(yùn)行,繼 續(xù)執(zhí)行Load指令之后進(jìn)入流水線的指令。如果數(shù)據(jù)Cache不包含這一需要取回的數(shù)據(jù),則 會(huì)發(fā)生一次數(shù)據(jù)緩存缺失(CacheMiss),這樣就需要刷新處理器執(zhí)行指令的流水線,也就 是說,在Load指令之后進(jìn)入流水線的指令都要被清除掉,這樣就導(dǎo)致了處理器執(zhí)行指令的 流水線停頓。
[0044] 又例如,指令序列〈branch,store,load,compare〉中的branch指令是指進(jìn) 行分支跳轉(zhuǎn)的指令,根據(jù)現(xiàn)有的處理器微結(jié)構(gòu)設(shè)計(jì),當(dāng)branch指令進(jìn)入流水線時(shí),由 于在處理器完成初始化工作以后,通常分支預(yù)測(cè)部件就開啟,因此,會(huì)根據(jù)分支預(yù)測(cè)部 件提供的分支跳轉(zhuǎn)方向,預(yù)測(cè)下一條指令的位置。而實(shí)驗(yàn)數(shù)據(jù)表明,當(dāng)處理器在執(zhí)行 〈branch,store,load,compare〉指令序列時(shí),錯(cuò)誤地將不需要執(zhí)行的指令送入流水線,發(fā)現(xiàn) 分支預(yù)測(cè)錯(cuò)誤后還需要清除掉這些指令,這樣就導(dǎo)致了處理器流水線停頓。。
[0045] 上述僅僅以指令序列〈load,load,load〉、〈branch,store,load,compare〉為例進(jìn) 行說明,可以理解,本領(lǐng)域的普通技術(shù)人員根據(jù)上述指令序列所聯(lián)想到其他導(dǎo)致由于緩存 缺失率高或分支預(yù)測(cè)失誤導(dǎo)致的指令序列也屬于本專利的保護(hù)范圍。
[0046] 由此可知,現(xiàn)有的處理器的微結(jié)構(gòu)設(shè)計(jì)中,當(dāng)出現(xiàn)某些特殊指令序列時(shí),會(huì)由于緩 存缺失率高或分支預(yù)測(cè)失誤或其他原因?qū)е绿幚砥鞯牧魉€停頓的問題,從而降低了處理 器執(zhí)行指令的工作效率。
[0047] 基于上述現(xiàn)有技術(shù)存在的問題,本發(fā)明實(shí)施例提供一種指令處理方法,可以解決 在現(xiàn)有的處理器流水線微結(jié)構(gòu)設(shè)計(jì)中,當(dāng)出現(xiàn)某些特殊指令序列時(shí),存在處理器的流水線 停頓的問題,可以優(yōu)化處理器執(zhí)行指令的工作效率。
[0048] 需要說明的是,本實(shí)施例所述的處理器的微結(jié)構(gòu)(MicroArchitecture)具體是指 處理器內(nèi)部的一些功能部件的集合,其中,功能部件例如包括指令預(yù)測(cè)執(zhí)行部件或分支預(yù) 測(cè)部件等。
[0049]圖1為本發(fā)明一實(shí)施例提供的指令處理方法的流程示意圖,如圖1所示,本實(shí)施例 的指令處理方法可以包括:
[0050] 101、從處理器的第二緩存中按序讀取多條指令,若確定所述多條指令中存在特殊 指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;
[0051] 在本發(fā)明的一個(gè)可選的實(shí)施方式中,步驟101具體包括:
[0052] 從所述處理器的第二緩存中按序讀取多條指令,根據(jù)指令與預(yù)譯碼值之間的對(duì)應(yīng) 關(guān)系,按序分別確定所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值;
[0053] 根據(jù)所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值組成的序列,若確定存在特殊指令 序列對(duì)應(yīng)的預(yù)譯碼值序列,則確定所述多條指令中包括特殊指令序列;
[0054] 根據(jù)所述特殊指令序列中各指令和控制碼之間的對(duì)應(yīng)關(guān)系,確定所述特殊指令序 列中各指令對(duì)應(yīng)的控制碼。
[0055] 需要說明的是,本實(shí)施例所述的第二緩存例如為二級(jí)緩存L2Cache。
[0056] 需要說明的是,本實(shí)施例所述的特殊指令序列包括但不限于〈load,load,load〉 指令序列和〈branch,store,load,compare〉指令序列;
[0057] 其中,特殊指令序列〈load,load,load〉中的load指令的控制碼為關(guān)閉加載之后 指令預(yù)測(cè)執(zhí)行部件的代碼;
[0058] 特殊指令序列〈branch,store,load,compare〉中branch指令的控制碼為關(guān)閉分 支預(yù)測(cè)部件的代碼,其中,需要說明的是,該特殊指令序列〈branch,store,load,compare〉 中的其他三個(gè)store、load、compare指令對(duì)應(yīng)的控制碼可以默認(rèn)設(shè)為0,表示不需要進(jìn)行處 理器的微結(jié)構(gòu)的調(diào)整。
[0059] 102、將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一 緩存中;
[0060] 需要說明的是,本實(shí)施例所述的第一緩存例如為指令高速緩沖存儲(chǔ)器 (Instruction-Cache,I-Cache)〇
[0061] 103、若確定所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述 控制碼調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓。
[0062] 從處理器的第一緩存中讀取的指令具體是指進(jìn)入處理器的流水線的指令,也就是 即將執(zhí)行的指令;
[0063] 假設(shè)即將執(zhí)行的指令為特殊指令序列中〈load,load,load〉中的load指令時(shí),為 了避免在執(zhí)行l(wèi)oad指令時(shí),由于CacheMiss可能造成處理器的流水線停頓的問題,該load指令對(duì)應(yīng)的控制碼為關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼;因此,步驟103具體為:根據(jù) 關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼,關(guān)閉加載之后所述處理器的指令預(yù)測(cè)執(zhí)行部件。
[0064] 需要說明的是,當(dāng)執(zhí)行完特殊指令序列中〈load,load,load〉中的三個(gè)load之后, 需要重新開啟加載之后所述處理器的指令預(yù)測(cè)執(zhí)行部件。
[0065] 假設(shè)即將執(zhí)行的指令為特殊指令序列中〈branch,store,load,compare〉中的 branch指令時(shí),為了避免在執(zhí)行branch指令時(shí)分支預(yù)測(cè)部件的分支預(yù)測(cè)失誤,該branch指 令對(duì)應(yīng)的控制碼為關(guān)閉分支預(yù)測(cè)部件的代碼;因此,步驟103具體為:根據(jù)關(guān)閉分支預(yù)測(cè)部 件的代碼,關(guān)閉所述處理器的分支預(yù)測(cè)部件。
[0066] 需要說明的是,當(dāng)執(zhí)行完特殊指令序列中〈branch,store,load,compare〉中的 branch指令之后,需要重新開啟處理器的分支預(yù)測(cè)部件。
[0067] 本發(fā)明實(shí)施例通過對(duì)從處理器的第二緩存中按序讀取多條指令,檢測(cè)是否存在特 殊指令序列,若存在特殊指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼;并將 所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一緩存中;之后,若 確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述控制碼調(diào)整所 述處理器的微結(jié)構(gòu);
[0068] 由于本實(shí)施例的控制碼是為了避免當(dāng)某些特殊指令序列進(jìn)入處理器的流水線時(shí) 會(huì)造成流水線停頓的問題,針對(duì)某些特殊指令序列中的各指令設(shè)計(jì)的,例如,當(dāng)檢測(cè)出特殊 指令序列〈load,load,load〉即將進(jìn)入處理器的流水線時(shí),此時(shí),處理器可以關(guān)閉加載之后 所述處理器的流水線的指令預(yù)測(cè)執(zhí)行部件,從而避免在執(zhí)行l(wèi)oad指令時(shí)造成處理器的流 水線停頓的問題;又例如,當(dāng)檢測(cè)出特殊指令序列〈branch,store,load,compare〉即將進(jìn) 入處理器的流水線時(shí),為了避免分支預(yù)測(cè)部件的分支預(yù)測(cè)失誤,處理器可以關(guān)閉分支預(yù)測(cè) 部件,從而可以避免在執(zhí)行branch指令時(shí)造成的分支預(yù)測(cè)失誤;因此,可以優(yōu)化處理器執(zhí) 行指令的工作效率。
[0069] 圖2為本發(fā)明另一實(shí)施例提供的指令處理方法的流程示意圖,圖3為圖2所示實(shí) 施例的原理框圖,如圖2和圖3所示,本實(shí)施例的指令處理方法是圖1所示實(shí)施例的具體實(shí) 現(xiàn),包括:
[0070] 201、在第一個(gè)時(shí)鐘周期內(nèi)從L2Cache中按序讀取4條指令。
[0071] 具體實(shí)現(xiàn)時(shí),假設(shè)120&〇116讀端口為16字段〇35^68),每條指令為4135^68,每個(gè)時(shí) 鐘周期內(nèi)只能讀出4條指令(InstrO、Instrl、Instr2、Instr3)。
[0072] 202、確定第一個(gè)時(shí)鐘周期內(nèi)讀取的4條指令對(duì)應(yīng)的預(yù)譯碼值。
[0073] 表1為本發(fā)明實(shí)施例建立的第一關(guān)系對(duì)應(yīng)表,如表1所不:
[0074]
【權(quán)利要求】
1. 一種指令處理方法,其特征在于,包括: 從處理器的第二緩存中按序讀取多條指令,若確定所述多條指令中存在特殊指令序 列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼; 將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的第一緩存中; 若確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則根據(jù)所述控制碼 調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不發(fā)生停頓; 所述特殊指令序列是指造成所述處理器的流水線停頓的特殊指令序列。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從處理器的第二緩存中按序讀取多 條指令,若確定所述多條指令中存在特殊指令序列,則確定所述特殊指令序列中各指令對(duì) 應(yīng)的控制碼,包括: 從所述處理器的第二緩存中按序讀取多條指令,根據(jù)指令與預(yù)譯碼值之間的對(duì)應(yīng)關(guān) 系,按序分別確定所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值; 在所述多條指令所對(duì)應(yīng)的預(yù)譯碼值組成的序列中,若確定存在特殊指令序列對(duì)應(yīng)的預(yù) 譯碼值序列,則確定所述多條指令中包括特殊指令序列; 根據(jù)所述特殊指令序列中各指令和控制碼之間的對(duì)應(yīng)關(guān)系,確定所述特殊指令序列中 各指令對(duì)應(yīng)的控制碼。
3. 根據(jù)權(quán)利要求1-2中任一項(xiàng)所述的方法,其特征在于,所述控制碼包括關(guān)閉加載之 后指令預(yù)測(cè)執(zhí)行部件的代碼或關(guān)閉分支預(yù)測(cè)部件的代碼; 所述根據(jù)所述控制碼調(diào)整所述處理器的微結(jié)構(gòu),包括: 根據(jù)所述關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼,關(guān)閉加載之后所述處理器的指令預(yù) 測(cè)執(zhí)行部件;或 根據(jù)所述關(guān)閉分支預(yù)測(cè)部件的代碼,關(guān)閉所述處理器的分支預(yù)測(cè)部件。
4. 一種指令處理裝置,其特征在于,包括: 確定模塊,用于從處理器的第二緩存中按序讀取多條指令,若確定所述多條指令中存 在特殊指令序列,則確定所述特殊指令序列中各指令對(duì)應(yīng)的控制碼; 保存模塊,用于將所述特殊指令序列中各指令及其對(duì)應(yīng)的控制碼保存到所述處理器的 第一緩存中; 調(diào)整模塊,用于若確定從所述處理器的第一緩存中讀取的指令存在對(duì)應(yīng)的控制碼,則 根據(jù)所述控制碼調(diào)整所述處理器的微結(jié)構(gòu),使得所述處理器的流水線不停頓; 所述特殊指令序列是指造成所述處理器的流水線停頓的特殊指令序列。
5. 根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述確定模塊具體包括: 第一確定單元,用于從所述處理器的第二緩存中按序讀取多條指令,根據(jù)指令與預(yù)譯 碼值之間的對(duì)應(yīng)關(guān)系,按序分別確定所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值; 第二確定單元,用于根據(jù)所述多條指令中每條指令對(duì)應(yīng)的預(yù)譯碼值組成的序列,若確 定存在特殊指令序列對(duì)應(yīng)的預(yù)譯碼值序列,則確定所述多條指令中包括特殊指令序列; 第三確定單元,用于根據(jù)所述特殊指令序列中各指令和控制碼之間的對(duì)應(yīng)關(guān)系,確定 所述特殊指令序列中各指令對(duì)應(yīng)的控制碼。
6. 根據(jù)權(quán)利要求4-5中任一項(xiàng)所述的裝置,其特征在于,所述控制碼包括關(guān)閉加載之 后指令預(yù)測(cè)執(zhí)行部件的代碼或關(guān)閉分支預(yù)測(cè)部件的代碼; 所述調(diào)整模塊具體用于: 根據(jù)所述關(guān)閉加載之后指令預(yù)測(cè)執(zhí)行部件的代碼,關(guān)閉加載之后所述處理器的指令預(yù) 測(cè)執(zhí)行部件;或 根據(jù)所述關(guān)閉分支預(yù)測(cè)部件的代碼,關(guān)閉所述處理器的分支預(yù)測(cè)部件。
7. -種處理器,其特征在于,包括:如權(quán)利要求4-6任一項(xiàng)所述的指令處理裝置。
8. -種終端設(shè)備,其特征在于,包括:如權(quán)利要求7所述的處理器。
【文檔編號(hào)】G06F9/38GK104423927SQ201310389245
【公開日】2015年3月18日 申請(qǐng)日期:2013年8月30日 優(yōu)先權(quán)日:2013年8月30日
【發(fā)明者】侯銳, 郭旭斌, 馮煜晶, 王曦爽, 李曄 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所