變長(zhǎng)指令字處理器系統(tǒng)和方法
【專利摘要】本發(fā)明提供了一種變長(zhǎng)指令字處理器系統(tǒng)和方法,應(yīng)用于處理器領(lǐng)域時(shí)能在處理器核執(zhí)行指令前,將所述指令轉(zhuǎn)換為微操作后填充到所述處理器核能直接訪問(wèn)的緩存系統(tǒng)中,降低流水線深度,提高流水線效率。
【專利說(shuō)明】變長(zhǎng)指令字處理器系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī),通訊及集成電路領(lǐng)域。
【背景技術(shù)】
[0002]變長(zhǎng)指令指的是字長(zhǎng)不固定的指令。例如,在某個(gè)變長(zhǎng)指令集中,指令的字長(zhǎng)可以是1個(gè)字節(jié)、2個(gè)字節(jié)、3個(gè)字節(jié)、4個(gè)字節(jié),或更多字節(jié)。定長(zhǎng)指令([116(1 [611的11 11181:1-1101:1011)指的是字長(zhǎng)固定的指令。例如,在某個(gè)定長(zhǎng)指令集中,所有指令的字長(zhǎng)都4個(gè)字節(jié)。通常,變長(zhǎng)指令集被用于復(fù)雜指令集計(jì)算機(jī)11181:1~1101:1011 861: 001111)111:61-, 0180)中,而定長(zhǎng)指令集被用于精簡(jiǎn)指令集計(jì)算機(jī)(06(11106(111181:1~1101:1011 56七001111)111:61-)中。通常而言,定長(zhǎng)指令集中每條指令都完成一個(gè)操作(或動(dòng)作)能更好地利用流水線的帶來(lái)的執(zhí)行效率;而變長(zhǎng)指令集之中有些指令往往需要分步完成多個(gè)操作(或動(dòng)作)導(dǎo)致流水線經(jīng)常處于暫停狀態(tài),降低了流水線吞吐率,從而降低了處理器系統(tǒng)的整體性能。
[0003]對(duì)上述問(wèn)題的一種解決方法是采用一個(gè)執(zhí)行定長(zhǎng)指令集指令的處理器核產(chǎn)生變長(zhǎng)指令地址,根據(jù)該變長(zhǎng)指令地址從存儲(chǔ)器中獲取指令,在執(zhí)行該變長(zhǎng)指令前將所述變長(zhǎng)指令轉(zhuǎn)換成一條或多條定長(zhǎng)指令,再由該處理器核執(zhí)行這些定長(zhǎng)指令,從而提高流水線吞吐率。然而,所述轉(zhuǎn)換會(huì)增加流水線的深度,使得分支預(yù)測(cè)錯(cuò)誤時(shí)需要清空更多級(jí)數(shù)的流水線,依然會(huì)導(dǎo)致處理器系統(tǒng)性能的降低。
[0004]此外,現(xiàn)有的處理器體系結(jié)構(gòu)普遍采用緩存將更低級(jí)存儲(chǔ)器中的部分內(nèi)容復(fù)制在其中,使這些內(nèi)容能被更高級(jí)存儲(chǔ)器或處理器核快速存取,以保證流水線的持續(xù)運(yùn)行?;镜木彺娼Y(jié)構(gòu)通常在緩存缺失之后,才將低級(jí)存儲(chǔ)媒介中的內(nèi)容填充到緩存中,使得流水線不得不暫停以等待缺失部分被填充到緩存中。一些新的緩存結(jié)構(gòu),如:犧牲緩存、跟蹤緩存以及預(yù)取等都是基于上述基本緩存結(jié)構(gòu)并改善上述結(jié)構(gòu)。然而,隨著日漸擴(kuò)大的處理器/存儲(chǔ)器速度鴻溝,現(xiàn)行體系結(jié)構(gòu),特別是多種緩存缺失,已成為是制約現(xiàn)代處理器性能提升的最嚴(yán)重瓶頸。
[0005]本發(fā)明提出的方法與系統(tǒng)裝置能直接解決上述或其他的一個(gè)或多個(gè)困難。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提出了一種變長(zhǎng)指令字處理器系統(tǒng),其特征在于,包括:處理器核,所述處理器核用以執(zhí)行微操作;轉(zhuǎn)換器,所述轉(zhuǎn)換器用以將指令轉(zhuǎn)換為微操作;微操作存儲(chǔ)器,所述微操作存儲(chǔ)器用以存儲(chǔ)轉(zhuǎn)換得到的微操作;映射模塊,所述映射模塊用以存儲(chǔ)指令與微操作之間的地址映射關(guān)系。
[0007]可選的,所述轉(zhuǎn)換器將指令塊內(nèi)地址轉(zhuǎn)換為微操作塊內(nèi)地址。
[0008]可選的,所述轉(zhuǎn)換器將分支指令的分支增量轉(zhuǎn)換為補(bǔ)償后的分支增量;所述補(bǔ)償后的分支增量等于所述分支指令本身的塊內(nèi)地址與所述分支指令的分支增量之和。
[0009]可選的,所述變長(zhǎng)指令字處理器系統(tǒng)還包括:結(jié)束標(biāo)志存儲(chǔ)器,所述結(jié)束標(biāo)志存儲(chǔ)器用以存儲(chǔ)微操作存儲(chǔ)器中每個(gè)微操作塊的最后一個(gè)微操作的位置信息。
[0010]可選的,微操作存儲(chǔ)器根據(jù)轉(zhuǎn)換器對(duì)處理器核輸出的完整指令地址或部分指令地址轉(zhuǎn)換得到的微操作地址輸出相應(yīng)的微操作供處理器核執(zhí)行。
[0011]可選的,所述變長(zhǎng)指令字處理器系統(tǒng)還包括:微操作讀緩沖,所述微操作讀緩沖主動(dòng)向處理器輸出微操作供執(zhí)行;和所述微操作讀緩沖中的每一個(gè)微操作對(duì)應(yīng)一個(gè)令牌傳遞器,所述令牌傳遞器用于傳遞令牌;所述微操作讀緩沖主動(dòng)向處理器核輸出令牌所在的令牌傳遞器對(duì)應(yīng)的微操作供處理器核執(zhí)行。
[0012]可選的,所述變長(zhǎng)指令字處理器系統(tǒng)還包括:軌道表,所述軌道表用以存儲(chǔ)分支微操作的分支目標(biāo)微操作地址信息;循跡器,所述循跡器前行到處理器核當(dāng)前正在執(zhí)行的微操作之后的第一個(gè)分支微操作,并輸出該分支微操作的下一微操作的地址和目標(biāo)微操作的地址;和當(dāng)所述下一微操作或目標(biāo)微操作尚未存儲(chǔ)在微操作存儲(chǔ)器中時(shí),向微操作存儲(chǔ)器填充所述下一微操作或目標(biāo)微操作。
[0013]可選的,微操作存儲(chǔ)器根據(jù)轉(zhuǎn)換器對(duì)處理器核輸出的部分指令地址轉(zhuǎn)換得到的偏移地址從由循跡器指向的微操作塊中輸出相應(yīng)的微操作供處理器核執(zhí)行。
[0014]可選的,當(dāng)按地址順序執(zhí)行同一微操作塊內(nèi)的微操作時(shí),所述令牌從當(dāng)前令牌傳遞器向相鄰的令牌傳遞器傳遞;和當(dāng)執(zhí)行不同微操作塊中的微操作時(shí),所述令牌通過(guò)全局總線當(dāng)前令牌傳遞器向相應(yīng)的令牌傳遞器傳遞。
[0015]可選的,所述變長(zhǎng)指令字處理器系統(tǒng)還包括更多低層次存儲(chǔ)器;所述低層次存儲(chǔ)器中存儲(chǔ)的是指令或微操作。
[0016]可選的,所述轉(zhuǎn)換器將不同指令集的指令轉(zhuǎn)換為一種指令集的指令。
[0017]本發(fā)明還提出了一種變長(zhǎng)指令字處理器方法,其特征在于,將指令轉(zhuǎn)換為微操作,并建立指令地址和微操作地址之間的映射關(guān)系;根據(jù)所述映射關(guān)系將處理器核輸出的指令地址轉(zhuǎn)換為微操作地址,并根據(jù)所述微操作地址向處理器核輸出相應(yīng)微操作供執(zhí)行;或直接根據(jù)處理器核輸出的微操作地址向處理器核輸出相應(yīng)微操作供執(zhí)行。
[0018]可選的,指令塊地址與微操作塊地址相等,并建立指令塊內(nèi)地址和微操作塊內(nèi)地址之間的映射關(guān)系。
[0019]可選的,通過(guò)轉(zhuǎn)換對(duì)每個(gè)微操作塊的最后一個(gè)微操作的位置進(jìn)行標(biāo)記。
[0020]可選的,根據(jù)指令的指令塊地址找到微操作塊,并將指令塊內(nèi)地址轉(zhuǎn)換為微操作地址以從所述微操作塊內(nèi)找到相應(yīng)微操作;且所述微操作是所述指令對(duì)應(yīng)的至少一個(gè)微操作中的第一個(gè)微操作。
[0021]可選的,通過(guò)對(duì)指令塊內(nèi)從第一條指令到待尋址指令之間的指令數(shù)目計(jì)數(shù),并對(duì)相應(yīng)微操作塊內(nèi)從第一個(gè)微操作到待尋址微操作之間的對(duì)應(yīng)每條指令的第一個(gè)微操作的微操作數(shù)目計(jì)數(shù),將指令地址轉(zhuǎn)換為微操作地址。
[0022]可選的,將分支指令塊內(nèi)地址與分支增量相加,得到相應(yīng)分支微操作的補(bǔ)償后的分支增量;和通過(guò)將分支微操作對(duì)應(yīng)的微操作塊的塊地址和補(bǔ)償后的分支增量相加,即可得到所述分支微操作對(duì)應(yīng)的分支目標(biāo)微操作地址。
[0023]可選的,在向緩存填充微操作時(shí),計(jì)算所有分支微操作的目標(biāo)微操作地址,并將所述目標(biāo)微操作地址或所述目標(biāo)微操作地址映射后的地址信息存儲(chǔ)在軌道表中;和當(dāng)執(zhí)行到分支微操作時(shí),直接得到所述目標(biāo)微操作的位置信息。
[0024]可選的,在部分或全部所述分支微操作被執(zhí)行前,預(yù)先將相應(yīng)目標(biāo)微操作填充到緩存中,并更新軌道表中的相應(yīng)信息;和當(dāng)執(zhí)行到分支微操作時(shí),直接得到所述目標(biāo)微操作在緩存中的位置信息,或直接從緩存中找到所述目標(biāo)微操作。
[0025]可選的,所述轉(zhuǎn)換還能將一種或多種指令集的指令轉(zhuǎn)換為另一種指令集的指令。
[0026]可選的,在所述系統(tǒng)中,所述轉(zhuǎn)換器可以分多次將指令塊轉(zhuǎn)換為微操作塊。
[0027]可選的,在所述系統(tǒng)中還包含一個(gè)移位器;當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最小地址邊界對(duì)齊;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),先由所述移位器將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
[0028]可選的,在所述系統(tǒng)中,每次對(duì)指令塊轉(zhuǎn)換時(shí),記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),根據(jù)所述位置信息將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
[0029]可選的,在所述系統(tǒng)中,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊,并記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),將本次轉(zhuǎn)換得到的微操作與該微操作塊中已轉(zhuǎn)換的微操作拼接,使得全部轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊。
[0030]可選的,在所述系統(tǒng)中,每個(gè)微操作塊中還記錄了其順序地址下一微操作塊第一個(gè)微操作的位置信息。
[0031]可選的,在所述方法中,所述轉(zhuǎn)換可以分多次將指令塊轉(zhuǎn)換為微操作塊。
[0032]可選的,在所述方法中,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最小地址邊界對(duì)齊;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),先將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
[0033]可選的,在所述方法中,每次對(duì)指令決轉(zhuǎn)換時(shí),記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),根據(jù)所述位置信息將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
[0034]可選的,在所述方法中,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊,并記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),將本次轉(zhuǎn)換得到的微操作與該微操作塊中已轉(zhuǎn)換的微操作拼接,使得全部轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊。
[0035]可選的,在所述方法中,每個(gè)微操作塊中還記錄了其順序地址下一微操作塊第一個(gè)微操作的位置信息。
[0036]對(duì)于本領(lǐng)域?qū)I(yè)人士,還可以在本發(fā)明的說(shuō)明、權(quán)利要求和附圖的啟發(fā)下,理解、領(lǐng)會(huì)本發(fā)明所包含其他方面內(nèi)容。
[0037]有益效果
[0038]本發(fā)明所述處理器系統(tǒng)中最接近處理器核的緩存系統(tǒng)中存儲(chǔ)的是微操作,且處理器核能直接對(duì)微操作尋址,直接由微操作存儲(chǔ)器向處理器核提供微操作,不需要像現(xiàn)行復(fù)雜指令集計(jì)算機(jī)中向指令存儲(chǔ)器尋址,在將指令轉(zhuǎn)換成微操作,能降低流水線深度,提高流水線效率。特別在分支預(yù)測(cè)錯(cuò)誤時(shí),能減少浪費(fèi)的流水線周期。
[0039]本發(fā)明所述處理器系統(tǒng)中的緩存系統(tǒng)與傳統(tǒng)緩存系統(tǒng)僅在緩存缺失后才填充的機(jī)制不同,而是在處理器執(zhí)行一條指令之前就對(duì)指令緩存系統(tǒng)中的微操作讀緩沖進(jìn)行填充,可以消除或充分掩蓋隱藏因緩存缺失造成的運(yùn)算單元等待時(shí)間。此外,本發(fā)明所述處理器系統(tǒng)中的的緩存系統(tǒng)能由微操作讀緩沖主動(dòng)向處理器核輸出指令供執(zhí)行,避免了在讀取緩存的時(shí)延關(guān)鍵路徑上的標(biāo)簽匹配,所以能運(yùn)行在較高的時(shí)鐘頻率,且功耗也比傳統(tǒng)緩存系統(tǒng)顯著降低。
[0040]對(duì)于本領(lǐng)域?qū)I(yè)人士而言,本發(fā)明的其他優(yōu)點(diǎn)和應(yīng)用是顯見的。
【專利附圖】
【附圖說(shuō)明】
[0041]圖1八是本發(fā)明所述的微操作存儲(chǔ)器的一種組織方式;
[0042]圖18是本發(fā)明所述的微操作存儲(chǔ)器的另一種組織方式;
[0043]圖X是低層次存儲(chǔ)器中微操作數(shù)的存放方式;
[0044]圖10是包含本發(fā)明所述指令緩存系統(tǒng)的基本處理器系統(tǒng)的一個(gè)實(shí)施例;
[0045]圖2是本發(fā)明所述指令緩存系統(tǒng)的基本處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0046]圖3是本發(fā)明所述改進(jìn)的處理器核中指令地址生成的實(shí)施例;
[0047]圖4是本發(fā)明所述指令塊與微操作塊對(duì)應(yīng)關(guān)系的示意圖;
[0048]圖5八是本發(fā)明所述映射模塊進(jìn)行地址映射的一個(gè)實(shí)施例;
[0049]圖58是本發(fā)明所述映射模塊進(jìn)行地址映射的另一個(gè)實(shí)施例;
[0050]圖5(:是本發(fā)明所述映射模塊進(jìn)行地址映射的另一個(gè)實(shí)施例;
[0051]圖6是本發(fā)明所述基于軌道表的處理器系統(tǒng)的一個(gè)實(shí)施例;
[0052]圖7八是本發(fā)明所述軌跡點(diǎn)格式的實(shí)施例;
[0053]圖78是根據(jù)本發(fā)明技術(shù)方案使用軌道表建立新軌道的方法的一個(gè)實(shí)施例;
[0054]圖7(:是本發(fā)明所述循跡器讀指針移動(dòng)的實(shí)施例;
[0055]圖8是本發(fā)明所述填充微操作讀緩沖及由微操作讀緩沖直接向處理器核提供微操作以供執(zhí)行的實(shí)施例;
[0056]圖9是本發(fā)明所述控制單元進(jìn)行匹配的一個(gè)實(shí)施例;
[0057]圖10是本發(fā)明所述傳遞令牌信號(hào)的一種實(shí)施例;
[0058]圖11是本發(fā)明所述處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0059]圖12是本發(fā)明所述指令地址產(chǎn)生模塊的另一個(gè)實(shí)施例;
[0060]圖13是本發(fā)明所述處理器系統(tǒng)的又一個(gè)實(shí)施例;
[0061]圖14是本發(fā)明所述指令地址產(chǎn)生模塊的另一個(gè)實(shí)施例;
[0062]圖15八是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的一個(gè)實(shí)施例;
[0063]圖158是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0064]圖16是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0065]圖17是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0066]圖18是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0067]圖19是本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例;
[0068]圖20八是本發(fā)明技術(shù)方案最終產(chǎn)生的映射關(guān)系的一個(gè)例子;
[0069]圖208是本發(fā)明所述產(chǎn)生映射關(guān)系的一種方法的實(shí)施例;
[0070]圖20(:是本發(fā)明所述指令塊內(nèi)地址轉(zhuǎn)換器的一個(gè)實(shí)施例;
[0071]圖200是本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例;
[0072]圖202是本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例;
[0073]圖20?是本發(fā)明所述對(duì)順序地址下一指令塊產(chǎn)生映射關(guān)系的一種實(shí)施例;
[0074]圖20(}是本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例。
【具體實(shí)施方式】
[0075]以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的高性能緩存系統(tǒng)和方法作進(jìn)一步詳細(xì)說(shuō)明。根據(jù)下面說(shuō)明和權(quán)利要求書,本發(fā)明的優(yōu)點(diǎn)和特征將更清楚。需說(shuō)明的是,附圖均采用非常簡(jiǎn)化的形式且均使用非精準(zhǔn)的比例,僅用以方便、明晰地輔助說(shuō)明本發(fā)明實(shí)施例的目的。
[0076]需要說(shuō)明的是,為了清楚地說(shuō)明本發(fā)明的內(nèi)容,本發(fā)明特舉多個(gè)實(shí)施例以進(jìn)一步闡釋本發(fā)明的不同實(shí)現(xiàn)方式,其中,該多個(gè)實(shí)施例是列舉式并非窮舉式。此外,為了說(shuō)明的簡(jiǎn)潔,前實(shí)施例中已提及的內(nèi)容往往在后實(shí)施例中予以省略,因此,后實(shí)施例中未提及的內(nèi)容可相應(yīng)參考前實(shí)施例。
[0077]雖然該發(fā)明可以以多種形式的修改和替換來(lái)擴(kuò)展,說(shuō)明書中也列出了一些具體的實(shí)施圖例并進(jìn)行詳細(xì)闡述。應(yīng)當(dāng)理解的是,
【發(fā)明者】的出發(fā)點(diǎn)不是將該發(fā)明限于所闡述的特定實(shí)施例,正相反,
【發(fā)明者】的出發(fā)點(diǎn)在于保護(hù)所有基于由本權(quán)利聲明定義的精神或范圍內(nèi)進(jìn)行的改進(jìn)、等效轉(zhuǎn)換和修改。同樣的元器件號(hào)碼可能被用于所有附圖以代表相同的或類似的部分。
[0078]本發(fā)明所述的變長(zhǎng)指令地址1611^1:11 11181:1-1101:1011八(1(^688)指的是指令在主存儲(chǔ)器中的存儲(chǔ)地址,即可以根據(jù)該地址在主存儲(chǔ)器中找到這條指令。在此為簡(jiǎn)單明了起見,均假設(shè)虛擬地址等于物理地址,對(duì)于需要進(jìn)行地址映射的情況,本發(fā)明所述方法也可適用。在本發(fā)明中,當(dāng)前指令可以指當(dāng)前正在被處理器核執(zhí)行或獲取的指令;當(dāng)前指令塊可以指含有當(dāng)前正被處理器執(zhí)行的指令的指令塊。
[0079]為便于說(shuō)明,在本說(shuō)明書中,術(shù)語(yǔ)“指令”代表變長(zhǎng)指令,術(shù)語(yǔ)“微操作”代表定長(zhǎng)指令;術(shù)語(yǔ)“指令塊”代表指令地址高位相同的一組連續(xù)的指令,術(shù)語(yǔ)“微操作塊”代表指令地址高位相同的一組連續(xù)的微操作。此外,在本發(fā)明中,如果一條變長(zhǎng)指令所占的所有字節(jié)的地址高位不完全相同,即該指令跨越了兩個(gè)指令塊,則將該指令作為前一個(gè)指令塊的最后一條指令,而該指令之后的一條指令作為后一個(gè)指令塊的第一條指令。
[0080]在本發(fā)明中,分支微操作1101-0-01))或分支點(diǎn)^01111:)指的是任何適當(dāng)?shù)哪軐?dǎo)致處理器核改變執(zhí)行流51(3?)(如:非按順序執(zhí)行指令或微操作)的微操作形式。分支微操作指一條進(jìn)行分支操作的微操作。微操作地址指微操作本身的地址,該地址由指令塊地址和微操作偏移地址構(gòu)成。分支目標(biāo)指令指的是分支微操作造成的分支轉(zhuǎn)移所轉(zhuǎn)向的目標(biāo)指令,分支目標(biāo)指令地址指的是分支目標(biāo)指令的指令地址。分支目標(biāo)微操作指的是分支目標(biāo)指令對(duì)應(yīng)的第一個(gè)微操作,分支目標(biāo)微操作地址指的是分支目標(biāo)微操作的微操作地址,該地址由指令塊地址和微操作偏移地址構(gòu)成。
[0081]根據(jù)本發(fā)明技術(shù)方案,每條變長(zhǎng)的指令先被轉(zhuǎn)換一條或多條微操作,再由處理器核執(zhí)行這些微操作,從而實(shí)現(xiàn)與直接執(zhí)行所述變長(zhǎng)指令相同的功能。請(qǐng)參考圖1八,其為微操作存儲(chǔ)器的一種組織方式。其中指令塊110的塊地址為8,塊內(nèi)共有8個(gè)字節(jié),放置不等數(shù)目的變長(zhǎng)指令,其塊內(nèi)偏移量(0打84)以字節(jié)(85^6)表示。指令塊111、112是指令塊110之后順序的兩個(gè)指令塊。微操作數(shù)的組織是每塊含有4個(gè)定長(zhǎng)的微操作,如微操作塊120、121、123是順序的三個(gè)微操作塊,其塊地址分別為8、16、24,其塊內(nèi)偏移量以微操作為單位,在此例中以一個(gè)微操作占據(jù)一個(gè)字為例,以便于說(shuō)明。在指令塊110中字節(jié)0為部分不完整的指令,其起始字節(jié)在塊地址為‘0’的指令塊(此處未顯示),從字節(jié)1開始是一個(gè)三字節(jié)的指令八,從字節(jié)4開始是個(gè)二字節(jié)的指令8,從字節(jié)6開始是個(gè)四字節(jié)的指令0,其后兩個(gè)字節(jié)位于指令塊111中的字節(jié)0和字節(jié)1,指令塊111中從字節(jié)2開始是個(gè)三字節(jié)的指令0,從指令塊111中字節(jié)5開始是一個(gè)二字節(jié)指令2。這四個(gè)指令被轉(zhuǎn)換成相應(yīng)的執(zhí)行同樣功能的微操作八、8、匕0存儲(chǔ)在微操作處理器的微操作塊120中,依次放置在0、1、2、3號(hào)字。因?yàn)槲⒉僮鲏K120已被填滿,指令2則被存放在順序下一個(gè)微操作塊121中的0號(hào)字。其他指令和微操作塊的按同樣規(guī)律放置,不再贅述。因?yàn)橐粋€(gè)微操作塊中的微操作數(shù)不一定等于相應(yīng)的指令塊中的字節(jié)數(shù),所以有必要為這種組織方式統(tǒng)一提供一個(gè)塊中最大地址偏移量,當(dāng)微操作塊地址指向最后一個(gè)微操作時(shí),提示其順序下一個(gè)微操作是存儲(chǔ)在下一個(gè)微操作塊中的0號(hào)字中。當(dāng)微操作順序執(zhí)行時(shí),處理器只要為微操作存儲(chǔ)器的地址在每個(gè)時(shí)鐘周期提供一個(gè)為‘1’的增量,就可從微操作存儲(chǔ)器中順序讀出微操作。如當(dāng)前地址指向8-2(此處第一個(gè)數(shù)字為塊地址,第二個(gè)數(shù)字為塊內(nèi)偏移量),即120行第二個(gè)字0微操作,下一個(gè)時(shí)鐘周期地址加‘1’為8-3,即指令0,此時(shí)塊中最大地址偏移量與地址的偏移量3匹配,提示已到達(dá)微操作塊的最后一個(gè)微操作。再下一個(gè)時(shí)鐘周期,在前述提示下,處理器核產(chǎn)生的相應(yīng)地址為16-0,即地址塊121中的第一個(gè)微操作。當(dāng)然,也可以使微操作存儲(chǔ)器中一個(gè)微操作塊的微操作數(shù)等于指令塊中的字節(jié)數(shù),如此即不需要塊內(nèi)結(jié)束標(biāo)志的設(shè)置,在地址指向塊內(nèi)最后一個(gè)微操作數(shù)時(shí)加‘1’即可自動(dòng)指向下一個(gè)指令塊中第一個(gè)微操作。
[0082]這種微操作數(shù)組織方式的存儲(chǔ)器,當(dāng)指令非順序執(zhí)行時(shí)(如分支時(shí)),需要進(jìn)行指令地址到微操作地址的映射,因?yàn)橛删幾g器是按分支源指令與分支目標(biāo)指令在存儲(chǔ)器中的相對(duì)放置位置而給出分支增量。例如,當(dāng)指令地址為8-6的指令(即指令0是一條分支指令,作一個(gè)分支增量為16的跳轉(zhuǎn),系統(tǒng)以8-6的數(shù)值(實(shí)際上是8+6 = 14)加上16的增量,其結(jié)果是30,也就是分支目標(biāo)指令地址24-6,即112指令塊中!I指令。相應(yīng)地,微操作塊120中的地址為8-2的微操作是分支微操作,其分支增量為指令轉(zhuǎn)換時(shí)從指令處獲得的增量16。由微操作數(shù)執(zhí)行這個(gè)增量為16的跳轉(zhuǎn),要進(jìn)行三步映射。第一步是分支源的映射,將8-2的微操作地址映射為8-6的指令地址。第二步需映射中間塊(即非分支源指令塊,也非分支目標(biāo)指令塊)中指令字節(jié)與微操作數(shù)的換算關(guān)系(如分支增量較大,分支源指令塊與非分支目標(biāo)指令塊之間可以有很多中間塊,每一個(gè)塊之間的字節(jié)數(shù)與微操作數(shù)的映射關(guān)系都不一樣)。第三步為在分支目標(biāo)中將分支目標(biāo)指令塊內(nèi)地址偏移量映射成分支目標(biāo)微操作的塊地址偏移量。結(jié)合這三個(gè)映射與分支增量來(lái)求分支目標(biāo)微操作的地址(在此例中為16-3)。
[0083]第二種微操作數(shù)的存儲(chǔ)組織方式請(qǐng)見圖18。其中,110、111、112仍為圖1八中的變長(zhǎng)指令。130、131、132為第二種微操作數(shù)的存儲(chǔ)方式,在130微操作數(shù)塊中存儲(chǔ)了三條微操作數(shù),對(duì)應(yīng)110中的三條指令,其3號(hào)操作數(shù)位置為空置。微操作塊131、132也按同樣方式組織,即微操作塊含有相應(yīng)指令塊中的指令同樣數(shù)目的微操作數(shù),并不一定填滿整個(gè)微操作塊。這樣,使得微操作的塊地址與指令塊的塊地址相同,例如塊地址為24(112指令塊)的只指令,其相應(yīng)微操作也在塊地址為24的132微操作塊。第二種存儲(chǔ)方式下每個(gè)微操作塊放置的微操作的數(shù)目不同,所以有必要為每個(gè)微操作塊單獨(dú)設(shè)立其相應(yīng)的最大塊內(nèi)偏移量。當(dāng)?shù)刂分赶蛞粋€(gè)微操作塊中最后一個(gè)微操作時(shí),該最大塊內(nèi)偏移量提示系統(tǒng)順序下一條微操作存儲(chǔ)在順序下一個(gè)指令塊中的第一個(gè)微操作。
[0084]當(dāng)微操作順序執(zhí)行時(shí),處理器只要為第二種微操作存儲(chǔ)器的地址在每個(gè)時(shí)鐘周期提供一個(gè)為‘1’的增量,就可從微操作存儲(chǔ)器中順序讀出微操作。此例中如當(dāng)前地址指向8-2,此時(shí)塊中最大地址偏移量與地址的偏移量2匹配,提示已到達(dá)微操作塊的最后一個(gè)微操作。再下一個(gè)時(shí)鐘周期,在前述提示下,處理器核產(chǎn)生的相應(yīng)地址為16-0,即地址塊121(順序下一個(gè)指令塊)中的第一個(gè)微操作。
[0085]第二種微操作數(shù)組織方式的存儲(chǔ)器,當(dāng)指令非順序執(zhí)行時(shí)(如分支時(shí)),只需要進(jìn)行兩步指令地址與微操作地址之間的映射。例如,當(dāng)微操作地址為8-2的微操作是一條分支微操作,作一個(gè)分支增量為16的跳轉(zhuǎn)。首先,要作分支源映射,即將8-2的微操作地址(微操作0映射為8-6的指令地址(指令0。系統(tǒng)以8-6的數(shù)值(實(shí)際上是8+6 = 14)加上分支增量16,其結(jié)果是30,也就是分支目標(biāo)指令地址24-6,即相當(dāng)于112指令塊中指令。然后進(jìn)行分支目標(biāo)映射,映射出地址為24的指令塊中第6字節(jié)的相應(yīng)微操作的地址(在此情況下為24-1,即微操作)。其中,中間塊指令與微操作間的映射步驟被省略,因?yàn)樵诘诙N微操作存儲(chǔ)方式中微操作塊中的微操作與相應(yīng)指令塊中的指令是數(shù)目相等的,等于一個(gè)固定映射,可以從計(jì)算中消去。以微操作塊120中分支微操作(:(^^8-2)為例,其分支增量為16。按上例中方法,先映射出分支源微操作相應(yīng)的分支源指令的塊內(nèi)偏移量6,然后結(jié)合微操作塊地址(與指令塊地址一樣)算出其指令地址為8+6 = 14,然后加上分支增量16,其結(jié)果是分支目標(biāo)指令地址為30,即8-6。之后還有將指令塊地址偏移量6映射為微操作塊地址2的步驟。
[0086]本發(fā)明中的實(shí)施例都使用第二種組織方式的微操作存儲(chǔ)。因此在實(shí)施例中指令塊地址與微操作塊地址是相等的,可以互換。但指令塊內(nèi)偏移與微操作塊內(nèi)偏移通常不相等,需要經(jīng)過(guò)查表映射。即使在更低層次的存儲(chǔ)器中,當(dāng)該存儲(chǔ)器中的一個(gè)微操作塊能存儲(chǔ)多個(gè)高層次存儲(chǔ)器微操作塊時(shí)仍保持這種組織方式,請(qǐng)見圖冗為一低層次存儲(chǔ)器中微操作數(shù)的存放方式。此例顯示存儲(chǔ)器中每個(gè)微操作塊可以存放16個(gè)微操作,相當(dāng)于更高層次微操作處理器的2個(gè)微操作塊。其中,微操作塊140塊地址為0,存放的是相當(dāng)于地址為0的微操作塊及圖18中微操作塊130 (塊地址為8);其中,微操作塊141塊地址為16,其存放的是相當(dāng)于圖18中微操作塊131(塊地址為16)及圖18中微操作塊132 (塊地址為24)。低層次存儲(chǔ)器中的微操作塊仍然以高層次存儲(chǔ)器微操作塊為單位,保持了高層次存儲(chǔ)器中微操作塊與相應(yīng)指令塊的對(duì)應(yīng)關(guān)系。
[0087]進(jìn)一步地,可以將分支源映射步驟消去。其方法一是每一個(gè)分支微操作數(shù)都存儲(chǔ)有其相應(yīng)指令的塊內(nèi)偏移量,而不需另行查表獲得。當(dāng)程序執(zhí)行到一條分支微操作時(shí),以存儲(chǔ)的分支指令塊內(nèi)偏移量計(jì)算;分支目標(biāo)指令地址=分支源微操作塊地址+分支源指令塊內(nèi)偏移量+分支增量。其方法二是以稀疏矩陣放置微操作,使微操作的塊內(nèi)偏移量等于指令的塊內(nèi)偏移量,分支目標(biāo)指令地址=分支源微操作塊地址+分支源微操作塊內(nèi)偏移量+分支增量。這種存儲(chǔ)方式需要有機(jī)制預(yù)先檢測(cè)空置微操作數(shù),并且在順序執(zhí)行時(shí)越過(guò)這些空置的微操作數(shù)。第三種方法是在將指令轉(zhuǎn)換成微操作數(shù)時(shí)對(duì)其分支增量作補(bǔ)償,其方法是補(bǔ)償后分支增量¢0,6118211:6(10^^861:)=分支源指令塊內(nèi)偏移量(八(1(^6880打84)+分支增量(此冊(cè)也0打860,并將該補(bǔ)償后分支增量放進(jìn)微操作中代替原來(lái)的分支增量。
[0088]使用補(bǔ)償后分支增量的操作方式是,在指令轉(zhuǎn)換時(shí),即算出補(bǔ)償后分支增量=分支源指令塊內(nèi)偏移量+分支增量(22 = 6+16),并將該補(bǔ)償后分支增量存放進(jìn)微操作中代替原來(lái)的分支增量。當(dāng)執(zhí)行到分支微操作時(shí)(130塊中地址8-2),系統(tǒng)即計(jì)算分支指令目標(biāo)地址=微指令塊地址+補(bǔ)償后分支增量(30 = 8+22),該地址已經(jīng)指向微指令塊132 (地址為24)。剩余的工作只是作一步指令塊內(nèi)偏移到微指令塊內(nèi)偏移的映射(在地址為24的塊中為6 — 1)就能獲得準(zhǔn)確分支目標(biāo)微操作地址24-1。在圖2實(shí)施例中使用了這個(gè)方法。
[0089]更進(jìn)一步,可以在指令轉(zhuǎn)換時(shí)即計(jì)算出分支目標(biāo)微操作地址,并存儲(chǔ)在與該分支源微操作對(duì)應(yīng)的存儲(chǔ)器。在此方法中,則微操作進(jìn)行分支操作時(shí)不需進(jìn)行任何塊內(nèi)偏移映射。在圖6實(shí)施例中將詳細(xì)描述這個(gè)方法。
[0090]在本說(shuō)明書中,指令塊與微操作塊一一對(duì)應(yīng),因此所述指令塊的塊地址與所述微操作塊的塊地址相同。但由于指令塊中指令的數(shù)目與微操作塊中微操作的數(shù)目不一定相同,因此指令的塊內(nèi)偏移地址與相應(yīng)微操作的塊內(nèi)偏移地址不一定相同。
[0091]請(qǐng)參考圖10,其為包含本發(fā)明所述指令緩存系統(tǒng)的基本處理器系統(tǒng)的一個(gè)實(shí)施例。在圖10中,所述處理器系統(tǒng)包含指令緩存系統(tǒng)和處理器核001-6)111.其中,處理器核111產(chǎn)生存儲(chǔ)器尋址地址是對(duì)應(yīng)于變長(zhǎng)指令的地址,而內(nèi)部執(zhí)行單元執(zhí)行的是微操作。指令緩存系統(tǒng)則包含微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、映射模塊107和轉(zhuǎn)換器109。應(yīng)當(dāng)理解的是,這里列出各種部件的目的是為了便于描述,還可以包含其他部件,而某些部件可以被省略。這里的各種部件可以分布在多個(gè)系統(tǒng)中,可以是物理上存在的或是虛擬的,可以是硬件實(shí)現(xiàn)(如:集成電路)、軟件實(shí)現(xiàn)或由硬件和軟件組合實(shí)現(xiàn)。
[0092]轉(zhuǎn)換器109用于將送到緩存系統(tǒng)的包含變長(zhǎng)指令的指令塊轉(zhuǎn)換為微操作塊。具體地,可以根據(jù)每條變長(zhǎng)的指令所包含的操作(或動(dòng)作)的多少將其轉(zhuǎn)換為相應(yīng)數(shù)目個(gè)定長(zhǎng)的微操作。此外,在將一個(gè)指令塊轉(zhuǎn)換為一個(gè)微操作塊的同時(shí),可以得到所述指令塊中的每條指令的指令塊內(nèi)偏移地址與其對(duì)應(yīng)的一個(gè)或多個(gè)微操作的微操作塊內(nèi)偏移地址的對(duì)應(yīng)關(guān)系。
[0093]微操作存儲(chǔ)器103用于存儲(chǔ)經(jīng)轉(zhuǎn)換器109轉(zhuǎn)換得到的微操作,可以包含任何合適的存儲(chǔ)設(shè)備,如:寄存器或寄存器堆[6)、靜態(tài)存儲(chǔ)器、動(dòng)態(tài)存儲(chǔ)器(0狀1〉、閃存存儲(chǔ)器(行狀]!、硬盤、固態(tài)磁盤(3()11(1 3仏1:6 018^)以及任何一種合適的存儲(chǔ)器件或未來(lái)的新形態(tài)存儲(chǔ)器。微操作存儲(chǔ)器103可以作為系統(tǒng)的一個(gè)緩存工作,或當(dāng)有其他緩存存在時(shí)作為一級(jí)緩存工作;且可以被分割成復(fù)數(shù)個(gè)被稱為存儲(chǔ)塊(16.1101-7 810(310的存儲(chǔ)片段的用于存儲(chǔ)處理器核111要訪問(wèn)的微操作。這樣,微操作存儲(chǔ)器103中每個(gè)存儲(chǔ)塊的大小均與指令塊可能具有的最多的操作(或動(dòng)作)的數(shù)目相同,且在微操作存儲(chǔ)器103的每個(gè)存儲(chǔ)塊中存儲(chǔ)了一個(gè)微操作塊。
[0094]例如,若一個(gè)指令塊最多包含16條指令,且每條指令最多轉(zhuǎn)換為3條微操作,貝1]微操作存儲(chǔ)器103的每個(gè)存儲(chǔ)塊可以包含48條微操作。由于微操作塊中包含的微操作數(shù)目小于等于存儲(chǔ)塊可容納的微操作數(shù)目,因此存儲(chǔ)塊可以采用稀疏的方式存儲(chǔ)微操作。
[0095]標(biāo)簽存儲(chǔ)器105的行與存儲(chǔ)微操作存儲(chǔ)器103的行對(duì)應(yīng),每一行用于存儲(chǔ)微操作存儲(chǔ)器103中對(duì)應(yīng)的微操作塊的塊地址。由于指令塊的塊地址與對(duì)應(yīng)微操作塊的塊地址相同,因此標(biāo)簽存儲(chǔ)器105每一行存儲(chǔ)的同時(shí)也是微操作存儲(chǔ)器103中相應(yīng)微操作塊對(duì)應(yīng)的指令塊的塊地址。
[0096]映射模塊107用于存儲(chǔ)所述指令塊內(nèi)偏移地址與微操作塊內(nèi)偏移地址之間的對(duì)應(yīng)關(guān)系,并能根據(jù)一個(gè)指令塊內(nèi)偏移地址轉(zhuǎn)換得到該指令對(duì)應(yīng)的一個(gè)或多個(gè)微操作中第一個(gè)微操作在其所在的微操作塊中的塊內(nèi)偏移地址。
[0097]當(dāng)處理器核111執(zhí)行一條指令時(shí),處理器核111首先需要從更低層次的存儲(chǔ)器中讀入指令。在這里,存儲(chǔ)器的層次指的是存儲(chǔ)器與處理器核111之間的接近程度。越接近處理器核111的層次越高。此外,一個(gè)高層次的存儲(chǔ)器通常比低層次的存儲(chǔ)器速度快但容量小。
[0098]根據(jù)本發(fā)明所述技術(shù)方案,當(dāng)指令塊被送到緩存系統(tǒng)時(shí),首先由轉(zhuǎn)換器109將該指令塊中的所有指令轉(zhuǎn)換為對(duì)應(yīng)的一條或多條微操作,再將所有轉(zhuǎn)換得到的微操作填入由替換算法(如細(xì)算法)指定的微操作存儲(chǔ)器103存儲(chǔ)塊中,并將該指令塊的塊地址(即微操作塊的塊地址)填入標(biāo)簽存儲(chǔ)器105中與所述存儲(chǔ)塊對(duì)應(yīng)的行中。與此同時(shí),將轉(zhuǎn)換器109轉(zhuǎn)換時(shí)確定的指令塊內(nèi)偏移地址和微操作塊內(nèi)偏移地址的對(duì)應(yīng)關(guān)系填入映射模塊107中。
[0099]當(dāng)處理器核111需要獲取指令時(shí),將指令地址的高位部分(即指令塊地址)送到標(biāo)簽存儲(chǔ)器105進(jìn)行匹配,并將指令地址的低位部分(即指令塊內(nèi)偏移量)送到映射模塊107。映射模塊107根據(jù)之前存儲(chǔ)的對(duì)應(yīng)關(guān)系將所述指令地址的低位部分轉(zhuǎn)換為微操作塊內(nèi)偏移量。
[0100]若所述指令地址高位部分在標(biāo)簽存儲(chǔ)器105中匹配成功,則匹配成功項(xiàng)對(duì)應(yīng)的存儲(chǔ)塊就是所述處理器核111所需指令對(duì)應(yīng)的微操作所在的存儲(chǔ)塊,此時(shí)根據(jù)映射模塊107轉(zhuǎn)換得到的微操作塊內(nèi)偏移量,可以從該存儲(chǔ)塊中讀出所述指令對(duì)應(yīng)的微操作,并送到處理器核111供執(zhí)行。
[0101]若所述指令地址高位部分在標(biāo)簽存儲(chǔ)器105中匹配不成功,則處理器核111所需指令對(duì)應(yīng)的微操作尚未存儲(chǔ)在微操作存儲(chǔ)器103中。此時(shí),所述指令地址被送到更低層次存儲(chǔ)器獲取相應(yīng)指令塊。當(dāng)該指令塊被送到緩存系統(tǒng)時(shí),按之前實(shí)施例所述方法,經(jīng)轉(zhuǎn)換后被填入微操作存儲(chǔ)器103中并相應(yīng)更新標(biāo)簽存儲(chǔ)器105和映射模塊107。與此同時(shí),轉(zhuǎn)換得到的微操作被送到處理器核111供執(zhí)行。
[0102]在圖10實(shí)施例中用兩維地址對(duì)微操作存儲(chǔ)器103進(jìn)行尋址,即用匹配得到的第一地址(剛幻找到微操作存儲(chǔ)器103的行,用映射得到的第二地址(8階)找到微操作存儲(chǔ)器103的列。根據(jù)本發(fā)明技術(shù)方案,也可以僅在處理分支目標(biāo)指令地址時(shí)通過(guò)轉(zhuǎn)換器109對(duì)轉(zhuǎn)換產(chǎn)生8階,除此以外均由處理器核111直接產(chǎn)生8階,對(duì)微操作存儲(chǔ)器103的列進(jìn)行尋址。
[0103]此外,本發(fā)明所述的轉(zhuǎn)換器還可以用于將不同指令集的指令轉(zhuǎn)換為同一種指令集的指令。例如,可以將轉(zhuǎn)換器109輸入的指令集8的指令轉(zhuǎn)換成指令集八的相應(yīng)指令,使得本發(fā)明所述的處理器系統(tǒng)能同時(shí)支持指令集八和指令集8。執(zhí)行指令集八時(shí),轉(zhuǎn)換器109只執(zhí)行將指令轉(zhuǎn)換為微操作的功能,不執(zhí)行指令集轉(zhuǎn)換的功能。當(dāng)執(zhí)行指令集8時(shí),轉(zhuǎn)換器109不但執(zhí)行將指令轉(zhuǎn)換為微操作的功能,也執(zhí)行指令集轉(zhuǎn)換的功能,或直接將指令集8的指令轉(zhuǎn)換為指令集4中相應(yīng)指令對(duì)應(yīng)的微操作。所述轉(zhuǎn)換是發(fā)生在微操作被存進(jìn)指微操作存儲(chǔ)器103之前,因此微操作存儲(chǔ)器103中只有指令集八的微操作。因此,當(dāng)處理器核需要微操作時(shí),只要在微操作存儲(chǔ)器103中命中,就不需要等待指令集的轉(zhuǎn)換。
[0104]請(qǐng)參考圖2,其為本發(fā)明所述指令緩存系統(tǒng)的基本處理器系統(tǒng)的另一個(gè)實(shí)施例。在圖2中,所述處理器系統(tǒng)包含處理器核211和指令緩存系統(tǒng)。指令緩存系統(tǒng)則包含微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107和轉(zhuǎn)換器109。其中,微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、映射模塊107和轉(zhuǎn)換器109的功能與圖1實(shí)施例中的相同。另外,處理器核211提供信號(hào)320控制選擇器207和213。信號(hào)是處理器核211對(duì)一條分支微操作的判斷。當(dāng)執(zhí)行的微操作是分支微操作且分支成功時(shí),信號(hào)320為‘1’ ;當(dāng)執(zhí)行的微操作是分支微操作且分支不成功時(shí),或當(dāng)執(zhí)行的微操作不是分支微操作時(shí),‘1狀冊(cè)’信號(hào)320為‘0’。
[0105]處理器核211為改進(jìn)的處理器核,其輸出的指令地址由順序微操作塊地址221、順序微操作塊內(nèi)偏移地址223,分支目標(biāo)微操作塊地址225和分支目標(biāo)微操作塊內(nèi)偏移地址227組成。選擇器207在信號(hào)320的控制下,選擇送往標(biāo)簽存儲(chǔ)器105的塊地址。選擇器213在信號(hào)320的控制下,選擇送往微操作存儲(chǔ)器103的塊內(nèi)偏移地址。當(dāng)I'八信號(hào)320為‘0’時(shí),選擇器207選擇順序微操作塊地址221,送往標(biāo)簽存儲(chǔ)器105作匹配以選擇微操作存儲(chǔ)器103中的一個(gè)微操作塊;選擇器213在信號(hào)320的控制下,選擇順序微操作塊內(nèi)偏移地址223,從該操作塊中選擇一個(gè)微操作讀出,送往處理器核211執(zhí)行。當(dāng)信號(hào)320為‘0’時(shí),選擇器207選擇分支目標(biāo)微操作塊地址225,送往標(biāo)簽存儲(chǔ)器105作匹配以選擇微操作存儲(chǔ)器103中的一個(gè)微操作塊;選擇器213在信號(hào)320的控制下,選擇分支目標(biāo)微操作塊內(nèi)偏移地址227經(jīng)映射模塊107映射所得的操作塊內(nèi)偏移地址230,從該操作塊中選擇一個(gè)微操作讀出,送往處理器核211執(zhí)行。
[0106]其中,順序指令塊地址或分支指令塊地址經(jīng)標(biāo)簽存儲(chǔ)器105匹配得到剛X信號(hào)232后可以找到該塊地址代表的指令塊對(duì)應(yīng)的微操作塊在微操作存儲(chǔ)器103中的位置;指令偏移地址227僅在處理器核211獲取分支目標(biāo)指令時(shí)有效,表示了該分支目標(biāo)指令在其所在指令塊中偏移量,如圖10實(shí)施例所述,該指令偏移地址由映射模塊107轉(zhuǎn)換為8階信號(hào)234后可以在微操作存儲(chǔ)器103中由所述剛X指向的行中找到相應(yīng)的微操作;微操作偏移地址223則可以直接被用作8階對(duì)微操作存儲(chǔ)器103中的列尋址。
[0107]結(jié)束標(biāo)志存儲(chǔ)器205的行與標(biāo)簽存儲(chǔ)器105的行(及微操作存儲(chǔ)器103的存儲(chǔ)塊)一一對(duì)應(yīng),存儲(chǔ)了每個(gè)微操作塊中最后一個(gè)微操作對(duì)應(yīng)的8階。由于指令經(jīng)轉(zhuǎn)換器109轉(zhuǎn)換后得到的微操作的數(shù)目與指令原本數(shù)目不一定相同,因此可以在處理器核211讀取微操作的同時(shí)在結(jié)束標(biāo)記存儲(chǔ)器205中檢查該微操作是否為當(dāng)前微操作塊中的最后一個(gè)微操作。若該微操作不是當(dāng)前微操作塊中的最后一個(gè)微操作,則下一微操作的列地址就是該微操作的8階加一;否則,下一微操作就是下一微操作塊的第一個(gè)微操作。
[0108]根據(jù)本發(fā)明技術(shù)方案,結(jié)束標(biāo)志存儲(chǔ)器205也可以有其他任何合適的組織形式。例如,結(jié)束標(biāo)志存儲(chǔ)器205的每一行可以包含與每個(gè)微操作塊中最大微操作數(shù)相同數(shù)目的表項(xiàng),且在每行與相應(yīng)微操作塊最后一個(gè)微操作對(duì)應(yīng)的表項(xiàng)中存儲(chǔ)‘ 1 ’,在該行其他表項(xiàng)中存儲(chǔ)‘0’。在此情況下,處理器核211讀取一個(gè)微操作的同時(shí)也讀取其在結(jié)束標(biāo)志存儲(chǔ)器205中對(duì)應(yīng)的表項(xiàng)。若該表項(xiàng)的值為‘0’,則表示處理器核211當(dāng)前讀取的微操作不是其所在微操作塊中的最后一個(gè)微操作;若該表項(xiàng)的值為‘1’,則表示處理器核211當(dāng)前讀取的微操作是其所在微操作塊中的最后一個(gè)微操作。
[0109]根據(jù)本發(fā)明技術(shù)方案,當(dāng)處理器核211按順序執(zhí)行指令時(shí),若當(dāng)前微操作不是當(dāng)前微操作塊中的最后一個(gè)微操作,則表示下一微操作與當(dāng)前微操作位于同一個(gè)微操作塊(即同一個(gè)指令塊)中,此時(shí)可以通過(guò)由選擇器207選擇處理器核211通過(guò)總線221輸出的保持不變的順序指令塊地址送標(biāo)簽存儲(chǔ)器105匹配、對(duì)微操作偏移地址累加得到新的尋址地址223并由選擇器213選擇后在微操作存儲(chǔ)器103中找到下一微操作。若當(dāng)前微操作對(duì)應(yīng)的是當(dāng)前微操作塊的結(jié)束標(biāo)記,則表示下一微操作與當(dāng)前微操作不屬于同一個(gè)微操作塊時(shí),即下一微操作是當(dāng)前微操作塊的下一微操作塊中的第一個(gè)微操作,因此可以通過(guò)由選擇器207選擇處理器核211通過(guò)總線221輸出的經(jīng)增一的順序指令塊地址送標(biāo)簽存儲(chǔ)器105匹配、對(duì)微操作偏移地址清零(‘0’〉得到新的尋址地址223并由選擇器213選擇后在微操作存儲(chǔ)器103中找到下一微操作。
[0110]當(dāng)處理器核211因分支轉(zhuǎn)移等原因執(zhí)行非連續(xù)指令(即目標(biāo)微操作)時(shí),選擇器207選擇處理器核211通過(guò)總線225輸出的目標(biāo)指令塊地址送標(biāo)簽存儲(chǔ)器105匹配。這樣,可以通過(guò)對(duì)目標(biāo)指令地址中的指令塊地址送標(biāo)簽存儲(chǔ)器105匹配、指令偏移地址227送映射模塊107轉(zhuǎn)換得到相應(yīng)的微操作偏移地址并由選擇器213選擇后在微操作存儲(chǔ)器103中找到目標(biāo)微操作。
[0111]根據(jù)本發(fā)明技術(shù)方案,當(dāng)處理器核211執(zhí)行分支指令時(shí),可以由處理器核211內(nèi)部的運(yùn)算單元計(jì)算分支目標(biāo)指令。例如,可以由處理器核211中的加法器對(duì)所述分支指令本身地址及分支增量相加,從而得到分支目標(biāo)地址。也可以由指令地址生成模塊直接使用指令塊地址和補(bǔ)償后的分支增量計(jì)算分支目標(biāo)指令。此時(shí),可以在轉(zhuǎn)換器109對(duì)所述分支指令轉(zhuǎn)換的過(guò)程中計(jì)算前述補(bǔ)償后的分支增量,其值可以通過(guò)被轉(zhuǎn)換的分支指令的指令塊偏移地址與分支增量相加得到(即補(bǔ)償后的分支增量=分支指令的指令塊內(nèi)偏移地址+分支增量),并存儲(chǔ)在微操作存儲(chǔ)器103中的所述分支指令對(duì)應(yīng)的微操作中。通常情況下,分支目標(biāo)地址等于分支指令地址加上分支增量,而分支指令地址等于分支指令塊地址加上分支指令塊內(nèi)偏移量。因此,在本發(fā)明中,分支目標(biāo)地址就等于分支指令塊地址加上補(bǔ)償后的分支增量。
[0112]請(qǐng)參考圖3,其為本發(fā)明所述改進(jìn)的處理器核中指令地址生成的實(shí)施例。與傳統(tǒng)的指令地址生成結(jié)構(gòu)不同,在本實(shí)施例中,存儲(chǔ)器地址被分為塊地址(即微操作地址高位部分,在此例中與指令地址高位部分同)和塊內(nèi)偏移地址(即指令或微操作地址低位部分)兩部分進(jìn)行處理。如圖3所示,當(dāng)執(zhí)行順序微操作時(shí),由寄存器301輸出微操作塊地址221、寄存器305輸出微操作塊內(nèi)偏移地址223 (8階);當(dāng)執(zhí)行分支目標(biāo)指令時(shí),由寄存器303輸出指令塊地址225、寄存器307輸出指令塊內(nèi)地址偏移量227。選擇器315和317則由表示分支轉(zhuǎn)移是否發(fā)生的從冊(cè)^信號(hào)320控制。選擇器321由比較器337的輸出控制。
[0113]具體地,當(dāng)處理器核211執(zhí)行順序微操作時(shí),則選擇器315在冊(cè)信號(hào)320為‘0’的選擇從寄存器305送來(lái)的當(dāng)前微操作偏移地址223,并送到累加器313加一,等待選擇器321的選擇。同時(shí),若處理器核211當(dāng)前執(zhí)行的微操作不是微操作塊中的最后一個(gè)微操作,則比較器337對(duì)微操作偏移地址234和從結(jié)束標(biāo)志存儲(chǔ)器送來(lái)的表示該微操作塊最后一個(gè)微操作的偏移地址319匹配不成功,因此選擇器321選擇從累加器313輸出的微操作偏移地址作為下一時(shí)鐘周期的微操作偏移地址。同時(shí),加法器323將從寄存器301反饋來(lái)的指令塊地址和接收到的匹配不成功信號(hào)(即‘0’ )相加,并用得到的結(jié)果作為新的指令塊地址,從而保持指令塊地址不變。這樣,由寄存器301輸出的指令塊地址221在下一時(shí)鐘周期保持不變,由圖2中為‘0’的信號(hào)320控制下的選擇器207選擇后由標(biāo)簽存儲(chǔ)器105匹配得到原8似,即指向微操作存儲(chǔ)器103中的塊不變;下一時(shí)鐘周期由寄存器305輸出的微操作偏移地址223增一,由圖2中為‘0’的信號(hào)320控制下的選擇器213選擇后作為8階指向所述塊中的相應(yīng)微操作,即實(shí)現(xiàn)了向處理器核211提供同一指令塊(微操作塊)內(nèi)順序執(zhí)行的下一個(gè)微操作的功能。
[0114]若處理器核211當(dāng)前執(zhí)行的微操作是微操作塊中的最后一個(gè)微操作,則此時(shí)從結(jié)束標(biāo)志存儲(chǔ)器205送來(lái)的表示該指令塊對(duì)應(yīng)的微操作塊最后一個(gè)微操作的偏移地址319與當(dāng)前微操作偏移地址234在比較器337中匹配成功,因此選擇器321選擇‘0’作為新的微操作偏移地址。同時(shí),加法器323接收到匹配成功信號(hào)(即‘1’),因此對(duì)從寄存器301送來(lái)的指令塊地址和所述‘ 1 ’相加,并用得到的結(jié)果作為新的指令塊地址,從而使指令塊地址增一。這樣,由寄存器301輸出的指令塊地址221增一,經(jīng)圖2中選擇器207選擇后由標(biāo)簽存儲(chǔ)器105匹配得到的剛X指向原微操作塊按順序執(zhí)行的下一微操作塊在微操作存儲(chǔ)器103中對(duì)應(yīng)的行;由寄存器305輸出的微操作偏移地址223為‘0’,由選擇器213選擇后作為8階指向所述行中的第一個(gè)微操作,即實(shí)現(xiàn)了向處理器核211提供按順序執(zhí)行的下一指令塊(微操作塊)內(nèi)第一個(gè)微操作的功能。
[0115]若處理器核211執(zhí)行分支微操作且分支轉(zhuǎn)移發(fā)生,則此時(shí)由加法器325對(duì)從寄存器301送來(lái)的微操作塊地址(即分支源塊地址)和從該微操作中含有的補(bǔ)償后的分支增量350的高位部分327相加,得到新的指令塊地址并存儲(chǔ)在寄存器303中,并將補(bǔ)償后的分支增量350的低位部分329作為分支目標(biāo)指令塊內(nèi)偏移地址存儲(chǔ)在寄存器307中。這樣,由寄存器303輸出分支目標(biāo)指令塊地址225,經(jīng)選擇器207選擇后(此時(shí)信號(hào)320為‘1’ )由標(biāo)簽存儲(chǔ)器105匹配得到的剛X指向所述分支指令塊在微操作存儲(chǔ)器103中對(duì)應(yīng)的微操作塊;由寄存器307輸出的分支目標(biāo)指令塊內(nèi)偏移地址227,經(jīng)映射模塊107轉(zhuǎn)換為微操作偏移地址230后并由選擇器213選擇后(此時(shí)冊(cè)信號(hào)320為‘1’)作為8階234指向所述行中的相應(yīng)微操作(即所述分支目標(biāo)指令對(duì)應(yīng)的第一個(gè)微操作),將其讀出,實(shí)現(xiàn)向處理器核211提供分支目標(biāo)指令對(duì)應(yīng)的第一個(gè)微操作的功能。
[0116]此時(shí),為‘1’的信號(hào)320,控制選擇器317選擇分支目標(biāo)微操作塊地址225送往加法器323的一個(gè)輸入,與比較器337的輸出相加。為‘1’的信號(hào)320控制選擇器315選擇上述微操作偏移地址230送至增量器313增‘1’。同時(shí)經(jīng)選擇器213選擇的微操作塊內(nèi)偏移234(8階)與操作塊中結(jié)束標(biāo)志319作比較。如果不匹配(即分支目標(biāo)微操作不是微操作塊中最后一條微操作),則比較器337輸出339為‘0’。塊地址225與此‘0’相加后其值沒(méi)有改變,在下一個(gè)時(shí)鐘周期被存進(jìn)寄存器301。比較器輸出339也控制選擇器321選擇增量器313的輸出使微操作偏移地址230增‘1’后,在下一個(gè)時(shí)鐘周期被放進(jìn)寄存器305。如此,使得下一時(shí)鐘周期經(jīng)總線221、223送出的微操作地址為分支目標(biāo)地址+ ‘1’。此時(shí),為‘0’的信號(hào)320控制選擇器207、213選擇總線221、223的地址作為剛X、8階訪問(wèn)微操作存儲(chǔ)器103。
[0117]如果匹配(即分支目標(biāo)微操作是微操作塊中最后一條微操作),則比較器337輸出339為‘1’。塊地址225與此‘1’相加后,在下一個(gè)時(shí)鐘周期被存進(jìn)寄存器301。比較器輸出339也控制選擇器321選擇‘0’,在下一個(gè)時(shí)鐘周期放進(jìn)寄存器305。如此,使得下一時(shí)鐘周期經(jīng)總線221送出的微操作塊地址為分支目標(biāo)指令塊的下一個(gè)指令塊的地址;使得總線223送出的微操作偏移地址為‘0’ ;指向分支目標(biāo)指令塊的順序下一個(gè)指令塊中第一個(gè)微操作的地址。此時(shí),為‘0’的信號(hào)320控制選擇器207、213選擇總線221、223的地址作為剛X、8階訪問(wèn)微操作存儲(chǔ)器103。如此周而復(fù)始,使得本發(fā)明的流水線開始于微操作存儲(chǔ)器103中讀取。流水線不需要從轉(zhuǎn)換之前的變長(zhǎng)指令開始,節(jié)省了變長(zhǎng)指令轉(zhuǎn)換為微操作所需要的流水線段。
[0118]此外,正如之前所述,分支目標(biāo)指令地址也可以由處理器核211內(nèi)含有的運(yùn)算單元計(jì)算。在這種情況下,可以省略圖3中的相應(yīng)模塊以實(shí)現(xiàn)同樣功能,在此不再贅述。
[0119]根據(jù)本發(fā)明技術(shù)方案,當(dāng)一個(gè)指令塊被送到緩存系統(tǒng)201時(shí),首先被轉(zhuǎn)換器109轉(zhuǎn)換為微操作塊。請(qǐng)參考圖4,其為本發(fā)明所述指令塊與微操作塊對(duì)應(yīng)關(guān)系的示意圖。在本實(shí)施例中,假設(shè)一個(gè)指令塊的長(zhǎng)度為16個(gè)字節(jié)(從字節(jié)0到字節(jié)15),且每個(gè)微操作的長(zhǎng)度為4個(gè)字節(jié)。如圖4所示,指令塊401中包含了 6條變長(zhǎng)指令。如之前實(shí)施例所述,指令塊中的字節(jié)0是上一條指令的最后一個(gè)字節(jié),因此屬于上一指令塊,即本指令塊中的變長(zhǎng)指令從指令塊的字節(jié)1開始。其中,指令403占3個(gè)字節(jié)(字節(jié)1、2和3),^^ 405占5個(gè)字節(jié)(字節(jié)占2個(gè)字節(jié)(字節(jié)9和10),指令409占1個(gè)字節(jié)(字節(jié)11),指令411占3個(gè)字節(jié)(字節(jié)12、13和14),指令413在本指令塊中占1個(gè)字節(jié),其余部分在下一指令塊中。
[0120]在本實(shí)施例中,假設(shè)指令405可以被轉(zhuǎn)換為2個(gè)微操作(即微操作425和427),指令403、407、409、411和413均可以被轉(zhuǎn)換為1個(gè)微操作,分別為微操作423、429、431、433和435,則經(jīng)轉(zhuǎn)換器109轉(zhuǎn)換后得到的微操作塊421中包含了 7個(gè)微操作(從微操作0到微操作7)。因此,結(jié)束標(biāo)志存儲(chǔ)器205中相應(yīng)行記錄了最后一個(gè)微操作的塊內(nèi)偏移量(即‘6,
[0121]根據(jù)本發(fā)明技術(shù)方案,映射模塊107可以有不同的組織形式。下面將結(jié)合圖4實(shí)施例對(duì)指令地址與微操作地址之間的映射進(jìn)行說(shuō)明。請(qǐng)參考圖5八,其為本發(fā)明所述映射模塊進(jìn)行地址映射的一個(gè)實(shí)施例。在本實(shí)施例中,映射模塊的行與微操作存儲(chǔ)器103的存儲(chǔ)塊一一對(duì)應(yīng),可以將接收到的指令地址偏移量轉(zhuǎn)換為微操作地址偏移量。采用圖4實(shí)施例相同的例子,如圖5八所不,映射模塊107中每行對(duì)應(yīng)微操作存儲(chǔ)器103的一行,其表項(xiàng)數(shù)目與指令塊包含的字節(jié)數(shù)相同,即16個(gè)表項(xiàng)(從第0號(hào)表項(xiàng)到第15號(hào)表項(xiàng))。每個(gè)與指令起始地址對(duì)應(yīng)的表項(xiàng)中存儲(chǔ)了微操作存儲(chǔ)器103中該指令對(duì)應(yīng)的第一個(gè)微操作的塊內(nèi)偏移地址。
[0122]例如,指令塊401中的指令403的起始地址為指令塊內(nèi)偏移地址‘1’,且指令403對(duì)應(yīng)的微操作423的起始地址為微操作塊內(nèi)偏移地址‘0’。因此,在映射模塊107中相應(yīng)行501的第1號(hào)表項(xiàng)503中存儲(chǔ)了指令403對(duì)應(yīng)的微操作423的起始地址‘0’。
[0123]又如,指令塊421中的指令405的起始地址為指令塊內(nèi)偏移地址‘4’,且指令405對(duì)應(yīng)微操作425和427,其中第一個(gè)微操作為微操作425,其起始地址為微操作塊內(nèi)偏移地址‘1’。因此,在映射模塊107中相應(yīng)行501的第4號(hào)表項(xiàng)505中存儲(chǔ)了指令405對(duì)應(yīng)的第一個(gè)微操作425的起始地址‘1’。
[0124]以此類推,在映射模塊107中相應(yīng)行501的第9號(hào)表項(xiàng)507中存儲(chǔ)了指令407對(duì)應(yīng)的微操作429的起始地址‘3’ ;第11號(hào)表項(xiàng)509中存儲(chǔ)了指令409對(duì)應(yīng)的微操作431的起始地址‘4’ ;第12號(hào)表項(xiàng)511中存儲(chǔ)了指令411對(duì)應(yīng)的微操作433的起始地址‘5’ ;第15號(hào)表項(xiàng)513中存儲(chǔ)了指令413對(duì)應(yīng)的微操作434的起始地址‘6’。
[0125]因此,可以直接根據(jù)處理器核211輸出的指令地址偏移量的值在映射模塊107中的相應(yīng)行的對(duì)應(yīng)表項(xiàng)中讀出該指令對(duì)應(yīng)的第一個(gè)微操作在微操作存儲(chǔ)器103相應(yīng)行中的位置。這樣,當(dāng)發(fā)生分支轉(zhuǎn)移時(shí),處理器核211輸出分支目標(biāo)指令地址,其中指令塊地址部分經(jīng)標(biāo)簽存儲(chǔ)器105匹配后得到剛X,并指向微操作存儲(chǔ)器103中的行,而根據(jù)偏移地址部分則可直接從映射模塊107中所述剛X指向的行中讀出微操作偏移地址8階,從而在微操作存儲(chǔ)器103中找到該分支目標(biāo)指令對(duì)應(yīng)的第一個(gè)微操作。之后,在按前述實(shí)施例中微操作偏移地址8階累加的方法,依次找到后續(xù)的微操作。
[0126]進(jìn)一步地,可以對(duì)映射模塊107中存儲(chǔ)的內(nèi)容進(jìn)行壓縮,用更小的存儲(chǔ)空間實(shí)現(xiàn)與圖5八相同的功能。請(qǐng)參考圖58,其為本發(fā)明所述映射模塊進(jìn)行地址映射的另一個(gè)實(shí)施例。在本實(shí)施例中,映射模塊107中每?jī)尚袠?gòu)成一組映射關(guān)系,每組映射關(guān)系對(duì)應(yīng)微操作存儲(chǔ)器103中的一行。此外,每組映射關(guān)系中包含的兩行的表項(xiàng)數(shù)目相等,且等于指令塊中最多可能包含的指令的數(shù)目。在每組映射關(guān)系中,所述兩行的第一行中按表項(xiàng)順序依次存儲(chǔ)了相應(yīng)指令塊中各條指令的塊內(nèi)偏移地址,而第二行中按表項(xiàng)順序依次存儲(chǔ)了相應(yīng)指令塊中各條指令對(duì)應(yīng)的第一個(gè)微操作的微操作偏移地址。這樣,所述兩行中對(duì)應(yīng)的表項(xiàng)(即位于同一列的表項(xiàng))構(gòu)成了了指令塊內(nèi)偏移地址和微操作偏移地址的對(duì)應(yīng)關(guān)系。
[0127]例如,行521和531構(gòu)成了所述的一組映射關(guān)系。其中行521包含了指令塊內(nèi)偏移地址,行531包含了微操作偏移地址。依然采用圖4中的例子,如圖58所示,行521中的表項(xiàng)內(nèi)容從左至右依次為‘1’、‘4’、‘9’、‘11’、‘12’和‘ 15’,分別對(duì)應(yīng)了指令403、405、407、409,411和413在其所在指令塊中的偏移地址;行531中的表項(xiàng)內(nèi)容從左至右依次為‘0’、‘1’、‘3’、‘4’、‘5’和‘6’,分別對(duì)應(yīng)了微操作423、425、429、431、433和435在其所在微操作塊中的偏移地址,而這些微操作正是上述指令各自的第一個(gè)微操作。這樣,行521和531就構(gòu)成了指令塊401與微操作塊421之間的映射關(guān)系。
[0128]同樣地,可以直接根據(jù)處理器核211輸出的指令地址偏移量的值在映射模塊107的相應(yīng)組映射關(guān)系中的第一行進(jìn)行匹配,并輸出匹配成功項(xiàng)對(duì)應(yīng)的第二行表項(xiàng),作為8階對(duì)微操作存儲(chǔ)器103進(jìn)行列尋址。例如,當(dāng)處理器核211需要獲取指令405時(shí),輸出的指令地址中的塊地址部分經(jīng)標(biāo)簽存儲(chǔ)器105匹配后得到剛X,并根據(jù)指令地址偏移量‘4’,在所述剛X對(duì)應(yīng)的映射關(guān)系中的第一行521中進(jìn)行匹配,且第1個(gè)表項(xiàng)525匹配成功,因此輸出該表項(xiàng)對(duì)應(yīng)的第二行中的表項(xiàng)535的值‘ 1 ’作為8階,并用所述剛X和8階對(duì)微操作存儲(chǔ)器103進(jìn)行尋址,從而讀出處理器核211所需指令。其他操作與圖5八相同,在此不再贅述。
[0129]此外,還可以進(jìn)一步地對(duì)映射模塊107壓縮。請(qǐng)參考圖50,其為本發(fā)明所述映射模塊進(jìn)行地址映射的另一個(gè)實(shí)施例。本實(shí)施例與圖58實(shí)施例類似,用兩行(如行551和571)構(gòu)成一組映射關(guān)系,對(duì)應(yīng)微操作存儲(chǔ)器103中的一行。不同的是,在圖5(:中,每組映射關(guān)系中的第一行(即行551)中的每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)指令塊內(nèi)偏移地址,即表項(xiàng)數(shù)目與指令塊包含的字節(jié)數(shù)相同。因此,在本實(shí)施例中,行551有16個(gè)表項(xiàng)。而每個(gè)表項(xiàng)內(nèi)只存儲(chǔ)一位(化七)數(shù)據(jù)(即‘0’或‘1’),其中‘0’表示該表項(xiàng)對(duì)應(yīng)的指令塊內(nèi)偏移地址不是一條指令的起始位置,‘1’表示該表項(xiàng)對(duì)應(yīng)的指令塊地址偏移量是一條指令的起始位置。
[0130]每組映射關(guān)系中的第二行(即行571)中的每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)微操作塊內(nèi)偏移地址,即表項(xiàng)數(shù)目與微操作塊最大可能包含的微操作個(gè)數(shù)相同。且每個(gè)表項(xiàng)內(nèi)也只存儲(chǔ)一位數(shù)據(jù)(即‘0’或‘1’),其中‘0’表示該表項(xiàng)對(duì)應(yīng)的微操作不是其相應(yīng)指令的第一個(gè)微操作,‘1’表示該表項(xiàng)對(duì)應(yīng)的微操作是其相應(yīng)指令的第一個(gè)微操作。
[0131]這樣,通過(guò)分別對(duì)行551和571中的‘1’進(jìn)行計(jì)數(shù)就可以將指令塊內(nèi)偏移地址轉(zhuǎn)換為微操作塊內(nèi)偏移地址。具體地,當(dāng)處理器核211送來(lái)一個(gè)指令塊內(nèi)偏移地址時(shí),可以在行551中從最左邊的表項(xiàng)開始向右對(duì)‘1’進(jìn)行計(jì)數(shù),直至到達(dá)所述指令塊內(nèi)偏移地址對(duì)應(yīng)的表項(xiàng),此時(shí)可以得到一個(gè)指令表項(xiàng)計(jì)數(shù)值。之后,在行571中從最左邊的表項(xiàng)開始向右對(duì)‘1’進(jìn)行計(jì)數(shù),直至計(jì)數(shù)達(dá)到所述指令表項(xiàng)計(jì)數(shù)值。此時(shí)最后一個(gè)參與計(jì)數(shù)的表項(xiàng)就對(duì)應(yīng)了所述指令塊內(nèi)偏移地址對(duì)應(yīng)的指令相應(yīng)的第一個(gè)微操作在微操作存儲(chǔ)器103中8階。
[0132]例如,處理器核211需要獲取指令407,即送來(lái)的指令塊內(nèi)偏移地址為‘9’,則從行551最左邊的表項(xiàng)開始計(jì)數(shù),直至第9個(gè)表項(xiàng)。由于第1個(gè)表項(xiàng)、第4個(gè)表項(xiàng)和第9個(gè)表項(xiàng)中的值為‘1’,因此得到的指令表項(xiàng)計(jì)數(shù)值為‘3’。在從行551最左邊的表項(xiàng)開始計(jì)數(shù),直至計(jì)數(shù)值為‘3’。由于第0個(gè)表項(xiàng)、第1個(gè)表項(xiàng)和第3個(gè)表項(xiàng)的值為‘1’,因此當(dāng)計(jì)數(shù)到第3個(gè)表項(xiàng)時(shí),計(jì)數(shù)值達(dá)到‘3’,表示所述第3個(gè)表項(xiàng)對(duì)應(yīng)的微操作就是指令407相應(yīng)的第一個(gè)微操作,即8階等于3。
[0133]當(dāng)然,對(duì)于本實(shí)施例所述映射關(guān)系,也可以從右向左進(jìn)行計(jì)數(shù),并得到類似結(jié)果,在此不再贅述。此外,對(duì)于本實(shí)施例所述映射關(guān)系,還可以采用求和的方法進(jìn)行地址映射。例如在圖5(:中,可以設(shè)該計(jì)數(shù)值為‘0’,將行551中從最左邊的的表項(xiàng)開始,直到指令塊內(nèi)偏移地址指向的表項(xiàng)的值對(duì)所述計(jì)數(shù)值進(jìn)行累加,同時(shí)對(duì)行571中從最左邊的的表項(xiàng)開始對(duì)每個(gè)表項(xiàng)的值對(duì)所述計(jì)數(shù)值進(jìn)行累減。這樣,當(dāng)所述計(jì)數(shù)值再次為‘0’時(shí),在行571中到達(dá)的表項(xiàng)對(duì)應(yīng)的微操作就是所述指令對(duì)應(yīng)的微操作。
[0134]回到圖2,當(dāng)一個(gè)指令塊被送到指令緩存系統(tǒng)201時(shí),首先按圖4實(shí)施例所述方法在轉(zhuǎn)換器109中從指令塊轉(zhuǎn)換為微操作塊、對(duì)該指令塊中的每條分支指令計(jì)算補(bǔ)償后的分支增量,所述微操作及補(bǔ)償后的分支增量被存儲(chǔ)在微操作存儲(chǔ)器103中按替換算法(如I冊(cè)算法)確定的存儲(chǔ)塊中,并將該指令塊的指令塊地址存儲(chǔ)在標(biāo)簽存儲(chǔ)器105的相應(yīng)行中。同時(shí),轉(zhuǎn)換器109產(chǎn)生指令與微操作之間的映射關(guān)系,存儲(chǔ)在映射模塊107的相應(yīng)行中,并將最后一個(gè)微操作對(duì)應(yīng)的微操作地址存儲(chǔ)在結(jié)束標(biāo)志存儲(chǔ)器205中。至此,完成了將一個(gè)指令塊轉(zhuǎn)換成微操作存儲(chǔ)在指令緩存系統(tǒng)201的操作過(guò)程。
[0135]當(dāng)處理器211沒(méi)有執(zhí)行分支微操作、或執(zhí)行分支微操作但分支轉(zhuǎn)移沒(méi)有發(fā)生時(shí),若當(dāng)前8階指向的不是當(dāng)前微操作塊中的最后一個(gè)微操作,則按之前所述方法,根據(jù)由選擇器207選擇總線221輸出的原指令塊地址送往標(biāo)簽存儲(chǔ)器105匹配得到剛X,及由選擇器213選擇處理器核211輸出的增一后的8階,從微操作存儲(chǔ)器103中讀出相應(yīng)的微操作供處理器核211執(zhí)行。
[0136]若當(dāng)前8階指向的是當(dāng)前微操作塊中的最后一個(gè)微操作,則按之前所述方法,根據(jù)由選擇器207選擇總線221輸出的下一指令塊地址送往標(biāo)簽存儲(chǔ)器105匹配。此時(shí),若匹配成功,則表示所述下一指令塊對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在微操作存儲(chǔ)器103中,可以由選擇器213選擇處理器核211輸出的‘0’作為8階,從微操作存儲(chǔ)器103中由匹配得到的剛X指向的存儲(chǔ)塊中讀出相應(yīng)的微操作供處理器核211執(zhí)行。若匹配不成功,則表示所述下一指令塊對(duì)應(yīng)的微操作塊尚未存儲(chǔ)在微操作存儲(chǔ)器103中。此時(shí),向更低層次存儲(chǔ)器輸出所述指令塊地址,等到所述指令塊被取來(lái)時(shí),按之前所述方法轉(zhuǎn)換為微操作塊后存儲(chǔ)到微操作存儲(chǔ)器103中由替換算法確定的剛X指向的存儲(chǔ)塊中,并在標(biāo)簽存儲(chǔ)器105、映射模塊107和結(jié)束標(biāo)志存儲(chǔ)器205由所述剛X指向的行填入相應(yīng)內(nèi)容。同時(shí),由選擇器213選擇處理器核211輸出的‘0’作為8階,從所述微操作塊中輸出相應(yīng)的微操作供處理器核211執(zhí)行。
[0137]當(dāng)處理器211執(zhí)行分支指令且分支轉(zhuǎn)移發(fā)生時(shí),按之前所述方法計(jì)算分支目標(biāo)指令塊地址和分支目標(biāo)指令塊內(nèi)偏移地址。選擇器207選擇從處理器核211通過(guò)總線211輸出的分支目標(biāo)指令塊地址送到標(biāo)簽存儲(chǔ)器105匹配。若匹配成功,則表示所述分支目標(biāo)指令塊對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在微操作存儲(chǔ)器103中,匹配成功項(xiàng)對(duì)應(yīng)的剛X指向所述分支目標(biāo)指令對(duì)應(yīng)的微操作塊在微操作存儲(chǔ)器103中的位置,以及相應(yīng)映射信息和結(jié)束標(biāo)志信息分別在映射模塊107和結(jié)束標(biāo)志存儲(chǔ)器205中的位置。此時(shí),處理器核211輸出的分支指令塊內(nèi)偏移地址被送到映射模塊107中,根據(jù)由所述剛X指向的行中包含的映射關(guān)系即可轉(zhuǎn)換為微操作偏移地址,并由選擇器213選擇作為8階。根據(jù)所述剛X及8階即可在微操作存儲(chǔ)器103中讀出所述分支目標(biāo)指令對(duì)應(yīng)的第一個(gè)微操作供處理器核211執(zhí)行。
[0138]若匹配不成功,則表示所述分支目標(biāo)指令塊對(duì)應(yīng)的微操作塊尚未存儲(chǔ)在微操作存儲(chǔ)器103中。此時(shí),向更低層次存儲(chǔ)器輸出所述分支目標(biāo)指令塊地址,等到所述分支目標(biāo)指令塊被取來(lái)時(shí),按之前所述方法轉(zhuǎn)換為微操作塊后存儲(chǔ)到微操作存儲(chǔ)器103中由替換算法確定的剛X指向的存儲(chǔ)塊中,并在標(biāo)簽存儲(chǔ)器105、映射模塊107和結(jié)束標(biāo)志存儲(chǔ)器205由所述剛X指向的行填入相應(yīng)內(nèi)容。之后,處理器核211輸出的分支指令塊內(nèi)偏移地址被送到映射模塊107中,根據(jù)由所述剛X指向的行中包含的映射關(guān)系即可轉(zhuǎn)換為微操作偏移地址,并由選擇器213選擇作為8階,從所述微操作塊中輸出相應(yīng)的微操作供處理器核211執(zhí)行。
[0139]根據(jù)本發(fā)明技術(shù)方案,雖然上述各個(gè)實(shí)施例均采用直接尋址的方式計(jì)算分支目標(biāo)地址,但是也可以使用間接尋址的方式。當(dāng)采用間接尋址方式時(shí),需要首先確定寄存器值(如:基地址寄存器值),從而計(jì)算分支目標(biāo)地址。在這種情況下,可以由處理器核211計(jì)算得到分支目標(biāo)地址(如使用處理器核211中的運(yùn)算單元進(jìn)行分支目標(biāo)地址計(jì)算)后,再按上述方法完成后續(xù)操作,此過(guò)程不再贅述。
[0140]根據(jù)本發(fā)明技術(shù)方案,還可以對(duì)所述處理器系統(tǒng)進(jìn)行改進(jìn),通過(guò)在軌道表中建立微操作之間的聯(lián)系,使處理器核執(zhí)行分支微操作之前事先計(jì)算出分支目標(biāo)指令地址,將分支目標(biāo)指令地址映射為分支目標(biāo)微操作地址,并預(yù)取所述分支目標(biāo)微操作所在的微操作塊。從而使得從分支目標(biāo)指令地址分支目標(biāo)微操作地址的映射過(guò)程不在處理器核獲取分支指令目標(biāo)微操作的關(guān)鍵路徑上;也從而掩蓋分支轉(zhuǎn)移時(shí)微操作緩存缺失造成的部分或全部等待時(shí)間。請(qǐng)參考圖6,其為本發(fā)明所述基于軌道表的處理器系統(tǒng)的一個(gè)實(shí)施例。
[0141]如圖6所不,所述處理器系統(tǒng)包含一個(gè)主動(dòng)表1181^)604、一個(gè)掃描轉(zhuǎn)換器608、一個(gè)軌道表1^16) 610、一個(gè)循跡器614、一個(gè)映射模塊107、一個(gè)微操作存儲(chǔ)器606、一個(gè)微操作讀緩沖607和一個(gè)處理器核611。應(yīng)當(dāng)理解的是,這里列出各種部件的目的是為了便于描述,還可以包含其他部件,而某些部件可以被省略。這里的各種部件可以分布在多個(gè)系統(tǒng)中,可以是物理上存在的或是虛擬的,可以是硬件實(shí)現(xiàn)(如:集成電路)、軟件實(shí)現(xiàn)或由硬件和軟件組合實(shí)現(xiàn)。
[0142]在本實(shí)施例中,微操作讀緩沖607的容量比微操作存儲(chǔ)器606小,訪問(wèn)時(shí)延也更短。微操作存儲(chǔ)器606和微操作讀緩沖607可以包含任何合適的存儲(chǔ)設(shè)備。指令存儲(chǔ)器606可以作為系統(tǒng)的一個(gè)緩存工作,或當(dāng)有其他緩存存在時(shí)作為一級(jí)緩存工作;且可以被分割成復(fù)數(shù)個(gè)被稱為存儲(chǔ)塊的存儲(chǔ)片段的用于存儲(chǔ)處理器核611要訪問(wèn)的指令對(duì)應(yīng)的微操作。
[0143]從更低層次的存儲(chǔ)器獲取指令塊經(jīng)掃描轉(zhuǎn)換器轉(zhuǎn)換為微操作塊后首先被填充到微操作存儲(chǔ)器606中。之后,根據(jù)具體執(zhí)行情況,相應(yīng)微操作塊被從微操作存儲(chǔ)器606填充微操作讀緩沖607中,以備處理器核611讀取。在這里,術(shù)語(yǔ)“填充$111) ”表示將指令(或微操作)從較低層次的存儲(chǔ)器移動(dòng)到較高層次的存儲(chǔ)器中,術(shù)語(yǔ)“存儲(chǔ)器訪問(wèn)^00688)表不處理器核611從存儲(chǔ)器(微操作讀緩沖607)中讀取微操作。
[0144]主動(dòng)表604中的表項(xiàng)與微操作存儲(chǔ)器606中的存儲(chǔ)塊一一對(duì)應(yīng)。主動(dòng)表604中的每個(gè)表項(xiàng)存儲(chǔ)了一個(gè)指令塊地址,其表項(xiàng)地址稱為塊號(hào)(剛幻,指明了該指令塊地址對(duì)應(yīng)的微操作塊存儲(chǔ)在微操作存儲(chǔ)器606中的哪個(gè)存儲(chǔ)塊中。本發(fā)明所述的塊號(hào)指的就是存儲(chǔ)塊在微操作存儲(chǔ)器606中的位置??梢酝ㄟ^(guò)將掃描轉(zhuǎn)換器608審查、計(jì)算得到的分支目標(biāo)指令地址中的指令塊地址與主動(dòng)表604中存儲(chǔ)的指令塊地址匹配確定該分支目標(biāo)指令對(duì)應(yīng)的微操作塊是否已經(jīng)存儲(chǔ)在微操作塊存儲(chǔ)器606中。如果分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊尚未被填充到微操作存儲(chǔ)器606中,那么從更低層次存儲(chǔ)器獲取將該指令塊并經(jīng)掃描轉(zhuǎn)換器轉(zhuǎn)換為微操作后填充到微操作存儲(chǔ)器606中的同時(shí),在主動(dòng)表604中建立相應(yīng)的指令塊地址與塊號(hào)的匹配對(duì)。
[0145]掃描轉(zhuǎn)換器608可以對(duì)從低層次的存儲(chǔ)器填充到微操作存儲(chǔ)器606的每一條指令進(jìn)行審查、轉(zhuǎn)換,并提取出某些信息,如:指令(或微操作)類型、指令(或微操作)源地址和分支指令的分支增量,并基于這些信息計(jì)算出分支目標(biāo)地址。例如,指令(或微操作)類型可以包括條件分支指令(或微操作〉、無(wú)條件分支指令(或微操作)和其他指令(或微操作)等。指令(或微操作)類別還可以包括條件分支指令(或微操作)的子類別,如相等時(shí)分支轉(zhuǎn)移、大于時(shí)分支轉(zhuǎn)移等。在某些情況下,可以認(rèn)為無(wú)條件分支指令(或微操作)是條件分支指令(或微操作)的一種特例,即條件總是成立。此外,還可以包括其他信息。
[0146]掃描轉(zhuǎn)換器608對(duì)從低層存儲(chǔ)器送來(lái)的指令塊進(jìn)行審查并轉(zhuǎn)換??梢韵葘彶楹筠D(zhuǎn)換,或先轉(zhuǎn)換后審查,或?qū)彶榕c轉(zhuǎn)換同時(shí)進(jìn)行。審查是指對(duì)指令或由指令轉(zhuǎn)換而成的微操作進(jìn)行簡(jiǎn)單譯碼以識(shí)別其類型。審查的原則是識(shí)別出分支源指令或分支源微操作(包括條件分支與無(wú)條件分支),計(jì)算并匹配、映射出分支目標(biāo)微操作地址(由分支目標(biāo)微操作的塊號(hào)剛X及塊內(nèi)偏移8階組成),并將該分支目標(biāo)微操作地址存放進(jìn)軌道表中,由分支源微操作微操作地址所指出的表項(xiàng)中。
[0147]與圖1實(shí)施例類似,本實(shí)施例中的掃描轉(zhuǎn)換器608還可以用于將不同指令集的指令轉(zhuǎn)換為同一種指令集的指令。例如,可以將掃描轉(zhuǎn)換器608輸入的指令集8的指令轉(zhuǎn)換成指令集4的相應(yīng)指令,使得本發(fā)明所述的處理器系統(tǒng)能同時(shí)支持指令集4和指令集8。執(zhí)行指令集4時(shí),掃描轉(zhuǎn)換器608只執(zhí)行審查和將指令轉(zhuǎn)換為微操作的功能,不執(zhí)行指令集轉(zhuǎn)換的功能。當(dāng)執(zhí)行指令集8時(shí),轉(zhuǎn)換器109不但執(zhí)行審查和將指令轉(zhuǎn)換為微操作的功能,也執(zhí)行指令集轉(zhuǎn)換的功能,或直接將指令集8的指令轉(zhuǎn)換為指令集八中相應(yīng)指令對(duì)應(yīng)的微操作。
[0148]軌道表610含有復(fù)數(shù)個(gè)軌跡點(diǎn)^01^)。一個(gè)軌跡點(diǎn)是軌道表中的一個(gè)表項(xiàng),可含有至少一條微操作的信息,比如微操作類別信息、分支目標(biāo)指令地址,或分支目標(biāo)微操作地址等。在本發(fā)明中軌跡點(diǎn)本身的軌跡表地址與該軌跡點(diǎn)所代表微操作的微操作地址相關(guān)(031^681)011(1);而分支微操作軌跡點(diǎn)中含有分支目標(biāo)微操作的軌跡表地址,且該軌跡表地址與分支目標(biāo)微操作地址相關(guān)。與微操作存儲(chǔ)器606中一系列連續(xù)微操作所構(gòu)成的一個(gè)微操作塊相對(duì)應(yīng)的復(fù)數(shù)個(gè)連續(xù)的軌跡點(diǎn)稱為一條軌道。該微操作塊與相應(yīng)的軌道由同一個(gè)塊號(hào)(即剛幻指示。軌道表含有至少一條軌道。一條軌道中的總的軌跡點(diǎn)數(shù)可以等于軌道表610中一行中的表項(xiàng)總數(shù)。軌道表610也可以有其它的組織形式。
[0149]可以用塊號(hào)(剛幻和偏移地址(8階)來(lái)表示軌跡點(diǎn)(微操作)在軌道表中的位置信息;其中剛X表示該軌跡點(diǎn)對(duì)應(yīng)微操作的塊號(hào)(指向軌道表中一條軌道及微操作存儲(chǔ)器中相應(yīng)的一個(gè)存儲(chǔ)塊),8階表示該軌跡點(diǎn)(及對(duì)應(yīng)微操作)在該軌道(存儲(chǔ)塊)中的相對(duì)位置(偏移量,八(1(^688 0打860。一套剛X及8階對(duì)應(yīng)軌道表中的一個(gè)軌跡點(diǎn),即可以根據(jù)一套剛X及8階從軌道表中找到對(duì)應(yīng)的軌跡點(diǎn)。相應(yīng)地,在掃描轉(zhuǎn)換器608提取出指令塊中的相關(guān)信息,并將這些信息存儲(chǔ)到軌道表610由這些微操作對(duì)應(yīng)的剛X指出的軌道中由8階指出的表項(xiàng)。如果該表項(xiàng)(軌跡點(diǎn))的類型代表一條分支微操作,可以根據(jù)內(nèi)容中含的剛目標(biāo)塊號(hào))確定分支目標(biāo)的軌道,并根據(jù)8階(偏移地址)確定目標(biāo)軌道中的一個(gè)特定的軌跡點(diǎn)(表項(xiàng))。這樣,軌道表的分支軌跡點(diǎn)是一個(gè)以軌道表項(xiàng)地址對(duì)應(yīng)分支源地址、表項(xiàng)內(nèi)容對(duì)應(yīng)分支目標(biāo)微操作地址來(lái)代表一個(gè)分支微操作的表項(xiàng)。所述分支目標(biāo)微操作地址可以由含有該分支源微操作的塊地址(等于相應(yīng)的分支源指令塊地址)加上該分支指令的塊內(nèi)偏移量,并再加上分支轉(zhuǎn)移到目標(biāo)微操作的分支增量得到的指令地址經(jīng)映射而得到。即分支目標(biāo)指令地址=分支微操作的塊地址+分支指令塊內(nèi)偏移量+分支增量。而分支目標(biāo)微操作地址是由分支目標(biāo)指令地址經(jīng)由映射器107映射所得。
[0150]所述計(jì)算得到的分支目標(biāo)指令地址622的高位部分624(即指令塊地址)被送往主動(dòng)表604與其中的內(nèi)容匹配以獲得該分支目標(biāo)微操作對(duì)應(yīng)軌跡點(diǎn)的分支目標(biāo)微操作塊號(hào)634 (剛幻,低位部分626 (即分支目標(biāo)指令塊內(nèi)偏移)被送往映射模塊107,經(jīng)映射后得到分支目標(biāo)微操作塊內(nèi)偏移636 (8^)。所述剛X與8階被存進(jìn)軌道表中代表分支源的表項(xiàng)中。分支目標(biāo)微操作塊號(hào)634與分支目標(biāo)微操作塊內(nèi)偏移636 —起作為分支目標(biāo)微操作地址632(8⑷被寫入軌道表中,由分支源微操作地址指向的表項(xiàng)。該分支源微操作地址由分支源微操作的塊號(hào)剛X及塊內(nèi)偏移8階組成。例如,當(dāng)掃描轉(zhuǎn)換器在審查、轉(zhuǎn)換將要存放到微操作存儲(chǔ)器606中微操作塊號(hào)剛X為29的一個(gè)指令地址為1200的指令塊時(shí)發(fā)現(xiàn)從字節(jié)3開始有一條分支指令,其分支增量為67個(gè)字節(jié)。則分支目標(biāo)指令地址622為1200+67 =1267,其中高位624(其值為1260)被送往主動(dòng)表604匹配得到分支目標(biāo)塊號(hào)634(8^)為81號(hào);其中低位634(其值為7表示是指令塊中7號(hào)字節(jié))被送往映射模塊107與第81行的映射值作映射獲得相應(yīng)的微操作塊內(nèi)偏移636為2 (即微操作塊內(nèi)2號(hào)微操作);如此則分支目標(biāo)微操作地址632為81-2。掃描轉(zhuǎn)換模塊608在轉(zhuǎn)換從字節(jié)3開始的分支源地址時(shí)將轉(zhuǎn)換所得的相應(yīng)微操作按順序?qū)⑵鋵懭肓说?號(hào)微操作(此處字節(jié)1與2都是上一指令塊中開始的指令的結(jié)尾部分,所以字節(jié)3開始的分支指令是本指令塊的第一條指令所以在此與該分支指令對(duì)應(yīng)的分支微操作,其微操作地址620是在微操作塊29第0號(hào)微操作,即29-0。所以掃描轉(zhuǎn)換模塊608即將其值為81-2的分支目標(biāo)微操作地址632在微操作地址總線620控制下寫入軌道表610中29-0表項(xiàng)(29號(hào)軌道0號(hào)表項(xiàng))。掃描轉(zhuǎn)換模塊608另外也控制將3號(hào)指令字節(jié)與0號(hào)微操作塊內(nèi)偏移存儲(chǔ)在映射器107中的29行,以便今后審查其他指令時(shí)用以映射。當(dāng)整個(gè)指令塊的審查、轉(zhuǎn)換完成后,將相應(yīng)的結(jié)束標(biāo)志存儲(chǔ)到結(jié)束標(biāo)志存儲(chǔ)器205的相應(yīng)行中。
[0151]在圖1實(shí)施例中,曾經(jīng)指出過(guò)由分支指令轉(zhuǎn)換而得的分支微操作在進(jìn)行分支時(shí)要進(jìn)行三步映射,分支源微操作塊內(nèi)偏移映射、中間微操作塊地址映射及分支目標(biāo)微操作塊內(nèi)偏移映射。在本發(fā)明所有實(shí)施例中,因?yàn)槲⒉僮鲏K的存儲(chǔ)格式為操作塊與原始指令塊一一對(duì)應(yīng),所以不需要中間微操作塊的地址映射。在本實(shí)施例中,也不需要分支源微操作塊內(nèi)偏移映射,因?yàn)樵谧鞣种繕?biāo)計(jì)算時(shí)使用的是原始指令塊內(nèi)偏移,而不是分支源微操作塊內(nèi)偏移。剩余的分支目標(biāo)微操作塊地址映射在本實(shí)施例中是在指令轉(zhuǎn)換微操作數(shù)時(shí)實(shí)施,存進(jìn)軌道表610的已經(jīng)是完成全部映射后的分支目標(biāo)微操作地址。在處理器核將作分支轉(zhuǎn)移時(shí),可以用軌道表610中存有的該分支目標(biāo)微操作地址不經(jīng)任何映射和計(jì)算,直接尋址指令緩存606獲得該分支目標(biāo)微操作,供給處理器核611。在實(shí)施例圖6中及后續(xù)使用軌道表的實(shí)施例中,都使用這種方法。
[0152]總結(jié)一下,當(dāng)審查到的指令是分支指令時(shí),計(jì)算其分支目標(biāo)指令地址,并將所述分支目標(biāo)指令地址中的塊地址部分送到主動(dòng)表604匹配。如果匹配成功,則得到分支目標(biāo)指令對(duì)應(yīng)的微操作所在的微操作塊的塊號(hào)(剛幻,根據(jù)映射模塊107中由該剛X指向的行中存儲(chǔ)的映射關(guān)系得到所述分支目標(biāo)指令對(duì)應(yīng)的分支目標(biāo)微操作的微操作偏移地址8階,并將該剛X及8階寫進(jìn)軌道表中與所述分支微操作對(duì)應(yīng)的軌跡點(diǎn)中。如果匹配不成功,則該分支目標(biāo)指令地址直接存儲(chǔ)在所述分支微操作對(duì)應(yīng)的軌跡點(diǎn)中。
[0153]微操作讀緩沖607中至少存儲(chǔ)了包含當(dāng)前微操作塊在內(nèi)的一個(gè)微操作塊。需要說(shuō)明的是,微操作讀緩沖607中的每一行與微操作存儲(chǔ)器606的微操作塊可以含有相同數(shù)目或較少數(shù)目個(gè)微操作。如果微操作讀緩沖607中的每行含有與微操作存儲(chǔ)器606中微操作塊同樣數(shù)目的微操作,即一個(gè)行等于一個(gè)微操作塊,則該行可以用對(duì)應(yīng)的微操作塊塊號(hào)(即剛幻表示。如果微操作讀緩沖607中的每行含有比微操作存儲(chǔ)器606中微操作塊少的微操作,即多個(gè)行等于一個(gè)微操作塊,則微操作讀緩沖607中的每一行可以用相應(yīng)的微操作塊的塊號(hào)剛的最低位([必)再低一位的位置處(1688加上至少一個(gè)地址位;此地址位指出該行在一個(gè)微操作塊中的位置,也即同一微操作塊中的行偏移地址。例如一個(gè)塊號(hào)8^為‘111’的微操作塊含有微操作讀緩沖607中的兩個(gè)行,則其中占據(jù)低位地址的行對(duì)應(yīng)的號(hào)碼為‘1110’ ;占據(jù)高位地址的行對(duì)應(yīng)的號(hào)碼為‘1111’。
[0154]為了便于說(shuō)明,在之后的描述中以微操作讀緩沖607中的每一行與微操作存儲(chǔ)器606的微操作塊含有相同數(shù)目的微操作為例進(jìn)行說(shuō)明。
[0155]在本發(fā)明中,微操作讀緩沖607可以根據(jù)當(dāng)前處理器核611執(zhí)行微操作的執(zhí)行情況,主動(dòng)提供微操作給處理器核611執(zhí)行。
[0156]軌道表610中的軌道和微操作存儲(chǔ)器606中的存儲(chǔ)塊一一對(duì)應(yīng),且都由同一指針指向。處理器核611將要執(zhí)行的任何指令對(duì)應(yīng)的微操作,都可以在執(zhí)行前被填充到微操作存儲(chǔ)器606及微操作讀緩沖607中。為了在一條軌道中建立與下一條軌道的聯(lián)系,在每條軌道代表最后一個(gè)微操作的軌跡點(diǎn)后再設(shè)一個(gè)結(jié)束軌跡點(diǎn),其中存放順序執(zhí)行下一條軌道(微操作塊)的塊號(hào)剛X。如果微操作存儲(chǔ)器606中可以存儲(chǔ)多個(gè)微操作塊,那么在當(dāng)前微操作塊被執(zhí)行時(shí),把順序執(zhí)行下一個(gè)微操作塊也取到微操作存儲(chǔ)器606中及微操作讀緩沖607中,以備提供給處理器核611執(zhí)行。下一微操作塊對(duì)應(yīng)的指令塊地址可以用當(dāng)前微操作塊對(duì)應(yīng)的指令塊地址加上一個(gè)指令塊的地址長(zhǎng)度來(lái)求得。該地址如前述被送到主動(dòng)表604匹配,得到所述指令塊地址對(duì)應(yīng)的微操作塊在微操作存儲(chǔ)器103中的剛X,同時(shí)該剛X被存進(jìn)當(dāng)前軌道的結(jié)束軌跡點(diǎn)。
[0157]對(duì)于結(jié)束軌跡點(diǎn),則只需要將指令塊地址加上指令塊長(zhǎng)度,就可以得到下一微操作塊對(duì)應(yīng)的指令塊地址,之后可以按同樣方法進(jìn)行匹配以確定所述下一微操作塊的剛X。對(duì)于結(jié)束軌跡點(diǎn),其下一軌跡點(diǎn)的8階恒為‘0’。
[0158]當(dāng)新軌道被建立時(shí),可以將新建軌道放置在軌道表610中的一個(gè)可被替換的行中。如果所述新軌道包含一個(gè)分支點(diǎn)(對(duì)應(yīng)一個(gè)分支微操作),那么在所述行中的一個(gè)表項(xiàng)內(nèi)建立一個(gè)分支點(diǎn)。可以根據(jù)分支微操作地址確定所述分支點(diǎn)在軌道表610中的行及表項(xiàng)的位置。舉例而言,可以根據(jù)分支微操作地址對(duì)應(yīng)的指令塊地址確定行,并根據(jù)分支微操作地址的微操作塊內(nèi)偏移量確定該行中的一個(gè)表項(xiàng)。
[0159]軌道表行中的每個(gè)表項(xiàng)或軌跡點(diǎn)可以包含一種內(nèi)容格式,所述格式包括類型區(qū)域、第一地址0400?區(qū)域和第二地址區(qū)域。此外,軌道表行中的每個(gè)表項(xiàng)或軌跡點(diǎn)還可以包含另一種內(nèi)容格式,即類型區(qū)域和分支目標(biāo)指令地址區(qū)域。類型區(qū)域可以表示軌跡點(diǎn)對(duì)應(yīng)的微操作的類型。如之前所述,微操作類型可以包括條件分支微操作、無(wú)條件分支微操作和其他微操作。X虹)08區(qū)域也被稱為第一維地址或簡(jiǎn)稱為第一地址。區(qū)域也被稱為第二維地址或簡(jiǎn)稱為第二地址。
[0160]新軌跡點(diǎn)的內(nèi)容可以對(duì)應(yīng)分支目標(biāo)微操作。換句話說(shuō),分支點(diǎn)的內(nèi)容存儲(chǔ)了分支目標(biāo)微操作地址信息。舉例而言,軌道表610中的對(duì)應(yīng)于一個(gè)分支目標(biāo)微操作的特定的行的相應(yīng)塊號(hào)剛X被作為第一地址存儲(chǔ)到所述分支點(diǎn)的內(nèi)容中。此外,所述分支目標(biāo)微操作的在其所在的微操作塊中的偏移量8階被作為第二地址存儲(chǔ)到所述分支點(diǎn)的內(nèi)容中。所述微操作塊內(nèi)偏移量8階可以根據(jù)分支微操作地址對(duì)應(yīng)的指令塊地址和分支增量計(jì)算并經(jīng)映射模塊107轉(zhuǎn)換得到。
[0161]軌道表中所有軌道的結(jié)束軌跡點(diǎn)都被標(biāo)記為一個(gè)特殊的軌跡點(diǎn),其內(nèi)容包含了一個(gè)必定分支轉(zhuǎn)移的類別信息,以及按順序執(zhí)行微操作時(shí)的下一微操作所在的下一軌道的位置信息。由于該下一微操作對(duì)應(yīng)于下一軌道的第一個(gè)軌跡點(diǎn),因此該特殊軌跡點(diǎn)的內(nèi)容可以只包含類型區(qū)域和第一地址0400?信息,或除了包含類型區(qū)域和第一地址0400?信息,還包含一個(gè)常數(shù)(如:‘0’〉。
[0162]根據(jù)本發(fā)明技術(shù)方案,處理器系統(tǒng)可以如之前實(shí)施例所述,具有一個(gè)獨(dú)立的結(jié)束標(biāo)志存儲(chǔ)器205 ;然而,根據(jù)軌道表610中的結(jié)束軌跡點(diǎn)就可以確定對(duì)應(yīng)微操作塊中的最后一個(gè)微操作,因此也可以省略之前實(shí)施例中的結(jié)束標(biāo)志存儲(chǔ)器205。
[0163]請(qǐng)參考圖7八,其為本發(fā)明所述軌跡點(diǎn)格式的實(shí)施例。在本實(shí)施例中,對(duì)于非結(jié)束軌跡點(diǎn),其軌跡點(diǎn)格式可以包括微操作類型732、第一地址734和第二地址736,其中一條軌道的至少兩個(gè)軌跡點(diǎn)的微操作類型能被同時(shí)讀出。因此,在實(shí)際存儲(chǔ)時(shí),可以將軌道中所有非結(jié)束軌跡點(diǎn)的微操作類型存儲(chǔ)在一起,而將這些非結(jié)束軌跡點(diǎn)的第一地址和第二地址存儲(chǔ)在一起。對(duì)于結(jié)束軌跡點(diǎn),其軌跡點(diǎn)格式可以包括微操作類型732、第一地址734和值為‘0’的常數(shù)738。同樣地,結(jié)束軌跡點(diǎn)的微操作類型732也可以和非結(jié)束軌跡點(diǎn)的微操作類型存儲(chǔ)在一起,而第一地址734和常數(shù)738則可以存儲(chǔ)在該軌道所有非結(jié)束軌跡點(diǎn)的第一地址、第二地址之后。此外,由于結(jié)束軌跡點(diǎn)的第二地址就是常數(shù)738的值‘0’,因此可以不存儲(chǔ)該常數(shù),當(dāng)循跡器614指向結(jié)束軌跡點(diǎn)時(shí)直接產(chǎn)生第二地址‘0’。
[0164]請(qǐng)參考圖78,其為根據(jù)本發(fā)明技術(shù)方案使用軌道表建立新軌道的方法的一個(gè)實(shí)施例。如圖78所示,一個(gè)已建立的軌道740 (用剛X。表示)可以包含三個(gè)分支微操作對(duì)應(yīng)的分支點(diǎn)742、744和746。當(dāng)審查分支點(diǎn)742時(shí),一條新軌道748 (用剛X = 1表示的下一個(gè)可用行)被建立起來(lái)用于存儲(chǔ)分支點(diǎn)742的目標(biāo)微操作,且軌道表610中的所述軌道的號(hào)碼或所述行號(hào)(即剛X = 1)被記錄在分支點(diǎn)742中作為第一地址。類似地,當(dāng)審查分支點(diǎn)744時(shí),在軌道表610中另一條新軌道350(用剛X = 2表示)被建立起來(lái),且軌道號(hào)碼被記錄在分支點(diǎn)744中;當(dāng)審查分支點(diǎn)746時(shí),在軌道表610中另一條新軌道752 (用剛X =3表示)被建立起來(lái),且軌道號(hào)碼被記錄在分支點(diǎn)746中。這樣,單條軌道中對(duì)應(yīng)全部分支點(diǎn)的新軌道可以被建立起來(lái)。
[0165]根據(jù)本發(fā)明技術(shù)方案,每個(gè)分支微操作的軌跡點(diǎn)中存儲(chǔ)的第二地址就是該分支微操作的分支目標(biāo)微操作在其所在微操作塊中的偏移量。
[0166]上述各個(gè)實(shí)施例采用直接尋址的方式計(jì)算分支目標(biāo)指令(微操作)地址并實(shí)現(xiàn)指令塊(微操作塊)的預(yù)取。然而,也可以使用間接尋址的方式。當(dāng)采用間接尋址方式時(shí),需要首先確定寄存器值(如:基地址寄存器值),從而計(jì)算分支目標(biāo)指令地址。由于寄存器的值是因指令執(zhí)行的結(jié)果而改變的,因此對(duì)于一條間接尋址分支微操作來(lái)說(shuō),在最后更新其基地址寄存器值的指令已計(jì)算得到新值、但尚未將該值寫入基地址寄存器時(shí)可以根據(jù)需要通過(guò)旁路路徑取得該新值進(jìn)行目標(biāo)地址的計(jì)算及后續(xù)操作。
[0167]請(qǐng)參考圖70,其為本發(fā)明所述循跡器讀指針移動(dòng)的實(shí)施例。在本實(shí)施例中,循跡器讀指針越過(guò)軌道表中的非分支微操作,移動(dòng)到軌道表中下一分支點(diǎn)并等待處理器核611分支判斷結(jié)果。為便于說(shuō)明,圖7中省略了與本實(shí)施例說(shuō)明內(nèi)容無(wú)關(guān)的部分或部件。在本實(shí)施例中,假設(shè)軌道表610中存儲(chǔ)的微操作類型等微操作信息均按微操作塊內(nèi)偏移地址從小到大從左到右排列,即當(dāng)按順序執(zhí)行這些微操作時(shí),各個(gè)微操作信息及相應(yīng)微操作類型的訪問(wèn)順序?yàn)閺淖笙蛴?。另假設(shè)軌道表610中指令類型為‘0’代表相應(yīng)的微操作為非分支微操作,微操作類型為‘1’代表相應(yīng)的微操作為分支微操作。
[0168]在本實(shí)施例沖,任一時(shí)刻可以讀出軌道表610中由第一地址794(塊號(hào),剛X〉指出的一條軌道中由第二地址796(偏移地址,8階)指出的代表微操作的表項(xiàng),也可以讀出軌道表610中由第一地址794指出的一條軌道中代表微操作類型的復(fù)數(shù)個(gè)表項(xiàng)甚至所有表項(xiàng)。
[0169]在軌道表610中每一行中微操作地址最大的一個(gè)微操作的表項(xiàng)的右方再增設(shè)一個(gè)結(jié)束表項(xiàng)以存放順序執(zhí)行下一個(gè)微操作的地址。結(jié)束表項(xiàng)的微操作類型總是被設(shè)定為‘1’。結(jié)束表項(xiàng)中微操作信息的第一地址是下一個(gè)微操作對(duì)應(yīng)的塊號(hào),第二地址(8階)恒定為零,指向該下一個(gè)微操作所在軌道的第一項(xiàng)。結(jié)束表項(xiàng)被定義為等同于一個(gè)無(wú)條件分支微操作。當(dāng)循跡器指向一個(gè)結(jié)束表項(xiàng)時(shí)總會(huì)產(chǎn)生一個(gè)內(nèi)部控制信號(hào)使選擇器788選擇軌道表610的輸出780 ;也會(huì)產(chǎn)生一個(gè)內(nèi)部控制信號(hào)使寄存器790更新。該內(nèi)部信號(hào)可以由軌道表610中結(jié)束表項(xiàng)中含有的特殊位觸發(fā);也可以由第二地址796指向結(jié)束表項(xiàng)來(lái)觸發(fā)。
[0170]在圖1中,循跡器614中主要包括了移位器782、前導(dǎo)零計(jì)數(shù)器784、加法器786、選擇器788和寄存器790。其中移位器782將從軌道表610讀出的代表復(fù)數(shù)條指令的復(fù)數(shù)個(gè)微操作類型798向左移位,其移動(dòng)位數(shù)由寄存器790輸出的第二地址指針796決定。移位器782輸出的移位后微操作類型799的最左邊一位是步進(jìn)位(一呢? 810。該步進(jìn)位的信號(hào)與從處理器核611來(lái)的8狀從:?信號(hào)共同決定寄存器790的更新。選擇器788由控制信號(hào)I'八控制,其輸出791為下一地址⑶6x1八(1(^688),其中含有第一地址部分及第二地址部分。當(dāng)為‘1’(分支成功)時(shí),選擇器788選擇軌道表610的輸出780(含有分支目標(biāo)微操作的第一地址及第二地址)做為輸出791。當(dāng)為‘0’ (分支不成功)時(shí),選擇器788選擇現(xiàn)第一地址794作為輸出791第一地址部分,加法器輸出797做為輸出791第二地址部分。微操作類型799被送到前導(dǎo)零計(jì)數(shù)器784以計(jì)算下一個(gè)‘1’微操作類型(代表相應(yīng)微操作為分支微操作)前有多少個(gè)‘0’微操作類型(代表相應(yīng)微操作為非分支微操作),其中不管步進(jìn)位是‘0’或‘1’都被計(jì)算為一位‘0’。得出的前導(dǎo)‘0’的數(shù)目795(步進(jìn)數(shù)312?則被送到加法器786與寄存器790輸出的第二地址796相加以得出下一分支微操作地址797。請(qǐng)注意,此下一分支微操作地址就是當(dāng)前微操作下一個(gè)分支微操作的第二地址,而在此之前的非分支微操作則會(huì)被循跡器614跳過(guò)(級(jí)如)。
[0171]當(dāng)?shù)诙刂分赶虼硪粋€(gè)微操作的表項(xiàng)時(shí),受第二地址控制的移位器也將軌道表610輸出的復(fù)數(shù)個(gè)微操作類型統(tǒng)一向左移位。此時(shí)代表軌道表610所讀出微操作的微操作類型被移位到微操作類型799中的最左面的步進(jìn)位。移位微操作類型799被送入前導(dǎo)零計(jì)數(shù)器計(jì)算下一條分支微操作之前微操作的條數(shù)。此時(shí)前導(dǎo)零計(jì)數(shù)器784的輸出795即是循跡器應(yīng)該前進(jìn)的步長(zhǎng)。此步長(zhǎng)與第二地址796由加法器786相加后即得出下一分支微操作地址797。
[0172]當(dāng)移位后微操作類型799中的步進(jìn)位信號(hào)為‘0’時(shí),這表示第二地址796所指向的軌道表610中的表項(xiàng)為非分支微操作,此時(shí)該步進(jìn)位信號(hào)控制寄存器790更新,而選擇器788在為‘0’的信號(hào)792控制下選擇下一分支微操作地址797成為第二地址796,第一地址794保持不變。此時(shí)新的第一第二地址指向同一軌道中的下一個(gè)分支微操作,此分支微操作前的非分支微操作均被跳過(guò)。新的第二地址控制移位器796將微操作類型798移位,使代表此分支微操作的微操作類型位落到微操作類型799的步進(jìn)位上供下一步操作。
[0173]當(dāng)移位后微操作類型799中的步進(jìn)位信號(hào)為‘1’時(shí),這表示第二地址所指向的軌道表610中的表項(xiàng)代表分支微操作。此時(shí)該步進(jìn)位信號(hào)不影響寄存器790更新,寄存器790由處理器核611來(lái)的8狀從:?信號(hào)793控制更新。此時(shí)加法器輸出797是當(dāng)前分支微操作同一軌道上的下一個(gè)分支微操作的地址,同時(shí)存儲(chǔ)器輸出780是當(dāng)前分支微操作的分支目標(biāo)微操作地址。
[0174]當(dāng)8狀從:?信號(hào)為‘1’時(shí),選擇器788的輸出791更新寄存器790。如果此時(shí)處理器核來(lái)的信號(hào)792為‘0’時(shí),代表處理器核611決定在這個(gè)分支點(diǎn)選擇順序執(zhí)行,此時(shí)選擇器788選擇下一分支微操作地址797。此時(shí)寄存器790輸出的第一地址794不變,下一分支微操作地址797成為新的第二地址796。此時(shí)新的第一第二地址指向同一軌道中的下一個(gè)分支微操作。新的第二地址控制移位器796將微操作類型798移位,使代表此分支微操作的微操作類型位落到微操作類型799的步進(jìn)位上供下一步操作。
[0175]如果此時(shí)處理器核611來(lái)的信號(hào)792為‘1’時(shí),代表處理器核611決定在這個(gè)分支點(diǎn)選擇程序跳轉(zhuǎn)到分支目標(biāo)微操作,此時(shí)選擇器788選擇從軌道表610中讀出的分支目標(biāo)微操作地址780成為由寄存器790輸出的第一地址794及未來(lái)第二地址795。此時(shí)8狀從:?信號(hào)793控制寄存器790鎖存上述第一第二地址成為新的第一第二地址。該新的第一第二地址指向可能不在同一軌道上的分支目標(biāo)微操作地址。新的第二地址控制移位器796將指令類型798移位,使代表此分支微操作的微操作類型位落到微操作類型799的步進(jìn)位上供下一步操作。
[0176]當(dāng)?shù)诙刂分赶蜍壽E表結(jié)束表項(xiàng)(下一行表項(xiàng))時(shí),如前所述內(nèi)部控制信號(hào)控制選擇器788選擇軌道表610的輸出780,并更新寄存器790。此時(shí)新的第一地址794為軌道表610的結(jié)束表項(xiàng)中記載的下一軌道的第一地址,第二地址為零。此時(shí)第二地址控制控制移位器796將微操作類型798移零位,開始下一步操作。如此周而復(fù)始,循跡器614與軌道表610配合,會(huì)跳過(guò)軌道表中的非分支微操作而總是指向分支微操作。
[0177]回到圖6,當(dāng)循跡器614的讀指針631指向一個(gè)分支點(diǎn)時(shí),該軌跡點(diǎn)內(nèi)容被經(jīng)由總線652讀出。若該分支點(diǎn)中存儲(chǔ)的是分支目標(biāo)微操作地址剛X和8階,則由該軌跡點(diǎn)內(nèi)容中的分支目標(biāo)微操作的剛X被用于對(duì)微操作存儲(chǔ)器606尋址,可以讀出包含該分支目標(biāo)微操作在內(nèi)的微操作塊。該微操作塊可以被填充到微操作讀緩沖607中,以備分支轉(zhuǎn)移發(fā)生后提供相應(yīng)分支目標(biāo)指令給處理器核611執(zhí)行。具體操作可以先將總線652上的剛X』階送到指令讀緩存607匹配,如匹配成功,則分支目標(biāo)指令微操作塊已在微操作讀緩沖607中,不需要作后續(xù)操作。如果匹配不成功,微操作讀緩沖607可以將剛X地址通過(guò)總線660送往指令微操作存儲(chǔ)器606,讀出相應(yīng)微操作塊經(jīng)692總線存進(jìn)微操作讀緩沖607。同時(shí),該地址也經(jīng)總線661送往塊內(nèi)結(jié)束標(biāo)志存儲(chǔ)器205從中讀出該指令塊的結(jié)束標(biāo)志送到微操作讀緩沖607中與相應(yīng)的微操作塊一并存儲(chǔ)。
[0178]若該分支點(diǎn)中存儲(chǔ)的是分支目標(biāo)指令地址,則該分支目標(biāo)指令地址經(jīng)總線652送出,其塊地址部分經(jīng)總線654被送到主動(dòng)表604匹配。如果匹配成功,則得到該分支目標(biāo)指令對(duì)應(yīng)的微操作所在的微操作塊的塊號(hào)(剛幻,根據(jù)映射模塊107中由該剛X指向的行中存儲(chǔ)的映射關(guān)系得到該分支目標(biāo)指令對(duì)應(yīng)的分支目標(biāo)微操作的微操作偏移地址8階,并將該剛X及8階經(jīng)由總線632寫進(jìn)該分支點(diǎn)中,以替換原來(lái)存儲(chǔ)的分支目標(biāo)指令地址。同時(shí),所述剛X被用于對(duì)微操作存儲(chǔ)器606尋址,可以讀出包含該分支目標(biāo)微操作在內(nèi)的微操作塊。該微操作塊可以被填充到微操作讀緩沖607中,以備分支轉(zhuǎn)移發(fā)生后提供相應(yīng)分支目標(biāo)指令給處理器核611執(zhí)行。
[0179]如果匹配不成功,則該分支目標(biāo)指令地址被送到低層存儲(chǔ)器以獲取對(duì)應(yīng)指令塊。同時(shí)主動(dòng)表604中的替換邏輯分配一個(gè)塊號(hào)(剛幻給該指令塊;該指令地址高位(即指令塊地址)被存進(jìn)主動(dòng)表604中該剛X指示的表項(xiàng),取來(lái)的指令塊經(jīng)掃描轉(zhuǎn)換器轉(zhuǎn)換成微操作塊后,經(jīng)由總線691被填充到微操作存儲(chǔ)器103由該剛X指向的存儲(chǔ)塊,并將轉(zhuǎn)換時(shí)產(chǎn)生的地址映射關(guān)系存儲(chǔ)在映射模塊107由該剛X指向的行中,同時(shí)根據(jù)所述映射關(guān)系得到所述分支目標(biāo)指令對(duì)應(yīng)的分支目標(biāo)微操作的微操作偏移地址8階,并將該剛X及8階經(jīng)由總線632寫進(jìn)軌道表中相應(yīng)表項(xiàng)替換原來(lái)匹配不成功的分支目標(biāo)指令地址。同時(shí),所述剛X被用于對(duì)微操作存儲(chǔ)器606尋址,可以讀出包含該分支目標(biāo)微操作在內(nèi)的微操作塊。該微操作塊可以被填充到微操作讀緩沖607中,以備分支轉(zhuǎn)移發(fā)生后提供相應(yīng)分支目標(biāo)指令給處理器核611執(zhí)行。
[0180]另外,軌道表610也經(jīng)由總線658將當(dāng)前正在執(zhí)行的微操作塊的順序下一個(gè)微操作塊的結(jié)束軌跡點(diǎn)內(nèi)容送出。若該結(jié)束軌跡點(diǎn)中存儲(chǔ)的是分支目標(biāo)微操作地址剛X和8階,則將剛X』階經(jīng)總線658送到指令讀緩存607匹配,如匹配成功,則下一微操作塊已在微操作讀緩沖607中,不需要作后續(xù)操作。如果匹配不成功,微操作讀緩沖607可以將剛X地址通過(guò)總線660送往指令微操作存儲(chǔ)器606,讀出相應(yīng)微操作塊經(jīng)692總線存進(jìn)微操作讀緩沖607。同時(shí),該地址也經(jīng)總線661送往塊內(nèi)結(jié)束標(biāo)志存儲(chǔ)器205從中讀出該指令塊的結(jié)束標(biāo)志也送到微操作讀緩沖607中與相應(yīng)的微操作塊一并存儲(chǔ)。
[0181]若該分支點(diǎn)中存儲(chǔ)的是指令塊地址,則該指令塊地址經(jīng)總線658送出,經(jīng)總線654被送到主動(dòng)表604匹配。如果匹配成功,則得到該下一微操作塊的塊號(hào)(剛幻,并將該剛X經(jīng)由總線632寫進(jìn)該結(jié)束軌跡點(diǎn)中,以替換原來(lái)存儲(chǔ)的指令塊地址。同時(shí),所述剛X被用于對(duì)微操作存儲(chǔ)器606尋址,可以讀出包含該分支目標(biāo)微操作在內(nèi)的微操作塊。該微操作塊可以被填充到微操作讀緩沖607中,以備分支轉(zhuǎn)移發(fā)生后提供相應(yīng)分支目標(biāo)指令給處理器核611執(zhí)行。
[0182]如果匹配不成功,則該指令塊地址被送到低層存儲(chǔ)器以獲取對(duì)應(yīng)指令塊。同時(shí)主動(dòng)表604中的替換邏輯分配一個(gè)塊號(hào)(剛幻給該指令塊;該指令地址高位(即指令塊地址)被存進(jìn)主動(dòng)表604中該剛X指示的表項(xiàng),取來(lái)的指令塊經(jīng)掃描轉(zhuǎn)換器109轉(zhuǎn)換成微操作塊后,經(jīng)由總線691被填充到微操作存儲(chǔ)器103由該剛X指向的存儲(chǔ)塊,并將轉(zhuǎn)換時(shí)產(chǎn)生的地址映射關(guān)系存儲(chǔ)在映射模塊107由該剛X指向的行中,同時(shí)根據(jù)所述映射關(guān)系得到所述分支目標(biāo)指令對(duì)應(yīng)的分支目標(biāo)微操作的微操作偏移地址8階,并將該剛X經(jīng)由總線632寫進(jìn)軌道表中相應(yīng)結(jié)束軌跡點(diǎn)表項(xiàng)替換原來(lái)匹配不成功的指令塊地址。同時(shí),所述剛X被用于對(duì)微操作存儲(chǔ)器606尋址,可以讀出該下一微操作塊。該微操作塊可以被填充到微操作讀緩沖607中,以備執(zhí)行到當(dāng)前微操作塊最后一條微操作后,提供下一微操作塊處理器核611執(zhí)行。
[0183]當(dāng)處理器核611執(zhí)行循跡器614指向的分支微操作時(shí),若所述分支微操作沒(méi)有發(fā)生分支轉(zhuǎn)移,則處理器核611送出的信號(hào)320為‘0’,循跡器614的讀指針631指向該分支微操作后的第一個(gè)分支點(diǎn),或在該分支微操作后的軌跡點(diǎn)中沒(méi)有分支點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。信號(hào)320為‘0’也使得微操作讀緩沖607中令牌繼續(xù)傳遞給分支微操作后的順序微操作的相應(yīng)令牌傳遞器,提供該分支微操作之后的順序微操作給處理器核611執(zhí)行。
[0184]若所述分支微操作成功發(fā)生分支轉(zhuǎn)移,則處理器核611送出的信號(hào)320為‘ 1 ’。微操作讀緩沖607在信號(hào)320為‘ 1 ’的控制下清除所有令牌傳遞器,并以經(jīng)總線652送出的分支源表項(xiàng)中存儲(chǔ)的分支目標(biāo)微操作地址剛X和8階譯碼,在分支目標(biāo)微操作相應(yīng)的令牌傳遞器處注入令牌,提供分支目標(biāo)微操作及其之后的順序微操作給處理器核611執(zhí)行。此時(shí),分支目標(biāo)微操作塊經(jīng)過(guò)上述分支目標(biāo)與微操作讀緩沖中地址存儲(chǔ)器的匹配過(guò)程已經(jīng)存進(jìn)微操作讀緩沖607或至少在存儲(chǔ)的過(guò)程中。循跡器614也在信號(hào)320為‘1’的控制下選擇經(jīng)總線652送出的分支源表項(xiàng)中存儲(chǔ)的分支目標(biāo)微操作地址剛X和8階鎖存進(jìn)循跡器614成為新的循跡器地址指針631,使指針631指向軌道表中的分支目標(biāo)微操作對(duì)應(yīng)的軌跡點(diǎn)。此后循跡器614移動(dòng)讀指針指向分支目標(biāo)微操作塊(新的當(dāng)前微操作塊)對(duì)應(yīng)軌道中該分支目標(biāo)微操作之后的第一個(gè)分支點(diǎn),或在該分支目標(biāo)微操作后的軌跡點(diǎn)中沒(méi)有分支點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。
[0185]若循跡器614指向的是軌道中的結(jié)束軌跡點(diǎn),循跡器614的讀指針更新為該最后軌跡點(diǎn)中的位置內(nèi)容值,即指向下一軌道的第一個(gè)軌跡點(diǎn),從而指向新的當(dāng)前微操作塊。當(dāng)微操作讀緩沖中的令牌到達(dá)一個(gè)微操作塊中由結(jié)束標(biāo)志標(biāo)明的令牌傳遞器時(shí),會(huì)被傳遞到下一微操作塊總線上,并控制相應(yīng)微操作經(jīng)總線693送往處理器核611供執(zhí)行,此后如無(wú)成功的分支,則令牌順序傳遞。同時(shí),循跡器614移動(dòng)讀指針631指向新的當(dāng)前微操作塊對(duì)應(yīng)軌道中的第一個(gè)分支點(diǎn),或在該軌道沒(méi)有分支點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。依次重復(fù)上述過(guò)程,即可在處理器核611執(zhí)行微操作前將該微操作填充到微操作存儲(chǔ)器606及微操作讀緩沖607中,使得處理器核611在對(duì)該微操作的獲取時(shí)延最短,從而提高處理器性倉(cāng)泛。
[0186]根據(jù)本發(fā)明所述技術(shù)方案,當(dāng)主動(dòng)表604表項(xiàng)已滿且需要建立新的塊地址/行號(hào)匹配對(duì)時(shí),需要對(duì)主動(dòng)表604進(jìn)行替換,即從主動(dòng)表604中移除一個(gè)已有的塊地址/行號(hào)匹配對(duì),代以新的塊地址/行號(hào)匹配對(duì);從微操作存儲(chǔ)器606中移除相應(yīng)的微操作塊,代以新的微操作塊。軌道表610中每個(gè)分支點(diǎn)的內(nèi)容包含了其分支目標(biāo)微操作軌跡點(diǎn)的塊號(hào)(即第一地址)和偏移地址(即第二地址)。如果尚在軌道表610中存儲(chǔ)的分支目標(biāo)軌跡點(diǎn)的塊號(hào)對(duì)應(yīng)的主動(dòng)表604中匹配對(duì)及相應(yīng)的微操作存儲(chǔ)塊被替換,則會(huì)產(chǎn)生塊號(hào)未變、但塊號(hào)所代表的存儲(chǔ)內(nèi)容已改變的情況,導(dǎo)致該分支點(diǎn)將指向錯(cuò)誤的微操作塊??梢栽黾右粋€(gè)相關(guān)表(⑶1^61^11:1011〖處匕),記錄主動(dòng)表604中每個(gè)匹配對(duì)是否在軌道表中作為軌跡點(diǎn)中分支目標(biāo)的相關(guān)信息。主動(dòng)表(或微操作存儲(chǔ)器)根據(jù)相關(guān)表中記錄的信息,只替換沒(méi)有作為分支目標(biāo)的軌道為新的軌道。
[0187]請(qǐng)參考圖8,其為本發(fā)明所述填充微操作讀緩沖及由微操作讀緩沖直接向處理器核提供微操作以供執(zhí)行的實(shí)施例。為便于說(shuō)明,在圖8中只顯示了軌道表610、循跡器614、微操作存儲(chǔ)器606、微操作讀緩沖607、微操作讀緩沖相應(yīng)的控制單元801和處理器核611,省略了其他部分。
[0188]在圖8中,循跡器614的讀指針831沿軌道表610中當(dāng)前微操作塊對(duì)應(yīng)的軌道移動(dòng)并停止在當(dāng)前微操作對(duì)應(yīng)軌跡點(diǎn)之后的第一個(gè)分支點(diǎn)處,并讀出該軌跡點(diǎn)的內(nèi)容833送往控制單元801。同時(shí),從當(dāng)前軌道讀出的結(jié)束軌跡點(diǎn)的內(nèi)容(即下一微操作塊對(duì)應(yīng)軌道的第一個(gè)軌跡點(diǎn)地址835)也被送到控制單元801。
[0189]控制單元801中存儲(chǔ)了微操作讀緩沖607中各行存儲(chǔ)的微操作對(duì)應(yīng)的塊地址。在本實(shí)施例中,以微操作讀緩沖607中的每一行存儲(chǔ)了微操作存儲(chǔ)器606中一個(gè)微操作塊,且循跡器614讀指針631指向的分支點(diǎn)的內(nèi)容是剛X和8階、即微操作存儲(chǔ)器607中已經(jīng)存儲(chǔ)了相應(yīng)的分支目標(biāo)微操作塊為例進(jìn)行說(shuō)明。對(duì)于所述分支點(diǎn)的內(nèi)容是分支目標(biāo)指令地址的情況,根據(jù)本發(fā)明技術(shù)方案,先按之前實(shí)施例所述方法從低層次存儲(chǔ)器獲取所述分支目標(biāo)指令塊,轉(zhuǎn)換后填充到微操作存儲(chǔ)器606,并將所述分支點(diǎn)內(nèi)容相應(yīng)更新為剛X和8階,該過(guò)程不再贅述。
[0190]控制單元801對(duì)接收到的分支目標(biāo)軌跡點(diǎn)地址和下一軌道第一個(gè)軌跡點(diǎn)的地址中的第一地址部分(剛X〉分別進(jìn)行匹配。若對(duì)分支目標(biāo)軌跡點(diǎn)剛X和/或下一軌道剛X的匹配成功,則說(shuō)明對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在微操作讀緩沖607中;否則需要將相應(yīng)剛X送往微操作存儲(chǔ)器606讀出對(duì)應(yīng)指令塊并填充到微操作讀緩沖607的可用行中。微操作讀緩沖607可用行的確定方法可以采用如主動(dòng)表604替換時(shí)采用的可用行確定方法,在此不再贅述。
[0191]進(jìn)一步地,可以根據(jù)分支目標(biāo)軌跡點(diǎn)地址中的第二地址部分(8階)在微操作讀緩沖607中找到對(duì)應(yīng)的分支目標(biāo)微操作。請(qǐng)參考圖9,其為本發(fā)明所述控制單元進(jìn)行匹配的一個(gè)實(shí)施例。為了便于說(shuō)明,圖9中顯示了微操作讀緩沖607中的一個(gè)微操作塊901,及控制單元801中與該微操作塊對(duì)應(yīng)的控制單元子邏輯903。在本實(shí)施例中,微操作塊901由8個(gè)微操作構(gòu)成,按微操作地址遞增順序從上向下分別對(duì)應(yīng)微操作塊901中的每一項(xiàng)。控制單元子邏輯903包括第一地址存儲(chǔ)器905、比較器907和911,以及目標(biāo)譯碼器915。其中,第一地址存儲(chǔ)器905中存儲(chǔ)了微操作塊901對(duì)應(yīng)的塊號(hào)(剛X〉。比較器907將從總線835接收到的下一微操作塊剛X與第一地址存儲(chǔ)器905中的剛X進(jìn)行匹配,若匹配成功,則比較器907輸出的匹配成功信號(hào)指向微操作塊901的第一個(gè)微操作(即圖9中最上一項(xiàng)微操作),表示微操作塊901就是當(dāng)前微操作塊的下一微操作塊,且其指向的微操作就是當(dāng)前微操作塊執(zhí)行完畢后處理器核611所需的下一微操作;若匹配不成功,則比較器907輸出的信號(hào)無(wú)效,表示微操作塊901不是當(dāng)前微操作塊的下一微操作塊。
[0192]比較器911將從總線833接收到的分支目標(biāo)微操作剛X與第一地址存儲(chǔ)器905中的剛X進(jìn)行匹配,若匹配成功,表示微操作塊901就是所述分支目標(biāo)微操作所在的微操作塊,將比較器911輸出的匹配成功信號(hào)作為使能信號(hào)送往目標(biāo)譯碼器915,控制目標(biāo)譯碼器915對(duì)接收到的分支目標(biāo)微操作8階進(jìn)行譯碼,并根據(jù)譯碼結(jié)果925指向微操作塊901中的一個(gè)微操作,該微操作就是所述分支目標(biāo)微操作。所匹配不成功,則表示微操作塊901不是所述分支目標(biāo)微操作所在的微操作塊,因此不向目標(biāo)譯碼器915輸出使能信號(hào),從而阻止目標(biāo)譯碼器915的譯碼。
[0193]回到圖8,當(dāng)循跡器614的讀指針831指向一個(gè)新的軌道時(shí),先讀出該軌道的結(jié)束軌跡點(diǎn)內(nèi)容835并送往控制單元801進(jìn)行匹配。若匹配不成功,則說(shuō)明在微操作讀緩沖607中尚未存儲(chǔ)該軌道對(duì)應(yīng)的下一微操作塊,則控制單元801將該下一微操作塊剛X送往微操作存儲(chǔ)器606讀出對(duì)應(yīng)微操作塊并填充到微操作讀緩沖607中。同時(shí)可以確定所述下一微操作塊在微操作讀緩沖607中的位置。若匹配成功,則說(shuō)明在微操作讀緩沖607中已經(jīng)存儲(chǔ)了該軌道對(duì)應(yīng)的下一微操作塊,可以直接確定所述下一微操作塊在微操作讀緩沖607中的位置。
[0194]循跡器614的讀指針831則按之前實(shí)施例所述方法提前移動(dòng)并停止在當(dāng)前微操作對(duì)應(yīng)的軌跡點(diǎn)之后的第一個(gè)分支點(diǎn),并從軌道表610中讀出分支目標(biāo)軌跡點(diǎn)的剛X和8階。此時(shí),分支目標(biāo)軌跡點(diǎn)的剛X和8階被送往控制單元801并按圖9實(shí)施例所述方法進(jìn)行匹配。若匹配不成功,則說(shuō)明在微操作讀緩沖607中尚未存儲(chǔ)該分支目標(biāo)微操作所在的微操作塊,則控制單元801將分支目標(biāo)軌跡點(diǎn)的剛即其所在微操作塊的剛幻送往微操作存儲(chǔ)器606讀出對(duì)應(yīng)微操作塊并填充到微操作讀緩沖607中,并確定所述分支目標(biāo)微操作在微操作讀緩沖607中的位置。若匹配成功,則說(shuō)明在微操作讀緩沖607中已經(jīng)存儲(chǔ)了該分支目標(biāo)微操作所在的微操作塊,因此可以確定所述分支目標(biāo)微操作在微操作讀緩沖607中的位置。
[0195]這樣,通過(guò)控制單元801中的匹配,可以在微操作讀緩沖607中找到分支目標(biāo)微操作和下一微操作塊的第一個(gè)微操作。
[0196]根據(jù)本發(fā)明技術(shù)方案,控制單元801接收的時(shí)鐘由系統(tǒng)時(shí)鐘與處理器核611的流水線執(zhí)行情況組合形成。即在任意一個(gè)系統(tǒng)始終周期內(nèi),若處理器核611需要讀取一個(gè)微操作,則控制單元801接收到一個(gè)有效的時(shí)鐘信號(hào);若處理器核611因流水線暫停等原因,暫時(shí)不需要讀取新的微操作,則控制單元801不會(huì)接收到時(shí)鐘信號(hào)。這樣,所述時(shí)鐘信號(hào)表明了處理器核611當(dāng)前是否需要獲取微操作,因此控制單元801可以根據(jù)該時(shí)鐘信號(hào),在每個(gè)有效的時(shí)鐘周期向處理器核611提供一個(gè)微操作。具體地,控制單元801中存儲(chǔ)了對(duì)應(yīng)微操作讀緩沖607中當(dāng)前被輸出給處理器核611的微操作對(duì)應(yīng)的令牌信號(hào)。即,所述令牌信號(hào)對(duì)應(yīng)的微操作,就是當(dāng)前輸出給處理器核611所需的當(dāng)前微操作。對(duì)于控制單元801而言,在每個(gè)有效時(shí)鐘周期均對(duì)所述令牌信號(hào)進(jìn)行傳遞,從而將令牌信號(hào)傳遞、對(duì)應(yīng)到下一次處理器核611所需的微操作。這樣,控制單元801可以根據(jù)令牌信號(hào)所在位置,主動(dòng)向處理器核111輸出正確的指令。
[0197]需要注意的時(shí),本實(shí)施例給出的僅是控制單元801向處理器核611主動(dòng)按需提供微操作的一個(gè)例子。從本發(fā)明的方案出發(fā),可以采用其他各種合適的握手信號(hào)或通訊協(xié)議來(lái)保證控制單元801向處理器核611主動(dòng)按需提供微操作,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),這些都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
[0198]請(qǐng)參考圖10,其為本發(fā)明所述傳遞令牌信號(hào)的一種實(shí)施例。為便于說(shuō)明,圖10只顯示了軌道表1010、微操作存儲(chǔ)器606、循跡器614、控制單元1001和包含了令牌傳遞器的微操作讀緩沖607,其中令牌傳遞器1011、1013、1015和1017分別對(duì)應(yīng)微操作1071、1073、1075和1077。微操作存儲(chǔ)器606和循跡器614均與之前實(shí)施例中的相同。
[0199]此外,在本實(shí)施例中,每個(gè)微操作塊對(duì)應(yīng)的第一個(gè)令牌傳遞器中的令牌信號(hào)寄存器的輸入均來(lái)源與一個(gè)與門,該與門的一個(gè)輸入來(lái)源于全局總線1022,另一個(gè)輸入來(lái)源于該微操作塊對(duì)應(yīng)的下一剛X比較器的輸出。
[0200]在本實(shí)施例中,當(dāng)沒(méi)有分支轉(zhuǎn)移發(fā)生時(shí),微操作讀緩沖607中的令牌傳遞器繼續(xù)依次傳遞令牌信號(hào),從而向處理器核611提供令牌信號(hào)所在令牌傳遞器對(duì)應(yīng)的指令以供處理器核611執(zhí)行,使得處理器核611依次執(zhí)行順序微操作。
[0201]當(dāng)令牌信號(hào)從當(dāng)前微操作塊對(duì)應(yīng)的最后一個(gè)令牌傳遞器傳遞到下一微操作塊對(duì)應(yīng)的第一個(gè)令牌傳遞器時(shí),假設(shè)圖10中的微操作1073是當(dāng)前微操作塊的最后一個(gè)微操作,微操作1075是下一微操作塊的第一個(gè)微操作。當(dāng)令牌信號(hào)位于微操作1073對(duì)應(yīng)的令牌傳遞器1013時(shí),控制微操作1073從總線1003輸出。同時(shí),令牌信號(hào)從總線1005輸出送往或邏輯1007?;蜻壿?007的其他輸入來(lái)源于微操作讀緩沖607中其他微操作塊對(duì)應(yīng)的最后一個(gè)令牌傳遞器,即,在微操作讀緩沖607中的微操作塊數(shù)目與或邏輯1007的輸入數(shù)目相等且一一對(duì)應(yīng)。這樣,只要令牌信號(hào)被傳遞到任何一個(gè)微操作塊對(duì)應(yīng)的最后一個(gè)令牌傳遞器,則之后該令牌信號(hào)會(huì)被傳遞到或邏輯1007作為其輸出。
[0202]進(jìn)一步地,或邏輯1007的輸出被送到微操作讀緩沖607中每個(gè)微操作塊對(duì)應(yīng)第一個(gè)令牌傳遞器,如令牌傳遞器1015。每個(gè)微操作塊對(duì)應(yīng)的第一個(gè)令牌傳遞器的另一個(gè)輸入則來(lái)源于該微操作塊對(duì)應(yīng)的用于確定下一微操作塊的比較器(如比較器1033和1035)。從軌道表1010中當(dāng)前軌道的結(jié)束軌跡點(diǎn)中讀出的剛X被送到控制單元1001中的所有下一剛X比較器與相應(yīng)的微操作塊的剛X進(jìn)行匹配。由于令牌傳遞器1015對(duì)應(yīng)所述下一微操作塊的第一個(gè)微操作,因此控制單元1001的所有下一剛X比較器中只有下一剛X比較器1035輸出匹配成功的結(jié)果(即‘廠),其他的下一剛X比較器均輸出匹配不成功的結(jié)果(即‘0’ )。這樣,令牌傳遞器1015之前的與門1019輸出‘1’并寫入令牌信號(hào)寄存器1009中,而其他所有令牌傳遞器中的令牌信號(hào)寄存器的值均為‘0’,從而將令牌信號(hào)正確地傳遞到下一微操作塊第一個(gè)微操作對(duì)應(yīng)的令牌傳遞器中,以繼續(xù)向處理器核611輸出正確的微操作供執(zhí)行。
[0203]另一方面,當(dāng)分支轉(zhuǎn)移發(fā)生、需要將令牌信號(hào)從當(dāng)前微操作對(duì)應(yīng)的令牌傳遞器傳遞到分支目標(biāo)微操作對(duì)應(yīng)的令牌傳遞器時(shí),假設(shè)圖10中的令牌傳遞器1017是分支轉(zhuǎn)移發(fā)生時(shí)令牌信號(hào)所在的令牌傳遞器,微操作1073是所述分支轉(zhuǎn)移對(duì)應(yīng)的分支目標(biāo)微操作。在本實(shí)施例中,當(dāng)處理器核611產(chǎn)生表示分支轉(zhuǎn)移發(fā)生的信號(hào)320時(shí),該信號(hào)被送到所有令牌信號(hào)寄存器的復(fù)位端,從而清除令牌信號(hào)。同時(shí)從軌道表1010中讀出的分支目標(biāo)軌跡點(diǎn)剛X也被送到所有目標(biāo)剛X比較器進(jìn)行匹配。在本實(shí)施例中,由于微操作1073是所述分支轉(zhuǎn)移對(duì)應(yīng)的分支目標(biāo)微操作,因此只有該微操作塊對(duì)應(yīng)的目標(biāo)剛X比較器1029的比較結(jié)果為‘1’,從而控制目標(biāo)譯碼器1021對(duì)分支目標(biāo)軌跡點(diǎn)8階進(jìn)行譯碼。根據(jù)譯碼結(jié)果,目標(biāo)譯碼器1021的輸出1039為‘1’,并經(jīng)過(guò)或門1041寫入令牌信號(hào)寄存器1041,從而在下一周期可以通過(guò)總線1003向處理器核611輸出分支目標(biāo)微操作1073。
[0204]回到圖6,當(dāng)從低層次存儲(chǔ)器獲取到一個(gè)指令塊時(shí),掃描轉(zhuǎn)換器608對(duì)所述指令塊審查并提取出相關(guān)信息,并對(duì)其中的直接分支指令,通過(guò)對(duì)指令塊地址、指令塊內(nèi)偏移地址及分支增量三者相加得到分支目標(biāo)指令地址。同時(shí),并將所述指令塊轉(zhuǎn)換為微操作塊。相應(yīng)地,根據(jù)由替換算法確定的剛X,所述微操作塊被填充到微操作存儲(chǔ)器606由該剛X指向的存儲(chǔ)塊中,其塊地址被填充到主動(dòng)表604中由該剛X指向的行中,相應(yīng)的映射關(guān)系被存儲(chǔ)到映射模塊107中由該8似指向的行中。
[0205]所述分支目標(biāo)指令地址中的塊地址部分送往主動(dòng)表604匹配。若匹配成功并得到一個(gè)剛X,則根據(jù)映射模塊107由該剛X指向的行存儲(chǔ)的映射關(guān)系,將所述分支目標(biāo)指令地址中的塊內(nèi)偏移地址轉(zhuǎn)換為微操作偏移地址8階,并將所述剛X和8階存儲(chǔ)到軌道表610中所述分支微操作對(duì)應(yīng)的分支點(diǎn)中。若匹配不成功,則將所述分支目標(biāo)指令地址直接存儲(chǔ)在所述微操作對(duì)應(yīng)的分支點(diǎn)中。以此類推,直至完成整個(gè)指令塊的審查、提取、轉(zhuǎn)換和填充。
[0206]微操作讀緩沖607按之前實(shí)施例所述方法向處理器核611輸出微操作供執(zhí)行。循跡器614的讀指針則提前移動(dòng)到當(dāng)前處理器核611正在執(zhí)行的微操作之后的第一個(gè)分支微操作在軌道表610中對(duì)應(yīng)的分支點(diǎn),并讀出該分支點(diǎn)的內(nèi)容;同時(shí),讀出結(jié)束軌跡點(diǎn)的內(nèi)容。
[0207]當(dāng)從軌道表610中讀出的分支點(diǎn)內(nèi)容包含的是剛X和8階時(shí),將所述剛X送往微操作讀緩沖607的所有控制單元進(jìn)行匹配。若匹配成功,則由匹配成功的控制單元中的目標(biāo)譯碼器對(duì)所述8階進(jìn)行譯碼,從而在微操作讀緩沖607中找到分支目標(biāo)微操作。若匹配不成功,則根據(jù)所述8似從微操作存儲(chǔ)器606中讀出相應(yīng)的微操作塊填充到微操作讀緩沖607中按替換算法確定的存儲(chǔ)塊中,同時(shí)由該存儲(chǔ)塊對(duì)應(yīng)的控制單元中的目標(biāo)譯碼器對(duì)所述8階進(jìn)行譯碼,從而在微操作讀緩沖607中找到所述分支目標(biāo)微操作。
[0208]當(dāng)從軌道表610中讀出的分支點(diǎn)內(nèi)容包含的是分支目標(biāo)指令地址時(shí),將所述分支目標(biāo)指令地址中的塊地址部分送往主動(dòng)表604進(jìn)行匹配。若匹配成功,則將匹配得到的剛X送往微操作讀緩沖607的所有控制單元進(jìn)行匹配,以在微操作讀緩沖607中找到所述分支目標(biāo)微操作。該過(guò)程與之前實(shí)施例所述相同。
[0209]若匹配不成功,則按之前實(shí)施例所述方法從低層次存儲(chǔ)器獲取該分支目標(biāo)微操作對(duì)應(yīng)的指令塊,進(jìn)行相應(yīng)的轉(zhuǎn)換、審查及填充,得到所述分支目標(biāo)微操作對(duì)應(yīng)的剛X和8階。同時(shí)將轉(zhuǎn)換得到的微操作塊填充到微操作讀緩沖607中按替換算法確定的存儲(chǔ)塊中,同時(shí)由該存儲(chǔ)塊對(duì)應(yīng)的控制單元中的目標(biāo)譯碼器對(duì)所述8階進(jìn)行譯碼,從而在微操作讀緩沖607中找到所述分支目標(biāo)微操作。
[0210]相應(yīng)地,可以根據(jù)從軌道表610中讀出的結(jié)束軌跡點(diǎn)內(nèi)容的不同進(jìn)行類似的操作。該操作過(guò)程與對(duì)分支點(diǎn)的處理過(guò)程類似,不同之處在于,結(jié)束軌跡點(diǎn)內(nèi)容對(duì)應(yīng)的8階恒為‘0’,因此不需要對(duì)8階譯碼即可在剛X指向的微操作塊中找到所需微操作。
[0211]這樣,在處理器核611執(zhí)行分支微操作之前,微操作讀緩沖607就已經(jīng)找到了所述分支微操作的分支目標(biāo)微操作;同樣地,在處理器核611執(zhí)行到微操作塊的最后一個(gè)微操作之前,微操作讀緩沖607就已經(jīng)找到了所述最后一個(gè)微操作按順序執(zhí)行的后一微操作。
[0212]當(dāng)令牌信號(hào)傳遞到一條分支微操作時(shí),所述分支微操作被主動(dòng)送給處理器核611執(zhí)行。之后,繼續(xù)按順序依次傳遞令牌信號(hào),并將對(duì)應(yīng)微操作送處理器核611執(zhí)行,直到處理器核611執(zhí)行所述分支微操作產(chǎn)生執(zhí)行結(jié)果。若所述執(zhí)行結(jié)果為分支轉(zhuǎn)移沒(méi)有發(fā)生,則繼續(xù)傳遞令牌信號(hào)并輸出對(duì)應(yīng)微操作送處理器核611執(zhí)行;循跡器614中,在I八1(1^信號(hào)792的控制下選擇器788選擇來(lái)源于加法器786的輸出,其輸出在信號(hào)793的控制下被存儲(chǔ)到寄存器790中以更新讀指針794指向下一個(gè)分支點(diǎn)。之后的操作過(guò)程如前所述。
[0213]若所述執(zhí)行結(jié)果為分支轉(zhuǎn)移成功發(fā)生,則處理器核611清除所述分支微操作之后已執(zhí)行的微操作的執(zhí)行結(jié)果或中間結(jié)果;同時(shí)按之前實(shí)施例所述方法將令牌信號(hào)傳遞到目標(biāo)微操作對(duì)應(yīng)的令牌信號(hào)傳遞器,向處理器核611輸出所述目標(biāo)微操作及其后微操作供執(zhí)行;循跡器614中,在信號(hào)792的控制下選擇器788選擇來(lái)源于軌道表610的輸出,其輸出在信號(hào)793的控制下被存儲(chǔ)到寄存器790中以更新讀指針794指向分支目標(biāo)微操作對(duì)應(yīng)的軌跡點(diǎn),并按之前實(shí)施例所述方法移動(dòng)讀指針794直至指向所述分支目標(biāo)微操作軌跡點(diǎn)之后的第一個(gè)分支點(diǎn)。這樣,新的下一軌道剛X和下一分支點(diǎn)的剛X及8階均被讀出并送到微操作讀緩沖607,從而在微操作讀緩沖607中找到相應(yīng)的下一微操作塊及分支目標(biāo)微操作塊。之后的操作過(guò)程如前所述。
[0214]可選地,微操作讀緩沖607也可以僅提供下一微操作塊,而由微操作存儲(chǔ)器606提供所述分支目標(biāo)微操作塊。在這種情況下,可以將分支目標(biāo)微操作的剛X送到微操作存儲(chǔ)器606進(jìn)行尋址,找到分支目標(biāo)微操作塊,并由分支目標(biāo)微操作的8階從所述分支目標(biāo)微操作塊中找到分支目標(biāo)微操作,準(zhǔn)備好供處理器核611執(zhí)行。此時(shí),若分支轉(zhuǎn)移沒(méi)有發(fā)生,貝0循跡器614讀指針794指向下一分支點(diǎn),讀出分支目標(biāo)微操作的剛X和8階,并按同樣方法在微操作存儲(chǔ)器606中找到相應(yīng)的分支目標(biāo)微操作塊并準(zhǔn)備好分支目標(biāo)微操作供處理器核611執(zhí)行。若分支轉(zhuǎn)移成功發(fā)生,則將所述已經(jīng)準(zhǔn)備好的分支目標(biāo)微操作塊填充到微操作讀緩沖607,并將令牌信號(hào)傳遞到微操作讀緩沖607中所述分支目標(biāo)微操作對(duì)應(yīng)的令牌傳遞器,以及將所述已經(jīng)準(zhǔn)備好的分支目標(biāo)微操作送往處理器核611執(zhí)行。之后的操作過(guò)程如前所述。
[0215]隨著處理器核611的執(zhí)行,若當(dāng)前軌道的剩余軌跡點(diǎn)中已經(jīng)沒(méi)有分支點(diǎn),則循跡器614讀指針794指向結(jié)束軌跡點(diǎn),并將該結(jié)束軌跡點(diǎn)的內(nèi)容(即下一軌道的剛X和‘0’)作為讀指針794的值,從而指向下一軌道;之后按前述實(shí)施例相同方法移動(dòng)讀指針794指向所述軌道中的第一個(gè)分支點(diǎn)。
[0216]當(dāng)令牌信號(hào)到達(dá)當(dāng)前微操作塊的最后一條微操作對(duì)應(yīng)的令牌信號(hào)傳遞器并輸出相應(yīng)微操作后,所述令牌信號(hào)被傳遞到下一微操作塊第一個(gè)微操作對(duì)應(yīng)的令牌信號(hào)傳遞器,并繼續(xù)依次輸出對(duì)應(yīng)微操作及傳遞令牌信號(hào),直到到達(dá)循跡器614讀指針794之前指向的所述第一個(gè)分支點(diǎn)。之后的操作過(guò)程如前所述。
[0217]根據(jù)本發(fā)明技術(shù)方案,還可以對(duì)之前實(shí)施例中的部件進(jìn)行組合,形成更多形式的處理器系統(tǒng),以實(shí)現(xiàn)同樣的功能。請(qǐng)參考圖11,其為本發(fā)明所述處理器系統(tǒng)的另一個(gè)實(shí)施例。
[0218]如圖11所示,所述處理器系統(tǒng)包含一個(gè)標(biāo)簽存儲(chǔ)器105、一個(gè)轉(zhuǎn)換器109、一個(gè)映射模塊107、一個(gè)微操作存儲(chǔ)器1106、一個(gè)微操作讀緩沖1107和一個(gè)處理器核211。其中,標(biāo)簽存儲(chǔ)器105和映射模塊107與圖2實(shí)施例中的對(duì)應(yīng)部件功能相同。
[0219]微操作存儲(chǔ)器1106和微操作讀緩沖1107的結(jié)構(gòu)與功能與圖6實(shí)施例中的微操作存儲(chǔ)器606及微操作讀緩沖607類似。不同之處在于,微操作存儲(chǔ)器1106中的存儲(chǔ)塊與標(biāo)簽存儲(chǔ)器105中的行對(duì)應(yīng),可以按圖2實(shí)施例所述方法根據(jù)標(biāo)簽存儲(chǔ)器105中對(duì)塊地址匹配成功項(xiàng)得到的剛X找到微操作存儲(chǔ)器1106中的對(duì)應(yīng)微操作塊。而微操作讀緩沖1107中的控制單元中的寄存器存儲(chǔ)的不是對(duì)應(yīng)微操作塊的剛X,而是該微操作塊的指令塊地址。此外,在本實(shí)施例中,表示微操作塊最后一個(gè)微操作的結(jié)束標(biāo)志被存儲(chǔ)在微操作存儲(chǔ)器1106中對(duì)應(yīng)每個(gè)微操作塊的最后一個(gè)微操作,以及微操作讀緩沖1107中每個(gè)微操作塊的最后一個(gè)微操作對(duì)應(yīng)的令牌傳遞器中。這樣,當(dāng)令牌信號(hào)被傳遞到微操作塊的最后一個(gè)微操作時(shí),微操作讀緩沖1107不但輸出對(duì)應(yīng)微操作供處理器1111執(zhí)行,還輸出所述結(jié)束標(biāo)志以更新指令塊地址。
[0220]此外,在本實(shí)施例中,對(duì)于分支微操作,在微操作讀緩沖1107中存儲(chǔ)的不是對(duì)應(yīng)的分支增量,而是補(bǔ)償后的分支增量。所述補(bǔ)償后的分支增量可通過(guò)之前實(shí)施例所述方法得到。
[0221]處理器核1111的結(jié)構(gòu)和功能與圖2實(shí)施例中的處理器核相似。不同之處在于,處理器核1111中的指令地址產(chǎn)生模塊只生成指令地址中的塊地址部分。請(qǐng)參考圖12,其為本發(fā)明所述指令地址產(chǎn)生模塊的另一個(gè)實(shí)施例。
[0222]在圖12中,當(dāng)執(zhí)行順序微操作時(shí),由寄存器1201輸出指令塊地址;當(dāng)執(zhí)行分支目標(biāo)指令時(shí),由寄存器1203輸出指令塊地址。選擇器1217則由表示分支轉(zhuǎn)移是否發(fā)生的I八1(別信號(hào)320控制。
[0223]具體地,當(dāng)處理器核1111執(zhí)行順序微操作時(shí),若處理器核1111當(dāng)前執(zhí)行的微操作不是微操作塊中的最后一個(gè)微操作,則選擇器1217選擇寄存器1201的輸出反饋給寄存器1201,從而保持寄存器1201的值不變(即指令塊地址不變),即從總線1121輸出的是原指令塊地址。
[0224]若處理器核1111當(dāng)前執(zhí)行的微操作是微操作塊中的最后一個(gè)微操作,則,選擇器1217選擇來(lái)源于寄存器1201的值作為加法器1223的一個(gè)輸入;加法器1223的另一個(gè)輸入是來(lái)源于微操作讀緩沖1107的表示當(dāng)前微操作是所在微操作塊中的最后一個(gè)微操作的信號(hào)1221(值為‘廠),從而對(duì)寄存器1201中存儲(chǔ)的指令塊地址進(jìn)行增一操作,并將增一后的值存回寄存器1201作為新的指令塊地址。這樣,從總線1121輸出的是下一指令塊地址。
[0225]若處理器核1111執(zhí)行分支微操作且分支轉(zhuǎn)移發(fā)生,則此時(shí)由加法器1225對(duì)從寄存器1201送來(lái)的當(dāng)前指令塊地址和從微操作讀緩沖1107送來(lái)的補(bǔ)償后的分支增量的高位部分相加,得到新的指令塊地址并存儲(chǔ)在寄存器1203中。這樣,從總線1125輸出的是分支目標(biāo)指令塊地址。
[0226]需要說(shuō)明的是,在本實(shí)施例中,指令塊地址產(chǎn)生模塊位于處理器核1111內(nèi)部,并分別通過(guò)總線1121和1125輸出供選擇后在標(biāo)簽存儲(chǔ)器105匹配。然而所述指令塊地址產(chǎn)生模塊也可以獨(dú)立存在與處理器核1111之外,此情況下所有操作過(guò)程與該模塊位于處理器核1111內(nèi)的情況相同,在此不另行說(shuō)明。
[0227]回到圖11,處理器核1111通過(guò)總線1121和1125輸出的指令塊地址經(jīng)選擇器1119選擇后被被送到微操作讀緩沖1107的控制單元與存儲(chǔ)在其中的指令塊地址進(jìn)行匹配,以確定所述塊地址對(duì)應(yīng)的指令塊對(duì)應(yīng)的微操作塊是否已經(jīng)存儲(chǔ)在微操作讀緩沖1107中。若尚未存儲(chǔ)在微操作讀緩沖1107中則使用上述方法在被處理器核211執(zhí)行到所述微操作塊前將其存儲(chǔ)到微操作讀緩沖1107中。所述指令塊地址還被送到標(biāo)簽存儲(chǔ)器105中進(jìn)行匹配以確定所述塊地址對(duì)應(yīng)的指令塊對(duì)應(yīng)的微操作塊是否已經(jīng)存儲(chǔ)在微操作存儲(chǔ)器1106中,以及當(dāng)所述微操作塊已經(jīng)存儲(chǔ)在微操作存儲(chǔ)器1106中時(shí)其對(duì)應(yīng)的塊號(hào)剛X。微操作讀緩沖1107如圖6實(shí)施例所述,隨著令牌信號(hào)的傳遞,依次輸出對(duì)應(yīng)的微操作供處理器核1111執(zhí)行。
[0228]具體地,當(dāng)處理器核1111按地址順序執(zhí)行微操作、且未執(zhí)行到當(dāng)前微操作塊最后一個(gè)微操作時(shí),由于指令塊地址沒(méi)有改變,因此不需要進(jìn)行指令塊地址在微操作讀緩沖1107及標(biāo)簽存儲(chǔ)器105中的匹配;微操作讀緩沖1107中的令牌信號(hào)在當(dāng)前微操作塊對(duì)應(yīng)的令牌信號(hào)傳遞器中依次傳遞,并輸出對(duì)應(yīng)微操作供處理器核1111執(zhí)行。
[0229]對(duì)于按地址順序執(zhí)行時(shí)的下一微操作塊,選擇器1119選擇來(lái)源于總線1121的指令塊地址(即下一微操作塊對(duì)應(yīng)的指令塊地址),并在微操作讀緩沖1107對(duì)該指令塊地址進(jìn)行匹配。
[0230]若指令塊地址在微操作讀緩沖1107的控制單元中匹配成功,則對(duì)應(yīng)的微操作塊就是所述下一微操作塊。
[0231]若指令塊地址在微操作讀緩沖1107的控制單元中匹配不成功,則將所述指令塊地址送到標(biāo)簽存儲(chǔ)器105匹配。在這種情況下,若匹配成功,則得到剛X,并將微操作存儲(chǔ)器1106中由該剛X指向的微操作塊填充到微操作讀緩沖1107中由替換算法確定的存儲(chǔ)塊中,使得微操作讀緩沖1107包含所述下一微操作塊。
[0232]若指令塊地址在標(biāo)簽存儲(chǔ)器105匹配不成功,則對(duì)該指令塊地址低位補(bǔ)‘0’,構(gòu)成完整的指令地址(即所述指令塊地址對(duì)應(yīng)的第一條指令的指令地址),再如之前實(shí)施例所述,將所述指令地址送往更低層次存儲(chǔ)器獲取對(duì)應(yīng)指令塊。獲取來(lái)的指令塊經(jīng)轉(zhuǎn)換器109轉(zhuǎn)換為微操作塊填充到微操作存儲(chǔ)器1106中由替換算法確定的剛X指向的存儲(chǔ)塊中,并將轉(zhuǎn)換得到的映射關(guān)系存儲(chǔ)在映射模塊107中由所述剛X指向的行中。同時(shí),所述微操作塊也被填充到微操作讀緩沖1107中由替換算法確定的存儲(chǔ)塊中,使得微操作讀緩沖1107包含所述下一微操作塊。
[0233]這樣,當(dāng)令牌信號(hào)被傳遞到當(dāng)前微操作塊的最后一個(gè)微操作對(duì)應(yīng)的令牌信號(hào)傳遞器時(shí)(即處理器核1111執(zhí)行到所述最后一個(gè)微操作時(shí)),令牌信號(hào)受結(jié)束標(biāo)志的控制,從當(dāng)前微操作塊最后一個(gè)微操作對(duì)應(yīng)的令牌傳遞器直接傳遞到所述下一微操作塊(即前述匹配成功的微操作塊)的第一個(gè)微操作對(duì)應(yīng)的令牌傳遞器,之后隨著令牌信號(hào)的傳遞,依次輸出對(duì)應(yīng)的微操作供處理器核1111執(zhí)行的過(guò)程如前所述。
[0234]當(dāng)微操作讀緩沖1107向處理器核1111輸出分支微操作供執(zhí)行時(shí),可以如圖12實(shí)施例所述通過(guò)對(duì)該分支微操作的塊地址加上補(bǔ)償后的分支增量的高位計(jì)算出分支目標(biāo)指令塊地址。所述指令塊地址被送到微操作讀緩沖1107中的控制單元進(jìn)行塊地址匹配,并將所述指令塊地址送到標(biāo)簽存儲(chǔ)器105進(jìn)行塊地址匹配。
[0235]若指令塊地址在微操作讀緩沖1107的控制單元中匹配成功,則匹配成功的微操作塊就是所述分支目標(biāo)指令對(duì)應(yīng)的分支微操作塊。此時(shí),由于微操作存儲(chǔ)器1106中包含了微操作讀緩沖1107中的所有微操作塊,因此在標(biāo)簽存儲(chǔ)器105中的指令塊地址匹配必定成功并得到剛X。之后,所述補(bǔ)償后的分支增量中的低位部分1131作為指令塊內(nèi)偏移地址被送到映射模塊107由所述剛X指向的映射關(guān)系轉(zhuǎn)換為微操作偏移地址1133。根據(jù)微操作偏移地址1133即可在微操作讀緩沖1107中匹配成功的微操作塊中找到分支目標(biāo)微操作。
[0236]若指令塊地址在微操作讀緩沖1107的控制單元中匹配不成功,則將所述指令塊地址送到標(biāo)簽存儲(chǔ)器105匹配。在這種情況下,若匹配成功,則得到剛X,并將微操作存儲(chǔ)器1106中由該剛X指向的微操作塊填充到微操作讀緩沖1107中由替換算法確定的存儲(chǔ)塊中,使得微操作讀緩沖1107包含所述分支目標(biāo)微操作塊。同時(shí),所述補(bǔ)償后的分支增量中的低位部分1131作為指令塊內(nèi)偏移地址被送到映射模塊107由所述剛X指向的映射關(guān)系轉(zhuǎn)換為微操作偏移地址1133。根據(jù)微操作偏移地址1133即可在微操作讀緩沖1107中的所述分支目標(biāo)微操作塊中找到分支目標(biāo)微操作。
[0237]這樣,當(dāng)處理器核1111尚未產(chǎn)生所述分支微操作的執(zhí)行結(jié)果時(shí),令牌信號(hào)繼續(xù)按地址順序依次傳遞并輸出微操作供處理器核1111執(zhí)行;當(dāng)處理器核1111執(zhí)行所述分支微操作并產(chǎn)生執(zhí)行結(jié)果時(shí),若分支轉(zhuǎn)移沒(méi)有發(fā)生,則令牌信號(hào)繼續(xù)逐級(jí)依次傳遞輸出對(duì)應(yīng)的微操作供處理器核1111執(zhí)行。若分支轉(zhuǎn)移發(fā)生,則清除所述分支微操作之后已經(jīng)被執(zhí)行的微操作對(duì)應(yīng)的執(zhí)行結(jié)果及中間結(jié)果,并按圖6實(shí)施例所述方法中止令牌信號(hào)的繼續(xù)傳遞,對(duì)微操作讀緩沖1107中所述剛X』階對(duì)應(yīng)的令牌信號(hào)傳遞器注入令牌信號(hào),使得微操作讀緩沖1107輸出相應(yīng)的分支目標(biāo)微操作供處理器核1111執(zhí)行。之后,隨著令牌信號(hào)的傳遞,依次輸出對(duì)應(yīng)的微操作供處理器核1111執(zhí)行的過(guò)程如前所述。
[0238]請(qǐng)參考圖13,其為本發(fā)明所述處理器系統(tǒng)的又一個(gè)實(shí)施例。如圖13所示,所述處理器系統(tǒng)包含一個(gè)主動(dòng)表604、一個(gè)掃描轉(zhuǎn)換器608、一個(gè)軌道表610、一個(gè)循跡器614、一個(gè)映射模塊107、一個(gè)微操作存儲(chǔ)器606、一個(gè)選擇器207、一個(gè)選擇器213和一個(gè)處理器核1311。其中,主動(dòng)表604、掃描轉(zhuǎn)換器608、軌道表610、循跡器614、映射模塊107和微操作存儲(chǔ)器606與圖6實(shí)施例中相應(yīng)部件的功能和結(jié)構(gòu)相同。選擇器207和213與圖2實(shí)施例中相應(yīng)部件的功能和結(jié)構(gòu)相同。
[0239]處理器核1311的結(jié)構(gòu)和功能與圖2實(shí)施例中的處理器核相似。不同之處在于,處理器核1311中的指令地址產(chǎn)生模塊只生成指令地址中的偏移地址部分。請(qǐng)參考圖14,其為本發(fā)明所述指令地址產(chǎn)生模塊的另一個(gè)實(shí)施例。
[0240]在圖14中,當(dāng)執(zhí)行順序微操作時(shí),由寄存器1405輸出微操作偏移地址1323 ;當(dāng)執(zhí)行分支目標(biāo)指令時(shí),由寄存器1407輸出指令偏移地址1327。選擇器1415則由表示分支轉(zhuǎn)移是否發(fā)生的信號(hào)320控制。選擇器1421受比較器1427的輸出結(jié)果控制。
[0241]具體地,當(dāng)處理器核1311執(zhí)行順序微操作時(shí),選擇器1415選擇寄存器1405的輸出1323送到增量器1413進(jìn)行增一操作,增一后的值(即下一個(gè)微操作的偏移地址)被送到選擇器1421。選擇器1421的另一個(gè)輸入為全‘0’。比較器1427的一個(gè)輸入來(lái)源于由映射模塊107送來(lái)的8階信號(hào)234,另一個(gè)輸入來(lái)源于存儲(chǔ)在軌道表610中結(jié)束軌跡點(diǎn)位置信息319。當(dāng)比較器1427的比較結(jié)果1439為不等時(shí),表示所述增一后的微操作偏移地址不是結(jié)束軌跡點(diǎn),因此,選擇器1421受比較結(jié)果1439控制,選擇來(lái)源于增量器1413的輸出存儲(chǔ)到寄存器1405中,實(shí)現(xiàn)微操作偏移地址增一。當(dāng)比較器1427的比較結(jié)果1439為相等時(shí),表示所述增一后的微操作偏移地址就是結(jié)束軌跡點(diǎn),因此,選擇器1421受比較結(jié)果1439控制,選擇全‘0’存儲(chǔ)到寄存器1405中,實(shí)現(xiàn)微操作偏移地址清‘0’。寄存器1405輸出的微操作偏移地址1323被作為8階用于順序執(zhí)行微操作時(shí)在微操作存儲(chǔ)器606中進(jìn)行列尋址。
[0242]當(dāng)循跡器614讀指針631指向一個(gè)分支點(diǎn)時(shí),從軌道表610讀出相應(yīng)分支點(diǎn)內(nèi)容。若所述分支點(diǎn)內(nèi)容包含的是剛X、8階,則使用所述8階就可以對(duì)微操作存儲(chǔ)器606中進(jìn)行列尋址。若所述軌跡點(diǎn)內(nèi)容包含的是分支目標(biāo)指令地址,則所述分支目標(biāo)指令地址中的低位部分1429被存儲(chǔ)在寄存器1407中并作為指令偏移地址輸1327出。
[0243]需要說(shuō)明的是,在本實(shí)施例中,指令地址產(chǎn)生模塊位于處理器核1311內(nèi)部。然而所述指令地址產(chǎn)生模塊也可以獨(dú)立存在與處理器核1311之外,此情況下所有操作過(guò)程與該模塊位于處理器核1311內(nèi)的情況相同,在此不另行說(shuō)明。
[0244]回到圖13,與圖6實(shí)施例所述方法類似,掃描轉(zhuǎn)換器608對(duì)接收到的指令塊進(jìn)行審查和轉(zhuǎn)換,在軌道表610中建立相應(yīng)的軌道,并將轉(zhuǎn)換得到的微操作塊存儲(chǔ)在微操作存儲(chǔ)器606中。循跡器614讀指針631指向當(dāng)前微操作對(duì)應(yīng)的軌跡點(diǎn)之后的第一個(gè)分支點(diǎn),并讀出所述分支點(diǎn)的內(nèi)容。
[0245]若所述分支點(diǎn)內(nèi)容包含的是剛X和8階,則微操作存儲(chǔ)器606中由所述剛X及8階指向的微操作就是分支目標(biāo)微操作。同時(shí),所述8階被送到如圖14所示的指令地址產(chǎn)生模塊作為選擇器1415的輸入1417。
[0246]若所述分支點(diǎn)內(nèi)容包含的是分支目標(biāo)指令地址,則所述分支目標(biāo)指令地址中的指令塊地址部分被送到主動(dòng)表604匹配。若指令塊地址在主動(dòng)表604中匹配成功,則得到該指令塊對(duì)應(yīng)的剛X,并將所述分支目標(biāo)指令地址中的指令偏移地址送到映射模塊107中根據(jù)由所述剛X指向的映射關(guān)系轉(zhuǎn)換為微操作偏移地址8階。這樣,微操作存儲(chǔ)器606中由所述剛X及8階指向的微操作就是分支目標(biāo)微操作。同時(shí),所述8階被送到如圖14所示的指令地址產(chǎn)生模塊作為選擇器1415的輸入1417。
[0247]若指令塊地址在主動(dòng)表604中匹配不成功,則按之前實(shí)施例所述方法將所述分支目標(biāo)指令地址送往低層次存儲(chǔ)器以獲取對(duì)應(yīng)指令塊。當(dāng)所述指令塊被獲取到時(shí),掃描轉(zhuǎn)換器608對(duì)所述指令塊進(jìn)行審查,在軌道表610中建立相應(yīng)軌道,并將所述指令決轉(zhuǎn)換為微操作塊并填充到微操作存儲(chǔ)器606中由替換算法確定的8似指向的存儲(chǔ)塊中,同時(shí)將轉(zhuǎn)換時(shí)生成的映射關(guān)系存儲(chǔ)在映射模塊107中由所述剛X指向的行中。在轉(zhuǎn)換過(guò)程中,同時(shí)也產(chǎn)生了所述分支目標(biāo)指令對(duì)應(yīng)的微操作的偏移地址8階。這樣,微操作存儲(chǔ)器606中由所述剛X及8階指向的微操作就是分支目標(biāo)微操作。同時(shí),所述8階被送到如圖14所示的指令地址產(chǎn)生模塊作為選擇器1415的輸入1417。
[0248]當(dāng)處理器核1311尚未執(zhí)行到所述分支微操作,或執(zhí)行所述分支微操作但尚未產(chǎn)生執(zhí)行結(jié)果時(shí),向處理器核1311由循跡器614讀指針631中剛X指向微操作存儲(chǔ)器606的一個(gè)微操作塊中由指令地址產(chǎn)生模塊中寄存器1405輸出的8階指向的一個(gè)微操作供執(zhí)行。
[0249]當(dāng)處理器核1311執(zhí)行分支微操作產(chǎn)生執(zhí)行結(jié)果時(shí),若分支轉(zhuǎn)移沒(méi)有發(fā)生,則循跡器614讀指針631繼續(xù)移動(dòng)指向下一個(gè)分支點(diǎn)并重復(fù)上述操作。若分支轉(zhuǎn)移成功發(fā)生,則清除所述分支微操作之后已經(jīng)被執(zhí)行的微操作對(duì)應(yīng)的執(zhí)行結(jié)果及中間結(jié)果,根據(jù)軌道表610的分支點(diǎn)內(nèi)容中包含的剛X和8階從微操作存儲(chǔ)器606中讀出所述分支目標(biāo)微操作供處理器核1311執(zhí)行。同時(shí),循跡器614讀指針631的值也相應(yīng)更新為所述剛X和8階,并繼續(xù)移動(dòng)直到指向所述分支目標(biāo)微操作之后的第一個(gè)分支點(diǎn)。所述8階還被送到指令地址產(chǎn)生模塊作為選擇器1415的輸入1417,并被選擇器1415選擇后送往增量器1413以計(jì)算下一微操作對(duì)應(yīng)的8階。后續(xù)操作與之前實(shí)施例所述相同,在此不再贅述。
[0250]根據(jù)本發(fā)明技術(shù)方案,可以對(duì)圖2實(shí)施例進(jìn)行擴(kuò)展,以支持更多層次的緩存結(jié)構(gòu)。請(qǐng)參考圖15八,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的一個(gè)實(shí)施例。
[0251]在圖15八中,所述處理器系統(tǒng)包含微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107、轉(zhuǎn)換器109、二級(jí)指令存儲(chǔ)器1503、二級(jí)標(biāo)簽存儲(chǔ)器1505和處理器核211。其中,微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107、轉(zhuǎn)換器109和處理器核211與圖2實(shí)施例中的相應(yīng)部件的結(jié)構(gòu)和功能相同。
[0252]在圖15八中,微操作存儲(chǔ)器103相當(dāng)于存儲(chǔ)了微操作的一級(jí)緩存,標(biāo)簽存儲(chǔ)器105相當(dāng)于一級(jí)標(biāo)簽存儲(chǔ)器。而二級(jí)指令存儲(chǔ)器1503則是存儲(chǔ)了指令的二級(jí)緩存,二級(jí)標(biāo)簽存儲(chǔ)器1505則是與二級(jí)指令存儲(chǔ)器1503對(duì)應(yīng)的標(biāo)簽存儲(chǔ)器。
[0253]在本實(shí)施例中,轉(zhuǎn)換器109位于微操作存儲(chǔ)器103和二級(jí)指令存儲(chǔ)器1503之間,只有從二級(jí)指令存儲(chǔ)器1503輸出向微操作存儲(chǔ)器103填充的指令塊才會(huì)被轉(zhuǎn)換并產(chǎn)生映射關(guān)系。因此,一級(jí)緩存系統(tǒng)(包括微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107和轉(zhuǎn)換器109)的操作過(guò)程與圖2實(shí)施例相同,而二級(jí)緩存系統(tǒng)(包括二級(jí)指令存儲(chǔ)器1503和二級(jí)標(biāo)簽存儲(chǔ)器1505)的操作過(guò)程與傳統(tǒng)的二級(jí)緩存系統(tǒng)相同,在此均不再說(shuō)明。
[0254]根據(jù)本發(fā)明技術(shù)方案,也可以將轉(zhuǎn)換器放置在二級(jí)緩存之外,使得二級(jí)緩存中也存儲(chǔ)微操作。請(qǐng)參考圖158,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例。
[0255]在圖158中,所述處理器系統(tǒng)包含微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107、轉(zhuǎn)換器1559、二級(jí)微操作存儲(chǔ)器1553、二級(jí)標(biāo)簽存儲(chǔ)器1555、映射模塊1557、結(jié)束標(biāo)志存儲(chǔ)器1561和處理器核211。其中,微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205、映射模塊107和處理器核211與圖15八實(shí)施例中的相應(yīng)部件的結(jié)構(gòu)和功能相同。
[0256]在圖158中,微操作存儲(chǔ)器103、標(biāo)簽存儲(chǔ)器105、結(jié)束標(biāo)志存儲(chǔ)器205和映射模塊107構(gòu)成了一級(jí)緩存系統(tǒng),二級(jí)微操作存儲(chǔ)器1553、二級(jí)標(biāo)簽存儲(chǔ)器1555、映射模塊1557和結(jié)束標(biāo)志存儲(chǔ)器1561構(gòu)成了二級(jí)緩存系統(tǒng)。與圖15八類似,微操作存儲(chǔ)器103相當(dāng)于存儲(chǔ)了微操作的一級(jí)緩存,標(biāo)簽存儲(chǔ)器105相當(dāng)于一級(jí)標(biāo)簽存儲(chǔ)器。不同之處在于,二級(jí)微操作存儲(chǔ)器1553是存儲(chǔ)了微操作的二級(jí)緩存,而二級(jí)標(biāo)簽存儲(chǔ)器1555是與二級(jí)指令存儲(chǔ)器1553對(duì)應(yīng)的標(biāo)簽存儲(chǔ)器,映射模塊1557中存儲(chǔ)了二級(jí)微操作存儲(chǔ)器1553中各個(gè)微操作偏移地址與相應(yīng)的指令偏移地址之間的映射關(guān)系。
[0257]在本實(shí)施例中,轉(zhuǎn)換器1559位于二級(jí)微操作存儲(chǔ)器1553之外,因此從更低層次存儲(chǔ)器送來(lái)的指令塊先經(jīng)轉(zhuǎn)換器1559轉(zhuǎn)換為微操作塊后再填充到二級(jí)微操作存儲(chǔ)器1503中由替換算法確定的存儲(chǔ)塊中。相應(yīng)地,指令塊地址及轉(zhuǎn)換產(chǎn)生的映射關(guān)系被分別填充到二級(jí)標(biāo)簽存儲(chǔ)器1555及映射模塊1557的相應(yīng)行中,并將微操作的最后一個(gè)微操作位置信息填充到結(jié)束標(biāo)志存儲(chǔ)器1561的相應(yīng)行中。
[0258]具體地,當(dāng)處理器核211所需的微操作的塊地址在標(biāo)簽存儲(chǔ)器105中匹配成功時(shí),即所需微操作位于微操作存儲(chǔ)器1553中,則處理器核211取指、執(zhí)行的過(guò)程如圖2實(shí)施例所述,在此不再說(shuō)明。
[0259]當(dāng)處理器核211所需的微操作的塊地址在標(biāo)簽存儲(chǔ)器105中匹配不成功時(shí),該塊地址被送到二級(jí)標(biāo)簽存儲(chǔ)器1555進(jìn)行匹配。若所述塊地址在二級(jí)標(biāo)簽存儲(chǔ)器1555中匹配成功,則得到匹配成功項(xiàng)對(duì)應(yīng)的二級(jí)塊號(hào)剛2乂。根據(jù)所述剛2乂對(duì)二級(jí)微操作存儲(chǔ)器1553尋址,讀出對(duì)應(yīng)的微操作塊并填充到微操作存儲(chǔ)器103中由替換算法確定的一級(jí)塊號(hào)8附X指向的存儲(chǔ)塊中;同時(shí)從映射模塊1557中讀出由所述剛2乂指向的映射關(guān)系并填充到映射模塊107中由所述8^以指向的行中,從而完成將微操作塊從二級(jí)緩存填充到一級(jí)緩存的操作。之后處理器核211從一級(jí)緩存系統(tǒng)獲取微操作的過(guò)程如前所述。
[0260]若所述塊地址在二級(jí)標(biāo)簽存儲(chǔ)器1555中匹配不成功,則對(duì)該指令塊地址低位補(bǔ)‘0’,構(gòu)成完整的指令地址(即所述指令塊地址對(duì)應(yīng)的第一條指令的指令地址),再如之前實(shí)施例所述,將所述指令地址送往更低層次存儲(chǔ)器獲取對(duì)應(yīng)指令塊。當(dāng)所述指令塊被送到二級(jí)緩存時(shí),轉(zhuǎn)換器1559將所述指令塊轉(zhuǎn)換微操作塊、產(chǎn)生相應(yīng)的映射關(guān)系,并得到結(jié)束標(biāo)志(即最后一個(gè)微操作對(duì)應(yīng)的位置信息所述指令塊地址被填充到二級(jí)標(biāo)簽存儲(chǔ)器1555中由替換算法確定的二級(jí)塊號(hào)剛2乂指向的行中;所述微操作塊被填充到二級(jí)微操作存儲(chǔ)器1553中由所述8吧乂指向的存儲(chǔ)塊中;所述映射關(guān)系被填充到映射模塊1557中由所述剛2乂指向的行中;所述結(jié)束標(biāo)志被填充到結(jié)束標(biāo)志存儲(chǔ)器1561中由所述剛2乂指向的行中。這樣就完成了指令塊填充到二級(jí)緩存的過(guò)程。
[0261]所述指令塊地址、微操作塊、映射關(guān)系和結(jié)束標(biāo)志也被分別填充到一級(jí)緩存中的標(biāo)簽存儲(chǔ)器105、微操作存儲(chǔ)器103、映射模塊107和結(jié)束標(biāo)志存儲(chǔ)器205中由替換算法確定的一級(jí)塊號(hào)剛IX指向的行或存儲(chǔ)塊中。該過(guò)程及處理器核211從一級(jí)緩存獲取微操作的過(guò)程如前所述。
[0262]需要說(shuō)明的是,本實(shí)施例所述結(jié)構(gòu)和操作過(guò)程還可以被擴(kuò)展到更多層次的緩存系統(tǒng)中。
[0263]根據(jù)本發(fā)明技術(shù)方案,還可以對(duì)圖6實(shí)施例進(jìn)行擴(kuò)展,以支持更多層次的緩存結(jié)構(gòu)。請(qǐng)參考圖16,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例。
[0264]在圖16中,所述處理器系統(tǒng)包含軌道表1601、一級(jí)微操作存儲(chǔ)器1603、二級(jí)指令存儲(chǔ)器1605、標(biāo)簽存儲(chǔ)器1607、映射模塊1609、循跡器1613、掃描轉(zhuǎn)換器1615和處理器核1611。其中,軌道表1601、一級(jí)微操作存儲(chǔ)器1603、循跡器1613和掃描轉(zhuǎn)換器1615構(gòu)成了一級(jí)緩存系統(tǒng);二級(jí)指令存儲(chǔ)器1605、標(biāo)簽存儲(chǔ)器1607和映射模塊1609構(gòu)成了二級(jí)緩存系統(tǒng)。
[0265]在本實(shí)施例中,二級(jí)指令存儲(chǔ)器1605中的存儲(chǔ)塊與標(biāo)簽存儲(chǔ)器1607中的行及映射模塊1609中的行一一對(duì)應(yīng),并由同一個(gè)8吧乂指向。二級(jí)指令存儲(chǔ)器1605中的存儲(chǔ)塊用于存儲(chǔ)指令塊,所述指令塊的塊地址被存儲(chǔ)在標(biāo)簽存儲(chǔ)器1607的對(duì)應(yīng)行中。二級(jí)指令存儲(chǔ)器1605中的指令在其所在二級(jí)指令塊中的偏移地址為8吧%即指令地址的低位部分)。
[0266]與圖6實(shí)施例類似,一級(jí)微操作存儲(chǔ)器1603中的存儲(chǔ)塊與軌道表1601中的行(軌道)一一對(duì)應(yīng),并由同一個(gè)剛IX指向。一級(jí)微操作存儲(chǔ)器1603的存儲(chǔ)塊用于存儲(chǔ)與指令塊對(duì)應(yīng)的微操作塊。一級(jí)微操作存儲(chǔ)器1603中的微操作在其所在一級(jí)微操作塊中的偏移地址為剛IV。
[0267]在本實(shí)施例中,二級(jí)指令塊的大小與一級(jí)微操作塊對(duì)應(yīng)的指令塊大小相同。映射模塊1609中存儲(chǔ)了每個(gè)一級(jí)微操作塊與二級(jí)緩存系統(tǒng)中二級(jí)指令塊的對(duì)應(yīng)關(guān)系,以及每個(gè)一級(jí)微操作塊中指令偏移地址和微操作偏移地址的映射關(guān)系。
[0268]具體地,若一個(gè)二級(jí)指令塊對(duì)應(yīng)的微操作塊已經(jīng)被存儲(chǔ)在一級(jí)緩存系統(tǒng)中,則在映射模塊1609中由所述二級(jí)指令塊的剛2乂指向的行有效,其中存儲(chǔ)了所述微操作塊在一級(jí)緩存系統(tǒng)中的8^以,以及所述微操作塊的映射關(guān)系。若一個(gè)二級(jí)指令塊對(duì)應(yīng)的微操作塊尚未被存儲(chǔ)在一級(jí)緩存系統(tǒng)中,則在映射模塊1609中由所述二級(jí)指令塊的剛2乂指向的行無(wú)效。這樣,映射模塊1609可以根據(jù)接收到的剛2乂和剛21,在所述剛2乂指向的行有效時(shí),輸出對(duì)應(yīng)的剛IX和剛IV。
[0269]掃描轉(zhuǎn)換器1615用于審查從二級(jí)指令存儲(chǔ)器1605填充到一級(jí)微操作存儲(chǔ)器1603的指令塊并在軌道表1601中由所述剛IX指向的行中建立相應(yīng)軌道,同時(shí)將所述指令塊轉(zhuǎn)換為微操作塊,將該微操作塊填充到微操作存儲(chǔ)器1603中由替換算法確定的剛IX指向的存儲(chǔ)塊中,并將轉(zhuǎn)換得到的映射關(guān)系與所述剛以一起填充到映射模塊1609中由所述被填充的指令塊的剛2乂指向的行中并記為有效。
[0270]軌道表1601中的分支點(diǎn)內(nèi)容可以是分支目標(biāo)微操作在一級(jí)緩存系統(tǒng)中的位置信息(即剛IX和剛1?,或分支目標(biāo)指令在二級(jí)緩存系統(tǒng)中的位置信息(即剛2乂和剛2?。具體地,掃描轉(zhuǎn)換器1615計(jì)算得到的分支目標(biāo)指令地址的塊地址部分被送到標(biāo)簽存儲(chǔ)器1607匹配。若所述塊地址在標(biāo)簽存儲(chǔ)器1607中匹配成功,則得到所述分支目標(biāo)指令對(duì)應(yīng)的剛2乂。根據(jù)該剛2乂及分支目標(biāo)指令地址低位部分(剛2?對(duì)映射模塊1609尋址,若讀出的內(nèi)容為有效,則表示所述分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,得到對(duì)應(yīng)的剛IX、根據(jù)所述剛2乂指向的行中的映射關(guān)系轉(zhuǎn)換得到剛IV,并將所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到所述分支點(diǎn)中。若讀出的內(nèi)容為無(wú)效,則表示所述分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中,直接將所述8吧X和分支目標(biāo)指令地址低位部分出吧”經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到所述分支點(diǎn)中。
[0271]若所述塊地址在標(biāo)簽存儲(chǔ)器1607中匹配不成功,則對(duì)該指令塊地址低位補(bǔ)‘0’,構(gòu)成完整的指令地址(即所述指令塊地址對(duì)應(yīng)的第一條指令的指令地址),再如之前實(shí)施例所述,將所述指令地址送往更低層次存儲(chǔ)器獲取對(duì)應(yīng)指令塊。當(dāng)所述指令塊被送到二級(jí)緩存時(shí),將所述塊地址填充到標(biāo)簽存儲(chǔ)器1607中由替換算法確定的剛2乂指向的行中,將所述指令塊填充到所述8吧乂指向的存儲(chǔ)塊中,并將映射模塊1609中所述8吧乂指向的行置為無(wú)效。所述所述剛2乂和分支目標(biāo)指令地址低位部分(剛2?經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到所述分支點(diǎn)中。
[0272]循跡器1613的按之前實(shí)施例所述方法移動(dòng)讀指針1631指向軌道表1601中處理器核1611正在執(zhí)行的微操作之后的第一個(gè)分支點(diǎn),并讀出分支點(diǎn)內(nèi)容。若讀出的分支點(diǎn)內(nèi)容是8附X和8附V,則表示所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1611讀取。若讀出的分支點(diǎn)內(nèi)容是剛2乂和剛21,則表示所述分支指令的分支目標(biāo)微操作可能尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),將所述剛2乂和關(guān)21送往映射模塊1609尋址,若映射模塊1609中由所述剛2乂指向的行有效,則可以讀出對(duì)應(yīng)的剛IX,并根據(jù)映射關(guān)系將所述8吧V轉(zhuǎn)換為8附V。這樣,所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1611讀取。同時(shí),所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填回所述分支點(diǎn)中。
[0273]若映射模塊1609中由所述剛2乂指向的行無(wú)效,則表示所述分支指令的分支目標(biāo)微操作尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),二級(jí)指令存儲(chǔ)器1605將所述剛2乂指向的指令塊送往掃描轉(zhuǎn)換器1615審查及轉(zhuǎn)換,在軌道表1601中由替換算法確定的剛IX指向的行中建立對(duì)應(yīng)軌道,并將轉(zhuǎn)換得到的微操作塊填充到一級(jí)微操作存儲(chǔ)器1603中由所述剛IX指向的存儲(chǔ)塊中。同時(shí),所述剛IX和轉(zhuǎn)換得到的映射關(guān)系被填充到映射模塊1609中由所述8吧X指向的行中并記為有效。這樣,所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1611讀取。同時(shí),所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填回所述分支點(diǎn)中。
[0274]處理器核1611按之前實(shí)施例所述方法輸出微操作偏移地址在微操作存儲(chǔ)器1603中由循跡器1613讀指針1631指向的存儲(chǔ)塊中讀出所需微操作。對(duì)于順序執(zhí)行微操作、執(zhí)行分支微操作時(shí)分支轉(zhuǎn)移沒(méi)有發(fā)生、執(zhí)行分支微操作時(shí)分支轉(zhuǎn)移成功發(fā)生等情況的具體操作過(guò)程均與之前實(shí)施例所述相同,在此不再說(shuō)明。此外,在本實(shí)施例中采用的是由處理器核輸出微操作偏移地址的方式獲取微操作。然而,本實(shí)施例的兩層緩存結(jié)構(gòu)也適用于由微操作讀緩沖直接輸出微操作供處理器核執(zhí)行的情況,由于操作過(guò)程類似,在此也不再具體說(shuō)明。
[0275]在圖16實(shí)施例中,映射模塊1609的行與標(biāo)簽存儲(chǔ)器1607的行及二級(jí)指令存儲(chǔ)器1605的存儲(chǔ)塊一一對(duì)應(yīng),因此其中的有些行中的映射關(guān)系可能是無(wú)效的。為了減少映射模塊的大小,也可以將映射模塊的行改為與軌道表中的行及一級(jí)微操作存儲(chǔ)器中的存儲(chǔ)塊一一對(duì)應(yīng),這樣,映射模塊中的每行映射關(guān)系都是有效的。請(qǐng)參考圖17,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例。
[0276]在圖17中,所述處理器系統(tǒng)包含軌道表1601、一級(jí)微操作存儲(chǔ)器1603、二級(jí)指令存儲(chǔ)器1605、標(biāo)簽存儲(chǔ)器1607、塊號(hào)存儲(chǔ)器1707、映射模塊1709、循跡器1613、掃描轉(zhuǎn)換器1615和處理器核1611。其中,軌道表1601、一級(jí)微操作存儲(chǔ)器1603、循跡器1613、映射模塊1709和掃描轉(zhuǎn)換器1615構(gòu)成了一級(jí)緩存系統(tǒng);二級(jí)指令存儲(chǔ)器1605、標(biāo)簽存儲(chǔ)器1607和塊號(hào)存儲(chǔ)器1707構(gòu)成了二級(jí)緩存系統(tǒng)。
[0277]在本實(shí)施例中,軌道表1601、一級(jí)微操作存儲(chǔ)器1603、二級(jí)指令存儲(chǔ)器1605、標(biāo)簽存儲(chǔ)器1607、循跡器1613、掃描轉(zhuǎn)換器1615和處理器核1611與圖16實(shí)施例中的相應(yīng)部件相同。不同之處在于,塊號(hào)存儲(chǔ)器1707中的行與標(biāo)簽存儲(chǔ)器1607的行及二級(jí)指令存儲(chǔ)器1605的存儲(chǔ)塊一一對(duì)應(yīng),并由同一個(gè)8吧乂指向。具體地,若一個(gè)二級(jí)指令塊對(duì)應(yīng)的微操作塊已經(jīng)被存儲(chǔ)在一級(jí)緩存系統(tǒng)中,則在塊號(hào)存儲(chǔ)器1707由所述二級(jí)指令塊的剛2乂指向的行有效,其中存儲(chǔ)了所述微操作塊在一級(jí)緩存系統(tǒng)中的8附X。若一個(gè)二級(jí)指令塊對(duì)應(yīng)的微操作塊尚未被存儲(chǔ)在一級(jí)緩存系統(tǒng)中,則在塊號(hào)存儲(chǔ)器1707中由所述二級(jí)指令塊的剛2父指向的行無(wú)效。這樣,塊號(hào)存儲(chǔ)器1707可以根據(jù)接收到的剛2乂,在所述剛2乂指向的行有效時(shí),輸出對(duì)應(yīng)的8附X。此外,映射模塊1709中的行與軌道表1601中的行及一級(jí)微操作存儲(chǔ)器1603中的存儲(chǔ)塊一一對(duì)應(yīng),并由同一個(gè)剛IX指向。在此,映射模塊1709與圖6實(shí)施例中的映射模塊107類似,存儲(chǔ)了相應(yīng)微操作塊與指令塊的地址映射關(guān)系。這樣,在本實(shí)施例中,圖16實(shí)施例的映射模塊1607被拆分為塊號(hào)存儲(chǔ)器1707和映射模塊1709兩部分,用較小的面積實(shí)現(xiàn)了同樣的功能。
[0278]在本實(shí)施例中,當(dāng)掃描轉(zhuǎn)換器1615計(jì)算得到的分支目標(biāo)指令地址的塊地址部分被送到標(biāo)簽存儲(chǔ)器1607匹配成功且得到8吧乂時(shí),由所述8吧乂在塊號(hào)存儲(chǔ)器1707中尋址,若讀出的行有效,表示所述剛2乂指向的指令塊對(duì)應(yīng)的微操作塊已經(jīng)被存儲(chǔ)在一級(jí)微操作存儲(chǔ)器1603由所述讀出的剛IX指向的存儲(chǔ)塊中。此時(shí),所述分支目標(biāo)指令地址的低位部分(即剛2?則根據(jù)映射模塊1709中由所述讀出的剛IX指向的映射關(guān)系轉(zhuǎn)換為剛IV。所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填充到所述分支點(diǎn)中。若讀出的行無(wú)效,則直接將所述剛2乂和剛21經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填充到所述分支點(diǎn)中
[0279]類似地,當(dāng)循跡器1613讀指針1631指向的分支點(diǎn)的內(nèi)容為剛2乂和剛21時(shí),所述剛2乂被送到塊號(hào)存儲(chǔ)器1707尋址,若塊號(hào)存儲(chǔ)器1707中由所述剛2乂指向的行有效,貝丨』可以讀出對(duì)應(yīng)的剛IX,并根據(jù)映射模塊1709中由所述讀出的剛IX指向的映射關(guān)系將所述剛21轉(zhuǎn)換為剛IV。這樣,所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1611讀取。同時(shí),所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填回所述分支點(diǎn)中。
[0280]若塊號(hào)存儲(chǔ)器1707中由所述剛2乂指向的行無(wú)效,則表示所述分支指令的分支目標(biāo)微操作尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),二級(jí)指令存儲(chǔ)器1605將所述8吧乂指向的指令塊送往掃描轉(zhuǎn)換器1615審查及轉(zhuǎn)換,在軌道表1601中由替換算法確定的剛IX指向的行中建立對(duì)應(yīng)軌道,并將轉(zhuǎn)換得到的微操作塊填充到一級(jí)微操作存儲(chǔ)器1603中由所述剛IX指向的存儲(chǔ)塊中,及將轉(zhuǎn)換得到的映射關(guān)系存儲(chǔ)在映射模塊1709中由所述8^以指向的行中。同時(shí),所述剛IX被填充到塊號(hào)存儲(chǔ)器1707中由所述剛2乂指向的行中并記為有效。這樣,所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1611讀取。同時(shí),所述剛IX和剛IV經(jīng)選擇器1621選擇后作為軌跡點(diǎn)內(nèi)容被填回所述分支點(diǎn)中。
[0281]在本實(shí)施例中,其它操作與圖16實(shí)施例中的相應(yīng)操作相同,在此不再詳細(xì)說(shuō)明。
[0282]根據(jù)本發(fā)明技術(shù)方案,還可以對(duì)圖16或圖17實(shí)施例進(jìn)一步擴(kuò)展,以支持更多層次的緩存結(jié)構(gòu)。請(qǐng)參考圖18,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例。
[0283]在圖18中,所述處理器系統(tǒng)包含一級(jí)軌道表1801、一級(jí)微操作存儲(chǔ)器1803、二級(jí)微操作存儲(chǔ)器1805、二級(jí)軌道表1807、映射模塊1809、循跡器1813、掃描轉(zhuǎn)換器1815、微操作讀緩沖1817、三級(jí)指令存儲(chǔ)器1819、標(biāo)簽存儲(chǔ)器1821和處理器核1811。其中,一級(jí)軌道表1801、一級(jí)微操作存儲(chǔ)器1803、循跡器1813和微操作讀緩沖1817構(gòu)成了一級(jí)緩存系統(tǒng);掃描轉(zhuǎn)換器1815、二級(jí)指令存儲(chǔ)器1805、二級(jí)軌道表1807和映射模塊1809構(gòu)成了二級(jí)緩存系統(tǒng);三級(jí)指令存儲(chǔ)器1819和標(biāo)簽存儲(chǔ)器1821構(gòu)成了三級(jí)緩存系統(tǒng)。
[0284]在本實(shí)施例中,一級(jí)軌道表1801中的行與一級(jí)微操作存儲(chǔ)器1803中的存儲(chǔ)塊一一對(duì)應(yīng),且由同一個(gè)8^以指向。一級(jí)微操作存儲(chǔ)器1803中存儲(chǔ)的是一級(jí)微操作塊,并在軌道表1801中建有相應(yīng)的軌道。
[0285]二級(jí)軌道表1807中的行與二級(jí)微操作存儲(chǔ)器1805中的存儲(chǔ)塊及映射模塊1809中的行一一對(duì)應(yīng),且由同一個(gè)剛2乂指向。二級(jí)微操作存儲(chǔ)器1805中存儲(chǔ)的是二級(jí)微操作塊,并在軌道表1807中建有相應(yīng)的軌道。映射模塊1809中的行存儲(chǔ)了二級(jí)微操作存儲(chǔ)器1805中的對(duì)應(yīng)微操作塊的微操作偏移地址和指令地址之間的映射關(guān)系。二級(jí)軌道表1807中的每行中還存儲(chǔ)了相應(yīng)二級(jí)微操作塊是否已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中的信息。為便于說(shuō)明,在本實(shí)施例中,以一級(jí)微操作塊對(duì)應(yīng)的一級(jí)指令塊的大小是二級(jí)微操作塊對(duì)應(yīng)的二級(jí)指令塊的一半,而二級(jí)微操作塊對(duì)應(yīng)的二級(jí)指令塊的大小是三極指令塊的一半為例進(jìn)行說(shuō)明。對(duì)于其他情況,均可以此類推。
[0286]具體地,對(duì)于二級(jí)軌道表1807中的每一行,最多可以存儲(chǔ)兩個(gè)相應(yīng)的剛IX。例如,若一個(gè)二級(jí)微操作塊對(duì)應(yīng)的兩個(gè)一級(jí)微操作塊均已經(jīng)存儲(chǔ)在一級(jí)微操作存儲(chǔ)器1803中,則將這兩個(gè)一級(jí)微操作塊各自對(duì)應(yīng)的剛IX存儲(chǔ)在二級(jí)軌道表1807中由所述二級(jí)微操作塊的8吧X指向的行中。又如,若所述兩個(gè)一級(jí)微操作塊中只有一個(gè)存儲(chǔ)在一級(jí)微操作存儲(chǔ)器1803中,則將所述已存儲(chǔ)的一級(jí)微操作塊對(duì)應(yīng)的剛IX存儲(chǔ)在二級(jí)軌道表1807中由所述8吧乂指向的行中,而該行中的另一個(gè)存儲(chǔ)8附乂的項(xiàng)為無(wú)效。再如,若所述兩個(gè)一級(jí)微操作塊均未存儲(chǔ)在一級(jí)微操作存儲(chǔ)器1803中,則二級(jí)軌道表1807中由所述8吧乂指向的行中的兩個(gè)存儲(chǔ)剛IX的項(xiàng)均為無(wú)效。
[0287]標(biāo)簽存儲(chǔ)器1821中的行與三級(jí)指令存儲(chǔ)器1819中的存儲(chǔ)塊一一對(duì)應(yīng),且由同一個(gè)指向。三級(jí)指令存儲(chǔ)器1819中存儲(chǔ)的是三級(jí)指令塊,其對(duì)應(yīng)的指令塊地址存儲(chǔ)在標(biāo)簽存儲(chǔ)器1821中由同一個(gè)剛3乂指向的行中。標(biāo)簽存儲(chǔ)器1821的所述行中還存儲(chǔ)了指令塊對(duì)應(yīng)的微操作塊是否已經(jīng)存儲(chǔ)在一級(jí)或二級(jí)緩存系統(tǒng)中的信息。需要注意的是,存儲(chǔ)在一級(jí)緩存系統(tǒng)中的微操作塊是存儲(chǔ)在二級(jí)緩存系統(tǒng)中的微操作塊的子集,因此如果標(biāo)簽存儲(chǔ)器1821中的存在一個(gè)有效的剛IX,則必定存在對(duì)應(yīng)的有效的剛2乂。此外,根據(jù)二級(jí)微操作塊和一級(jí)微操作塊的包含關(guān)系,映射模塊1809還可以將剛21轉(zhuǎn)換為剛IV,或直接將8^31轉(zhuǎn)換為剛IV。
[0288]具體地,對(duì)于標(biāo)簽存儲(chǔ)器1821中的每一彳丁,最多可以存儲(chǔ)兩個(gè)相應(yīng)的8^2乂和四個(gè)相應(yīng)的8^以。例如,若一個(gè)三級(jí)指令塊對(duì)應(yīng)的兩個(gè)二級(jí)指令塊對(duì)應(yīng)的二級(jí)微操作塊均已經(jīng)存儲(chǔ)在二級(jí)微操作存儲(chǔ)器1805中,則將這兩個(gè)二級(jí)微操作塊各自對(duì)應(yīng)的剛2乂存儲(chǔ)在標(biāo)簽存儲(chǔ)器1821中由所述三級(jí)指令塊的剛3乂指向的行中。又如,若所述兩個(gè)二級(jí)微操作塊中只有一個(gè)存儲(chǔ)在二級(jí)微操作存儲(chǔ)器1805中,則將所述已存儲(chǔ)的二級(jí)微操作塊對(duì)應(yīng)的剛2父存儲(chǔ)在標(biāo)簽存儲(chǔ)器1821中由所述指向的行中,而該行中的另一個(gè)存儲(chǔ)8吧乂的項(xiàng)為無(wú)效。再如,若所述兩個(gè)二級(jí)微操作塊均未存儲(chǔ)在二級(jí)微操作存儲(chǔ)器1805中,則標(biāo)簽存儲(chǔ)器1821中由所述剛3乂指向的行中的兩個(gè)存儲(chǔ)剛2乂的項(xiàng)均為無(wú)效。類似地,根據(jù)三級(jí)指令塊對(duì)應(yīng)的四個(gè)一級(jí)指令塊對(duì)應(yīng)的一級(jí)微操作塊在一級(jí)緩存系統(tǒng)中的存儲(chǔ)情況,標(biāo)簽存儲(chǔ)器1821中由所述三級(jí)指令塊的剛3乂指向的行中的四個(gè)存儲(chǔ)剛IX的項(xiàng)可以被相應(yīng)設(shè)置為全部有效(即有剛IX值)、部分有效(即有剛IX值)或全部無(wú)效。
[0289]掃描轉(zhuǎn)換器1815審查從三級(jí)指令存儲(chǔ)器1819填充到二級(jí)微操作存儲(chǔ)器1805的指令塊并在二級(jí)軌道表1807中由替換算法確定的剛2乂指向的行中建立相應(yīng)軌道,并將所述指令塊轉(zhuǎn)換為微操作塊,將該微操作塊填充到二級(jí)微操作存儲(chǔ)器1805中由所述剛2父指向的存儲(chǔ)塊中,并將所述剛2乂填充到標(biāo)簽存儲(chǔ)器1821中由所述剛3乂指向的行中,及將轉(zhuǎn)換得到的映射關(guān)系填充到映射模塊1809中由所述剛2乂指向的行中。
[0290]二級(jí)軌道表1807中的分支點(diǎn)內(nèi)容可以是分支目標(biāo)微操作在一級(jí)緩存系統(tǒng)中的位置信息(即剛IX和剛1?,或分支目標(biāo)微操作在二級(jí)緩存系統(tǒng)中的位置信息(即剛2父和剛2?,或分支目標(biāo)指令在三級(jí)緩存系統(tǒng)中的位置信息(即和剛3?。
[0291]具體地,掃描轉(zhuǎn)換器1815計(jì)算得到的分支目標(biāo)指令地址的塊地址部分被送到標(biāo)簽存儲(chǔ)器1821匹配。若所述塊地址在標(biāo)簽存儲(chǔ)器1821中匹配成功,則得到所述分支目標(biāo)指令對(duì)應(yīng)的剛3乂。同時(shí),根據(jù)所述分支目標(biāo)指令的偏移地址(即剛3?可以確定其位于所述三級(jí)指令塊包含的哪一個(gè)一級(jí)指令塊(或二級(jí)指令塊)中,并以此讀出存儲(chǔ)在標(biāo)簽存儲(chǔ)器1821中所述匹配成功行中相應(yīng)存儲(chǔ)的剛IX或剛2父。
[0292]若能讀出有效的剛IX及相應(yīng)的剛2乂,則表示所述分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,根據(jù)映射模塊1809中由所述剛2乂指向的行中的映射關(guān)系將所述剛31轉(zhuǎn)換為剛IV,并將所述剛IX和剛IV經(jīng)選擇器1821選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到二級(jí)軌道表1807的所述分支點(diǎn)中。
[0293]若只能讀出有效的剛2乂但沒(méi)有有效的剛IX,則表示所述分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊已經(jīng)存儲(chǔ)在二級(jí)緩存系統(tǒng)中,根據(jù)映射模塊1809中由所述剛2乂指向的行中的映射關(guān)系將所述剛31轉(zhuǎn)換為剛21,并將所述剛2乂和剛21經(jīng)選擇器1821選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到二級(jí)軌道表1807的所述分支點(diǎn)中。
[0294]若沒(méi)有有效的剛IX或剛2乂,則表示所述分支目標(biāo)指令所在的指令塊對(duì)應(yīng)的微操作塊尚未存儲(chǔ)在一級(jí)或二級(jí)緩存系統(tǒng)中,此時(shí)直接將所述和8吧1經(jīng)選擇器1821選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到二級(jí)軌道表1807的所述分支點(diǎn)中。
[0295]一級(jí)軌道表1801中的分支點(diǎn)內(nèi)容可以是分支目標(biāo)微操作在一級(jí)緩存系統(tǒng)中的位置信息(即剛IX和剛1?,或分支目標(biāo)微操作在二級(jí)緩存系統(tǒng)中的位置信息(即剛2父和
8勝)。
[0296]當(dāng)循跡器1813讀指針指向一級(jí)軌道表1801中的分支點(diǎn)時(shí),讀出分支點(diǎn)內(nèi)容。若讀出的分支點(diǎn)內(nèi)容是剛IX和剛IV,則表示所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1811讀取。若讀出的分支點(diǎn)內(nèi)容是剛2乂和剛21,貝丨』表示所述分支指令的分支目標(biāo)微操作可能尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),將所述8吧X送到二級(jí)軌道表1807尋址,并根據(jù)所述8吧1從存儲(chǔ)在該行的兩個(gè)8^以項(xiàng)中讀出相應(yīng)的一個(gè)。
[0297]若讀出的剛IX是有效的,則表示所述微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),可以根據(jù)映射模塊1809中由所述剛2乂指向的映射關(guān)系將所述剛21轉(zhuǎn)換為剛IV。所述剛IX和剛IV經(jīng)選擇器1821選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1801的所述分支點(diǎn)中。
[0298]若讀出的剛IX是無(wú)效的,則表示所述微操作塊尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),可以將二級(jí)微操作存儲(chǔ)器1805中由所述剛2乂指向的二級(jí)微操作塊中相應(yīng)的一級(jí)微操作塊填充到一級(jí)微操作存儲(chǔ)器1803中由替換算法確定的剛IX指向的存儲(chǔ)塊,并將二級(jí)軌道表1807中由所述剛2乂指向的軌道中相應(yīng)的一級(jí)軌道填充到一級(jí)軌道表1801中由所述剛IX指向的行中。在此過(guò)程中,若被填充的軌跡點(diǎn)內(nèi)容是剛IX和剛IV,或剛2乂和剛21,則可以直接將所述軌跡點(diǎn)內(nèi)容經(jīng)選擇器1823選擇后填充到一級(jí)軌道表1801的相應(yīng)軌跡點(diǎn)中。
[0299]若被填充的軌跡點(diǎn)內(nèi)容是剛3乂和剛31,則根據(jù)所述剛31可以確定其位于所述三級(jí)指令塊包含的哪一個(gè)一級(jí)指令塊(或二級(jí)指令塊)中,并以此讀出存儲(chǔ)在標(biāo)簽存儲(chǔ)器1821中所述剛3乂指向的行中相應(yīng)存儲(chǔ)的剛IX或剛2乂。若能讀出有效的剛IX及相應(yīng)的剛2乂 (或只能讀出有效的剛2乂〉,則表示所述剛3乂和剛31指向的微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)(或二級(jí)緩存系統(tǒng))中,根據(jù)映射模塊1809中由所述剛2乂指向的行中的映射關(guān)系將所述剛31轉(zhuǎn)換為剛IV (或剛2?,并將所述剛IX和剛IV (或剛2乂和剛2?經(jīng)選擇器1823選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到一級(jí)軌道表1801的所述被填充的軌跡點(diǎn)中。
[0300]若沒(méi)有有效的剛IX或剛2乂,則表示所述剛3乂和剛31指向的微操作塊尚未存儲(chǔ)在一級(jí)或二級(jí)緩存系統(tǒng)中,此時(shí),可以根據(jù)所述8吧1確定三級(jí)指令存儲(chǔ)器1819中由所述指向的三級(jí)指令塊中需要被填充的二級(jí)緩存系統(tǒng)的二級(jí)指令塊,并由掃描轉(zhuǎn)換器1815對(duì)所述二級(jí)指令塊進(jìn)行審查、轉(zhuǎn)換,在二級(jí)軌道表1807由替換算法確定的剛2乂指向的行中建立相應(yīng)軌道,并將轉(zhuǎn)換得到的二級(jí)微操作塊填充到二級(jí)微操作存儲(chǔ)器1805中由所述剛2父指向的存儲(chǔ)決,及將轉(zhuǎn)換得到的映射關(guān)系填充到映射模塊由所述剛2乂指向的行的過(guò)程如前所述。根據(jù)所述映射關(guān)系,可以將所述剛31轉(zhuǎn)換為剛21。所述剛2乂和剛21經(jīng)選擇器1823選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到一級(jí)軌道表1801的所述被填充的軌跡點(diǎn)中。
[0301]經(jīng)過(guò)如上過(guò)程,就可以保證一級(jí)軌道表1801中的分支點(diǎn)內(nèi)容都是剛IX和剛IV或剛2乂和剛21,且循跡器1813讀指針1831指向的分支點(diǎn)的內(nèi)容是剛IX和剛IV。即,處理器核1811近期可能執(zhí)行到的微操作均被提前填充到二級(jí)微操作存儲(chǔ)器1805中,而立即可能執(zhí)行到微操作均被提前填充到一級(jí)微操作存儲(chǔ)器1803中,從而掩蓋或縮短了向處理器核1811提供微操作的等待時(shí)間。
[0302]在本實(shí)施例中,其他操作過(guò)程與之前實(shí)施例所述相同,在此不再贅述。
[0303]請(qǐng)參考圖19,其為本發(fā)明所述包含多級(jí)緩存的處理器系統(tǒng)的另一個(gè)實(shí)施例。在圖19中,所述處理器系統(tǒng)包含一級(jí)軌道表1901、一級(jí)微操作存儲(chǔ)器1803、二級(jí)微操作存儲(chǔ)器1805、塊號(hào)存儲(chǔ)器1907、映射模塊1809、循跡器1813、掃描轉(zhuǎn)換器1815、掃描器1915、微操作讀緩沖1817、三級(jí)指令存儲(chǔ)器1819、標(biāo)簽存儲(chǔ)器1821和處理器核1811。其中,掃描器1915、一級(jí)軌道表1901、一級(jí)微操作存儲(chǔ)器1803、循跡器1813和微操作讀緩沖1817構(gòu)成了一級(jí)緩存系統(tǒng);掃描轉(zhuǎn)換器1815、二級(jí)指令存儲(chǔ)器1805、塊號(hào)存儲(chǔ)器1907和映射模塊1809構(gòu)成了二級(jí)緩存系統(tǒng);三級(jí)指令存儲(chǔ)器1819和標(biāo)簽存儲(chǔ)器1821構(gòu)成了三級(jí)緩存系統(tǒng)。
[0304]在本實(shí)施例中,處理器核1811、一級(jí)微操作存儲(chǔ)器1803、二級(jí)微操作存儲(chǔ)器1805、映射模塊1809、循跡器1813、掃描轉(zhuǎn)換器1815、微操作讀緩沖1817、三級(jí)指令存儲(chǔ)器1819和標(biāo)簽存儲(chǔ)器1821與圖18實(shí)施例中的相應(yīng)部件相同。
[0305]一級(jí)軌道表1901也與圖18中的一級(jí)軌道表1801類似,其行與一級(jí)微操作存儲(chǔ)器1803中的存儲(chǔ)塊——對(duì)應(yīng),且由同一個(gè)剛IX指向。不同之處在于,一級(jí)軌道表1901中的分支點(diǎn)內(nèi)容可以是分支目標(biāo)微操作在一級(jí)緩存系統(tǒng)中的位置信息(即剛IX和剛1?,或分支目標(biāo)微操作在二級(jí)緩存系統(tǒng)中的位置信息(即剛2乂和剛2?,或分支目標(biāo)微操作在三級(jí)緩存系統(tǒng)中的位置信息(即8吧2乂和8吧”。
[0306]此外,在本實(shí)施例中沒(méi)有圖18實(shí)施例中的二級(jí)軌道表1807,而是用塊號(hào)存儲(chǔ)器1907存儲(chǔ)了每個(gè)二級(jí)塊號(hào)對(duì)應(yīng)的一級(jí)塊號(hào)信息(即圖18中二級(jí)軌道表1807中的一級(jí)塊號(hào)信息)。同時(shí),掃描器1915用于對(duì)從二級(jí)微操作存儲(chǔ)器1805向一級(jí)微操作存儲(chǔ)器1803填充的一級(jí)微操作塊進(jìn)行審查并在一級(jí)軌道表1901中建立相應(yīng)軌道。
[0307]具體地,當(dāng)從二級(jí)微操作存儲(chǔ)器1805送來(lái)的一級(jí)微操作塊被存儲(chǔ)到一級(jí)微操作存儲(chǔ)器1803中由替換算法確定的8^以指向的存儲(chǔ)塊時(shí),掃描器1915審查所述微操作塊并計(jì)算其中分支微操作塊的分支目標(biāo)指令地址。所述分支目標(biāo)指令地址中的塊地址部分被送到標(biāo)簽存儲(chǔ)器1821進(jìn)行匹配。所述分支目標(biāo)指令地址中的低位部分就是指令偏移地址8勝。
[0308]若所述塊地址在標(biāo)簽存儲(chǔ)器1821中匹配成功得到剛3乂,且能讀出有效的剛IX及相應(yīng)的剛2乂 (或只能讀出有效的剛2?,則表示所述剛3乂和剛31指向的微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)(或二級(jí)緩存系統(tǒng))中,根據(jù)映射模塊1809中由所述剛2乂指向的行中的映射關(guān)系將所述剛31轉(zhuǎn)換為剛IV (或剛2?,并將所述剛IX和剛IV (或剛2乂和剛2?經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到一級(jí)軌道表1901的所述被填充的軌跡點(diǎn)中。
[0309]若所述塊地址在標(biāo)簽存儲(chǔ)器1821中匹配不成功,則表示所述分支目標(biāo)指令塊對(duì)應(yīng)的微操作塊尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)或二級(jí)緩存系統(tǒng)中。此時(shí),將所述分支目標(biāo)指令地址送往更低層次存儲(chǔ)器,并將獲取到的。當(dāng)所述分支目標(biāo)指令塊填充到三級(jí)指令存儲(chǔ)器1819中由替換算法確定的剛3乂指向的存儲(chǔ)塊中,并將所述剛3乂和剛31經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到一級(jí)軌道表1901的所述被填充的軌跡點(diǎn)中。
[0310]當(dāng)循跡器1813讀指針指向一級(jí)軌道表1901中的分支點(diǎn)時(shí),讀出分支點(diǎn)內(nèi)容。若讀出的分支點(diǎn)內(nèi)容是剛IX和剛IV,則表示所述分支指令的分支目標(biāo)微操作已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中,可以直接供處理器核1811讀取。
[0311]若讀出的分支點(diǎn)內(nèi)容是剛2乂和剛21,則表示所述分支指令的分支目標(biāo)微操作可能尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),將所述8吧乂送到塊號(hào)存儲(chǔ)器1907尋址,并根據(jù)所述8^21從存儲(chǔ)在該行的兩個(gè)剛IX項(xiàng)中讀出相應(yīng)的一個(gè)。若讀出的剛IX是有效的,則表示所述微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),可以根據(jù)映射模塊1809中由所述剛2父指向的映射關(guān)系將所述剛21轉(zhuǎn)換為剛IV。所述剛IX和剛IV經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1901的所述分支點(diǎn)中。若讀出的剛IX是無(wú)效的,則表示所述微操作塊尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),可以將二級(jí)微操作存儲(chǔ)器1805中由所述剛2乂指向的二級(jí)微操作塊中相應(yīng)的一級(jí)微操作塊填充到一級(jí)微操作存儲(chǔ)器1803中由替換算法確定的8附X指向的存儲(chǔ)塊,同時(shí)由掃描器1915對(duì)所述微操作塊進(jìn)行審查并在一級(jí)軌道表1901中由所述剛IX指向的行中建立相應(yīng)軌道。同時(shí),可以根據(jù)映射模塊1809中由所述剛2父指向的映射關(guān)系將所述剛21轉(zhuǎn)換為剛IV。所述剛IX和關(guān)IV經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1901的所述分支點(diǎn)中。
[0312]若讀出的分支點(diǎn)內(nèi)容是和剛31,則表示所述分支指令的分支目標(biāo)微操作可能尚未存儲(chǔ)在一級(jí)緩存系統(tǒng)或二級(jí)存儲(chǔ)系統(tǒng)中。此時(shí),將所述剛3乂送到標(biāo)簽存儲(chǔ)器1821中尋址,并根據(jù)所述剛31從存儲(chǔ)在該行的四個(gè)剛IX和兩個(gè)剛2乂項(xiàng)中讀出相應(yīng)的剛IX和剛2乂。若讀出的剛IX是有效的(此時(shí)剛2乂也有效),則表示所述微操作塊已經(jīng)存儲(chǔ)在一級(jí)緩存系統(tǒng)中。此時(shí),可以根據(jù)映射模塊1809中由所述剛2乂指向的映射關(guān)系將所述剛31轉(zhuǎn)換為剛IV。所述剛IX和關(guān)11經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1901的所述分支點(diǎn)中。若讀出的剛IX無(wú)效但剛2乂有效,則表示所述微操作塊已經(jīng)存儲(chǔ)在二級(jí)緩存系統(tǒng)中。此時(shí),可以將二級(jí)微操作存儲(chǔ)器1805中由所述剛2乂指向的二級(jí)微操作塊中相應(yīng)的一級(jí)微操作塊填充到一級(jí)微操作存儲(chǔ)器1803中由替換算法確定的8^以指向的存儲(chǔ)塊,同時(shí)由掃描器1915對(duì)所述微操作塊進(jìn)行審查并在一級(jí)軌道表1901中由所述8附X指向的行中建立相應(yīng)軌道。同時(shí),所述剛IX被填充到標(biāo)簽存儲(chǔ)器中所述剛3乂指向的行中的相應(yīng)位置,并根據(jù)映射模塊1809中由所述剛2乂指向的映射關(guān)系將所述剛31轉(zhuǎn)換為剛IV。所述剛IX和剛IV經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1901的所述分支點(diǎn)中。若讀出的剛2乂無(wú)效,則表示所述微操作塊尚未存儲(chǔ)在二級(jí)緩存系統(tǒng)中。此時(shí),可以將三級(jí)指令存儲(chǔ)器1819中由所述指向的三級(jí)指令塊中相應(yīng)的二級(jí)指令塊經(jīng)掃描轉(zhuǎn)換器1815審查、轉(zhuǎn)換,并將轉(zhuǎn)換得到的二級(jí)微操作塊填充到二級(jí)微操作存儲(chǔ)器1805中由替換算法確定的剛2乂指向的存儲(chǔ)塊,及將轉(zhuǎn)換得到的映射關(guān)系存儲(chǔ)在映射模塊1907中由所述剛2乂指向的行中。在此過(guò)程中,按之前所述方法,將審查得到的分支微操作的分支目標(biāo)指令塊都填充到三級(jí)指令存儲(chǔ)器1819中。之后,再按之前實(shí)施例所述方法,將所述二級(jí)微操作塊填充到一級(jí)微操作存儲(chǔ)器1803中并得到相應(yīng)的剛IX和剛IV。所述剛IX和剛IV經(jīng)選擇器1923選擇后作為軌跡點(diǎn)內(nèi)容被填回一級(jí)軌道表1901的所述分支點(diǎn)中。此外,所述剛IX和剛2乂被存儲(chǔ)到標(biāo)簽存儲(chǔ)器1821中由所述剛3乂指向的行中,所述剛IX被存儲(chǔ)到塊號(hào)存儲(chǔ)器1907中由所述剛2乂指向的行中。
[0313]在本實(shí)施例中,其他操作過(guò)程與之前實(shí)施例所述相同,在此不再贅述。
[0314]根據(jù)本發(fā)明技術(shù)方案,還可以對(duì)圖18或圖19實(shí)施例按同樣方法進(jìn)一步擴(kuò)展,以支持更多層次的緩存結(jié)構(gòu)。
[0315]根據(jù)本發(fā)明技術(shù)方案,在轉(zhuǎn)換器將指令轉(zhuǎn)換為微操作塊的過(guò)程中將指令塊內(nèi)偏移地址和微操作塊內(nèi)偏移地址的對(duì)應(yīng)關(guān)系填入映射模塊107。具體地,在此過(guò)程中,可以通過(guò)判斷指令塊中各指令的起始地址建立所述對(duì)應(yīng)關(guān)系。下面以圖5(:實(shí)施例所述映射模塊的格式進(jìn)行說(shuō)明,并假設(shè)一個(gè)指令塊由8個(gè)字節(jié)(從左往右依次為第0字節(jié)到第7字節(jié))構(gòu)成,而一個(gè)微操作塊由6個(gè)微操作(從左往右依次為第0個(gè)微操作到第5個(gè)微操作)構(gòu)成。對(duì)于其他格式的映射模塊(例如圖5八實(shí)施例或圖58實(shí)施例所述映射模塊的格式),也可以按此方法類推得到。
[0316]請(qǐng)參考圖20八,其為根據(jù)本發(fā)明技術(shù)方案最終產(chǎn)生的映射關(guān)系的一個(gè)例子。與圖50實(shí)施例所述相同,本實(shí)施例的映射模塊用兩行(如行2001和2003)構(gòu)成一組映射關(guān)系,對(duì)應(yīng)微操作存儲(chǔ)器103中的一行(如行2005),且每組映射關(guān)系中的行2001中的每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)指令塊內(nèi)字節(jié)偏移地址,即表項(xiàng)數(shù)目與指令塊包含的字節(jié)數(shù)相同,從左往右依次為第0項(xiàng)到第7項(xiàng),分別對(duì)應(yīng)第0字節(jié)到第7字節(jié);而行2003中的每個(gè)表項(xiàng)對(duì)應(yīng)行2005中的一個(gè)微操作,從左往右依次為第0項(xiàng)到第5項(xiàng),分別對(duì)應(yīng)第0個(gè)微操作到第5個(gè)微操作。在行2001和2003中,最左邊的項(xiàng)是地址最小項(xiàng)(138),最右邊的項(xiàng)是地址最大項(xiàng)(138)。
[0317]如圖20八所示,行2001對(duì)應(yīng)的指令塊共包含3條指令(指令八占用2個(gè)字節(jié)、指令8占用3個(gè)字節(jié)、指令(:占用2個(gè)字節(jié)),且該指令塊第1個(gè)字節(jié)屬于順序地址的前一指令塊最后一條指令;行2001對(duì)應(yīng)的指令八被轉(zhuǎn)換為1個(gè)微操作(微操作,指令8被轉(zhuǎn)換為2條微操作(微操作(1和6,指令被轉(zhuǎn)換為2個(gè)微操作(微操作8和0。因此在行2001中第1、3、6項(xiàng)的值為‘1’,其余項(xiàng)為‘0’ ;在行2003中第0、1、3項(xiàng)的值為‘1’,其余為‘0’。又由于行2003中的項(xiàng)與微操作存儲(chǔ)器103中的行2005中的微操作——對(duì)應(yīng),因此在行2005中共有5個(gè)微操作(如圖20八陰影部分2007所示)。
[0318]下面以圖20八所示的映射情況對(duì)本發(fā)明所述各種產(chǎn)生映射關(guān)系的方法進(jìn)行說(shuō)明。請(qǐng)參考圖208,其為本發(fā)明所述產(chǎn)生映射關(guān)系的一種方法的實(shí)施例。假設(shè)分支目標(biāo)指令是指令8,即分支目標(biāo)地址為指令8對(duì)應(yīng)的地址(即指令塊的第3字節(jié)),且這是第一次以該指令塊為分支目標(biāo)的分支轉(zhuǎn)移。那么從該地址開始,可以找到指令8和0,并得到這兩條指令各自的長(zhǎng)度。具體地,當(dāng)轉(zhuǎn)換器對(duì)該分支目標(biāo)指令所在的指令塊進(jìn)行轉(zhuǎn)換時(shí),該分支目標(biāo)指令地址(即第3字節(jié))必定是一條指令(即指令8)的開始位置,從該位置開始檢測(cè)所述指令塊的后續(xù)部分,可以依次發(fā)現(xiàn)第4、5字節(jié)也屬于指令8,而第6字節(jié)為另一條指令的開始位置,且第7字節(jié)也屬于指令0。因此,可以在映射模塊的行2001的第3項(xiàng)開始依次填入‘10010’,以表示指令8、對(duì)應(yīng)的字節(jié)位置。
[0319]同時(shí),轉(zhuǎn)換器按前述方法將指令8、各轉(zhuǎn)換為2個(gè)微操作,并得到對(duì)應(yīng)關(guān)系‘1010’,填入行2003從地址最小項(xiàng)([38)開始的位置中,如圖208中狀態(tài)1所示。由于這是第一次以該指令塊為分支目標(biāo)的分支轉(zhuǎn)移,行2001和2003的其余表項(xiàng)均被填入‘0’,可以使用圖5(:實(shí)施例所述方法,通過(guò)行2001和2003中的‘1’進(jìn)行計(jì)數(shù)就可以將指令塊內(nèi)偏移地址轉(zhuǎn)換為微操作塊內(nèi)偏移地址。相應(yīng)地,轉(zhuǎn)換得到的4個(gè)微操作也被填入微操作存儲(chǔ)器中行2005從地址最小項(xiàng)(138)開始的位置中,如圖208中陰影部分2017所示。
[0320]之后,假設(shè)有分支指令的分支目標(biāo)指令為該指令塊中尚未被轉(zhuǎn)換并填充到微操作存儲(chǔ)器中的指令(例如指令八),則可以有兩種處理方法。第一種處理方法是:轉(zhuǎn)換器從指令八對(duì)應(yīng)的地址(第1字節(jié))開始重復(fù)上述過(guò)程,即檢測(cè)到指令八、8、各自的起始位置和長(zhǎng)度后,得到‘1010010’填充到行2001從指令八對(duì)應(yīng)的項(xiàng)(即第1項(xiàng))開始的位置中,并將轉(zhuǎn)換得到的微操作對(duì)應(yīng)關(guān)系‘11010’填充到行2003從地址最小項(xiàng)([38)開始的位置中,且行2001和2003的其余表項(xiàng)均被填入‘0’ ;以及將轉(zhuǎn)換得到的5個(gè)微操作填充到微操作存儲(chǔ)器中行2005從地址最小項(xiàng)(138)開始的位置中,從而分別覆蓋行2001、2003、2005中的原有內(nèi)容。此時(shí),行2001、2003、2005的內(nèi)容分別如圖208中狀態(tài)2的行2011、2013和2015所示。其中行2015中的陰影部分2017中存儲(chǔ)的是指令8、0對(duì)應(yīng)的4個(gè)微操作,而陰影部分2019存儲(chǔ)的是指令八對(duì)應(yīng)的1個(gè)微操作。
[0321]第二種處理方法是:計(jì)算行2001中第1個(gè)‘1’所在位置(即‘3’ )和本次分支目標(biāo)指令在指令塊中的字節(jié)位置(即‘1’ )的指令字節(jié)差值(即計(jì)算得到‘2’),并由轉(zhuǎn)換器對(duì)指令塊中所述分支目標(biāo)指令的字節(jié)位置(即‘1’ )開始的連續(xù)該指令字節(jié)差值個(gè)字節(jié)(即第1、2字節(jié))如前轉(zhuǎn)換為微操作。并由兩個(gè)移位器(圖中未顯示)以該轉(zhuǎn)換得到的微操作數(shù)目(即‘廠)作為移位位數(shù)分別對(duì)行2003、2005進(jìn)行右移(即各右移1個(gè)表項(xiàng)),并將對(duì)應(yīng)關(guān)系填充到行2003從地址最小項(xiàng)(138)開始的因右移空出的位置中,以及將轉(zhuǎn)換得到的微操作填充到行2004從地址最小項(xiàng)([38)開始的因右移空出的位置中。同時(shí),轉(zhuǎn)換器檢測(cè)指令八的起始位置和長(zhǎng)度得到的‘10’填充到行2001從指令八對(duì)應(yīng)的項(xiàng)(即第1項(xiàng))開始的位置中,并保持其余項(xiàng)內(nèi)容不變。這樣,得到的結(jié)果與第一種方法相同,如圖208中狀態(tài)2的行2011、2013和2015所示?;蛘撸梢栽诿看无D(zhuǎn)換時(shí)在寄存器(圖中未顯示)中記錄起始指令字節(jié)位置,在下一次轉(zhuǎn)換時(shí),將之前記錄的起始指令字節(jié)位置減去本次轉(zhuǎn)換的起始指令字節(jié)位置得到所述指令字節(jié)差值,再如前進(jìn)行后續(xù)操作。
[0322]在本實(shí)施例中,由于掃描器對(duì)分支指令進(jìn)行審查時(shí),計(jì)算得到的分支目標(biāo)指令地址被送到映射模塊根據(jù)當(dāng)時(shí)存儲(chǔ)的地址對(duì)應(yīng)關(guān)系轉(zhuǎn)換為微操作地址,而該微操作地址與微操作存儲(chǔ)器中的微操作是一一對(duì)應(yīng)的,且這些微操作地址也被存入軌道表以備分支時(shí)直接調(diào)用。因此,當(dāng)微操作存儲(chǔ)器中的行2015被右移后,其中的微操作(如對(duì)應(yīng)的微操作地址也發(fā)生了改變。此時(shí),必須對(duì)軌道表中所有已經(jīng)存在的以這些微操作(即、’、‘8’〉為分支目標(biāo)的分支微操作軌跡點(diǎn)內(nèi)容進(jìn)行相應(yīng)修改,保證這些分支微操作軌跡點(diǎn)中包含的分支目標(biāo)8^仍然指向移位后的該微操作。這樣,可以根據(jù)軌道表輸出的軌跡點(diǎn)內(nèi)容,直接在微操作存儲(chǔ)器中找到正確的微操作。
[0323]凡是指令塊已部分轉(zhuǎn)換且再有分支指令的分支目標(biāo)指令為該指令塊中尚未被轉(zhuǎn)換并填充到微操作存儲(chǔ)器中的指令,則可以按上述方法處理,更新映射模塊、微操作存儲(chǔ)器和軌道表中的相應(yīng)內(nèi)容,保證指令塊內(nèi)地址能被正確映射為微操作塊內(nèi)地址后從微操作存儲(chǔ)器中找到正確的微操作。
[0324]此外,在對(duì)微操作塊建立軌道的過(guò)程中,產(chǎn)生其下一微操作塊第一個(gè)微操作的8階地址時(shí)要檢查本微操作塊最后一條指令的最后一個(gè)字節(jié),其下一個(gè)字節(jié)的位置在所述下一個(gè)微操作塊對(duì)應(yīng)的行2001中是否為‘1’。如不是,則需要如前執(zhí)行進(jìn)一步轉(zhuǎn)換。如是,則將該下一個(gè)微操作塊中第一條微操作的塊內(nèi)地址放入正被處理的微操作塊中結(jié)束軌跡點(diǎn)中的8階域。
[0325]當(dāng)映射模塊中的對(duì)應(yīng)關(guān)系已建立后,后續(xù)指令塊變換為微操作時(shí),其中的分支指令的以字節(jié)為單位的分支偏移量要被計(jì)算并換算成微操作地址存入軌道表。該分支目標(biāo)地址中的指令塊地址轉(zhuǎn)換為微操作塊地址的方法已在圖1、圖2實(shí)施例中詳述。這里描述一下用如圖20八中對(duì)應(yīng)關(guān)系由指令塊內(nèi)地址轉(zhuǎn)換器確定微操作塊內(nèi)地址8階的具體方法。
[0326]請(qǐng)參考圖200,其為本發(fā)明所述指令塊內(nèi)地址轉(zhuǎn)換器的一個(gè)實(shí)施例。在本實(shí)施例中,以外部指令偏移地址轉(zhuǎn)換為內(nèi)部指令偏移地址為例進(jìn)行說(shuō)明。其中,從映射模塊送來(lái)的映射關(guān)系格式如圖20八實(shí)施例所述。
[0327]選擇器陣列2081中選擇器的列數(shù)與外部指令塊包含的偏移地址個(gè)數(shù)相等而行數(shù)為列數(shù)加一,即9行和8列。為了清晰起見,在圖20(:中只顯示了 4行、3列,分別為自下向上的最初4行和自左向右的最初3列。行號(hào)以最下一行為第0行,以上各行的行號(hào)依次遞增。列號(hào)以最左面一列為0列,其右方各列的列號(hào)依次遞增,每列對(duì)應(yīng)一個(gè)外部指令中的偏移地址。第0列各選擇器的輸入八和8均為‘0’,除了第0行選擇器的八輸入為‘1’。第0行所有選擇器的輸入8均為‘0’。其他列選擇器的輸入八來(lái)源于前一列同一行選擇器的輸出值,輸入8來(lái)源于前一列下一行選擇器的輸出值。
[0328]選擇器陣列2083的結(jié)構(gòu)與選擇器陣列2081類似,具有相同的行數(shù)。不同之處在于選擇器陣列2083中選擇器的列數(shù)與內(nèi)部指令塊包含的指令條數(shù)相等,即6列。同樣地,為了清晰起見,在圖20(:中只顯示了 4行、5列,分別為自下向上的最初4行和自左向右的最初5列。行號(hào)與列號(hào)的設(shè)置與2081相同。此外,選擇器陣列2083中的第0行所有選擇器的輸入8均為‘0’ ;最上一行(應(yīng)為第8行,但為了便于顯示,在圖20(:中為第4行)所有選擇器的輸入八均為‘0’,且第0行(最下一行)各選擇器的輸出均被送到編碼器2089按輸出的列為‘1’的位置編碼。其他選擇器的輸入八來(lái)源于前一列上一行選擇器的輸出值,輸入8來(lái)源于前一列同一行選擇器的輸出值;且第0列的輸入八來(lái)源于選擇器陣列2081上一行選擇器的輸出值,輸入8來(lái)源于選擇器陣列2081同一行選擇器的輸出值。
[0329]譯碼器2085對(duì)外部指令偏移地址2091進(jìn)行譯碼,得到的掩碼值送往掩碼器2087。由于一個(gè)外部指令塊包含8個(gè)偏移地址,因此該掩碼值的寬度為8位,其中該外部指令偏移地址對(duì)應(yīng)的掩碼位及其之前的掩碼位的值均為‘ 1 ’,該外部指令偏移地址對(duì)應(yīng)的掩碼位之后的掩碼位的值均為‘0’。之后,將該掩碼值與從映射模塊送來(lái)的映射關(guān)系中的行2001進(jìn)行按位與操作,從而保留行2001中該外部指令偏移地址對(duì)應(yīng)的掩碼位及其之前掩碼位對(duì)應(yīng)的值,并將其余值清零,得到一個(gè)8位的控制字送往選擇器陣列2081。
[0330]該控制字的每一位控制選擇器陣列2081中的一列選擇器。當(dāng)該位為‘1’時(shí),相應(yīng)列的選擇器全部選擇輸入8 ;當(dāng)該位為‘0’時(shí),相應(yīng)列的選擇器全部選擇輸入八。即,對(duì)于選擇器陣列2081中的每一列選擇器,若對(duì)應(yīng)的控制位為‘1’,則選擇來(lái)源于前一列下一行的輸出值作為輸入,使得前一列的輸出值整體上移一行,并在最下一行補(bǔ)‘0’,作為本列的輸出;若對(duì)應(yīng)的控制位為‘0’,則選擇來(lái)源于前一列同一行的輸出值作為輸入,保持前一列的輸出值作為本列的輸出。這樣,控制字中有多少個(gè)‘1’,選擇器陣列2081第一列的輸入就會(huì)被上移多少行,即選擇器陣列2081的輸入中的唯一一個(gè)‘1’被上移了相應(yīng)行數(shù)。由于選擇器陣列2081的行數(shù)和列數(shù)與外部指令塊包含的偏移地址個(gè)數(shù)相等,因此選擇器陣列2081的輸出中包含且僅包含一個(gè)‘1’,且這個(gè)‘1’所在的行的位置由控制字中有多少個(gè)‘1’確定。
[0331]同時(shí),從映射模塊送來(lái)的映射關(guān)系中的行2003直接作為控制字被送往選擇器陣列2083。與選擇器陣列2081中類似,該控制字的每一位控制選擇器陣列2083中的一列選擇器。當(dāng)該位為‘1’時(shí),相應(yīng)列的選擇器全部選擇輸入八;當(dāng)該位為‘0’時(shí),相應(yīng)列的選擇器全部選擇輸入8。即,對(duì)于選擇器陣列2083中的每一列選擇器,若對(duì)應(yīng)的控制位為‘1’,則選擇來(lái)源于前一列上一行的輸出值作為輸入,使得前一列的輸出值整體下移一行,并在最上一行補(bǔ)‘0’,作為本列的輸出;若對(duì)應(yīng)的控制位為‘0’,則選擇來(lái)源于前一列同一行的輸出值作為輸入,保持前一列的輸出值作為本列的輸出。這樣,每經(jīng)過(guò)控制字中的一個(gè)‘ 1 ’,選擇器陣列2083的輸入就會(huì)被下移一行,即所述輸入中的唯一一個(gè)‘1’被下移了一行。因此,當(dāng)編碼器2089接收到從選擇器陣列2083最下一行送來(lái)的‘1’時(shí),即可根據(jù)該‘1’所在的列的位置生成對(duì)應(yīng)的內(nèi)部指令偏移地址2093。
[0332]以圖204中的映射關(guān)系為例,若外部指令偏移地址2091值為‘3’ (即對(duì)應(yīng)外部指令塊中的第四個(gè)字節(jié)也即指令8),則掩碼器2087輸出的掩碼值為‘11110000’,與行2001中的值‘01010010’進(jìn)行按位與操作后得到‘01010000’,即控制字中有兩個(gè)‘ 1 ’。這樣,選擇器陣列2081的輸入中的‘1’被上移兩行,即輸出的‘1’位于的第2行。因此,所述‘1’在選擇器陣列2083中經(jīng)2個(gè)值為‘1’的控制位對(duì)應(yīng)的選擇器列之后到達(dá)編碼器2089,因?yàn)樾?003中的值為‘11010’,使得選擇器陣列2083在第0列、第1列對(duì)輸入的‘1’各降一行,最后在第1列向編碼器2089輸出的值為‘1’,對(duì)應(yīng)內(nèi)部指令塊中的第二條指令(偏移地址為‘1’編碼器2089按此編碼得到‘1’,從而將外部指令‘8’的偏移地址值‘3’轉(zhuǎn)換為內(nèi)部指令‘V的偏移地址值‘1’通過(guò)總線2093輸出。
[0333]當(dāng)一條分支指令被轉(zhuǎn)換為相應(yīng)微操作時(shí),如前所述其微操作塊地址剛X與指令塊地址一致;而對(duì)于微操作塊內(nèi)地址8階,則需要根據(jù)該微操作塊地址剛X從映射模塊中讀出相應(yīng)的對(duì)應(yīng)關(guān)系分別作為行2001和2003的內(nèi)容送到指令塊內(nèi)地址轉(zhuǎn)換器,并從總線2091輸入指令塊內(nèi)地址,從而由總線2093輸出微操作塊內(nèi)地址8階。所述微操作塊地址剛X和微操作塊內(nèi)地址8階一同被作為剛存入軌道表備用。
[0334]請(qǐng)參考圖200,其為本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例。本實(shí)施例與圖208實(shí)施例類似,都是將轉(zhuǎn)換得到的對(duì)應(yīng)關(guān)系和微操作填充到行2003和2005從地址最小項(xiàng)([38)開始的位置中。不同之處在于,在本實(shí)施例中,記錄了行2003的終點(diǎn)。
[0335]在本實(shí)施例中,對(duì)某個(gè)指令塊第一次轉(zhuǎn)換的過(guò)程與圖208實(shí)施例相同。然而,在之后的再次轉(zhuǎn)換中,可以不需要對(duì)行2003、2005中的內(nèi)容進(jìn)行右移,而是直接填充新的內(nèi)容到未使用的表項(xiàng)中,記錄并更新相應(yīng)的填充位置信息。當(dāng)需要將指令決內(nèi)地址映射為微操作塊內(nèi)地址時(shí),可以根據(jù)之前記錄的填充位置信息,結(jié)合映射模塊中行2001、2003存儲(chǔ)的對(duì)應(yīng)關(guān)系,完成地址映射。進(jìn)一步地,由于微操作存儲(chǔ)器中的內(nèi)容沒(méi)有被右移,因此已保存在軌道表中的分支微操作軌跡點(diǎn)內(nèi)容不需要被更改。
[0336]具體地,依然以圖208實(shí)施例中的兩次分支轉(zhuǎn)移(第一次以指令8為分支目標(biāo)指令,第二次以指令八為分支目標(biāo)指令)為例進(jìn)行說(shuō)明。在本實(shí)施例中,映射模塊中行2001的填充過(guò)程與圖208相同。即:在處理第一次分支轉(zhuǎn)移時(shí),從行2001的第3項(xiàng)開始依次填入‘10010’,其余項(xiàng)均填入‘0’,如圖200中狀態(tài)1的行2001所示;在處理第二次分支轉(zhuǎn)移時(shí),從行2001的第1項(xiàng)位置開始依次填入‘10’,并保持其余項(xiàng)內(nèi)容不變,如圖200中狀態(tài)2的行2011所示。
[0337]對(duì)于映射模塊中的行2003,則處理第一次分支轉(zhuǎn)移時(shí)的填充過(guò)程與圖208相同,如圖200中狀態(tài)1的行2003和2005所示。此外,在處理第一次分支轉(zhuǎn)移時(shí)還需要記錄這些微操作在行2003 (或行2005)中的結(jié)束位置(在本例中為
[0338]‘3’,如圖200中的指針2027所指位置)。當(dāng)循跡器讀指針指向軌道表中的該位置時(shí),表示已經(jīng)到達(dá)其所在的微操作塊中實(shí)際上的最后一個(gè)微操作,之后循跡器讀指針將被更新指向順序地址的下一微操作塊對(duì)應(yīng)的軌道上。
[0339]在處理第二次分支轉(zhuǎn)移時(shí),首先如圖208實(shí)施例所述,根據(jù)計(jì)算得到的指令字節(jié)差值,由轉(zhuǎn)換器對(duì)指令塊中所述分支目標(biāo)指令的字節(jié)位置(即‘1’ )開始的連續(xù)該指令字節(jié)差值個(gè)字節(jié)(即第1、2字節(jié))如前轉(zhuǎn)換為微操作,并得到對(duì)應(yīng)關(guān)系(即‘廠),并填充到行2003中從地址最大項(xiàng)(138)開始的位置中,如圖200中狀態(tài)2的行2023所示。相應(yīng)地,將本次轉(zhuǎn)換得到的指令4對(duì)應(yīng)的微操作填充到微操作存儲(chǔ)器的行2005中的對(duì)應(yīng)位置2009(即最右邊一項(xiàng))中,如圖200中狀態(tài)2的行2025所示。圖中2017是處理第一次分支轉(zhuǎn)移時(shí)所填充的微操作。
[0340]在本實(shí)施例中,還需要記錄所述從映射模塊中2003行地址最大項(xiàng)(138)開始填充的位數(shù)(即‘1’位),以便映射模塊將指令塊內(nèi)地址轉(zhuǎn)換為微操作塊內(nèi)地址時(shí)作為移位位數(shù)使用,如圖200的移位位數(shù)2021所示。該移位位數(shù)就是該行起始微操作向左循環(huán)移位的位數(shù),在此處為‘1’,即本該在138位置的該行第一個(gè)微操作被向左循環(huán)移位(如仏仏)一位,現(xiàn)位于138。這樣就在映射模塊中建立了這兩次分支轉(zhuǎn)移的完整地址對(duì)應(yīng)關(guān)系。此外,由于行2013 (或行2025)的地址最大項(xiàng)(即第5項(xiàng))并不一定對(duì)應(yīng)該微操作塊的最后一個(gè)微操作(最后一個(gè)微操作的實(shí)際位置由指針2027指向),因此只要指針2027不是指向地址最大項(xiàng),則在對(duì)該地址最大項(xiàng)對(duì)應(yīng)的微操作完成循跡、輸出后,循跡器繼續(xù)從同一行(軌道)中的地址最小項(xiàng)(即第‘0’項(xiàng))開始循跡。
[0341〕 在本實(shí)施例中,當(dāng)軌道表輸出分支軌跡點(diǎn)內(nèi)容時(shí),需要根據(jù)該內(nèi)容中的第一地址在映射模塊中找到相應(yīng)的對(duì)應(yīng)關(guān)系,再根據(jù)該對(duì)應(yīng)關(guān)系通過(guò)指令塊內(nèi)地址轉(zhuǎn)換器將第二地址(即指令的字節(jié)地址)轉(zhuǎn)換為微操作地址,從而在微操作存儲(chǔ)器中找到正確的微操作。具體地,以所述第一地址對(duì)應(yīng)行2011和2023包含的對(duì)應(yīng)關(guān)系為例,在映射模塊進(jìn)行地址轉(zhuǎn)換時(shí),首先將行2011和行2023的值讀出,然后由一個(gè)移位器(圖中未顯示)根據(jù)移位位數(shù)2021的值對(duì)行2023的值進(jìn)行循環(huán)右移之后,再按圖200所述指令塊內(nèi)地址轉(zhuǎn)換器將該指令塊內(nèi)地址轉(zhuǎn)換為相應(yīng)的值通過(guò)總線2093輸出,最后再以微操作塊長(zhǎng)度為模,將總線2093的輸出模減移位位數(shù)即可得到該指令塊內(nèi)地址對(duì)應(yīng)的微操作在微操作存儲(chǔ)器行2025中的實(shí)際地址。
[0342]以圖200中行2011、2013、2025及移位位數(shù)2021顯示的情況為例,假設(shè)某條分支指令的分支目標(biāo)為指令八,則掃描器審查產(chǎn)生的指令塊內(nèi)地址為‘1’。行2011和2013中的值被讀出后,根據(jù)移位位數(shù)2021的值‘1’,行2013的內(nèi)容經(jīng)移位器被循環(huán)右移1位得到‘11010’,與行2011的內(nèi)容‘01010010’一同被送到指令塊內(nèi)地址轉(zhuǎn)換器。指令塊內(nèi)地址轉(zhuǎn)換器據(jù)此將輸入的指令塊內(nèi)地址‘1’轉(zhuǎn)換后,從總線2093輸出‘0’。由于微操作塊長(zhǎng)度為‘6’,因此以‘6’為模對(duì)總線2093輸出的‘0’模減‘1’(即移位位數(shù))之后,得到‘5’,表示指令八對(duì)應(yīng)行2025中的第5個(gè)微操作。這樣,就可以將所述‘5’作為該分支指令對(duì)應(yīng)的分支微操作的分支目標(biāo)微操作的第二地址寫入軌道表的相應(yīng)軌跡點(diǎn)中。之后,可以根據(jù)軌道表輸出的軌跡點(diǎn)內(nèi)容直接查找到微操作,且無(wú)需如圖208實(shí)施例那樣反復(fù)更新軌道表中的內(nèi)容。
[0343]請(qǐng)參考圖202,其為本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例。本實(shí)施例可以視為圖208實(shí)施例和圖200實(shí)施例的結(jié)合。即:采用圖208實(shí)施例所述方法在映射模塊中建立地址對(duì)應(yīng)關(guān)系,并記錄移位位數(shù)2021 ;以及采用圖200實(shí)施例所述方法在軌道表中存儲(chǔ)軌跡點(diǎn)內(nèi)容,并在微操作存儲(chǔ)器中存儲(chǔ)微操作。這樣,在處理完第一次分支轉(zhuǎn)移后,映射模塊中的內(nèi)容如圖202中狀態(tài)1的行2001和2003所示,微操作存儲(chǔ)器中的內(nèi)容如圖202中狀態(tài)1的行2005所示,移位位數(shù)2021是‘0’。在處理完第二次分支轉(zhuǎn)移后,映射模塊中的內(nèi)容如圖202中狀態(tài)2的行2011和2013所示,微操作存儲(chǔ)器中的內(nèi)容如圖202中狀態(tài)2的行2025所示,且所記錄的移位位數(shù)2021為‘1’。即存儲(chǔ)在映射模塊的行2013中的微操作位置信息已經(jīng)是移位后的(按地址最小項(xiàng)對(duì)齊),而存儲(chǔ)在軌道表中的軌跡點(diǎn)及微操作存儲(chǔ)器中的微操作均是不移位的。
[0344]在本實(shí)施例中,在填充微操作行,如2005,時(shí)不進(jìn)行移位,但填充映射模塊中對(duì)應(yīng)微操作行的映射行,如2003時(shí)需進(jìn)行移位,并記錄移位位數(shù)2021。當(dāng)映射模塊進(jìn)行地址轉(zhuǎn)換時(shí),將行2011和行2023的值讀出直接送到圖200所述指令塊內(nèi)地址轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,之后再對(duì)指令塊內(nèi)地址轉(zhuǎn)換器總線2093輸出的值按圖200實(shí)施例所述方法模減移位位數(shù)2021,得到微操作塊內(nèi)地址,此地址可被存入軌道表,根據(jù)該微操作塊內(nèi)地址可直接對(duì)微操作存儲(chǔ)器的行2025尋址,讀出相應(yīng)的微操作。因?yàn)檐壍辣碇写娣诺氖冀K是不移位的微操作塊內(nèi)地址,因此不需如同圖208實(shí)施例一般修改軌道表中的地址。
[0345]這樣,在圖208實(shí)施例中,建立地址對(duì)應(yīng)關(guān)系和填充微操作時(shí)都可能需要移位,而使用地址對(duì)應(yīng)關(guān)系轉(zhuǎn)換地址及讀出微操作的過(guò)程中不需要移位。在圖200實(shí)施例中,建立地址對(duì)應(yīng)關(guān)系、填充微操作及讀出微操作的過(guò)程中不需要移位,而使用地址對(duì)應(yīng)關(guān)系轉(zhuǎn)換地址的過(guò)程中可能需要移位。在圖202實(shí)施例中,建立地址對(duì)應(yīng)關(guān)系時(shí)可能需要移位,而填充微操作、使用地址對(duì)應(yīng)關(guān)系轉(zhuǎn)換地址及讀出微操作的過(guò)程中不需要移位。因此可以根據(jù)應(yīng)用本發(fā)明技術(shù)方案時(shí)的具體情況,選擇不同的方法。
[0346]此外,當(dāng)采用圖208實(shí)施例所述方法時(shí),由于在建立地址對(duì)應(yīng)關(guān)系時(shí)已經(jīng)進(jìn)行了移位,因此該對(duì)應(yīng)關(guān)系是按最小地址([38)對(duì)齊的,因此在其順序地址的上一指令塊對(duì)應(yīng)的結(jié)束軌跡點(diǎn)中的第二地址(8階)必定是‘0’。而在采用圖200和圖202實(shí)施例所述方法時(shí),該對(duì)應(yīng)關(guān)系并沒(méi)有按最小地址([38)對(duì)齊,因此在其順序地址的上一指令塊對(duì)應(yīng)的結(jié)束軌跡點(diǎn)中的第二地址(8階)不一定是‘0’。例如,在圖200實(shí)施例中,微操作塊中的第一個(gè)微操作的位置對(duì)應(yīng)行2023中的第5項(xiàng),因此其順序地址的上一指令塊對(duì)應(yīng)的結(jié)束軌跡點(diǎn)中的第二地址(8階)是‘5’。因此在軌道表的結(jié)束軌跡點(diǎn)中存放的順序下條軌道的地址時(shí),不能僅保存第一地址剛X。而是要第一地址剛X,第二地址8階一起保存,因?yàn)榇藭r(shí)第二地址不能保證為‘0’,不可省略。該8階可由順序下一行中的移位數(shù)2021計(jì)算得到,或者由本行中最后一條指令的長(zhǎng)度和該指令的起始位置計(jì)算得到。
[0347]請(qǐng)參考圖20?,其為本發(fā)明所述對(duì)順序地址下一指令塊產(chǎn)生映射關(guān)系的一種實(shí)施例。根據(jù)本發(fā)明技術(shù)方案,若一個(gè)指令塊的最后一條指令的一部分位于順序地址的下一指令塊中,則所述下一指令塊中的該部分內(nèi)容被歸屬于所述分支目標(biāo)指令塊中。在本實(shí)施例中,映射模塊中除存儲(chǔ)了地址對(duì)應(yīng)關(guān)系外,還記錄了每個(gè)指令塊最后一條指令中位于下一指令塊中的內(nèi)容的長(zhǎng)度。這樣,在對(duì)分支目標(biāo)指令做地址映射時(shí),可以先在映射模塊中查找該指令塊順序地址的上一指令塊的相應(yīng)信息。若在映射模塊中所述上一指令塊的相應(yīng)信息已經(jīng)存在,則可以讀出該信息中記錄的所述長(zhǎng)度值,根據(jù)該長(zhǎng)度值即可在所述分支目標(biāo)指令塊中找到屬于該指令塊的第一條指令的起始位置,并從該位置開始對(duì)所述分支目標(biāo)指令塊進(jìn)行轉(zhuǎn)換,從而避免如圖208、圖200或圖202實(shí)施例中可能發(fā)生的對(duì)同一指令塊多次轉(zhuǎn)換的情況。
[0348]依然以指令8為分支目標(biāo)指令為例進(jìn)行說(shuō)明。轉(zhuǎn)換器首先在映射模塊中查找該分支目標(biāo)指令塊(即指令8所在的指令塊)的順序地址的上一指令塊是否已經(jīng)建立了地址對(duì)應(yīng)關(guān)系。
[0349]若該上一指令塊的地址對(duì)應(yīng)關(guān)系尚未建立,則按圖208、圖200或圖202實(shí)施例所述方法在映射模塊中建立地址對(duì)應(yīng)關(guān)系并填充微操作存儲(chǔ)器,具體過(guò)程在此不再重復(fù)。
[0350]若該上一指令塊的地址對(duì)應(yīng)關(guān)系已經(jīng)建立(例如圖20?中的行2049),則可以從讀出該上一指令塊中最后一條指令在其下一指令塊(即該分支目標(biāo)指令塊)中的長(zhǎng)度值2047。在本實(shí)施例中長(zhǎng)度值2047的值為‘ 1’,表示該分支目標(biāo)指令塊中從最小地址([38)開始有‘1’個(gè)字節(jié)(即第0字節(jié))的內(nèi)容屬于所述上一指令塊,因此該分支目標(biāo)指令塊的第一條指令從第1字節(jié)開始。這樣,轉(zhuǎn)換器就可以直接從所述第1字節(jié)開始進(jìn)行轉(zhuǎn)換,直到該指令塊中所有指令都轉(zhuǎn)換完畢。
[0351]具體地,由于已知起始指令的位置,因此轉(zhuǎn)換器可以檢測(cè)到該分支目標(biāo)指令塊中所有3條指令的位置,得到‘01010010’填充到行2001的相應(yīng)位置中,結(jié)果如圖20?的行2041所示。同時(shí),轉(zhuǎn)換器轉(zhuǎn)換生成這3條指令對(duì)應(yīng)的5個(gè)微操作填充到行2005地址最小項(xiàng)
(188)開始的位置中,并將轉(zhuǎn)換得到的對(duì)應(yīng)關(guān)系‘11010’填充到行2003地址最小項(xiàng)(138)開始的位置中,并將結(jié)果如圖20?的行2045和2043所示。如果指令轉(zhuǎn)換是從一行指令到下一行順序指令,則下一行的指令的起始字節(jié)可從本行的最后一條指令的起始位置及該指令的長(zhǎng)度算出,與此實(shí)施例相同。
[0352]在此過(guò)程中,若所述分支目標(biāo)指令塊的最后一條指令全部位于該分支目標(biāo)指令塊中,則產(chǎn)生并記錄該分支目標(biāo)指令塊對(duì)應(yīng)的所述長(zhǎng)度值‘0’,以備以后使用。若所述分支目標(biāo)指令塊的最后一條指令有部分位于該分支目標(biāo)指令塊的順序地址的下一指令塊中,則將其位于下一指令塊中的那部分的字節(jié)數(shù)作為該分支目標(biāo)指令塊對(duì)應(yīng)的相應(yīng)長(zhǎng)度值并記錄,以備以后使用。如圖20?中2037中記錄的‘2’,提示該行順序下一行的第一條指令從第二字節(jié)開始。
[0353]此外,還可以對(duì)上述方法進(jìn)行改進(jìn),以避免建立地址對(duì)應(yīng)關(guān)系、使用地址對(duì)應(yīng)關(guān)系或讀出微操作時(shí)所需的移位。請(qǐng)參考圖20匕其為本發(fā)明所述產(chǎn)生映射關(guān)系的另一種方法的實(shí)施例。本方法的基本思路與圖208實(shí)施例類似,根據(jù)分支目標(biāo)指令的位置,分段對(duì)分支指令塊中的指令轉(zhuǎn)換并填充映射模塊和微操作存儲(chǔ)器。不同之處在于,本方法將轉(zhuǎn)換得到的微操作及其位置信息分別填充到行2005和2003中從地址最大項(xiàng)(138)開始倒序填充。
[0354]所述倒序填充的具體可以有兩種實(shí)現(xiàn)方法。以微操作的倒序填充為例,第一種方法是:轉(zhuǎn)換器從指令塊中的待轉(zhuǎn)換指令按順序進(jìn)行轉(zhuǎn)換,依次產(chǎn)生相應(yīng)的微操作,并存儲(chǔ)在一個(gè)緩沖存儲(chǔ)器(圖中未顯示)中。等到該指令塊的最后一條指令被轉(zhuǎn)換完畢后,再?gòu)脑摼彌_存儲(chǔ)器中存儲(chǔ)的最后一個(gè)微操作起向行2005的地址最大項(xiàng)開始倒序填充,直到緩沖存儲(chǔ)器中的全部微操作均被填充完畢。第二種方法是;先按順序?qū)ΥD(zhuǎn)換指令進(jìn)行指令區(qū)分(1)虹81118),判斷出每條指令的起始字節(jié)位置,然后再?gòu)淖詈笠粭l指令開始按倒序進(jìn)行轉(zhuǎn)換,依次產(chǎn)生相應(yīng)的微操作,并按相同的倒序從行2005的地址最大項(xiàng)開始進(jìn)行填充,直到所述待轉(zhuǎn)換指令全部被轉(zhuǎn)換填充完畢。
[0355]依然以圖208實(shí)施例中的兩次分支轉(zhuǎn)移為例進(jìn)行說(shuō)明。在處理第一次分支轉(zhuǎn)移時(shí),轉(zhuǎn)換器從指令8開始檢測(cè)所述指令塊的后續(xù)部分,一共發(fā)現(xiàn)指令8和指令0,并得到其位置信息‘10010’填充到行2001中這些指令對(duì)應(yīng)的位置中。同時(shí),轉(zhuǎn)換器按前述方法將指令8、各轉(zhuǎn)換為2個(gè)微操作,并得到對(duì)應(yīng)關(guān)系‘1010’,在行2003從地址最大項(xiàng)(138)開始往較小地址方向填入,并記錄填入內(nèi)容的起始位置(在本實(shí)施例中為第2^〉。由于這是第一次以該指令塊為分支目標(biāo)的分支轉(zhuǎn)移,行2001和2003的其余表項(xiàng)均被填入‘0’,結(jié)果如圖206中狀態(tài)1的行2061所示。這樣,依然可以使用圖50實(shí)施例所述方法,通過(guò)行2001和2003中的‘1’進(jìn)行計(jì)數(shù)就可以將指令塊內(nèi)偏移地址轉(zhuǎn)換為微操作塊內(nèi)偏移地址。相應(yīng)地,轉(zhuǎn)換得到的4個(gè)微操作在微操作存儲(chǔ)器中行2005從地址最大項(xiàng)(138)開始往較小地址方向倒序填入,如圖20(}中狀態(tài)1的行2065的陰影部分2017所示。
[0356]在處理第二次分支轉(zhuǎn)移時(shí),與圖208實(shí)施例所述方法類似,也可以有兩種處理方法。第一種處理方法是:轉(zhuǎn)換器從指令八對(duì)應(yīng)的地址(第1字節(jié))開始重復(fù)上述過(guò)程,即檢測(cè)到指令八、8、各自的起始位置和長(zhǎng)度后,得到‘1010010’填充到行2001中這些指令對(duì)應(yīng)的位置中,并將轉(zhuǎn)換得到的微操作對(duì)應(yīng)關(guān)系‘11010’填充到行2003從地址最大項(xiàng)(138)開始的位置中,且行2001和2003的其余表項(xiàng)均被填入‘0’ ;以及將轉(zhuǎn)換得到的5個(gè)微操作倒序填充到微操作存儲(chǔ)器中行2005從地址最大項(xiàng)(138)開始的位置中,從而分別覆蓋行2001、2003、2005中的原有內(nèi)容。結(jié)果如圖20(}中狀態(tài)2的行2071、2073和2075所示。其中行2075中的陰影部分2017中存儲(chǔ)的是指令8、0對(duì)應(yīng)的4個(gè)微操作,而陰影部分2019存儲(chǔ)的是指令八對(duì)應(yīng)的1個(gè)微操作。
[0357]第二種處理方法是:分別在寄存器2068和2069中記錄行2061和2063中每次填充的最后位置(在本例中第一次填充后這兩個(gè)位置分別對(duì)應(yīng)指令8和微操作(1的起始位置),轉(zhuǎn)換器如前所述僅轉(zhuǎn)換到上次填充的最后位置之前的一個(gè)字節(jié),即對(duì)指令4進(jìn)行轉(zhuǎn)換,將指令八的位置信息按倒序填充到行2003中從所述記錄的上一次填充的最后位置(即第3項(xiàng))開始往較小地址方向倒序填充,并保持其余項(xiàng)內(nèi)容不變;將轉(zhuǎn)換得到的對(duì)應(yīng)關(guān)系(即‘廠)按倒序填充到行2003中從所述記錄的上一次填充的最后位置(即第2項(xiàng))開始往較小地址方向倒序填充,并保持其余項(xiàng)內(nèi)容不變。同時(shí),將轉(zhuǎn)換得到的指令八對(duì)應(yīng)的微操作從行2005從所述記錄的起始位置(即第2項(xiàng))開始往較小地址方向倒序填充,并保持其余項(xiàng)內(nèi)容不變。這樣,得到的結(jié)果與第一種方法相同,如圖20(}中狀態(tài)2的行2071、2073和2075所示。
[0358]此外,由于圖20(}實(shí)施例中的地址對(duì)應(yīng)關(guān)系不是按最小地址(138)對(duì)齊,而是按最大地址(138)對(duì)齊的,因此其第一個(gè)微操作對(duì)應(yīng)的位置不一定是‘0’。即,在其順序地址的上一指令塊對(duì)應(yīng)的結(jié)束軌跡點(diǎn)中的第二地址(8階)不一定是‘0’。具體地,在圖20(}實(shí)施例中,微操作塊中的第一個(gè)微操作的位置對(duì)應(yīng)行2023中的第1項(xiàng),因此其順序地址的上一指令塊對(duì)應(yīng)的結(jié)束軌跡點(diǎn)中的第二地址(8階)是‘1’。如同在圖200和圖202的實(shí)施例中一般,此例中結(jié)束軌跡點(diǎn)中的下一行地址也有必要包含第二地址8階。
[0359]雖然本說(shuō)明書的上述實(shí)施例都是對(duì)指令轉(zhuǎn)換為微操作進(jìn)行說(shuō)明,但是,根據(jù)本發(fā)明技術(shù)方案,還可以將這些方法推廣到對(duì)不同指令集之間的指令轉(zhuǎn)換,并可以根據(jù)映射模塊中存儲(chǔ)的地址對(duì)應(yīng)關(guān)系,通過(guò)偏移地址轉(zhuǎn)換器從一種指令(以下簡(jiǎn)稱為外部指令)的指令塊內(nèi)偏移地址得到另一種指令(以下簡(jiǎn)稱為內(nèi)部指令)對(duì)應(yīng)的指令塊內(nèi)偏移地址。此時(shí),本說(shuō)明書之前所述的變長(zhǎng)指令及微操作可以分別視為外部指令和內(nèi)部指令的一種特例。
[0360]根據(jù)本發(fā)明技術(shù)方案和構(gòu)思,還可以有其他任何合適的改動(dòng)。對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),所有這些替換、調(diào)整和改進(jìn)都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種變長(zhǎng)指令字處理器系統(tǒng),其特征在于,包括: 處理器核,所述處理器核用以執(zhí)行微操作; 轉(zhuǎn)換器,所述轉(zhuǎn)換器用以將指令轉(zhuǎn)換為微操作; 微操作存儲(chǔ)器,所述微操作存儲(chǔ)器用以存儲(chǔ)轉(zhuǎn)換得到的微操作; 映射模塊,所述映射模塊用以存儲(chǔ)指令與微操作之間的地址映射關(guān)系。
2.如權(quán)利要求1所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,所述轉(zhuǎn)換器將指令塊內(nèi)地址轉(zhuǎn)換為微操作塊內(nèi)地址。
3.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,所述轉(zhuǎn)換器將分支指令的分支增量轉(zhuǎn)換為補(bǔ)償后的分支增量;所述補(bǔ)償后的分支增量等于所述分支指令本身的塊內(nèi)地址與所述分支指令的分支增量之和。
4.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包括: 結(jié)束標(biāo)志存儲(chǔ)器,所述結(jié)束標(biāo)志存儲(chǔ)器用以存儲(chǔ)微操作存儲(chǔ)器中每個(gè)微操作塊的最后一個(gè)微操作的位置信息。
5.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,微操作存儲(chǔ)器根據(jù)轉(zhuǎn)換器對(duì)處理器核輸出的完整指令地址或部分指令地址轉(zhuǎn)換得到的微操作地址輸出相應(yīng)的微操作供處理器核執(zhí)行。
6.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包括: 微操作讀緩沖,所述微操作讀緩沖主動(dòng)向處理器輸出微操作供執(zhí)行;和 所述微操作讀緩沖中的每一個(gè)微操作對(duì)應(yīng)一個(gè)令牌傳遞器,所述令牌傳遞器用于傳遞令牌;所述微操作讀緩沖主動(dòng)向處理器核輸出令牌所在的令牌傳遞器對(duì)應(yīng)的微操作供處理器核執(zhí)行。
7.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包括: 軌道表,所述軌道表用以存儲(chǔ)分支微操作的分支目標(biāo)微操作地址信息; 循跡器,所述循跡器前行到處理器核當(dāng)前正在執(zhí)行的微操作之后的第一個(gè)分支微操作,并輸出該分支微操作的下一微操作的地址和目標(biāo)微操作的地址;和 當(dāng)所述下一微操作或目標(biāo)微操作尚未存儲(chǔ)在微操作存儲(chǔ)器中時(shí),向微操作存儲(chǔ)器填充所述下一微操作或目標(biāo)微操作。
8.如權(quán)利要求7所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,微操作存儲(chǔ)器根據(jù)轉(zhuǎn)換器對(duì)處理器核輸出的部分指令地址轉(zhuǎn)換得到的偏移地址從由循跡器指向的微操作塊中輸出相應(yīng)的微操作供處理器核執(zhí)行。
9.如權(quán)利要求7所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包括: 微操作讀緩沖,所述微操作讀緩沖主動(dòng)向處理器輸出微操作供執(zhí)行;和 所述微操作讀緩沖中的每一個(gè)微操作對(duì)應(yīng)一個(gè)令牌傳遞器,所述令牌傳遞器用于傳遞令牌;所述微操作讀緩沖主動(dòng)向處理器核輸出令牌所在的令牌傳遞器對(duì)應(yīng)的微操作供處理器核執(zhí)行。
10.如權(quán)利要求6、9所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,當(dāng)按地址順序執(zhí)行同一微操作塊內(nèi)的微操作時(shí),所述令牌從當(dāng)前令牌傳遞器向相鄰的令牌傳遞器傳遞;和 當(dāng)執(zhí)行不同微操作塊中的微操作時(shí),所述令牌通過(guò)全局總線當(dāng)前令牌傳遞器向相應(yīng)的令牌傳遞器傳遞。
11.如權(quán)利要求2、6、8、9所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包括更多低層次存儲(chǔ)器; 所述低層次存儲(chǔ)器中存儲(chǔ)的是指令或微操作。
12.如權(quán)利要求2所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,所述轉(zhuǎn)換器將不同指令集的指令轉(zhuǎn)換為一種指令集的指令。
13.一種變長(zhǎng)指令字處理器方法,其特征在于,將指令轉(zhuǎn)換為微操作,并建立指令地址和微操作地址之間的映射關(guān)系; 根據(jù)所述映射關(guān)系將處理器核輸出的指令地址轉(zhuǎn)換為微操作地址,并根據(jù)所述微操作地址向處理器核輸出相應(yīng)微操作供執(zhí)行;或直接根據(jù)處理器核輸出的微操作地址向處理器核輸出相應(yīng)微操作供執(zhí)行。
14.如權(quán)利要求13所述的變長(zhǎng)指令字處理器方法,其特征在于,指令塊地址與微操作塊地址相等,并建立指令塊內(nèi)地址和微操作塊內(nèi)地址之間的映射關(guān)系。
15.如權(quán)利要求14所述的變長(zhǎng)指令字處理器方法,其特征在于,通過(guò)轉(zhuǎn)換對(duì)每個(gè)微操作塊的最后一個(gè)微操作的位置進(jìn)行標(biāo)記。
16.如權(quán)利要求15所述的變長(zhǎng)指令字處理器方法,其特征在于,根據(jù)指令的指令塊地址找到微操作塊,并將指令塊內(nèi)地址轉(zhuǎn)換為微操作地址以從所述微操作塊內(nèi)找到相應(yīng)微操作;且 所述微操作是所述指令對(duì)應(yīng)的至少一個(gè)微操作中的第一個(gè)微操作。
17.如權(quán)利要求16所述的變長(zhǎng)指令字處理器方法,其特征在于,通過(guò)對(duì)指令塊內(nèi)從第一條指令到待尋址指令之間的指令數(shù)目計(jì)數(shù),并對(duì)相應(yīng)微操作塊內(nèi)從第一個(gè)微操作到待尋址微操作之間的對(duì)應(yīng)每條指令的第一個(gè)微操作的微操作數(shù)目計(jì)數(shù),將指令地址轉(zhuǎn)換為微操作地址。
18.如權(quán)利要求14所述的變長(zhǎng)指令字處理器方法,其特征在于,將分支指令塊內(nèi)地址與分支增量相加,得到相應(yīng)分支微操作的補(bǔ)償后的分支增量;和 通過(guò)將分支微操作對(duì)應(yīng)的微操作塊的塊地址和補(bǔ)償后的分支增量相加,即可得到所述分支微操作對(duì)應(yīng)的分支目標(biāo)微操作地址。
19.如權(quán)利要求18所述的變長(zhǎng)指令字處理器方法,其特征在于,在向緩存填充微操作時(shí),計(jì)算所有分支微操作的目標(biāo)微操作地址,并將所述目標(biāo)微操作地址或所述目標(biāo)微操作地址映射后的地址信息存儲(chǔ)在軌道表中;和 當(dāng)執(zhí)行到分支微操作時(shí),直接得到所述目標(biāo)微操作的位置信息。
20.如權(quán)利要求19所述的變長(zhǎng)指令字處理器方法,其特征在于,在部分或全部所述分支微操作被執(zhí)行前,預(yù)先將相應(yīng)目標(biāo)微操作填充到緩存中,并更新軌道表中的相應(yīng)信息;和 當(dāng)執(zhí)行到分支微操作時(shí),直接得到所述目標(biāo)微操作在緩存中的位置信息,或直接從緩存中找到所述目標(biāo)微操作。
21.如權(quán)利要求13所述的變長(zhǎng)指令字處理器方法,其特征在于,所述轉(zhuǎn)換還能將一種或多種指令集的指令轉(zhuǎn)換為另一種指令集的指令。
22.如權(quán)利要求1所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,所述轉(zhuǎn)換器可以分多次將指令塊轉(zhuǎn)換為微操作塊。
23.如權(quán)利要求22所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,還包含一個(gè)移位器; 當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最小地址邊界對(duì)齊;和 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),先由所述移位器將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
24.如權(quán)利要求23所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,每次對(duì)指令塊轉(zhuǎn)換時(shí),記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息; 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),根據(jù)所述位置信息將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
25.如權(quán)利要求22所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊,并記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;和 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),將本次轉(zhuǎn)換得到的微操作與該微操作塊中已轉(zhuǎn)換的微操作拼接,使得全部轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊。
26.如權(quán)利要求22、23、24、25所述的變長(zhǎng)指令字處理器系統(tǒng),其特征在于,每個(gè)微操作塊中還記錄了其順序地址下一微操作塊第一個(gè)微操作的位置信息。
27.如權(quán)利要求13所述的變長(zhǎng)指令字處理器方法,其特征在于,所述轉(zhuǎn)換可以分多次將指令塊轉(zhuǎn)換為微操作塊。
28.如權(quán)利要求27所述的變長(zhǎng)指令字處理器方法,其特征在于,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最小地址邊界對(duì)齊;和 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),先將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
29.如權(quán)利要求28所述的變長(zhǎng)指令字處理器方法,其特征在于,每次對(duì)指令塊轉(zhuǎn)換時(shí),記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息; 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),根據(jù)所述位置信息將已轉(zhuǎn)換部分的微操作移位存儲(chǔ)到微操作塊的合適位置,再將本次轉(zhuǎn)換得到的微操作填入該微操作塊的相應(yīng)位置中。
30.如權(quán)利要求27所述的變長(zhǎng)指令字處理器方法,其特征在于,當(dāng)?shù)谝淮螌?duì)指令塊進(jìn)行轉(zhuǎn)換且只轉(zhuǎn)換從指令塊中某條指令開始直到指令塊結(jié)束的這一部分指令時(shí),將轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊,并記錄被轉(zhuǎn)換指令在指令塊中的位置信息以及轉(zhuǎn)換得到的微操作在微操作塊中的位置信息;和 當(dāng)對(duì)所述指令塊中部分或全部未轉(zhuǎn)換的部分進(jìn)行轉(zhuǎn)換時(shí),將本次轉(zhuǎn)換得到的微操作與該微操作塊中已轉(zhuǎn)換的微操作拼接,使得全部轉(zhuǎn)換得到的微操作按微操作塊的最大地址邊界對(duì)齊。
31.如權(quán)利要求27、28、29、30所述的變長(zhǎng)指令字處理器方法,其特征在于,每個(gè)微操作塊中還記錄了其順序地址下一微操作塊第一個(gè)微操作的位置信息。
【文檔編號(hào)】G06F12/08GK104424128SQ201410399873
【公開日】2015年3月18日 申請(qǐng)日期:2014年8月14日 優(yōu)先權(quán)日:2013年8月19日
【發(fā)明者】林正浩 申請(qǐng)人:上海芯豪微電子有限公司