欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

微處理器以及宏指令執(zhí)行方法

文檔序號(hào):6466443閱讀:311來源:國知局
專利名稱:微處理器以及宏指令執(zhí)行方法
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于微處理器領(lǐng)域,特別是有關(guān)于一種用來減少用以執(zhí)行特 定的常見宏架構(gòu)指令的微架構(gòu)指令的數(shù)目的系統(tǒng)和方法。
背景技術(shù)
計(jì)算機(jī)中的數(shù)據(jù)處理運(yùn)算通常于微處理器中執(zhí)行。 一般而言,用來監(jiān)控 和執(zhí)行各種數(shù)據(jù)處理任務(wù)的微處理器包括了用來處理指令和數(shù)據(jù)的硬件元 件。指令和數(shù)據(jù)通常儲(chǔ)存于計(jì)算機(jī)的存儲(chǔ)器子系統(tǒng),其可包括只讀存儲(chǔ)器(Read Only Memory,廳)、隨機(jī)存耳又存儲(chǔ)器(Random Access Me隨y, RAM)、硬盤裝置或其它裝置。存儲(chǔ)器子系統(tǒng)一般與微處理器物理分離,即使復(fù)制的 指令和數(shù)據(jù)于程序執(zhí)行期間暫時(shí)存放于微處理器之內(nèi)。指令是指 一群用來告知微處理器執(zhí)行特定運(yùn)算的位,指令又包括了運(yùn)算 碼的部分,運(yùn)算碼是指一群用來記載一個(gè)要被微處理器所執(zhí)行的運(yùn)算的位。 舉例來說,運(yùn)算碼中可記載諸如加法.減法、分支程序的執(zhí)行或儲(chǔ)存一個(gè)值 于存儲(chǔ)器等等之類的運(yùn)算。指令的其余部分通常用來提供運(yùn)算的數(shù)據(jù)來源, 又稱為操作數(shù)。操作數(shù)可記載于指令本身內(nèi)、微處理器的暫存器內(nèi)或存儲(chǔ)器 4立置內(nèi)。一個(gè)微處理器的架構(gòu)包括微處理器的指令集以及可供指令集的各種指令 所使用的資源集合,例如暫存器和存儲(chǔ)器地址空間。許多現(xiàn)代的微處理器同 時(shí)具有宏架構(gòu)和微架構(gòu),特別是許多用來執(zhí)行由英特爾架構(gòu)(又稱為IA-32或 x86架構(gòu))所指定的指令的微處理器。宏架構(gòu)是使用者可見的架構(gòu),例如程序 設(shè)計(jì)者可使用的指令集和資源。宏指令是宏架構(gòu)指令集中的指令, 一些早期 較流行的處理器的宏架構(gòu)(例如x86架構(gòu))包括了非常復(fù)雜的指令。相較之下, 微架構(gòu)包括了微指令集以及可被微指令集的各種指令所使用的資源集合。微 指令集所包括的指令一般比宏指令集簡單得多,且通常為非使用者可見,即 使一些微處理器可將微指令集和宏指令集設(shè)定為使用者可見。微處理器的執(zhí) 行單元實(shí)際上是執(zhí)行微指令而非宏指令。微處理器包括了指令編譯器,用以將每一個(gè)宏指令轉(zhuǎn)換成一或多個(gè)微指 令,其由執(zhí)行單元根據(jù)宏指令的運(yùn)算碼和操作數(shù)所執(zhí)行。指令編譯器的寬度 (亦即編譯器每頻率周期可產(chǎn)生的微指令的數(shù)目)是具有利益平衡考慮的設(shè)計(jì) 抉擇。舉例來說,當(dāng)指令編譯器愈窄的時(shí)候,其本身的尺寸可變得較小并且 較不那樣地復(fù)雜,這在成本、硅芯片空間、速度和散熱等方面的考慮是有幫 助的。另一方面,當(dāng)指令編譯器愈寬的時(shí)候,其相對(duì)更有能力提供足夠的微 指令比率使執(zhí)行單元維持運(yùn)作,這在超純量、加擾執(zhí)行的微處理器設(shè)計(jì)中是 一個(gè)重要的考慮。許多具有分離的宏架構(gòu)和微架構(gòu)的現(xiàn)代微處理器除了指令編譯器之外也包括了微指令只讀存儲(chǔ)器(microinstruction ROM)。微指令只讀存儲(chǔ)器一般 用以處理更復(fù)雜且不常用的宏指令,其需要相對(duì)多數(shù)的微指令來執(zhí)行相關(guān)的 宏指令所指定的運(yùn)算。微指令只讀存儲(chǔ)器包括了與個(gè)別宏指令相關(guān)的微指令的序列。當(dāng)指令編譯器處理到某些宏指令時(shí),其將控制權(quán)交給微指令只讀存 儲(chǔ)器中的一個(gè)微指令序列,而非純粹地產(chǎn)生微指令(或是除了產(chǎn)生微指令之 外),而當(dāng)微指令序列執(zhí)行完成之后,其將控制權(quán)交回給指令編譯器。然而, 相對(duì)于指令編譯器純粹產(chǎn)生微指令以執(zhí)行相關(guān)的宏指令運(yùn)算的方式而言,把 控制權(quán)交給微碼只讀存儲(chǔ)器序列可能會(huì)對(duì)執(zhí)行效能產(chǎn)生影響。舉例來說,由 于擷取單元無法提供足夠的微指令來維持執(zhí)行單元的運(yùn)作,因此可于執(zhí)行單 元管線中采用泡沫排序法(bubble)的機(jī)制。另一方面,指令編譯器的寬度限 制了其每頻率周期可產(chǎn)生的微指令數(shù)目,因此微指令只讀存儲(chǔ)器可更符合經(jīng) 濟(jì)效益地?cái)U(kuò)展來處理某些所需的微指令比指令編譯器于給定頻率周期內(nèi)所能 產(chǎn)生的微指令還多的宏指令。宏指令需要相對(duì)多數(shù)的微指令的例子就是一個(gè)用來對(duì)存儲(chǔ)器中的操作數(shù) 執(zhí)行讀取/修改/寫入等運(yùn)算的宏指令。用以對(duì)存儲(chǔ)器中的操作數(shù)執(zhí)行讀取/ 修改/寫入等運(yùn)算的宏指令稱為LdAluSt宏指令,因?yàn)樗鼈儼艘粋€(gè)用來從 存儲(chǔ)器中取得操作數(shù)至微處理器內(nèi)的存儲(chǔ)器加載運(yùn)算、 一個(gè)用來修改存儲(chǔ)器 操作數(shù)的算術(shù)邏輯單元運(yùn)算、以及一個(gè)用來將修改后的結(jié)果值寫回原來的存 儲(chǔ)器位置的存儲(chǔ)器儲(chǔ)存運(yùn)算。每一個(gè)加載、算術(shù)邏輯單元和儲(chǔ)存運(yùn)算可能需 要一或多個(gè)微指令以執(zhí)行個(gè)別的運(yùn)算。 一個(gè)LdAluSt宏指令的例子就是x86 的ADD [mem], EXA指令,此指令從[raem]地址所記載的存儲(chǔ)器位置加載操作 數(shù)至微處理器、將存儲(chǔ)器操作數(shù)與EAX暫存器中的值相加,并且儲(chǔ)存加法運(yùn)算后的結(jié)果值于[mem]地址所記載的存儲(chǔ)器位置中。
LdAluSt宏指令的每一個(gè)加載、算術(shù)邏輯單元和儲(chǔ)存運(yùn)算可能需要一或 多個(gè)微指令執(zhí)行個(gè)別的運(yùn)算。如果執(zhí)行LdAluSt宏指令所必須產(chǎn)生的微指令 的數(shù)目比指令編譯器的寬度還大,則必須使用微指令只讀存儲(chǔ)器,否則指令 編譯器需要于多重頻率周期內(nèi)產(chǎn)生這些微指令,這將可能大大地增加指令編 譯器的復(fù)雜度。然而,由于LdAluSt宏指令常常于很多程序中使用,因此有 需要避免跳至微指令只讀存儲(chǔ)器序列來執(zhí)行所有或一部分的LdAluSt宏指 令。

發(fā)明內(nèi)容
本發(fā)明提供一種超純量加擾執(zhí)行微處理器,其于其微指令集中包括了新 的合并的加載數(shù)據(jù)/儲(chǔ)存地址微指令。上述加載數(shù)據(jù)/儲(chǔ)存地址微指令執(zhí)行了 結(jié)合的運(yùn)算,上述結(jié)合的運(yùn)算原本須由不同的加載數(shù)據(jù)和儲(chǔ)存地址微指令所 執(zhí)行。不若傳統(tǒng)的微指令發(fā)送到單一執(zhí)行單元的方式,加載數(shù)據(jù)/儲(chǔ)存地址微 指令是發(fā)送到兩個(gè)執(zhí)行單元,換言之,分別是加載數(shù)據(jù)單元和儲(chǔ)存地址單元。 雖然每一個(gè)加載數(shù)據(jù)單元和儲(chǔ)存地址單元執(zhí)行了加載數(shù)據(jù)/儲(chǔ)存地址微指令, 但加載數(shù)據(jù)/儲(chǔ)存地址微指令于微處理器的重新序列緩沖器內(nèi)占據(jù)單一位置。 執(zhí)行單元皆必須顯示它們已經(jīng)完成加載數(shù)據(jù)/儲(chǔ)存地址微指令的執(zhí)行后,重新 序列緩沖器才可撤回加載數(shù)據(jù)/儲(chǔ)存地址微指令。
本發(fā)明的發(fā)明人理解到加載數(shù)據(jù)微指令的操作數(shù)是儲(chǔ)存地址微指令的一 個(gè)子集合,并可因此將這兩個(gè)微指令合并入單一的加載數(shù)據(jù)/儲(chǔ)存地址微指令 內(nèi)。這個(gè)做法是具有優(yōu)勢的,因?yàn)槠湓试S指令編譯器將LdAluSt宏指令轉(zhuǎn)換 成三個(gè)微指令,而非四個(gè)微指令。根據(jù)微處理器的一實(shí)施例所述,這使得指 令編譯器可為三個(gè)指令寬的編譯器,比起四個(gè)指令寬的編譯器來說,其具有 更小、更快速以及較低消耗功率的潛在優(yōu)勢。此外,其不需借著將控制權(quán)轉(zhuǎn) 移給微碼只讀存儲(chǔ)器來處理經(jīng)常使用到的LdAluSt宏指令。在另一實(shí)施例中, 指令編譯器大于三個(gè)指令的寬度,然而,單一加載數(shù)據(jù)/儲(chǔ)存地址微指允許指 令編譯器于同一頻率周期內(nèi)轉(zhuǎn)換LdAluSt宏指令和另一宏指令。
在一方面,本發(fā)明提供一種微處理器,于其宏架構(gòu)中具有宏指令集,宏 指令集包括宏指令,宏指令指示微處理器對(duì)存儲(chǔ)器中的操作數(shù)執(zhí)行讀取/修改 /寫入運(yùn)算。指令編譯器將宏指令轉(zhuǎn)換成恰好的三個(gè)微指令,三個(gè)微指令用以對(duì)存儲(chǔ)器操作數(shù)執(zhí)行讀取/修改/寫入運(yùn)算。第一微指令指示微處理器從存儲(chǔ) 器位置加載存儲(chǔ)器操作數(shù)至微處理器內(nèi),以及計(jì)算存儲(chǔ)器位置的目的地址。 第二微指令指示微處理器對(duì)所加載的存儲(chǔ)器操作數(shù)執(zhí)行算術(shù)或邏輯運(yùn)算以產(chǎn)生結(jié)果值。第三微指令指示微處理器將結(jié)果值寫入存儲(chǔ)器位置,存儲(chǔ)器位置 的目的地址是由第一微指令所計(jì)算。第一執(zhí)行單元接收第一微指令以相應(yīng)地 將存儲(chǔ)器操作數(shù)從存儲(chǔ)器位置加載至微處理器內(nèi)。第二執(zhí)行單元接收第一微 指令以及計(jì)算存儲(chǔ)器位置的目的地址,第一和第二執(zhí)行單元是上述微處理器 內(nèi)不同的執(zhí)行單元。另一方面,本發(fā)明提供一種宏指令執(zhí)行方法,適用于執(zhí)行微處理器內(nèi)的 宏指令。宏指令指示微處理器對(duì)存儲(chǔ)器中的操作數(shù)執(zhí)行讀取/修改/寫入運(yùn)算。 第一微指令指示微處理器從存儲(chǔ)器位置加載存儲(chǔ)器操作數(shù)至微處理器內(nèi),以 及計(jì)算存儲(chǔ)器位置的目的地址。第二微指令指示微處理器修改所加載的存儲(chǔ) 器操作數(shù)以產(chǎn)生結(jié)果值。第三微指令指示微處理器將結(jié)果值寫入存儲(chǔ)器位置, 存儲(chǔ)器位置的目的地址是由第一微指令所計(jì)算。微處理器的第一和第二執(zhí)行 單元皆接收上述第一微指令。對(duì)應(yīng)第一微指令的接收,微處理器的第一執(zhí)行 單元將存儲(chǔ)器操作數(shù)從存儲(chǔ)器位置加載微處理器。對(duì)應(yīng)第一微指令的接收, 第二執(zhí)行單元計(jì)算存儲(chǔ)器位置的目的地址。第一和第二執(zhí)行單元是上述微處理器內(nèi)不同的執(zhí)行單元。


個(gè)標(biāo)號(hào)于全文代表同一個(gè)元件。圖1顯示根據(jù)本發(fā)明的微處理器100的方塊圖;圖2顯示根據(jù)本發(fā)明圖1的微處理器100的執(zhí)行單元124的方塊圖;圖3顯示根據(jù)本發(fā)明所述的加載數(shù)據(jù)/儲(chǔ)存地址微指令304的詳細(xì)示意圖;圖4顯示根據(jù)本發(fā)明圖1的重新序列緩沖器128內(nèi)項(xiàng)目404的字段示意圖;圖5顯示根據(jù)本發(fā)明圖1對(duì)應(yīng)于LdAluSt宏指令104所產(chǎn)生的微指令114 的方塊圖,包括了圖3的加載數(shù)據(jù)/儲(chǔ)存地址微指令304;以及圖6A和圖6B顯示根據(jù)本發(fā)明圖1的微處理器100執(zhí)行圖5的LdAluSt宏指令104的操作流程圖。
具體實(shí)施方式
圖1顯示根據(jù)本發(fā)明的微處理器100的方塊圖。微處理器100包括指令 編譯器108、耦接至指令編譯器108的微指令只讀存儲(chǔ)器112、耦接至指令編 譯器108的暫存器配置表116、耦接至?xí)捍嫫髋渲帽?16的執(zhí)行單元124、耦 接至?xí)捍嫫髋渲帽?16和執(zhí)行單元124的重新序列緩沖器128,以及耦接至 暫存器配置表116和執(zhí)行單元124的存儲(chǔ)器子系統(tǒng)132。存儲(chǔ)器子系統(tǒng)132 包括高速緩存138,用以快取此系統(tǒng)存儲(chǔ)器的數(shù)據(jù)。在一實(shí)施例中,高速緩 存138執(zhí)行了讀取快取和寫入快取。高速緩存138可包括分離的指令與數(shù)據(jù) 快取或單一統(tǒng)一存儲(chǔ)器,或是兩者。高速緩存]38可包括存儲(chǔ)器的等級(jí)結(jié)構(gòu), 例如一或多個(gè)第一級(jí)快取(L1 cache)和一第二級(jí)快取(L2 cache)。存儲(chǔ)器子 系統(tǒng)132也包括存儲(chǔ)緩沖器134,用來緩沖送至存儲(chǔ)器的數(shù)據(jù),其可包括微 處理器100的高速緩存,以及用來緩沖從存儲(chǔ)器所接收的數(shù)據(jù)的加栽緩沖器 136。微處理器IOO是超純量執(zhí)行處理器,因?yàn)槠溆心芰τ诿款l率周期發(fā)出多 重微指令給執(zhí)行單元124。此外,微處理器100是加擾執(zhí)行處理器,因?yàn)閳?zhí) 行單元124可以用不同于它們所對(duì)應(yīng)的宏指令的程序順序的一個(gè)順序來單獨(dú) 或一起地執(zhí)行它們個(gè)別的微指令,不論個(gè)別或整體。在一實(shí)施例中,微處理 器100具有x86宏架構(gòu),也就是說其支持IA-32指令集且包括了 TA-32使用 者可見的暫存器集合。指令編譯器108從指令快取(圖未顯示)接收宏指令104,并且對(duì)應(yīng)地轉(zhuǎn) 換每一個(gè)宏指令104為一或多個(gè)共同地執(zhí)行宏指令104所指定的運(yùn)算的微指 令114。在一實(shí)施例中,指令編譯器108的寬度為三。換言之,指令編譯器 108每頻率周期可產(chǎn)生多達(dá)三個(gè)的微指令114。根據(jù)宏指令104的調(diào)配,指令 編譯器108可于一頻率周期內(nèi)由一、二或三個(gè)宏指令104產(chǎn)生三個(gè)微指令114。 也就是說,如果每下三個(gè)要編譯的宏指令104只需要單一的微指令114,那 么所有三個(gè)宏指令104可于單一頻率周期內(nèi)編譯。另一種方式中,如果下兩 個(gè)宏指令104中的其中一個(gè)需要兩個(gè)微指令114而另一個(gè)需要一個(gè)微指令 114,那么這兩個(gè)宏指令104可于單一頻率周期內(nèi)編譯。另一種方式中,如果 下一個(gè)要編譯的宏指令104需要三個(gè)微指令114,那么這個(gè)宏指令104可于 單一頻率周期內(nèi)編譯。另一種方式中,如果下一個(gè)要編譯的宏指令104需要超過三個(gè)的微指令114,則轉(zhuǎn)移控制權(quán)給微指令只讀存儲(chǔ)器112中的一個(gè)微指令114序列以提供超過指令編譯器108的能力的額外微指令114。有利的 是,本發(fā)明的指令編譯器108將LdAluSt宏指令104轉(zhuǎn)換成三個(gè)微指令114, 其避免將控制權(quán)轉(zhuǎn)換給微指令只讀存儲(chǔ)器112中的微指令114序列,因而潛 在地提供了更佳的執(zhí)行效能。更具優(yōu)勢的是,微處理器100的微指令集包括 了一個(gè)新的加載數(shù)據(jù)/儲(chǔ)存地址微指令304 (于圖3說明),其為指令編譯器108 轉(zhuǎn)換LdAluSt宏指令104后所產(chǎn)生的三個(gè)微指令114中的其中一個(gè)。加載數(shù) 據(jù)/儲(chǔ)存地址微指令304具有獨(dú)特的特性,因?yàn)樗莻魉偷絻蓚€(gè)不同的執(zhí)行單 元124,而非如同傳統(tǒng)的微指令114只傳送到一個(gè)執(zhí)行單元124。加載數(shù)據(jù)/ 儲(chǔ)存地址微指令304的產(chǎn)生、運(yùn)作和撤回將于以下詳細(xì)說明。在詳細(xì)描述圖1的微處理器100以及其如何根據(jù)本發(fā)明所述的實(shí)施例處 理LdAluSt宏指令之前,將先簡單說明微處理器100可以用一個(gè)不同的方式 處理LdAluSt宏指令,因此讀者可更徹底了解本發(fā)明的優(yōu)點(diǎn)。微處理器100的微指令集也包括加載數(shù)據(jù)微指令、各種的算術(shù)邏輯單元 微指令(例如圖5的算術(shù)邏輯單元微指令508)、儲(chǔ)存地址微指令以及儲(chǔ)存數(shù) 據(jù)微指令(例如圖5的儲(chǔ)存數(shù)據(jù)微指令516)。加載數(shù)據(jù)微指令指示微處理器 100從加載數(shù)據(jù)微指令的操作數(shù)所計(jì)算出的加載存儲(chǔ)器地址中,將數(shù)據(jù)(例如 存儲(chǔ)器操作數(shù))加載至微處理器100的目的暫存器。算術(shù)邏輯單元微指令指示 微處理器IOO對(duì)微處理器100的暫存器中一或多個(gè)的操作數(shù)執(zhí)行算術(shù)或邏輯 運(yùn)算以產(chǎn)生結(jié)果值,其儲(chǔ)存于微處理器100的一個(gè)暫存器中。儲(chǔ)存地址微指令指示微處理器100從儲(chǔ)存地址微指令的操作數(shù)計(jì)算出儲(chǔ)存存儲(chǔ)器地址,并 且將計(jì)算出的儲(chǔ)存存儲(chǔ)器地址寫入之前分配給儲(chǔ)存地址微指令的一個(gè)存儲(chǔ)緩沖器。儲(chǔ)存數(shù)據(jù)微指令指示微處理器100將數(shù)據(jù)從微處理器100的暫存器寫 入存儲(chǔ)緩沖器,例如配置給儲(chǔ)存地址微指令的存儲(chǔ)緩沖器,因此微處理器IOO 的存儲(chǔ)器子系統(tǒng)可接著將數(shù)據(jù)寫入存儲(chǔ)器中。微處理器100的指令編譯器108 可將一 LdAluSt宏指令104轉(zhuǎn)換成四個(gè)不同的微指令114 (上述的加載數(shù)據(jù)、 算術(shù)邏輯單元、儲(chǔ)存地址及儲(chǔ)存數(shù)據(jù)微指令),其將分別由四個(gè)不同的執(zhí)行單 元124 (圖2的加載數(shù)據(jù)單元220、簡單整數(shù)單元212、儲(chǔ)存地址單元224以 及儲(chǔ)存數(shù)據(jù)單元228)所執(zhí)行。然而,對(duì)三個(gè)微指令寬度的指令編譯器108的 情況來說,這不是需要四個(gè)微指令寬度的指令編譯器108就是必須轉(zhuǎn)換到微 碼只讀存儲(chǔ)器112中的微碼序列。如本發(fā)明所述,新的加載數(shù)據(jù)/儲(chǔ)存地址微指令304容許指令編譯器108為三個(gè)微指令寬度的編譯器。亦即本發(fā)明的加 載數(shù)據(jù)/儲(chǔ)存地址微指令304可以于同一個(gè)WAluSt宏指令周期內(nèi)編譯第二個(gè) LdAluSt宏指令104,如果第二個(gè)LdAluSt宏指令104只需要單一個(gè)微指令 114的話。
具有優(yōu)勢的是,加載數(shù)據(jù)/儲(chǔ)存地址微指令304將個(gè)別的加載數(shù)據(jù)和儲(chǔ)存 地址微指令114結(jié)合成單一的微指令114。這兩個(gè)微指令是可結(jié)合在一起, 因?yàn)閮?chǔ)存地址微指令114包括了與加載數(shù)據(jù)微指令114相同的操作數(shù),其用 來計(jì)算存儲(chǔ)器操作數(shù)的相同存儲(chǔ)器地址。微處理器100將本發(fā)明的加載數(shù)據(jù)/ 儲(chǔ)存地址微指令304同時(shí)發(fā)送給加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224。宏 指令通常取得存儲(chǔ)器操作數(shù)、對(duì)其執(zhí)行運(yùn)算,以及將結(jié)果儲(chǔ)存回操作數(shù)原本 的存儲(chǔ)器位置。新的加載數(shù)據(jù)/儲(chǔ)存地址微指令114對(duì)于LdAluSt宏指令這方 面是占優(yōu)勢的,也就是說,來源和目的的存儲(chǔ)器地址是相同的。
因?yàn)榧虞d數(shù)據(jù)/儲(chǔ)存地址微指令304是發(fā)送到兩個(gè)不同的執(zhí)行單元,因此 在兩個(gè)執(zhí)行單元皆完成執(zhí)行后,才可將其從重新序列緩沖器128中撤回。因 此,在每一個(gè)重新序列緩沖器128的項(xiàng)目404 (圖4)中加入一個(gè)旗標(biāo)408,以 提供加載數(shù)據(jù)/儲(chǔ)存地址微指令304是否占據(jù)重新序列緩沖器的項(xiàng)目 (Entry) 404的指示。此外,加入旗標(biāo)412和416 (圖4)以顯示加載數(shù)據(jù)單元 220和儲(chǔ)存地址單元224是否皆個(gè)別完成所執(zhí)行的工作。如此一來,在兩個(gè) 執(zhí)行單元皆處理完加載數(shù)據(jù)/儲(chǔ)存地址微指令304,并且設(shè)定分配給加載數(shù)據(jù) /儲(chǔ)存地址微指令304的重新序列緩沖器的項(xiàng)目中的個(gè)別旗標(biāo)412和416之 前,加載數(shù)據(jù)/儲(chǔ)存地址微指令304都不會(huì)被撤回。
再次參考圖1,暫存器配置表116從指令編譯器108和微指令只讀存儲(chǔ) 器112接收微指令114,并且確認(rèn)微指令114間的依附關(guān)系。因?yàn)槲⑻幚砥?100是加擾處理器,因此執(zhí)行單元124用暫存器配置表116所產(chǎn)生的依附關(guān) 系信息來確認(rèn)何時(shí)微指令114的所有來源搡作數(shù)皆可取得,因而執(zhí)行單元124 可執(zhí)行微指令114。暫存器配置表116也分配重新序列緩沖器128中下個(gè)可 用的項(xiàng)目404給每一個(gè)微指令114。 一旦暫存器配置表116計(jì)算了依附關(guān)系 并且分配重新序列緩沖器的項(xiàng)目404后,暫存器配置表116發(fā)送微指令114 給用來執(zhí)行特定類型的微指令114的適當(dāng)執(zhí)行單元124。雖然執(zhí)行單元124 以不同于宏指令的程序順序的加擾方式執(zhí)行微指令114,但重新序列緩沖器 128是以程序順序撤回微指令114和其相關(guān)的宏指令104。此外,指令編怪器108是以程序順序轉(zhuǎn)換宏指令104,且以程序順序產(chǎn)生相關(guān)的微指令114。另 外,暫存器配置表116是以程序順序分配重新序列緩沖器128中的項(xiàng)目404。重新序列緩沖器128是一個(gè)以程序順序從暫存器配置表116接收微指令 114的環(huán)狀先進(jìn)先出緩沖器。在一實(shí)施例中,重新序列緩沖器128包括48個(gè) 項(xiàng)目404,每一個(gè)重新序列緩沖器的項(xiàng)目404具有索引,或標(biāo)簽420 (圖4)。 標(biāo)簽420用以于重新序列緩沖器的項(xiàng)目404中辨識(shí)微指令114,當(dāng)執(zhí)行單元 124完成微指令114的執(zhí)行時(shí),執(zhí)行單元124將所執(zhí)行的微指令114的標(biāo)簽 420傳送給重新序列緩沖器128。然后重新序列緩沖器128更新與所執(zhí)行的微 指令114相關(guān)的項(xiàng)目404中的旗標(biāo)412和416以顯示微指令114已準(zhǔn)備被撤 回。每一個(gè)重新序列緩沖器128的項(xiàng)目404中包括了加載數(shù)據(jù)/儲(chǔ)存地址旗標(biāo) 408(顯示于圖4中),用以顯示重新序列緩沖器128的項(xiàng)目404中的微指令 114是否為加載數(shù)據(jù)/儲(chǔ)存地址微指令304。在一實(shí)施例中,每一個(gè)重新序列 緩沖器128的項(xiàng)目404包括加載數(shù)據(jù)執(zhí)行完成旗標(biāo)412以及儲(chǔ)存地址執(zhí)行完 成旗標(biāo)416(顯示于圖4中),其由個(gè)別的執(zhí)行單元124于完成它們個(gè)別部分 的加載數(shù)據(jù)/儲(chǔ)存地址微指令304后所設(shè)定。執(zhí)行單元124執(zhí)行個(gè)別的微指令114,然后發(fā)送執(zhí)行完成的信號(hào)給重新 序列緩沖器128。當(dāng)最早的微指令114的完成旗標(biāo)顯示其已執(zhí)行完成后,重 新序列緩沖器128將以程序的順序撤回微指令114。以加載數(shù)據(jù)/儲(chǔ)存地址微 指令304的例子來說,重新序列緩沖器128等待加載數(shù)據(jù)執(zhí)行完成旗標(biāo)4L2 和儲(chǔ)存地址執(zhí)行完成旗標(biāo)416(顯示于圖4中)兩者皆顯示執(zhí)行完成的狀態(tài), 如以下的詳細(xì)說明。在一實(shí)施例中,重新序列緩沖器128每一頻率周期可以 撤回三個(gè)之多的微指令。每一執(zhí)行單元124包括了指令隊(duì)列,又稱為保留站 (reservation station),用以從暫存器配置表116和重新序列緩沖器128接 收要執(zhí)行的微指令114。在每一頻率周期中,每一個(gè)執(zhí)行單元124可從其個(gè) 別的保留站接收一個(gè)微指令114。只有那些來源操作數(shù)為備妥狀態(tài)的微指令 114才可從保留站發(fā)送到執(zhí)行單元124。當(dāng)暫存器配置表116于給定頻率周期輸出微指令114于其輸出總線上時(shí), 每一執(zhí)行單元124會(huì)監(jiān)控這些微指令114以檢測這些微指令114中是否有任 何的微指令是要被個(gè)別的執(zhí)行單元124所執(zhí)行。如果有微指令要被執(zhí)行單元 124所執(zhí)行,且執(zhí)行單元124的保留站中有一個(gè)空的位置(entry),則執(zhí)行單 元124將微指令114加載至保留站中該空的緩沖位置內(nèi)。如果執(zhí)行單元124沒有空的保留站位置,則重新序列緩沖器128于隨后輸出微指令114, 一直 到其被執(zhí)行單元124接收為止。以加載數(shù)據(jù)/儲(chǔ)存地址微指令304的情況來說, 兩個(gè)加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224 (圖2)皆把加載數(shù)據(jù)/儲(chǔ)存地址微 指令304接收入它們各自的保留站中以便于稍后執(zhí)行。另外,當(dāng)暫存器配置表116于給定頻率周期輸出微指令114于其輸出總 線上時(shí),存儲(chǔ)器子系統(tǒng)132監(jiān)控微指令114以檢測微指令114中是否有任何 的微指令為加載數(shù)據(jù)/儲(chǔ)存地址微指令304或加載數(shù)據(jù)微指令。如果有的話, 存儲(chǔ)器子系統(tǒng)132分配加載緩沖器136給加載數(shù)據(jù)/儲(chǔ)存地址微指令304或加 載數(shù)據(jù)微指令。存儲(chǔ)器子系統(tǒng)132將暫存器配置表116所輸出的加載數(shù)據(jù)/ 儲(chǔ)存地址微指令304或加載數(shù)據(jù)微指令其相關(guān)的重新序列緩沖器128的標(biāo)簽 420做存盤,并且儲(chǔ)存所分配的載入緩沖器136的辨識(shí)指針于加載數(shù)據(jù)/儲(chǔ)存 地址微指令304或加載數(shù)據(jù)微指令其相關(guān)的重新序列緩沖器的項(xiàng)目404內(nèi)。 如上所述,暫存器配置表116以程序順序輸出微指令114,且存儲(chǔ)器子系統(tǒng) 132也以程序順序配置加載緩沖器136。同樣地,當(dāng)暫存器配置表U6于給定 頻率周期輸出微指令114于其輸出總線上時(shí),存儲(chǔ)器子系統(tǒng)132監(jiān)控微指令 114以檢測微指令114中是否有任何的微指令為加載數(shù)據(jù)/儲(chǔ)存地址微指令 304或儲(chǔ)存地址微指令。如果有的話,存儲(chǔ)器子系統(tǒng)132分配存儲(chǔ)緩沖器134 給加載數(shù)據(jù)/儲(chǔ)存地址微指令304或儲(chǔ)存地址微指令。存儲(chǔ)器子系統(tǒng)132將暫 存器配置表116所輸出的加載數(shù)據(jù)/儲(chǔ)存地址微指令304或儲(chǔ)存地址微指令其 相關(guān)的重新序列緩沖器128的標(biāo)簽420做存盤,并且儲(chǔ)存所分配的存儲(chǔ)緩沖 器134的辨識(shí)指針于加載數(shù)據(jù)/儲(chǔ)存地址微指令304或儲(chǔ)存地址微指令其相關(guān) 的重新序列緩沖器的項(xiàng)目404內(nèi)。如上所述,暫存器配置表116以程序順序 輸出微指令114,且存儲(chǔ)器子系統(tǒng)132也以程序順序配置存儲(chǔ)緩沖器134t圖2顯示根據(jù)本發(fā)明圖1的微處理器100的執(zhí)行單元124的方塊圖。執(zhí) 行單元124平行地執(zhí)行微指令114,并且相互間是獨(dú)立的。圖2的實(shí)施例包括七個(gè)個(gè)別的執(zhí)行單元124,標(biāo)號(hào)204至228。第一執(zhí)行 單元標(biāo)號(hào)為媒體A 204,用以執(zhí)行浮點(diǎn)微指令114。第二執(zhí)行單元標(biāo)號(hào)為媒體 B 208,用以執(zhí)行乘法微指令114。第三執(zhí)行單元標(biāo)號(hào)為SINT (Simple Integer, 簡單整數(shù))212 ,用以執(zhí)行專門處理整數(shù)的算術(shù)或邏輯運(yùn)算的整數(shù)算術(shù)邏輯單 元微指令114,例如指令編譯器108所產(chǎn)生的對(duì)應(yīng)于LdAluSt宏指令104的 算術(shù)邏輯單元微指令5Q8(圖5)。第四執(zhí)行單元標(biāo)號(hào)MOV/BR (Move/Branch,移動(dòng)/分支)216,用以執(zhí)行移動(dòng)或分支微指令,以及簡單整數(shù)單元212亦執(zhí)行 的簡單算術(shù)邏輯單元運(yùn)算。第五執(zhí)行單元標(biāo)號(hào)LD(LoadData,加載數(shù)據(jù))220, 針對(duì)用來執(zhí)行存儲(chǔ)器加載運(yùn)算的微指令114,用以將來源操作數(shù)從存儲(chǔ)器擷 取至微處理器100的暫存器內(nèi),例如加載數(shù)據(jù)/儲(chǔ)存地址微指令304 (圖3)。 為了要由存儲(chǔ)器擷取來源操作數(shù),加載數(shù)據(jù)單元220為那些用以執(zhí)行存儲(chǔ)器 加載運(yùn)算的微指令114計(jì)算來源存儲(chǔ)器地址,例如加載數(shù)據(jù)/儲(chǔ)存地址微指令 304。在一實(shí)施例中,加載數(shù)據(jù)單元220是唯一為那些用以執(zhí)行存儲(chǔ)器加載(或 讀取)運(yùn)算的微指令114計(jì)算來源存儲(chǔ)器地址的執(zhí)行單元124。第六執(zhí)行單元 標(biāo)號(hào)STA(Store Address,儲(chǔ)存地址)224,用以為那些用來執(zhí)行存儲(chǔ)器儲(chǔ)存 運(yùn)算的微指令114計(jì)算目的存儲(chǔ)器地址,例如加載數(shù)據(jù)/儲(chǔ)存地址微指令 304 (圖3)。在一實(shí)施例中,儲(chǔ)存地址單元224是唯一為那些用以執(zhí)行存儲(chǔ)器 儲(chǔ)存(或?qū)懭?運(yùn)算的微指令114計(jì)算目的存儲(chǔ)器地址的執(zhí)行單元124。儲(chǔ)存 地址單元224也將所計(jì)算的目的存儲(chǔ)器地址寫入之前分配給用以執(zhí)行存儲(chǔ)器 儲(chǔ)存運(yùn)算的微指令114的存儲(chǔ)緩沖器134內(nèi),例如加載數(shù)據(jù)/儲(chǔ)存地址微指令 304。第七執(zhí)行單元標(biāo)號(hào)STD (Store Data,儲(chǔ)存數(shù)據(jù))228,針對(duì)用來執(zhí)行存 儲(chǔ)器儲(chǔ)存運(yùn)算的微指令114,用以將微指令114的結(jié)果值從暫存器儲(chǔ)存到儲(chǔ) 存地址單元224所記載的存儲(chǔ)器中的一個(gè)地址,例如指令編譯器108所產(chǎn)生 的對(duì)應(yīng)于LdAluSt宏指令104的儲(chǔ)存數(shù)據(jù)微指令516(圖5)。雖然圖2中顯示 了七個(gè)執(zhí)行單元,但其它實(shí)施例也可根據(jù)設(shè)計(jì)的需求和限制來增加或減少執(zhí) 行單元124的數(shù)量。圖3顯示根據(jù)本發(fā)明所述的加載數(shù)據(jù)/儲(chǔ)存地址微指令304的詳細(xì)示意 圖。加載數(shù)據(jù)/儲(chǔ)存地址微指令304包括五個(gè)字段運(yùn)算碼308、來源A 312、 來源B316、目的320和撤回324。運(yùn)算碼308的字段值特別用來于微處理器 100的微架構(gòu)指令集內(nèi)的微指令當(dāng)中辨識(shí)出加栽數(shù)據(jù)/儲(chǔ)存地址微指令304。 每個(gè)來源操作數(shù)A 312和來源操作數(shù)B 316的字段皆記載了個(gè)別的暫存器, 例如結(jié)構(gòu)一般用途暫存器或臨時(shí)暫存器,其內(nèi)的值為加載數(shù)據(jù)單元220和儲(chǔ) 存地址單元224所用來計(jì)算它們個(gè)別的加載數(shù)據(jù)存儲(chǔ)器地址和儲(chǔ)存數(shù)據(jù)存儲(chǔ) 器地址。目的320的字段記載了一個(gè)暫存器,將用來接收由加載數(shù)椐單元220 所計(jì)算的加載數(shù)據(jù)存儲(chǔ)器地址所記載的存儲(chǔ)器位置內(nèi)的來源操作數(shù)。撤回324 的字段包括一個(gè)常數(shù),該常數(shù)加到來源操作數(shù)A 312所記載的暫存器中所儲(chǔ) 存的值、來源操作數(shù)B 316所記載的暫存器中所儲(chǔ)存的值,以及區(qū)段暫存器(在x86的實(shí)施例中,區(qū)段暫存器DS/CS/ES/SS中的一者)中所儲(chǔ)存的值,以得到 加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224所計(jì)算的存儲(chǔ)器地址。本發(fā)明的發(fā)明人觀察到加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224是使用相 同的操作數(shù)字段計(jì)算它們個(gè)別的存儲(chǔ)器地址。具有優(yōu)勢的是,發(fā)明人將個(gè)別 的加載數(shù)據(jù)微指令114和儲(chǔ)存地址微指令114的功能結(jié)合成本發(fā)明所述的加 載數(shù)據(jù)/儲(chǔ)存地址微指令304,其是具有不同的運(yùn)算碼308值。目的320的字 段是未被儲(chǔ)存地址單元224所使用。圖4顯示根據(jù)本發(fā)明圖1的重新序列緩沖器128內(nèi)項(xiàng)目404的字段示意 圖。每一個(gè)重新序列緩沖器的項(xiàng)目包括了以下的字段微指令114、加載數(shù) 據(jù)/儲(chǔ)存地址旗標(biāo)408、加載數(shù)據(jù)執(zhí)行完成旗標(biāo)412、儲(chǔ)存地址執(zhí)行完成旗標(biāo) 416以及標(biāo)簽420。每一個(gè)重新序列緩沖器的項(xiàng)目404亦包括其它未顯示的字 段。在一實(shí)施例中,加載數(shù)據(jù)執(zhí)行完成旗標(biāo)412為通用的單一指令完成旗標(biāo), 其用以為除了加載數(shù)據(jù)/儲(chǔ)存地址微指令304外的所有的微指令114顯示該微 指令執(zhí)行完成的消息。如果暫存器配置表116將加載數(shù)據(jù)/儲(chǔ)存地址微指令 304填入重新序列緩沖器的項(xiàng)目404中,它將會(huì)設(shè)定加載數(shù)據(jù)/儲(chǔ)存地址旗標(biāo) 408,用以表示必須有兩個(gè)執(zhí)行單元124執(zhí)行加載數(shù)據(jù)/儲(chǔ)存地址微指令3(M。 特別地說,加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224在可撤銷加載數(shù)據(jù)/儲(chǔ)存地 址微指令304之前必須先發(fā)出執(zhí)行完成的信號(hào)。加載數(shù)據(jù)單元220設(shè)定加載 數(shù)據(jù)執(zhí)行完成旗標(biāo)412來告知重新序列緩沖器12 8其已經(jīng)完成加載數(shù)據(jù)/儲(chǔ)存 地址微指令304的執(zhí)行,而儲(chǔ)存地址單元224設(shè)定儲(chǔ)存地址執(zhí)行完成旗標(biāo)416 來告知重新序列緩沖器128其已經(jīng)完成加載數(shù)據(jù)/儲(chǔ)存地址微指令304的執(zhí) 行。重新序列緩沖器項(xiàng)目404中的標(biāo)簽420是項(xiàng)目404于重新序列緩沖器128 內(nèi)的索引,并且為微處理器100的各種電路用來辨識(shí)微指令ll4。圖5顯示根據(jù)本發(fā)明圖1對(duì)應(yīng)于LdAluSt宏指令104所產(chǎn)生的微指令114 的方塊圖,包括了圖3的加載數(shù)據(jù)/儲(chǔ)存地址微指令304。圖5包括了圖1的 指令編譯器108、暫存器配置表116和重新序列緩沖器128。圖5也包括了圖 2的加載數(shù)據(jù)單元220、儲(chǔ)存地址單元224、簡單整數(shù)單元212和儲(chǔ)存數(shù)據(jù)單 元228。指令編譯器108接收LdAiuSt宏指令104并且于單一頻率周期內(nèi)以 如下的順序產(chǎn)生三個(gè)微指令加載數(shù)據(jù)/儲(chǔ)存地址微指令304、算術(shù)邏輯單元 微指令508以及儲(chǔ)存數(shù)據(jù)微指令516。這三個(gè)指令執(zhí)行和LdAluSt宏指令104 有關(guān)的所有運(yùn)算。加載數(shù)據(jù)單元220產(chǎn)生加載數(shù)據(jù)執(zhí)行完成信號(hào)524 、儲(chǔ)存地址單元224產(chǎn)生儲(chǔ)存地址執(zhí)行完成信號(hào)528、簡單整數(shù)單元212產(chǎn)生算術(shù) 邏輯單元執(zhí)行完成信號(hào)520、儲(chǔ)存數(shù)據(jù)單元228產(chǎn)生儲(chǔ)存數(shù)據(jù)執(zhí)行完成信號(hào) 532,以下將于圖6A和圖6B中做更詳細(xì)的解釋。圖5的重新序列緩沖器128 說明了圖4中三個(gè)不同的項(xiàng)目404。在圖5的范例中,暫存器配置表116將 重新序列緩沖器的項(xiàng)目404以7的標(biāo)簽(或索引)分配給加載數(shù)據(jù)/儲(chǔ)存地址微 指令304、以8的標(biāo)簽分配給算術(shù)邏輯單元孩i指令508,以及以9的標(biāo)簽分配 給儲(chǔ)存數(shù)據(jù)微指令516。現(xiàn)在,將以圖6A和6B的流程圖來詳細(xì)說明圖5。圖6A和圖6B顯示根據(jù)本發(fā)明圖1的微處理器100執(zhí)行圖5的LdAluSt 宏指令104的操作流程圖。流程起始于方塊604。在方塊604中,指令編譯器108以如下的形式接收LdAluSt宏指令104: [Mem]《[Mem][整數(shù)算術(shù)邏輯單元運(yùn)算][算術(shù)邏輯單元來源]。舉例來說, LdAluSt宏指令104可以是以上討論的x86 ADD [Mem], EAX指令。[Mem]是 根據(jù)宏架構(gòu)的其中一種尋址模式所計(jì)算出來的存儲(chǔ)器地址,舉例來說,這在 x86架構(gòu)中包括由單一暫存器、常數(shù)或暫存器和常數(shù)的結(jié)合而產(chǎn)生一個(gè)地址。 [算術(shù)邏輯單元運(yùn)算]是指由算術(shù)邏輯單元(例如圖2中的簡單整數(shù)單元H2或 移動(dòng)/分支單元216)所執(zhí)行的算術(shù)或邏輯的運(yùn)算,例如加法、減法、布爾邏 輯運(yùn)算、比較、移位、旋轉(zhuǎn)(rotate)、移動(dòng)、位掃描等等。[算術(shù)邏輯單元來 源]由結(jié)構(gòu)暫存器所提供,或者也可以是常數(shù)。必須注意的是,存儲(chǔ)器操作數(shù) 同時(shí)皆為來源操作數(shù)和目的操作數(shù),因此LdAluSt宏指令104的目的存儲(chǔ)器 地址和來源存儲(chǔ)器地址皆相同。結(jié)果,用來計(jì)算加載地址的微指令114的來 源操作數(shù)將與用來計(jì)算儲(chǔ)存地址的微指令114的來源操作數(shù)相同。流程進(jìn)行 至方塊608。在方塊608中,指令編:澤器108于單一頻率周期以如下的順序產(chǎn)生對(duì)應(yīng) 于LdAh〗St宏指令104的三個(gè)微指令圖3的加載數(shù)據(jù)/儲(chǔ)存地址微指令304 、 圖5的算術(shù)邏輯單元微指令508以及儲(chǔ)存數(shù)據(jù)微指令516。這三個(gè)微指令 304/508/516執(zhí)行了 LdAluSt宏指令104所需執(zhí)行的所有運(yùn)算。流程進(jìn)行至 方塊612。在方塊612中,暫存器配置表116由指令編譯器108接收三個(gè)微指令 304/508/516,并且計(jì)算它們之間的依附關(guān)系,以及它們與(或)其它微指令之 間的依附關(guān)系,上述其它微指令是屬于宏指令串流內(nèi)其它宏指令所產(chǎn)生的微 指令串流內(nèi)的微指令。算術(shù)邏輯單元微指令508是依附至加載數(shù)據(jù)/儲(chǔ)存地址微指令304的結(jié)果值之上,因?yàn)樗阈g(shù)邏輯單元樣i指令508的其中一個(gè)來源操 作數(shù)是由加載數(shù)據(jù)/儲(chǔ)存地址微指令304所加載的存儲(chǔ)器操作數(shù)。算術(shù)邏輯單 元微指令508也可依附至用來提供其它來源操作數(shù)的另一個(gè)微指令114的結(jié) 果值之上,例如以上討論的x86指令A(yù)DD [mem], EAX例子中為EAX暫存器的 值。儲(chǔ)存數(shù)據(jù)微指令516依附至算術(shù)邏輯單元孩史指令508的結(jié)果值之上,因 為算術(shù)邏輯單元微指令508的結(jié)果值為儲(chǔ)存數(shù)據(jù)微指令516將要寫入存儲(chǔ)緩 沖器134以便隨后儲(chǔ)存到存儲(chǔ)器(例如系統(tǒng)存儲(chǔ)器或快取138)的數(shù)據(jù)。在加 載數(shù)據(jù)/儲(chǔ)存地址微指令304將儲(chǔ)存地址寫入存儲(chǔ)緩沖器134,且儲(chǔ)存數(shù)據(jù)微 指令516將算術(shù)邏輯單元微指令508的結(jié)果值寫入存儲(chǔ)緩沖器134后,分配 給加載數(shù)據(jù)/儲(chǔ)存地址微指令304的寫入存儲(chǔ)緩沖器134將此結(jié)果值寫入存儲(chǔ) 器。加載數(shù)據(jù)/儲(chǔ)存地址微指令304和儲(chǔ)存數(shù)據(jù)微指令516并未彼此依附,因 此可對(duì)另一者執(zhí)行加擾處理。這對(duì)加載數(shù)據(jù)/儲(chǔ)存地址微指令304而言尤其適 用,因?yàn)槠溆诩虞d數(shù)據(jù)單元220和儲(chǔ)存地址單元224兩者內(nèi)執(zhí)行。然而,因 為加載數(shù)據(jù)/儲(chǔ)存地址微指令304于加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224兩 者內(nèi)執(zhí)行,其可依附至用以提供圖3中的來源A 312操作數(shù)和來源B 316操 作數(shù)的其它指令的結(jié)果值之上,上述來源A 312操作數(shù)和來源B 316操作數(shù) 是用來分別計(jì)算加載存儲(chǔ)器地址和儲(chǔ)存存儲(chǔ)器地址,例如一般用途暫存器的 操作數(shù)或區(qū)段暫存器的操作數(shù)。流程進(jìn)行至方塊616。在方塊616中,暫存器配置表116依照順序分配重新序列緩沖器的項(xiàng)目 404給每一個(gè)微指令304/508/516,并且將每個(gè)微指令的依附信息寫入每一個(gè) 微指令304/508/516所分配到的重新序列緩沖器的項(xiàng)目404中,)當(dāng)暫存器配 置表116分配重新序列緩沖器的項(xiàng)目404時(shí),重新序列緩沖器128將每一個(gè) 所分配的重新序列緩沖器項(xiàng)目404的加載數(shù)據(jù)/儲(chǔ)存地址旗標(biāo)408、加載數(shù)據(jù) 執(zhí)行完成旗標(biāo)412以及儲(chǔ)存地址執(zhí)行完成旗標(biāo)416 (如圖4中所示)清除。暫 存器配置表116也將這三個(gè)微指令304/508/516于其輸出總線上發(fā)送(或輸出) 給重新序列緩沖器128和執(zhí)行單元124。重新序列緩沖器128將三個(gè)微指令 304/508/516接收入它們所個(gè)別分配的項(xiàng)目404中。在圖5的實(shí)施例中,重 新序列緩沖器的項(xiàng)目7接收了加載數(shù)據(jù)/儲(chǔ)存地址微指令304,重新序列緩沖 器的項(xiàng)目8接收了算術(shù)邏輯單元微指令508,以及重新序列緩沖器的項(xiàng)目9 接收了儲(chǔ)存數(shù)據(jù)微指令516。同樣的,加載數(shù)據(jù)單元220和儲(chǔ)存地址單元224 監(jiān)看暫存器配置表116的總線,并且都將加載數(shù)據(jù)/儲(chǔ)存地址微指令304接收至它們個(gè)別的保留站。簡單整數(shù)單元212監(jiān)看暫存器配置表116的總線,并 且將算術(shù)邏輯單元微指令508接收至它的保留站。儲(chǔ)存數(shù)據(jù)單元228監(jiān)看暫 存器配置表116的總線,并且將儲(chǔ)存數(shù)據(jù)微指令5]6接收至它的保留站,皆 如圖5所示。另外,暫存器配置表116也將分配給加載數(shù)據(jù)/儲(chǔ)存地址微指令 304的重新序列緩沖器項(xiàng)目404中的加載數(shù)據(jù)/儲(chǔ)存地址旗標(biāo)408設(shè)定,其于 圖5的實(shí)施例中是項(xiàng)目7。流程進(jìn)行至方塊620。在方塊620中,存儲(chǔ)器子系統(tǒng)132監(jiān)看暫存器配置表116的總線、檢測 加載數(shù)據(jù)/儲(chǔ)存地址微指令304,并且個(gè)別地分配存儲(chǔ)緩沖器134和載入緩沖 器136給加載數(shù)據(jù)/儲(chǔ)存地址微指令304。流程從方塊620進(jìn)行至方塊624和 方塊636。在方塊624中, 一旦所有的加載數(shù)據(jù)/儲(chǔ)存地址微指令304的來源操作數(shù) 都備妥,加載數(shù)據(jù)單元220根據(jù)來源A 31.2、來源B 316和撤回324的字段 所記載的操作數(shù)計(jì)算加載存儲(chǔ)器地址,并且要求存儲(chǔ)器子系統(tǒng)132將所計(jì)算 的加載存儲(chǔ)器地址所載明的數(shù)據(jù)擷取至方塊62Q中所分配的加載緩沖器136。 當(dāng)數(shù)據(jù)接收至加載緩沖器136時(shí),加載數(shù)據(jù)單元220將此數(shù)據(jù)寫入微處理器 100內(nèi)圖3中目的320字段所記載的一個(gè)暫存器。然后加載數(shù)據(jù)單元220設(shè) 置圖5中的加栽數(shù)據(jù)執(zhí)行完成信號(hào)524,以設(shè)定方塊616中分配給加載數(shù)據(jù)/ 儲(chǔ)存地址微指令304的重新序列緩沖器項(xiàng)目7中的加載數(shù)據(jù)執(zhí)行完成旗標(biāo) 412。流程從方塊624進(jìn)行至方塊628。在方塊628中, 一旦加載數(shù)據(jù)單元220于方塊624中完成執(zhí)行其部分的 加載數(shù)據(jù)/儲(chǔ)存地址微指令304,簡單整數(shù)單元212對(duì)方塊624中所加載的數(shù) 據(jù)執(zhí)行算術(shù)邏輯單元微指令508所指定的算術(shù)邏輯單元運(yùn)算來產(chǎn)生結(jié)果值。 簡單整數(shù)單元212也設(shè)置圖5中的算術(shù)邏輯單元執(zhí)行完成信號(hào)520,以設(shè)定 方塊616中分配給算術(shù)邏輯單元微指令508的重新序列緩沖器項(xiàng)目8中的加 載數(shù)據(jù)執(zhí)行完成旗標(biāo)412。值得注意的是,算術(shù)邏輯單元微指令508亦可由 圖2中的移動(dòng)/分支單元216所執(zhí)行。流程進(jìn)行至方塊632。在方塊632中, 一旦簡單整數(shù)單元212于方塊628完成算術(shù)邏輯單元微 指令508,儲(chǔ)存數(shù)據(jù)單元228將算術(shù)邏輯單元^:指令508的結(jié)果值寫入于方 塊620中分配的存儲(chǔ)緩沖器134。儲(chǔ)存數(shù)據(jù)單元228也設(shè)置圖5中的儲(chǔ)存數(shù) 據(jù)執(zhí)行完成信號(hào)532,以設(shè)定方塊616中分配給儲(chǔ)存數(shù)據(jù)微指令516的重新 序列緩沖器項(xiàng)目9中的加載數(shù)據(jù)執(zhí)行完成旗標(biāo)412。流程從方塊632進(jìn)行至方塊640。在方塊636中, 一旦所有的加載數(shù)據(jù)/儲(chǔ)存地址微指令304的來源操作數(shù) 都備妥,儲(chǔ)存地址單元224根據(jù)來源A 312、來源B 316和撤回324的字段 所記載的操作數(shù)計(jì)算儲(chǔ)存存儲(chǔ)器地址,并且將所計(jì)算的儲(chǔ)存存儲(chǔ)器地址寫入 方塊620中所分配的存儲(chǔ)緩沖器134中。如上所述,加載數(shù)據(jù)/儲(chǔ)存地址微指 令304的目的320字段不為儲(chǔ)存地址單元224所使用。此后儲(chǔ)存地址單元224 設(shè)置圖5中的儲(chǔ)存地址執(zhí)行完成信號(hào)528,以設(shè)定方塊616中分配給加載數(shù) 據(jù)/儲(chǔ)存地址微指令304的重新序列緩沖器項(xiàng)目7中的儲(chǔ)存地址執(zhí)行完成旗標(biāo) 416。流程從方塊636進(jìn)行至方塊640。在方塊640中,重新序列緩沖器128檢測到加載數(shù)據(jù)/儲(chǔ)存地址微指令 304是重新序列緩沖器128中最早執(zhí)行完成的微指令。也就是說,重新序列 緩沖器128檢測到加載數(shù)據(jù)/儲(chǔ)存地址微指令304位于環(huán)狀重新序列緩沖器 128隊(duì)列的第一個(gè)項(xiàng)目。在圖5范例的項(xiàng)目7中,加載數(shù)據(jù)/儲(chǔ)存地址旗標(biāo) 408 (根據(jù)方塊616)、加載數(shù)據(jù)執(zhí)行完成旗標(biāo)412(根據(jù)方塊624),以及儲(chǔ)存 地址執(zhí)行完成旗標(biāo)416 (根據(jù)方塊636)皆被設(shè)定。流程進(jìn)行至方塊644。在方塊644中,重新序列緩沖器128檢測到除了加載數(shù)據(jù)/儲(chǔ)存地址微指 令304已經(jīng)完成之外,算術(shù)邏輯單元微指令508也已經(jīng)執(zhí)行完成(根據(jù)方塊 628)而儲(chǔ)存數(shù)據(jù)微指令516也已經(jīng)執(zhí)行完成(根據(jù)方塊632),因此對(duì)應(yīng)地撤 回LdAluSt宏指令104。流程進(jìn)行至方塊648。在方塊648中,存儲(chǔ)器子系統(tǒng)132最后將寫入存儲(chǔ)緩沖器134的數(shù)據(jù)寫 入存儲(chǔ)器,例如系統(tǒng)存儲(chǔ)器或高速緩存138。流程結(jié)束于方塊648。雖然本文詳細(xì)說明了本發(fā)明及其目的、特征和優(yōu)點(diǎn),但在不脫離本發(fā)明 的范疇內(nèi),亦可有其它方式的實(shí)施例。舉例來說,雖然實(shí)施例中說明了指令 編譯器于每一頻率周期產(chǎn)生三個(gè)微指令,但也可有指令編譯器于每一頻率周 期產(chǎn)生超過三個(gè)微指令的實(shí)施例。例如對(duì)于具有四個(gè)微指令寬度的編譯器的 處理器來說,單一加載數(shù)據(jù)/儲(chǔ)存地址微指令允許指令編譯器將一 LdAhiSt宏 指令轉(zhuǎn)換成三個(gè)微指令,并且于相同頻率周期內(nèi)將第二宏指令轉(zhuǎn)換成第四微 指令。本發(fā)明雖以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明的范圍,任 何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動(dòng)與 潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
1.一種微處理器,于其宏架構(gòu)中具有宏指令集,上述宏指令集包括宏指令,上述宏指令指示上述微處理器對(duì)存儲(chǔ)器中的操作數(shù)執(zhí)行讀取/修改/寫入運(yùn)算,包括指令編譯器,用來將上述宏指令轉(zhuǎn)換成恰好三個(gè)的微指令,上述三個(gè)微指令用以對(duì)上述存儲(chǔ)器操作數(shù)執(zhí)行上述讀取/修改/寫入運(yùn)算,其中上述三個(gè)微指令是第一、第二和第三微指令;其中上述第一微指令指示上述微處理器從存儲(chǔ)器位置加載上述存儲(chǔ)器操作數(shù)至上述微處理器內(nèi),以及計(jì)算上述存儲(chǔ)器位置的目的地址;其中上述第二微指令指示上述微處理器對(duì)所加載的上述存儲(chǔ)器操作數(shù)執(zhí)行算術(shù)或邏輯運(yùn)算以產(chǎn)生結(jié)果值;其中上述第三微指令指示上述微處理器將上述結(jié)果值寫入上述存儲(chǔ)器位置,上述存儲(chǔ)器位置的目的地址是由上述第一微指令所計(jì)算;第一執(zhí)行單元,用來接收上述第一微指令以對(duì)應(yīng)地將上述存儲(chǔ)器操作數(shù)從上述存儲(chǔ)器位置加載至上述微處理器;以及第二執(zhí)行單元,用來接收上述第一微指令以對(duì)應(yīng)地計(jì)算上述存儲(chǔ)器位置的上述目的地址,其中上述第一和第二執(zhí)行單元是上述微處理器內(nèi)不同的執(zhí)行單元。
2. 根據(jù)權(quán)利要求1所述的微處理器,其中上述指令編譯器用以于每頻率 周期中輸出至多三個(gè)的微指令。
3. 根據(jù)權(quán)利要求1所述的微處理器,其中上述指令編譯器用以于每頻率 周期中輸出超過三個(gè)的微指令,其中上述指令編譯器于上述指令編譯器轉(zhuǎn)換 上述宏指令為上述三個(gè)微指令的相同頻率周期內(nèi),將第二宏指令轉(zhuǎn)換成第四 微指令。
4. 根據(jù)權(quán)利要求1所述的微處理器,還包括重新序列緩沖器,耦接至上 述指令編譯器以及上述第一和第二執(zhí)行單元,用以將上述第一微指令儲(chǔ)存至上述重新序列緩沖器的單一項(xiàng)目中,即使上述第一微指令為上述第一和第二 執(zhí)行單元兩者所執(zhí)行。
5. 根據(jù)權(quán)利要求4所述的微處理器,其中每一上述第一和第二執(zhí)行單元 還于隨后提供一個(gè)別的標(biāo)示,用以顯示上述第一微指令已被執(zhí)行,上述重新述第一和第二執(zhí)行單元用以顯示上述第一微指令已被 執(zhí)行的上述個(gè)別標(biāo)示后,撤回上述第一微指令。
6. 根據(jù)權(quán)利要求4所述的微處理器,其中上述重新序列緩沖器的上述單一項(xiàng)目包括旗標(biāo),用來表示上述第一微指令是上述微處理器的微指令集內(nèi), 要被上述微處理器的上述第 一 和第二執(zhí)行單元兩者所執(zhí)行的類型的微指令。
7. 根據(jù)權(quán)利要求1所述的微處理器,還包括第三執(zhí)行單元以及第四執(zhí)行 單元,其中上述第三執(zhí)行單元對(duì)應(yīng)于上述第二微指令,對(duì)所加載的上述存儲(chǔ) 器操作數(shù)執(zhí)行算術(shù)或邏輯運(yùn)算以產(chǎn)生結(jié)果值,上述第四執(zhí)行單元對(duì)應(yīng)于上述 第三微指令,將上述結(jié)果值寫入上述存儲(chǔ)器位置,上述存儲(chǔ)器位置的目的地 址是由上述第二執(zhí)行單元所計(jì)算而得。
8. 根據(jù)權(quán)利要求1所述的微處理器,還包括高速緩存,用以快取包括上 述存儲(chǔ)器操作數(shù)的數(shù)據(jù)。
9. 一種宏指令執(zhí)行方法,適用于執(zhí)行微處理器內(nèi)的宏指令,上述微處理 器在其宏架構(gòu)中具有包括上述宏指令的宏指令集,上述宏指令是用來指示上 述微處理器對(duì)存儲(chǔ)器中的操作數(shù)執(zhí)行讀取/修改/寫入運(yùn)算,包括將上述宏指令轉(zhuǎn)換成恰好三個(gè)的微指令,以便對(duì)上述存儲(chǔ)器操作數(shù)執(zhí)行 上述讀取/修改/寫入運(yùn)算,其中上述三個(gè)微指令是第一、第二和第三微指令;其中上述第一微指令指示上述微處理器從存儲(chǔ)器位置加載上述存儲(chǔ)器操 作數(shù)至上述微處理器內(nèi),以及計(jì)算上述存儲(chǔ)器位置的目的地址;其中上述第二微指令指示上述微處理器修改所加載的上述存儲(chǔ)器操作數(shù) 以產(chǎn)生結(jié)果值;其中上述第三微指令指示上述微處理器將上述結(jié)果值寫入上述存儲(chǔ)器位 置,上述存儲(chǔ)器位置的目的地址是由上述第一微指令所計(jì)算;以上述微處理器的第一和第二執(zhí)行單元兩者接收上述第一微指令; 將上述存儲(chǔ)器操作數(shù)從上述存儲(chǔ)器位置加載至上述微處理器,其中上述 加載操作是由上述微處理器的第一執(zhí)行單元對(duì)應(yīng)于上述接收操作所執(zhí)行;以 及計(jì)算上述存儲(chǔ)器位置的上述目的地址,其中上述計(jì)算操作是由上述微處 理器的第二執(zhí)行單元對(duì)應(yīng)于上述接收操作所執(zhí)行,上述第一和第二執(zhí)行單元 是上述微處理器內(nèi)不同的執(zhí)行單元。
10. 根據(jù)權(quán)利要求9所述的宏指令執(zhí)行方法,其中上述的轉(zhuǎn)換操作是由上述微處理器內(nèi)的指令編譯器所執(zhí)行,上述指令編譯器用來于每頻率周期中 輸出至多三個(gè)的微指令。
11. 根據(jù)權(quán)利要求9所述的宏指令執(zhí)行方法,其中上述的轉(zhuǎn)換操作是由 上述微處理器內(nèi)的指令編譯器所執(zhí)行,上述指令編譯器用來于每頻率周期中輸出超過三個(gè)的微指令,還包括于上述指令編譯器轉(zhuǎn)換上述宏指令為上述三個(gè)微指令的相同頻率周期 內(nèi),將第二宏指令轉(zhuǎn)換成第四微指令。
12. 根據(jù)權(quán)利要求9所述的宏指令執(zhí)行方法,還包括儲(chǔ)存上述第一微指 令于上述微處理器的重新序列緩沖器的單一項(xiàng)目中,即使上述第一微指令為 上述第一和第二執(zhí)行單元兩者所執(zhí)行。
13. 根據(jù)權(quán)利要求12所述的宏指令執(zhí)行方法,還包括提供第 一標(biāo)示,用以顯示上述第 一微指令已于上述加載操作后被執(zhí)行, 其中上述第一標(biāo)示的提供操作是由上述第一執(zhí)行單元所執(zhí)行;以及提供第二標(biāo)示,用以顯示上述第 一微指令已于上述計(jì)算操作后被執(zhí)行, 其中上述第二標(biāo)示的提供操作是由上述第二執(zhí)行單元所執(zhí)行;其中當(dāng)接收到顯示上述第一微指令已被執(zhí)行的上述第一和第二標(biāo)示后, 撤回上述第一微指令。
14. 根據(jù)權(quán)利要求12所述的宏指令執(zhí)行方法,其中上述重新序列緩沖器 的上述單一項(xiàng)目包括旗標(biāo),用來表示上述第一微指令是上述微處理器的微指 令集內(nèi),要被上述微處理器的上述第一和第二執(zhí)行單元兩者所執(zhí)行的類型的 微指令。
全文摘要
微處理器包括指令編譯器,指令編譯器將微處理器的宏架構(gòu)中的宏指令集的一宏指令轉(zhuǎn)換成恰好的三個(gè)微指令以對(duì)存儲(chǔ)器操作數(shù)執(zhí)行讀取/修改/寫入運(yùn)算。第一微指令指示微處理器從存儲(chǔ)器位置加載存儲(chǔ)器操作數(shù)至微處理器內(nèi),以及計(jì)算存儲(chǔ)器位置的目的地址。第二微指令指示微處理器對(duì)所加載的存儲(chǔ)器操作數(shù)執(zhí)行算術(shù)或邏輯運(yùn)算以產(chǎn)生結(jié)果值。第三微指令指示微處理器將結(jié)果值寫入存儲(chǔ)器位置,存儲(chǔ)器位置的目的地址是由第一微指令所計(jì)算。第一執(zhí)行單元接收第一微指令以對(duì)應(yīng)地將存儲(chǔ)器操作數(shù)從存儲(chǔ)器位置加載至微處理器內(nèi)。另外不同的第二執(zhí)行單元亦接收第一微指令,并且對(duì)應(yīng)地計(jì)算存儲(chǔ)器位置的目的地址。
文檔編號(hào)G06F9/30GK101329622SQ20081014612
公開日2008年12月24日 申請(qǐng)日期2008年8月6日 優(yōu)先權(quán)日2008年2月8日
發(fā)明者吉拉德·M·卡爾, 柯林·艾迪, 羅德尼·E·虎克 申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
德格县| 临沧市| 乌鲁木齐市| 体育| 宜州市| 墨脱县| 家居| 聂拉木县| 视频| 汉沽区| 防城港市| 兴国县| 东宁县| 扎赉特旗| 吉安市| 稻城县| 临夏县| 漳浦县| 兴海县| 遂川县| 抚州市| 石首市| 峨眉山市| 石渠县| 阳山县| 赤水市| 株洲市| 峨眉山市| 高青县| 东丰县| 永吉县| 广德县| 涿鹿县| 大厂| 兴安县| 蓬安县| 轮台县| 玛沁县| 龙口市| 历史| 泰和县|