两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

微處理器及微處理器方法

文檔序號(hào):6580109閱讀:181來源:國知局
專利名稱:微處理器及微處理器方法
技術(shù)領(lǐng)域
本發(fā)明有關(guān)于微處理器,且特別有關(guān)于生成微指令的裝置, 用以執(zhí)行字串搬移宏指令。
背景技術(shù)
英特爾架構(gòu)(IA-32)指令集(普遍地也被稱為x86架構(gòu))包括 一字串(MOVS)宏指令(在英特爾軟件開發(fā)者手冊(cè)中稱為"字串 搬移"指令)。MOVS宏指令從來源存儲(chǔ)器位置搬移字節(jié)(8位)、 字(16位)、雙字(32位)或四字(64位)到目的地存儲(chǔ)器位置。重復(fù) (REP)前置指令可被加在MOVS宏指令之前,用以多次重復(fù) MOVS宏指令來搬移字節(jié)、字、雙字或四字。
包含字串重復(fù)拍i移(REP MOVS)宏指令的程序也必須包括 優(yōu)先指令(prior instruction),此優(yōu)先指令將ECX暫存器載入一 值,此值指定MOVS宏指令要被重復(fù)的次數(shù)。也就是說ECX暫 存器指定要被搬移的字串的大小,如那些要被從來源存儲(chǔ)器位 置搬移至目的地存儲(chǔ)器位置的字節(jié)、字、雙字、四字?jǐn)?shù)目。詳 細(xì)的MOVS宏指令提供于IA-32英特爾軟件開發(fā)者手冊(cè)第2A集: 指令集參考資料A-M的第3-656到3-659頁。而詳細(xì)的REP前置指 令提供于IA-32英特爾軟件開發(fā)者手冊(cè)第2B集:指令集參考資料 N-Z的第4-21 l到4-215頁。以上全部細(xì)節(jié)在此合并一起作為參考 資料。
許多現(xiàn)代化的微處理器都擁有指令轉(zhuǎn)譯器,指令轉(zhuǎn)譯器將 如同x86這樣的宏指令轉(zhuǎn)換為一個(gè)或多個(gè)在微處理器的微架構(gòu) 內(nèi)執(zhí)行的微指令。當(dāng)微處理器執(zhí)行了全部組成的微指令,它會(huì) 完成宏指令的語義(semantics)。指令轉(zhuǎn)譯器本身產(chǎn)生 一組不同的微指令序列給每一個(gè)更普通的宏指令來完成宏指令。另外,
微指令ROM耦接于指令轉(zhuǎn)譯器。微指令ROM儲(chǔ)存微指令序列, 這些微指令序列用來完成更復(fù)雜或更不常出現(xiàn)的x86宏指令的 語義,此動(dòng)作降低了指令轉(zhuǎn)譯器的復(fù)雜性。因此,微指令序列 可能由指令轉(zhuǎn)譯器產(chǎn)生或微指令ROM輸出,依微處理器的設(shè)計(jì) 基準(zhǔn)而定。
因?yàn)樽执嵋浦噶铌P(guān)系到反復(fù)的操作,上述操作由一執(zhí)行 一回路的微指令ROM中的 一微指令序列完成。ECX暫存器的計(jì) 數(shù)值決定微指令在回路被執(zhí)行的次數(shù)。每執(zhí)行 一 次回路便減少 ECX暫存器的值,并且位于回路結(jié)尾的條件分支指令 (conditional branch instruction)根據(jù)ECX暫存器目前的值條件分 支回到回路的起始位置。然而,回路的執(zhí)行效能相對(duì)較差,因
為條件分支指令需要相對(duì)較大的時(shí)鐘周期來執(zhí)行。更進(jìn)一步, 如果微處理器錯(cuò)估分支結(jié)果,要修復(fù)錯(cuò)誤預(yù)估的后果相當(dāng)大, 特別是在管線化很深的微處理器。因此,所需要的是一個(gè)改善 字串重復(fù)搬移(REP MOVS)宏指令效能的方法。

發(fā)明內(nèi)容
本發(fā)明提供一個(gè)微處理器,并用來執(zhí)行英特爾架構(gòu)(IA-32) 字串重復(fù)搬移(REP MOVS)宏指令。被搬移的字串的字長度指 定(specified)為于IA-32架構(gòu)的ECX暫存器中的 一立即值。微處 理器包括一存儲(chǔ)器,配置來儲(chǔ)存第一組微指令序列,用以完成 字串重復(fù)搬移宏指令,上述第一組微指令序列包括一條件分支 微指令,當(dāng)條件分支微指令被執(zhí)行時(shí),上述條件分支微指令就 會(huì)根據(jù)儲(chǔ)存于IA-32架構(gòu)的ECX暫存器的字長度條件分支至第 一組微指令序列內(nèi)的一微指令。存儲(chǔ)器也配置來儲(chǔ)存第二組微 指令序列,用以完成字串重復(fù)搬移宏指令,上述第二組微指令
9序列不包括任何條件分支微指令。微處理器包括一指令轉(zhuǎn)譯器,
并耦接于存儲(chǔ)器。因應(yīng)搬移立即值給IA-32架構(gòu)的ECX暫存器的 宏指令,指令轉(zhuǎn)譯器設(shè)定一個(gè)快速字串旗標(biāo)并儲(chǔ)存立即值。因 應(yīng)以不同于搬移立即值給IA-32架構(gòu)的ECX暫存器的方式來修 改IA-32架構(gòu)的ECX暫存器的宏指令,指令轉(zhuǎn)譯器清除快速字串 旗標(biāo)。因應(yīng)字串重復(fù)搬移宏指令,如果快速字串旗標(biāo)被清除, 指令轉(zhuǎn)譯器轉(zhuǎn)移上述微處理器的控制權(quán)給第 一 組微指令序列;
如果快速字串旗標(biāo)被設(shè)定,指令轉(zhuǎn)譯器根據(jù)儲(chǔ)存的立即值轉(zhuǎn)移 上述微處理器的控制權(quán)給第二組微指令序列內(nèi)的一 目標(biāo)位置。
本發(fā)明提供一方法,用來使微處理器執(zhí)行英特爾架構(gòu) (IA-32)字串重復(fù)搬移(REP MOVS)宏指令,其中被搬移的字串 的字長度指定為于IA-32架構(gòu)的ECX暫存器中的一立即值。微處 理器包括一存儲(chǔ)器,用來儲(chǔ)存多個(gè)微指令序列。因應(yīng)搬移立即 值給IA-32架構(gòu)的ECX暫存器的宏指令,上述方法包括設(shè)定一快 速字串旗標(biāo)與儲(chǔ)存立即值。因應(yīng)以不同于搬移立即值給IA-32 架構(gòu)的ECX暫存器的方式來修改IA-32架構(gòu)的ECX暫存器的宏 指令,上述方法包括清除快速字串旗標(biāo)。因應(yīng)字串重復(fù)搬移宏 指令,上述方法包括設(shè)定或清除快速字串旗標(biāo),當(dāng)快速字串旗 標(biāo)被清除時(shí),上述方法包括轉(zhuǎn)移上述微處理器的控制權(quán)到第一 組微指令序列,以完成字串重復(fù)搬移宏指令。當(dāng)快速字串旗標(biāo) 被設(shè)定時(shí),上述方法包括根據(jù)儲(chǔ)存的立即值,轉(zhuǎn)移上述微處理 器的控制權(quán)到第二組微指令序列內(nèi)的一 目標(biāo)位置,以完成字串 重復(fù)搬移宏指令。第一組微指令序列包括一條件分支微指令, 當(dāng)條件分支微指令被執(zhí)行時(shí),上述條件分支微指令就會(huì)根據(jù)儲(chǔ) 存于IA-32架構(gòu)的ECX暫存器的字長度條件分支至第一組微指 令序列的 一 微指令。第二組微指令序列不包括任何條件分支微 指令。本發(fā)明提供 一 個(gè)微處理器,并用來執(zhí)行英特爾架構(gòu)(IA - 3 2) 字串重復(fù)搬移(REP MOVS)宏指令,其中被搬移的字串的字長 度指定為于IA-32架構(gòu)的ECX暫存器中的 一 立即值。微處理器包 括一存儲(chǔ)器,配置來儲(chǔ)存第一組微指令序列,用以完成字串重 復(fù)搬移宏指令,上述第一組微指令序列包括一條件分支微指令, 當(dāng)條件分支微指令被執(zhí)行時(shí),上述條件分支微指令就會(huì)根據(jù)儲(chǔ) 存于IA-32架構(gòu)的ECX暫存器的字長度條件分支至第一組微指 令序列的一微指令。微處理器包括一指令轉(zhuǎn)譯器,并耦接于存 儲(chǔ)器。因應(yīng)搬移立即值給IA-32架構(gòu)的ECX暫存器的宏指令,指 令轉(zhuǎn)譯器設(shè)定一快速字串旗標(biāo)并儲(chǔ)存立即值。因應(yīng)以不同于搬 移立即值給IA-32架構(gòu)的ECX暫存器的方式來修改IA-32架構(gòu)的 ECX暫存器的宏指令,指令轉(zhuǎn)譯器清除快速字串旗標(biāo)。因應(yīng)字 串重復(fù)搬移宏指令,如果快速字串旗標(biāo)被清除,指令轉(zhuǎn)譯器會(huì) 轉(zhuǎn)移上述微處理器的控制權(quán)給第 一 組微指令序列;如果快速字 串旗標(biāo)被設(shè)定,指令轉(zhuǎn)譯器會(huì)根據(jù)儲(chǔ)存的立即值產(chǎn)生第二組微 指令序列。第二組微指令序列會(huì)完成字串重復(fù)搬移宏指令,并 且不包含任何條件分支微指令。
本發(fā)明提供 一 個(gè)微處理器,并用來執(zhí)行英特爾架構(gòu) (IA-32)REP STOS 、 REP INS 、 REP OUTS 、 REP LODS 、 REP CMPS 或REP SCAS宏指令,其中被搬移的字串的字長度指定為于 IA-32架構(gòu)的ECX暫存器中的一立即值。微處理器包括一存儲(chǔ) 器,配置來儲(chǔ)存第一組微指令序列,用以完成REPSTOS、 REP INS、 REPOUTS、 REPLODS、 REP CMPS或REP SCAS宏指令, 上述第一組微指令序列包括一條件分支微指令,當(dāng)條件分支微 指令被執(zhí)行時(shí),上述條件分支微指令就會(huì)根據(jù)儲(chǔ)存于IA-32架構(gòu) 的ECX暫存器的字長度條件分支至第一組微指令序列的一微指 令。存儲(chǔ)器也配置來儲(chǔ)存第二組微指令序列,用以完成REPSTOS、 REP INS、 REP OUTS、 REP LODS、 REP CMPS或REP SCAS宏指令,上述第二組微指令序列不包括任何條件分支微指 令。微處理器包括一指令轉(zhuǎn)譯器,并耦接于存儲(chǔ)器。因應(yīng)搬移 立即值給IA-32架構(gòu)的ECX暫存器的宏指令,指令轉(zhuǎn)譯器設(shè)定一 快速字串旗標(biāo)并4諸存立即值。因應(yīng)以不同于拍《移立即值給IA-32 架構(gòu)的ECX暫存器的方式來修改IA-32架構(gòu)的ECX暫存器的宏 指令,指令轉(zhuǎn)譯器清除快速字串旗標(biāo)。因應(yīng)REP STOS、REP INS、 REPOUTS、 REPLODS、 REP CMPS或REP SCAS宏指令,如果 快速字串旗標(biāo)被清除,指令轉(zhuǎn)譯器轉(zhuǎn)移上述微處理器的控制權(quán) 給第一組微指令序列;如果快速字串旗標(biāo)被設(shè)定,指令轉(zhuǎn)譯器 根據(jù)儲(chǔ)存的立即值轉(zhuǎn)移上述微處理器的控制權(quán)給第二組微指令 序列內(nèi)的一 目標(biāo)位置。
本發(fā)明的優(yōu)點(diǎn)是通過消除會(huì)完成重復(fù)字串宏指令的微指令 序列中的回路,潛在地改善了重復(fù)字串宏指令的執(zhí)行效能。
本發(fā)明被實(shí)行于一個(gè)微處理器裝置內(nèi),上述微處理器裝置 可能用于一般用途的計(jì)算機(jī)。


圖la是已知的微處理器方塊圖。
圖lb是顯示圖la的回路式(looping)REP MOVS微指令序列 144的方塊圖。
圖2是一個(gè)顯示本發(fā)明的微處理器200的方塊圖。 圖3是一個(gè)顯示圖2中快速REP MOVS微指令序列212的方塊圖。
圖4a是 一 顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器206因應(yīng)一 MOV ECX立即宏指令的操作流程圖。
圖4 b是 一 顯示根據(jù)本發(fā)明替代實(shí)施例的圖2的指令轉(zhuǎn)譯器206因應(yīng)一MOV ECX立即宏指令的才喿作流程圖。
圖5是一個(gè)顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器206因應(yīng)接收 到一修改ECX暫存器的宏指令,但不是一MOVECX立即宏指令 的操作流程圖。
圖6是一 顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器206因應(yīng)接收一 REP MOVS宏指令的操作流程圖。
圖7是一 個(gè)顯示根據(jù)本發(fā)明替代實(shí)施例的圖2中指令轉(zhuǎn)譯器 206因應(yīng)接收一REP MOVS宏指令的操作流程圖。
具體實(shí)施例方式
現(xiàn)在參考圖la,圖la為一顯示已知技術(shù)微處理器100的方塊 圖。指令快取(未顯示于圖)提供宏指令104給指令轉(zhuǎn)譯器106。 宏指令104之中包括一字串重復(fù)搬移(REPMOVS)宏指令。指令 轉(zhuǎn)譯器106轉(zhuǎn)換宏指令104成微指令108,在此單一宏指令104可 能被轉(zhuǎn)換成一個(gè)或多個(gè)微指令108。對(duì)于更復(fù)雜或更不常被使用 的宏指令104,指令轉(zhuǎn)譯器106可能從一微指令ROM 142得到需 要的微指令10 8 。微指令R O M 14 2儲(chǔ)存不同的微指令序列給許多 宏指令104。舉例來說,REP MOVS宏指令可能有一個(gè)回路式 REPMOVS微指令序列144,其它復(fù)雜或不頻繁使用的宏指令則
可能擁有其他不同的微指令序列。
微指令108由一指令調(diào)度器112所接收,指令調(diào)度器112通過 執(zhí)行單元134排定要執(zhí)行的微指令108。執(zhí)行單元134包括各種不 同功能的單元,處理整數(shù)與浮點(diǎn)運(yùn)算、數(shù)據(jù)搬移、地址計(jì)算、 分支運(yùn)算等等,并可支持微處理器100的宏指令集所需的全部運(yùn) 算。在一實(shí)施例中,執(zhí)行單元134包括一載入單元128與一儲(chǔ)存 單元132,載入單元128從微處理器100的存儲(chǔ)器子系統(tǒng)114載入 數(shù)據(jù)。存儲(chǔ)器子系統(tǒng)114包括 一 個(gè)或多個(gè)微處理器10 0的快取存
13儲(chǔ)器,再加上用來存取微處理器100的外部存儲(chǔ)器位置的總線接 口單元。在REP MOVS宏指令104的情況,載入單元128從圖la 存儲(chǔ)器子系統(tǒng)114中的字串來源116中擷取(fetch)要搬移的數(shù) 據(jù)。儲(chǔ)存單元132儲(chǔ)存數(shù)據(jù)到圖la存儲(chǔ)器子系統(tǒng)114中的字串目 的地118。
字串來源116與字串目的地118分別包括多重存儲(chǔ)器位置 (multiple memory locations). REP MOVS宏指令104從字串來源 116內(nèi)的一組存儲(chǔ)器位置搬移數(shù)據(jù)值字串到字串目的地118內(nèi)的 另 一組存儲(chǔ)器位置。執(zhí)行單元134耦接于微處理器100的架構(gòu)暫 存器122。架構(gòu)暫存器122包括一個(gè)ECX暫存器124。
圖lb為一顯示圖la中回路式(looping)REP MOVS微指令序 列144的一個(gè)例子的方塊圖?;芈肥絉EP MOVS孩t指令序列144 從微指令ROM 142轉(zhuǎn)移到指令調(diào)度器112。在微指令ROM 142 發(fā)出回路式REP MOVS孩t指令序列144到指令調(diào)度器112之前, 其他宏指令104被指令轉(zhuǎn)譯器106所接收,指令轉(zhuǎn)譯器106為了字 串搬移與要搬移的字?jǐn)?shù)目,例如,字串的大小,于架構(gòu)暫存器 122載入來源位置與目的地位置。除非另有詳細(xì)指定,用于此的 "字"這一項(xiàng)當(dāng)做固定大小的多個(gè)的數(shù)據(jù)位,它被字串搬移宏 指令指定,包括字節(jié)(8位)、字(16位)、雙字(32位)或四字(64位), 但不限于這些。
回路式REP MOVS微指令序列144的第一個(gè)微指令108是一 個(gè)"來源地址載入暫存(loadtemp, source addr)"的微指令152, 它從字串來源116內(nèi)的存儲(chǔ)器位置載入數(shù)據(jù)到微處理器100的臨 時(shí)暫存器。字串來源116內(nèi)的存儲(chǔ)器位置由DS:SI或DS:ESI暫存 器所派給(designated),依宏指令104的地址大小特征而定?;?路式REP MOVS微指令序列144的第二個(gè)微指令108是一個(gè)"目 的地地址儲(chǔ)存暫存(store temp, destination addr),,的微指令
14154,它從微處理器10 0的臨時(shí)暫存器把數(shù)據(jù)儲(chǔ)存到存儲(chǔ)器子系 統(tǒng)114字串目的地118內(nèi)的一個(gè)存儲(chǔ)器位置。字串目的地118內(nèi)的 存儲(chǔ)器位置由ES:DI或ES:EDI暫存器所派給,依宏指令104的地 址大小特征而定。回路式REPMOVS農(nóng)i指令序列144內(nèi)的下一個(gè) 微指令108是一個(gè)"減量ECX(dec體ent ECX)"微指令156。"減 量ECX"微指令156減少現(xiàn)行ECX暫存器124的值,其減少計(jì)數(shù) 值以反映出要被搬移的字串的字?jǐn)?shù)目?;芈肥絉EP MOVS孩吏指 令序列144內(nèi)要被產(chǎn)生的下一個(gè)微指令108是一個(gè)"增量來源地 址(increment source addr),,微指令158,它更新DS:SI或DS:ESI 暫存器(依宏指令104的地址大小特征而定)至字串來源116的下 一個(gè)來源數(shù)據(jù)位置?;芈肥絉EPMOVS樣i指令序列144內(nèi)要被產(chǎn) 生的下 一 個(gè)微指令108是 一 個(gè)"增量目的地地址(increment destination addr)"微指令162,它更新ES:DI或ES:EDI暫存器(依 宏指令104的地址大小特征而定)至字串目的地118的下一個(gè)目 的地?cái)?shù)據(jù)位置?;芈肥絉EPMOVS微指令序列144內(nèi)要被產(chǎn)生的 最后一個(gè)微指令108是一個(gè)"于ECX分支(branch on ECX)"微 指令164,簡稱為條件分支微指令164,如果架構(gòu)暫存器ECX 124 的值不是0則條件分支回"來源地址載入暫存(load temp, source addr)"微指令152;否則在回^各式REP MOVS微指令序列144 后繼續(xù)到下 一 個(gè)微指令108,把控制交回指令轉(zhuǎn)譯器106。
也許可輕易觀察得到,回路式REP MOVS樣i指令序列144 的條件分支樣i指令164創(chuàng)造(creat)—個(gè)回路。如同以上所討論, 雖然回路空間(space)很有效率,但回路的執(zhí)行效能相對(duì)的較差。 特別是如果正在被搬移的字串很大,微處理器100必須執(zhí)行很大 量的條件分支微指令164,造成REP MOVS宏指令104相對(duì)較慢 地執(zhí)行。因?yàn)檫@些原因,降低或消除完成REPMOVS宏指令104 語義的微指令序列中的條件分支微指令164是非常值得的?,F(xiàn)在參考圖2,圖2是一個(gè)顯示本發(fā)明的微處理器200的方塊 圖。圖2的微處理器200在各方面相似于圖la的微處理器100。然 而圖2的指令轉(zhuǎn)譯器206不同于圖la的指令轉(zhuǎn)譯器106,因?yàn)樗?括一個(gè)用以儲(chǔ)存立即ECX值(immediate ECX value)204與快速 字串旗標(biāo)(fast string flag)208的暫存器(圖未示)。當(dāng)指令轉(zhuǎn)譯器 206接收MOV ECX立即宏指令,即搬移立即ECX值204到上述 IA-32架構(gòu)ECX暫存器124的宏指令,在立即ECX值204將被緊接 著發(fā)生的REP MOVS宏指令104所使用的情況下,指令轉(zhuǎn)譯器 206設(shè)定(set)快速字串旗標(biāo)208與儲(chǔ)存立即ECX值204于上述暫 存器。指令轉(zhuǎn)譯器206也產(chǎn)生一個(gè)微指令108,它寫入立即ECX 值給架構(gòu)暫存器122的ECX暫存器124。
另 一個(gè)圖2指令轉(zhuǎn)譯器206與圖la指令轉(zhuǎn)譯器106不同之處 是指令轉(zhuǎn)譯器206回應(yīng)修改ECX暫存器124內(nèi)容的宏指令(有別 于MOV ECX立即宏指令)的方式,如同一個(gè)根據(jù)其他暫存器的 值修改ECX暫存器的計(jì)算宏指令,例如,ADDECX、 EAX。特 別的是,如果指令轉(zhuǎn)譯器206接收修改ECX暫存器124的宏指令 104,并且宏指令104不是一個(gè)MOVECX立即宏指令,指令轉(zhuǎn)譯 器206會(huì)清除快速字串旗標(biāo)208。
另 一個(gè)圖2與圖la的不同之處在于圖2包括一個(gè)在微指令 ROM 142中的快速REPMOVS微指令序列212,其并沒有包含任 何如同圖lb的條件分支微指令164這樣的回路指令,其將在圖3 詳盡說明。當(dāng)指令轉(zhuǎn)譯器206接收REP MOVS宏指令104時(shí),如 果快速字串旗標(biāo)208被設(shè)定且儲(chǔ)存的立即ECX值204少于或等于 一預(yù)定值(predetermined value),指令轉(zhuǎn)譯器206會(huì)根據(jù)儲(chǔ)存的 立即ECX值204(如下所述),轉(zhuǎn)移上述樣i:處理器200的控制權(quán)給 快速REPMOVS微指令序列212中的一個(gè)適當(dāng)?shù)奈恢?;否則指令 轉(zhuǎn)譯器206轉(zhuǎn)移控制給回路式REP MOVS微指令序列144?,F(xiàn)在參考圖3,圖3是一個(gè)顯示圖2中快速REPMOVS微指令 序列212的方塊圖。快速REP MOVS微指令序列212包括多個(gè)搬 移字串?dāng)?shù)據(jù)集322,其中在快速REP MOVS微指令序列212中搬 移字串?dāng)?shù)據(jù)集322的數(shù)目為上述預(yù)定值(如上面圖2所提)。圖3所 示的實(shí)施例中,有64組搬移字串?dāng)?shù)據(jù)集322,因此預(yù)定值是64。 其他實(shí)施例可包含更多或更少的搬移字串?dāng)?shù)據(jù)集322。搬移字串 數(shù)據(jù)集322的數(shù)目是一個(gè)設(shè)計(jì)上的考量,基于可獲得的微指令 ROM空間與所想要增進(jìn)的效能而定。每一個(gè)搬移字串?dāng)?shù)據(jù)集 322包括多個(gè)微指令108,其搬移對(duì)應(yīng)REPMOVS宏指令104的一 字串?dāng)?shù)據(jù)。因此,每一個(gè)搬移字串?dāng)?shù)據(jù)集322包括一 "來源地址 載入暫存"微指令152、 一 "目的地地址儲(chǔ)存暫存"微指令154、 一 "增量來源地址"微指令158與一 "增量目的地地址"微指令 162,其相似于圖lb。圖3的實(shí)施例包括一最佳化(optimization) 的例子,其中ECX暫存器124的值在快速REP MOVS微指令序列 212的結(jié)尾(end)被載入0,而不是減低每一個(gè)搬移字串?dāng)?shù)據(jù)集 322內(nèi)的ECX暫存器124的值。然而,在其他實(shí)施例中,每一個(gè) 搬移字串?dāng)?shù)據(jù)集322也包括一個(gè)圖lb的"減量ECX"微指令156。
被REP MOVS宏指令104搬移或儲(chǔ)存的數(shù)據(jù)字串可能包含 數(shù)百或數(shù)千的數(shù)據(jù)字。也就是說,被REPMOVS宏指令104所使 用的立即ECX值可能相當(dāng)?shù)拇蟆8M(jìn)一步,孩i指令ROM 142還 包含許多除了之前所述回路式REP MOVS微指令序列144與快 速REP MOVS微指令序列212之外其他的微指令序列。在實(shí)際的 考量上,微指令ROM 142是固定的大小。因此快速REPMOVS 微指令序列212的長度受限于只有在立即ECX值最高不超過其 預(yù)定值時(shí)處理REP MOVS宏指令104。任何REP MOVS宏指令 104在立即ECX值大于預(yù)定值時(shí)將被回路式REP MOVS微指令 序列144來處理。如果要被搬移的數(shù)據(jù)位置的數(shù)量低于或等于預(yù)定值,指令
轉(zhuǎn)譯器206計(jì)算快速REP MOVS微指令序列212內(nèi)的起始位置。 起始位置是目標(biāo)地址312,它指出第一組快速搬移字串?dāng)?shù)據(jù)集 322要被微指令ROM 142從快速REP MOVS微指令序列212輸出 給現(xiàn)行的REPMOVS宏指令104。為了闡明目的,現(xiàn)在說明一個(gè) 例子。在這個(gè)例子中,假定每一個(gè)孩i指令152、 154、 158與162 是4位的長度,使得每一個(gè)搬移字串?dāng)?shù)據(jù)集322是16位長;預(yù)定 值是64組搬移字串?dāng)?shù)據(jù)集322;第一個(gè)搬移字串?dāng)?shù)據(jù)集322(搬移 字串?dāng)?shù)據(jù)集0)的起始地址于0x500地址;因此最后搬移字串?dāng)?shù)據(jù) 集322(搬移字串?dāng)?shù)據(jù)集63)將開始于^f效指令ROM 142內(nèi)的地址 0x8F0。因?yàn)橐话嵋谱执當(dāng)?shù)據(jù)集322的長度是16位,通過將儲(chǔ)存 的立即ECX值204左移4位(bit),指令轉(zhuǎn)譯器206計(jì)算目標(biāo)地址 312。也就是說,指令轉(zhuǎn)譯器106有效地將立即ECX值204乘以16。 在圖3例子中,立即ECX值204是0x03D,左移4位后產(chǎn)生左移的 立即ECX值304為0x03D0。接下來,減法器308從快速REP MOVS 微指令序列結(jié)尾地址306減去左移的ECX值304,以得到目標(biāo)地 址312。在一例子中,快速REP MOVS微指令序列212的結(jié)尾地 址306是0x900,并且計(jì)算的目標(biāo)地址312是0x530。因?yàn)閳D3實(shí)施 例的快速REP MOVS微指令序列212的搬移字串?dāng)?shù)據(jù)集322沒有 產(chǎn)生減量ECX暫存器124的微指令108,因此快速REP MOVS微 指令序列212中有一微指令314將ECX暫存器124載入0。因應(yīng) REP MOVS宏指令,在轉(zhuǎn)移控制至快速REP MOVS微指令序列 212內(nèi)的目標(biāo)地址312后,指令轉(zhuǎn)譯器206清除快速字串旗標(biāo)208。 在 一 實(shí)施例中,快速REP MOVS微指令序列212包括相同的 微指令連續(xù)集的一陣列,每個(gè)上述微指令連續(xù)集搬移一組字串 位,其中根據(jù)一儲(chǔ)存的立即值,指令轉(zhuǎn)譯器配置來計(jì)算出快速 REPMOVS微指令序列212內(nèi)的一 目標(biāo)位置,上述目標(biāo)位置為上,上述陣列大小是N個(gè)連續(xù)集, 其中指令轉(zhuǎn)譯器配置來計(jì)算出上述陣列的上述索引,上述索引 為N減去儲(chǔ)存的上述立即值。在一實(shí)施例中,上述目標(biāo)位置在 上述陣列的上述連續(xù)集中的其中之一并且在上述陣列結(jié)尾之前。
現(xiàn)在參考圖4a,圖4a是一顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器 206因應(yīng)MOV ECX立即宏指令的操作流程圖。流程開始于方塊 404。
于方塊404,指令轉(zhuǎn)譯器206接收一MOV ECX立即宏指令 104。 MOV ECX立即宏指令104載入立即ECX值于架構(gòu)暫存器 122的ECX暫存器124。流程前進(jìn)到方塊406。
于方塊406,指令轉(zhuǎn)譯器206儲(chǔ)存被MOV ECX立即宏指令 104指定的立即ECX值至一暫存器。若是接收REP MOVS宏指令 104,指令轉(zhuǎn)譯器206將有可能接著使用立即ECX值204來計(jì)算于 快速REP MOVS微指令序列212的一 目標(biāo)地址312。流程前進(jìn)到 方塊408。
于方塊408,指令轉(zhuǎn)譯器206設(shè)定快速字串旗標(biāo)208。這強(qiáng)化 了指令轉(zhuǎn)譯器206,以致更有效的快速REP MOVS微指令序列 212可以替代回路式REP MOVS微指令序列144, 4吏得當(dāng)快速字 串旗標(biāo)208被設(shè)定時(shí)#丸行指令轉(zhuǎn)i奪器206收到的REP MOVS宏指 令104。流程前進(jìn)到方塊412。
于方塊412,指令轉(zhuǎn)譯器206產(chǎn)生一載入ECX立即微指令來 載入被MOV ECX立即宏指令104所指定的立即ECX值給架構(gòu)暫 存器122的ECX暫存器124。流程結(jié)束于方塊412。
現(xiàn)在參考圖4b,根據(jù)本發(fā)明一個(gè)替代的實(shí)施例,圖4b是一 顯示圖2的指令轉(zhuǎn)i奪器206因應(yīng)MOV ECX立即宏指令的操作流 程圖。圖4b相似于圖4a,除了方塊40M皮方塊428所取代。相似部分不再贅述。方塊428相似于圖4a的方塊408,除了只有在被 MOV ECX立即宏指令104所指定的立即值小于或等于一預(yù)定值 時(shí),指令轉(zhuǎn)譯器206會(huì)設(shè)立快速字串旗標(biāo)208。
現(xiàn)在參考圖5,圖5是一個(gè)顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器 206因應(yīng)接收到一修改ECX暫存器的宏指令104,但不是一MOV ECX立即宏指令104的操作流程圖。流程開始于步驟504。
于步驟504,指令轉(zhuǎn)譯器206接收到 一 修改ECX暫存器的宏 指令104,但并非MOV ECX立即宏指令104。流程前進(jìn)到方塊 506。
于方塊506,指令轉(zhuǎn)譯器206清除快速字串旗標(biāo)208。指令轉(zhuǎn) 譯器206清除快速字串旗標(biāo)208,因?yàn)楫?dāng)指令轉(zhuǎn)譯器206被執(zhí)行 時(shí),它無法由于方塊504所接收的宏指令104來判斷宏指令104 要載入架構(gòu)暫存器122的ECX暫存器124的值。因?yàn)檫@個(gè)值可能 是其他架構(gòu)暫存器122的值的函數(shù)且(或)是特定算數(shù)函數(shù),如指 令A(yù)DD ECX, EAX(將暫存器ECX, EAX的值相加)。因此,如果 指令轉(zhuǎn)譯器206接收 一 伴隨而生(subsequent)的REP MOVS宏指 令,指令轉(zhuǎn)譯器206不會(huì)轉(zhuǎn)移控制給快速REP MOVS微指令序列 212,因?yàn)橹噶钷D(zhuǎn)譯器206不能判斷快速REP MOVS微指令序列 212的圖3搬移字串?dāng)?shù)據(jù)集3 22內(nèi)適當(dāng)?shù)奈恢脕磙D(zhuǎn)移控制。相反 的,在MOV ECX立即宏指令104的情況(如同上述圖4a與圖4b的 說明),指令轉(zhuǎn)譯器206清楚知道ECX 124的值為何(也就是立即 值),因?yàn)闆]有被牽涉的計(jì)算與從屬在其他暫存器/存儲(chǔ)器值上。 流程前進(jìn)到方塊508。
于方塊508,指令轉(zhuǎn)譯器206產(chǎn)生適當(dāng)?shù)奈⒅噶钚蛄衼硗瓿?修改ECX暫存器124的宏指令104 ,但不是一 個(gè)MOV ECX立即宏 指令的語義法。流程結(jié)束于方塊508。
現(xiàn)在參考圖6,圖6是一顯示根據(jù)本發(fā)明圖2的指令轉(zhuǎn)譯器206因應(yīng)接收一REP MOVS宏指令104的操作流程圖。流程開始 于方塊604。
于方塊604,指令轉(zhuǎn)譯器206接收一REP MOVS宏指令104。 REP MOVS宏指令104從存儲(chǔ)器內(nèi)的第一組位置搬移數(shù)據(jù)字串 到存儲(chǔ)器內(nèi)的第二組位置。流程前進(jìn)到?jīng)Q定方塊606。
于決定方塊606,指令轉(zhuǎn)譯器206決定快速字串旗標(biāo)208是否 被設(shè)定??焖僮执鞓?biāo)表示修改ECX暫存器124內(nèi)容的最后的宏 指令104是一MOV ECX立即宏指令。因此,快速字串旗標(biāo)208 被設(shè)定則表示快速REP MOVS微指令序列212可能被使用來給 REP MOVS宏指令104。如果快速字串旗標(biāo)208設(shè)定,那么流程 前進(jìn)至決定方塊608。如果快速字串旗標(biāo)208沒有祐:i殳定,那么 流程前進(jìn)至方塊612。
于決定方塊608,指令轉(zhuǎn)譯器206決定立即ECX值204是否大 于一預(yù)定值。預(yù)定值是可以利用的快速REP MOVS^f鼓指令序列 212的最大字串長度。圖6顯示根據(jù)圖4a實(shí)施例的指令轉(zhuǎn)譯器206 操作。然而,對(duì)一個(gè)指令轉(zhuǎn)譯器206根據(jù)圖4b的替代實(shí)施例操作 而言,指令轉(zhuǎn)譯器206不需要執(zhí)行決定方塊608的步驟。如果立 即ECX值204大于預(yù)定值,流程前進(jìn)至方塊612。如果立即ECX 值204沒有大于預(yù)定值,流程前進(jìn)至方塊614。
于方塊612,指令轉(zhuǎn)譯器206轉(zhuǎn)移控制至回路式REP MOVS 微指令序列144。流程結(jié)束于方塊612。
于方塊614,指令轉(zhuǎn)譯器206根據(jù)儲(chǔ)存的立即ECX值204產(chǎn)生 一目標(biāo)地址312給快速REPMOVS微指令序列212,這會(huì)使得微 指令ROM 142輸出一數(shù)量的搬移字串?dāng)?shù)據(jù)集322,其數(shù)量等于儲(chǔ) 存的立即ECX值204。在一個(gè)實(shí)施例,指令轉(zhuǎn)譯器206產(chǎn)生目標(biāo) 地址312,如同圖3所示。流程前進(jìn)至方塊616。
于方塊616,指令轉(zhuǎn)譯器206于方塊614計(jì)算出的目標(biāo)地312轉(zhuǎn)移控制至微指令ROM 142的快速REP MOVS微指令序列 212。流程前進(jìn)至方塊618。
于方塊618,微指令ROM142輸出一 "來源地址載入暫存" 152、"目的地地址儲(chǔ)存暫存"154、"增量來源地址"158、與"增 量目的地地址"162的微指令108的微指令序列,其開始于目標(biāo) 地址312。被產(chǎn)生的微指令108是一數(shù)量的快速REP MOVS微指 令序列212的搬移字串?dāng)?shù)據(jù)集322,其數(shù)量等于儲(chǔ)存的立即ECX 值204。 #般移字串?dāng)?shù)據(jù)集322顯示的序列對(duì)應(yīng)于一REP MOVS宏 指令104。流程前進(jìn)至方塊622。
于方塊622,在樣t指令ROM 142產(chǎn)生全部相關(guān)于REPMOVS 宏指令104的微指令108之后,微指令ROM 142將控制返回給指 令轉(zhuǎn)譯器206。流程結(jié)束于方塊622。
現(xiàn)在參考圖7,根據(jù)本發(fā)明一個(gè)替代的實(shí)施例,圖7是一個(gè) 顯示圖2中指令轉(zhuǎn)譯器206因應(yīng)接收一 REP MOVS宏指令104的 操作流程圖。圖7的流程圖相似于圖6的流程圖,除了方塊614 到方塊622這部分被方塊714與方塊716取代。相似部分不再贅 述。流程,人決定方塊608前進(jìn)至方塊714。
于方塊714,指令轉(zhuǎn)譯器206產(chǎn)生圖3的N個(gè)搬移字串?dāng)?shù)據(jù)集 322,在此N是圖2的儲(chǔ)存的立即ECX值204。每一次指令轉(zhuǎn)譯器 206產(chǎn)生搬移字串?dāng)?shù)據(jù)集322,指令轉(zhuǎn)譯器206就減少立即ECX 值204。當(dāng)ECX暫存器204到達(dá)0時(shí),就產(chǎn)生了全部所需要的N個(gè) 搬移字串?dāng)?shù)據(jù)集322。流程前進(jìn)到方塊716。
于方塊716,全部N個(gè)搬移字串?dāng)?shù)據(jù)集322已經(jīng)產(chǎn)生,指令 轉(zhuǎn)譯器206產(chǎn)生一將架構(gòu)暫存器122的ECX暫存器124載入為0的 微指令314。流程結(jié)束于方塊716。
雖然實(shí)施例已經(jīng)說明了有關(guān)于x86架構(gòu)的REP MOVS宏指 令。但本發(fā)明不限于此特定的巨集架構(gòu),而可以更改為配合其他有重復(fù)字串宏指令的巨集架構(gòu)。更進(jìn)一步,雖然實(shí)施例已經(jīng)
說明了有關(guān)于REPMOVS宏指令104,在此啟示的4支術(shù)也可以用 于改善IA國32 INS、 OUTS、 LOSD、 STOS、 CMPS、 SCAS這些 包含REP前置指令的宏指令104的效能。舉例來說,在REP STOS 宏指令104的情況,微指令ROM 142包含一'決速REP STOS微指 令序列,此微指令序列包含相似于圖3搬移字串?dāng)?shù)據(jù)集的儲(chǔ)存字 串?dāng)?shù)據(jù)集,只是不需要"來源地址載入暫存"微指令152與"增 量來源地址"微指令158,并且"目的地地址儲(chǔ)存暫存"微指令 154從IA-32架構(gòu)的AL、 AX、 EAX或RAX暫存器而不是臨時(shí)暫 存器中把數(shù)據(jù)儲(chǔ)存至存儲(chǔ)器子系統(tǒng)114的字串目的地118。
本發(fā)明多個(gè)實(shí)施例描述于此,^旦必須知道它們只是以例子 的方法呈現(xiàn),并非只限于此。很明顯的,熟習(xí)此計(jì)算機(jī)相關(guān)技 術(shù)者可以在形式或細(xì)節(jié)上做多種改變而沒脫離這個(gè)發(fā)明的范 疇。舉例來說,除了使用硬件(如耦接(或這些裝置之內(nèi))一中央 處理單元(CPU)、微處理器、微控制器、數(shù)字信號(hào)處理器、處 理器核心、芯片上系統(tǒng)(SOC)或任何其他裝置),也可能用軟件 實(shí)施(如計(jì)算機(jī)可讀碼、程序碼與處理成任何形式的微指令,如 同來源、物件或機(jī)械語言),如在一個(gè)配置來儲(chǔ)存軟件的計(jì)算機(jī) 可用(如可讀)介質(zhì)中。這樣的軟件可實(shí)行,例如函數(shù)、建構(gòu)、 模型制作、模擬、說明與(或)測試在此說明的裝置及方法。舉 例來說,這可以通過一般的程序語言(如C、 C++)、硬件描述語 言(HDL,包括Verilog HDL、 VHDL等)或其他可得程序來完成。 這樣的軟件可以配置在任何所知的計(jì)算才幾可用介質(zhì)如半導(dǎo)體、 磁盤或光盤(如CD-ROM、 DVD-ROM等)。本發(fā)明的實(shí)施例可以 包括提供在此所敘述的微處理器的方法,通過提供敘述微處理 器設(shè)計(jì)與隨后傳輸軟件如計(jì)算機(jī)數(shù)據(jù)信號(hào)在溝通網(wǎng)絡(luò)上(包括 因特網(wǎng)與局域網(wǎng))。也可知道在此敘述的裝置與方法可被包含在半導(dǎo)體知識(shí)產(chǎn)權(quán)核心中,如同微處理器核心(如實(shí)施于HDL)與 在集成電路生產(chǎn)中的硬件電路。除此之外,在此敘述的裝置與 方法可以由硬件與軟件的結(jié)合來實(shí)施。因此,本發(fā)明不應(yīng)被在 此敘述的實(shí)施例范本所限制,而必須只能根據(jù)上述權(quán)利要求的 范圍及與它們的相等的意思來定義。
以上所述僅為本發(fā)明較佳實(shí)施例,然其并非用以限定本發(fā) 明的范圍,任何熟悉本項(xiàng)技術(shù)的人員,在不脫離本發(fā)明的精神 和范圍內(nèi),可在此基礎(chǔ)上做進(jìn)一步的改進(jìn)和變化,因此本發(fā)明 的保護(hù)范圍當(dāng)以本申請(qǐng)的權(quán)利要求書所界定的范圍為準(zhǔn)。
附圖中符號(hào)的簡單說明如下
100:微處理器 104:宏指令
106:指令轉(zhuǎn)譯器 108:微指令
112:指令調(diào)度器 114:存儲(chǔ)器子系統(tǒng)
116:字串來源 118:字串目的i也
122:架構(gòu)暫存器 124:ECX暫存器
128:載入單元 132:儲(chǔ)存單元
134:執(zhí)行單元 142:微指令ROM
144:回路式REP MOVS微指令序列152:"來源地址載入暫存"微指令154:"目的地地址儲(chǔ)存暫存"微指令
156:"減量ECX"微指令
158:"增量來源地址"微指令
162:"增量目的地地址"微指令
164:分支微指令 200:微處理器
204:立即ECX值 206:指令轉(zhuǎn)譯器
208:快速字串旗標(biāo)
212:快速REP MOVS微指令序歹'J304:左移的ECX值
308:減法器
314:載入為0的微指令
404、楊、德、412、 428:
504、 506、 508:流程方塊
604、 606、 608、 612、 614、
714、 716:流禾呈方塊。
306:微指令序列結(jié)尾地址 312:目標(biāo)地址 322:搬移字串?dāng)?shù)據(jù)集 流程方塊
616、 618、 622:流程方塊
權(quán)利要求
1.一種微處理器,其特征在于,用來執(zhí)行IA-32架構(gòu)字串重復(fù)搬移宏指令,其中被搬移的字串的字長度被指定為于上述IA-32架構(gòu)的ECX暫存器中的一立即值,上述微處理器包括一存儲(chǔ)器,配置來儲(chǔ)存一第一組微指令序列,用來完成上述字串重復(fù)搬移宏指令,上述第一組微指令序列包含條件分支微指令,當(dāng)上述條件分支微指令被執(zhí)行時(shí),上述條件分支微指令根據(jù)上述IA-32架構(gòu)的ECX暫存器里儲(chǔ)存的字長度條件分支到位于上述第一組微指令序列內(nèi)的一微指令;以及一第二組微指令序列,用來完成上述字串重復(fù)搬移宏指令,上述第二組微指令序列不包含任何條件分支微指令;以及一指令轉(zhuǎn)譯器,耦接至上述存儲(chǔ)器,配置來因應(yīng)搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的宏指令,設(shè)定一快速字串旗標(biāo)并儲(chǔ)存上述立即值;以及因應(yīng)以不同于搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的方式修改上述IA-32架構(gòu)的ECX暫存器的宏指令,清除上述快速字串旗標(biāo);以及因應(yīng)一字串重復(fù)搬移宏指令當(dāng)上述快速字串旗標(biāo)被清除時(shí),轉(zhuǎn)移上述微處理器的控制權(quán)到上述第一組微指令序列;以及當(dāng)上述快速字串旗標(biāo)被設(shè)定時(shí),根據(jù)儲(chǔ)存的上述立即值轉(zhuǎn)移上述微處理器的控制權(quán)到位于上述第二組微指令序列內(nèi)的一目標(biāo)位置。
2. 根據(jù)權(quán)利要求l所述的微處理器,其特征在于,因應(yīng)搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的宏指令,指令轉(zhuǎn)譯器只在儲(chǔ)存的上述立即值少于或等于一預(yù)定值時(shí)設(shè)定上述快速字串旗標(biāo)。
3. 根據(jù)權(quán)利要求l所述的微處理器,其特征在于,因應(yīng)字串重復(fù)搬移宏指令,如果上述快速字串旗標(biāo)被設(shè)定,并且只有當(dāng)儲(chǔ)存的上述立即值少于或等于一預(yù)定值時(shí),上述指令轉(zhuǎn)譯器轉(zhuǎn)移上述微處理器的控制權(quán)到上述第二組微指令序列內(nèi)的上述目標(biāo)位置。
4. 根據(jù)權(quán)利要求l所述的微處理器,其特征在于,因應(yīng)字串重復(fù)搬移宏指令,在轉(zhuǎn)移上述微處理器的控制權(quán)到上述第二組微指令序列內(nèi)的上述目標(biāo)位置后,上述指令轉(zhuǎn)譯器更進(jìn)一步配置來清除上述快速字串旗標(biāo)。
5. 根據(jù)權(quán)利要求l所述的微處理器,其特征在于,上述第二組微指令序列包括相同的微指令連續(xù)集的陣列,每一個(gè)上述微指令連續(xù)集搬移一組字串位,其中,上述指令轉(zhuǎn)譯器根據(jù)儲(chǔ)存的上述立即值計(jì)算出上述第二組微指令序列內(nèi)的上述目標(biāo)位置,上述目標(biāo)位置為上述陣列的一索引。
6. 根據(jù)權(quán)利要求5所述的微處理器,其特征在于,上述陣列的大小是N個(gè)微指令連續(xù)集,N為正整數(shù),其中上述索引為N減去儲(chǔ)存的上述立即值。
7. —種微處理器方法,其特征在于,用來執(zhí)行IA-32架構(gòu)字串重復(fù)搬移宏指令,其中被搬移的字串的字長度被指定為于上述IA-32架構(gòu)的ECX暫存器中的 一立即值,上述微處理器包括一用來儲(chǔ)存多個(gè)微指令序列的存儲(chǔ)器,上述微處理器方法包括因應(yīng)搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的宏指令,設(shè)定一快速字串旗標(biāo)并儲(chǔ)存上述立即值;因應(yīng)以不同于搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的方式修改上述IA-32架構(gòu)的ECX暫存器的宏指令,清除上述快速字串旗標(biāo);因應(yīng)一字串重復(fù)搬移宏指令設(shè)定或清除上述快速字串旗標(biāo);當(dāng)上述快速字串旗標(biāo)被清除時(shí),轉(zhuǎn)移上述微處理器的控制權(quán)到 一 第 一 組微指令序列以完成上述字串重復(fù)搬移宏指令;以及當(dāng)上述快速字串旗標(biāo)被設(shè)定時(shí),根據(jù)儲(chǔ)存的上述立即值轉(zhuǎn)移上述微處理器的控制權(quán)到一第二組微指令序列內(nèi)的一目標(biāo)位置以完成上述字串重復(fù)搬移宏指令;其中上述第一組微指令序列包括一條件分支微指令,當(dāng)上述條件分支微指令被執(zhí)行時(shí),上述條件分支微指令根據(jù)上述IA-32架構(gòu)的ECX暫存器里儲(chǔ)存的字長度條件分支到位于上述第一組微指令序列內(nèi)的一微指令;其中上述第二組微指令序列不包含任何條件分支微指令。
8. 根據(jù)權(quán)利要求7所述的微處理器方法,其特征在于,還包括因應(yīng)搬移上述立即值到上述IA - 3 2架構(gòu)的E C X暫存器的宏指令,只有當(dāng)儲(chǔ)存的上述立即值少于或等于一預(yù)定值時(shí),設(shè)定上述快速字串旗標(biāo)。
9. 根據(jù)權(quán)利要求7所述的微處理器方法,其特征在于,還包括因應(yīng)上述字串重復(fù)搬移宏指令,如果上述快速字串旗標(biāo)被設(shè)定,并且只有當(dāng)儲(chǔ)存的上述立即值少于或等于 一 預(yù)定值時(shí),轉(zhuǎn)移上述微處理器的控制權(quán)到上述第二組微指令序列內(nèi)的上述目標(biāo)位置。
10. 根據(jù)權(quán)利要求7所述的微處理器方法,其特征在于,還包括因應(yīng)上述字串重復(fù)搬移宏指令,在轉(zhuǎn)移上述微處理器的控制權(quán)到上述第二組微指令序列內(nèi)的上述目標(biāo)位置后,清除上述快速字串旗標(biāo)。
11. 根據(jù)權(quán)利要求7所述的微處理器方法,其特征在于,上述第二組微指令序列包括相同的微指令連續(xù)集的陣列,每一個(gè)上述微指令連續(xù)集搬移 一 組字串位,上述微處理器方法還包括根據(jù)儲(chǔ)存的上述立即值,計(jì)算上述第二組微指令序列內(nèi)的上述目標(biāo)位置,上述目標(biāo)位置為上述陣列的一索引。
12. 根據(jù)權(quán)利要求ll所述的微處理器方法,其特征在于,上述陣列的大小是N個(gè)微指令連續(xù)集,N為正整數(shù),其中上述索引為N減去儲(chǔ)存的上述立即值。
13. —種微處理器,其特征在于,用來執(zhí)行IA-32架構(gòu)字串重復(fù)搬移宏指令,其中被搬移的字串的字長度被指定為于上述IA-32架構(gòu)的ECX暫存器中的一立即值,上述微處理器包括一存儲(chǔ)器,配置來儲(chǔ)存一第一組微指令序列,用來完成上述字串重復(fù)搬移宏指令,上述第一組微指令序列包含條件分支微指令,當(dāng)上述條件分支微指令被執(zhí)行時(shí),上述條件分支微指令根據(jù)上述IA-32架構(gòu)的ECX暫存器里儲(chǔ)存的字長度條件分支到位于上述第一組微指令序列內(nèi)的一微指令;以及一指令轉(zhuǎn)譯器,耦接至上述存儲(chǔ)器,配置來因應(yīng)搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的宏指令,設(shè)定一快速字串旗標(biāo)并儲(chǔ)存上述立即值;以及因應(yīng)以不同于搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的方式修改上述IA-32架構(gòu)的ECX暫存器的宏指令,清除上述快速字串旗標(biāo);以及因應(yīng)一字串重復(fù)搬移宏指令當(dāng)上述快速字串旗標(biāo)被清除時(shí),轉(zhuǎn)移上述微處理器的控制權(quán)到上述第一組微指令序列;以及當(dāng)上述快速字串旗標(biāo)被設(shè)定時(shí),根據(jù)儲(chǔ)存的上述立即值產(chǎn)生一第二組微指令序列,其中上述第二組微指令序列完成上述字串重復(fù)搬移宏指令,其中上述第二組微指令序列不包含任何條件分支微指令。
14. 根據(jù)權(quán)利要求13所述的微處理器,其特征在于,上述第二組微指令序列包括相同的微指令連續(xù)集,每一個(gè)上述微指令連續(xù)集搬移一組字串位,其中上述指令轉(zhuǎn)譯器根據(jù)儲(chǔ)存的上述立即值,產(chǎn)生相同的微指令連續(xù)集在上述第二組微指令序列內(nèi)。
15. 根據(jù)權(quán)利要求14所述的微處理器,其特征在于,上述指令轉(zhuǎn)譯器產(chǎn)生的相同微指令連續(xù)集的數(shù)目等于儲(chǔ)存的上述立即值。
16. —種微處理器,其特征在于,用來執(zhí)行IA-32架構(gòu)REPSTOS、 REPINS、 REP OUTS、 REP LODS、 REP CMPS或REPSCAS宏指令,其中被搬移的字串的字長度被指定為于上述IA-32架構(gòu)的ECX暫存器中的 一 立即值,上述微處理器包括一存儲(chǔ)器,配置來儲(chǔ)存一第一組微指令序列,用來完成上述REP STOS、 REPINS、 REP OUTS、 REP LODS、 REP CMPS或REP SCAS宏指令,上述第一組微指令序列包含條件分支微指令,當(dāng)上述條件分支微指令被執(zhí)行時(shí),上述條件分支微指令根據(jù)上述IA-32架構(gòu)的ECX暫存器里儲(chǔ)存的字長度條件分支到位于上述第一組微指令序列內(nèi)的一微指令;以及一第二組;微指令序列,用來完成上述REP STOS、 REPINS、 REPOUTS、 REPLODS、 REP CMPS或REP SCAS宏指令,上述第二組微指令序列不包含任何條件分支微指令;以及一指令轉(zhuǎn)譯器,耦接至上述存儲(chǔ)器,配置來因應(yīng)搬移上述立即值到上述IA-32架構(gòu)的ECX暫存器的 宏指令,設(shè)定一快速字串旗標(biāo)并儲(chǔ)存上述立即值;以及因應(yīng)以不同于搬移上述立即值到上述IA-32架構(gòu)的ECX 暫存器的方式修改上述IA-32架構(gòu)的ECX暫存器的宏指令,清除 上述快速字串旗標(biāo);以及因應(yīng)一REPSTOS、 REP INS、 REP OUTS、 REPLODS、 REP CMPS或REP SCAS宏指令當(dāng)上述快速字串旗標(biāo)被清除時(shí),轉(zhuǎn)移上述微處理器的 控制權(quán)到上述第一組微指令序列;以及當(dāng)上述快速字串旗標(biāo)被設(shè)定時(shí),根據(jù)儲(chǔ)存的上述立即 值轉(zhuǎn)移上述微處理器的控制權(quán)到位于上述第二組微指令序 列內(nèi)的一 目標(biāo)位置。
全文摘要
一種微處理器及微處理器方法,用于執(zhí)行字串重復(fù)搬移宏指令,指定被搬移的字串的字長度為于IA-32 ECX暫存器的一立即值。微處理器包括一存儲(chǔ)器,用來儲(chǔ)存第一組微指令序列與第二組微指令序列。第一組微指令序列根據(jù)立即值條件分支至第一組微指令序列的一微指令。第二組微指令序列不包含條件分支微指令。微處理器包括一耦接于存儲(chǔ)器的指令轉(zhuǎn)譯器。因應(yīng)搬移立即值給ECX暫存器的宏指令,指令轉(zhuǎn)譯器設(shè)定一旗標(biāo)并儲(chǔ)存立即值。因應(yīng)修改ECX暫存器的宏指令,指令轉(zhuǎn)譯器清除旗標(biāo)。當(dāng)旗標(biāo)被清除,指令轉(zhuǎn)譯器轉(zhuǎn)移控制給第一組微指令序列;當(dāng)旗標(biāo)被設(shè)定,指令轉(zhuǎn)譯器轉(zhuǎn)移控制給第二組微指令序列。本發(fā)明改善了重復(fù)字串宏指令的執(zhí)行效能。
文檔編號(hào)G06F9/22GK101661384SQ20091016934
公開日2010年3月3日 申請(qǐng)日期2009年8月25日 優(yōu)先權(quán)日2008年9月9日
發(fā)明者G.葛蘭·亨利, 泰瑞·派克斯 申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
桂林市| 鹤岗市| 商都县| 济源市| 玛沁县| 垣曲县| 彭泽县| 遂溪县| 永平县| 淳化县| 两当县| 白银市| 英吉沙县| 连山| 丹寨县| 天全县| 隆昌县| 长沙市| 剑阁县| 卫辉市| 榆树市| 南丰县| 瓦房店市| 彩票| 绥江县| 新安县| 泰来县| 岗巴县| 临清市| 武安市| 德阳市| 库尔勒市| 襄樊市| 文安县| 金川县| 延吉市| 海晏县| 鱼台县| 军事| 崇阳县| 东丽区|