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

微處理器的制作方法

文檔序號(hào):6563279閱讀:174來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):微處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種微處理器,更具體地涉及一種指令解釋方法。
技術(shù)描述傳統(tǒng)的微處理器通常具有可解釋指令集,其包括分別對(duì)應(yīng)于多個(gè)字長(zhǎng)的指令代碼。
字長(zhǎng)為指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并根據(jù)每個(gè)指令代碼進(jìn)行設(shè)置。
以用來(lái)將兩個(gè)不同寄存器的各自數(shù)據(jù)相加并將該結(jié)果存儲(chǔ)至某一寄存器的專(zhuān)門(mén)處理為例,根據(jù)該數(shù)據(jù)是否處理為1字節(jié)數(shù)據(jù)、2字節(jié)數(shù)據(jù)或4字節(jié)數(shù)據(jù)而使用不同的指令代碼。
然而,當(dāng)使用表示具有有限數(shù)量位的指令的固定長(zhǎng)度指令格式時(shí),無(wú)論處理內(nèi)容在一定程度上是否相同,人們不期望必須對(duì)于處理目標(biāo)數(shù)據(jù)的各種長(zhǎng)度提供多條指令(即具有分別不同的位序列的指令)。這是因?yàn)閷?duì)于處理目標(biāo)數(shù)據(jù)的不同長(zhǎng)度提供多個(gè)指令代碼會(huì)防止各種指令包括在指令集中,也就是各種類(lèi)型的指令包括在指令集中。
在公開(kāi)號(hào)為2004-206214的日本專(zhuān)利申請(qǐng)中公開(kāi)了一種關(guān)于解決該問(wèn)題的技術(shù)。使用該技術(shù),提前設(shè)置指令存取的數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)長(zhǎng)度和地址范圍之間的關(guān)系。當(dāng)微處理器解釋(解碼)指令時(shí),即使對(duì)于相同的指令代碼,其基于地址轉(zhuǎn)換數(shù)據(jù)長(zhǎng)度從而在數(shù)據(jù)存儲(chǔ)器中進(jìn)行存取。
由于相同的指令代碼可解釋為獨(dú)立的指令,各指令分別指向不同的數(shù)據(jù)長(zhǎng)度,因此利用前文所述的微處理器,不需要提供用于識(shí)別指令代碼中數(shù)據(jù)長(zhǎng)度的位域。

發(fā)明內(nèi)容
本發(fā)明的目的在于以不同于公開(kāi)號(hào)為2004-206214的日本專(zhuān)利申請(qǐng)中公開(kāi)的技術(shù)而提供一種微處理器,其能夠?qū)⑾嗤闹噶畲a解釋為獨(dú)立的指令,各指令分別指向不同的數(shù)據(jù)長(zhǎng)度。
為了實(shí)現(xiàn)所述目的,本發(fā)明的微處理器連續(xù)讀取指令并解釋和執(zhí)行每個(gè)讀取的指令,其包括存儲(chǔ)單元,用于存儲(chǔ)表示處理目標(biāo)數(shù)據(jù)長(zhǎng)度的數(shù)據(jù)長(zhǎng)度選擇-使用信息;解碼單元,用于相對(duì)指令連續(xù)地執(zhí)行指令解釋處理從而根據(jù)所述指令而對(duì)每個(gè)指令指定將要執(zhí)行的指令執(zhí)行處理的內(nèi)容;以及執(zhí)行單元,用于相對(duì)每個(gè)指令根據(jù)作為用于指令的指令執(zhí)行處理的結(jié)果的所述內(nèi)容而進(jìn)行指令執(zhí)行處理,其中當(dāng)指令解釋處理的目標(biāo)為第一類(lèi)型指令的任意之一時(shí),解碼單元根據(jù)該第一類(lèi)型指令更新存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息,當(dāng)指令解釋處理的目標(biāo)為第二類(lèi)型指令的任意之一時(shí),解碼單元根據(jù)存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息而選擇第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并根據(jù)該所選擇的長(zhǎng)度執(zhí)行指令解釋處理。
此處,作為實(shí)例,存儲(chǔ)單元為存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息的存儲(chǔ)電路,也就是說(shuō),該存儲(chǔ)電路為數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路。解碼單元為例如指令解碼器、第一類(lèi)型指令對(duì)應(yīng)電路和第二類(lèi)型指令對(duì)應(yīng)電路。此處,指令解碼器執(zhí)行解碼所需的各種控制。如果為解碼目標(biāo)的指令代碼為第一類(lèi)型指令,則第一類(lèi)型指令對(duì)應(yīng)電路具有根據(jù)第一類(lèi)型指令更新數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路的內(nèi)容的功能。如果為解碼目標(biāo)的指令代碼為第二類(lèi)型指令,則第二類(lèi)型指令對(duì)應(yīng)電路具有參照數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路的內(nèi)容而指定該數(shù)據(jù)長(zhǎng)度為對(duì)應(yīng)于第二類(lèi)型指令的指令代碼的處理目標(biāo),并將該數(shù)據(jù)長(zhǎng)度傳給指令解碼器。而且,例如作為電路的接口單元的執(zhí)行單元包括(i)算術(shù)運(yùn)算單元,其為用于參照存儲(chǔ)在通用寄存器中的數(shù)據(jù)或存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行諸如加法和乘法的不同類(lèi)型計(jì)算的電路,以及(ii)總線(xiàn),并具有在通用寄存器、算術(shù)運(yùn)算單元、數(shù)據(jù)存儲(chǔ)器等之間控制數(shù)據(jù)傳輸?shù)墓δ堋?br> 利用所述結(jié)構(gòu),當(dāng)解碼為第二類(lèi)型指令的指令時(shí),根據(jù)當(dāng)先前第一類(lèi)型指令被解碼時(shí)更新的數(shù)據(jù)長(zhǎng)度選擇-使用信息,本發(fā)明的微處理器指定第二類(lèi)型指令的指令代碼處理目標(biāo)的數(shù)據(jù)長(zhǎng)度,并基于該指定的數(shù)據(jù)長(zhǎng)度而執(zhí)行第二類(lèi)型指令的解碼。這使將相同的指令代碼解釋為多個(gè)指令即用于處理的分別不同長(zhǎng)度的目標(biāo)數(shù)據(jù)成為可能,并消除了提供用來(lái)明顯地識(shí)別第二類(lèi)型指令的指令代碼中數(shù)據(jù)長(zhǎng)度的位字段的需要。當(dāng)使用固定的位長(zhǎng)度格式時(shí),該結(jié)構(gòu)位包括在指令集中的多個(gè)指令提供了更多空間。
注意第一類(lèi)型指令可包括具有用于識(shí)別指令代碼中數(shù)據(jù)長(zhǎng)度的位字段的指令。該指令的例子包括用于將一字節(jié)(8位)的數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令,以及用于將兩字節(jié)(16位)的數(shù)據(jù)從存儲(chǔ)器傳送到寄存器中的指令。
另外,本發(fā)明的微處理器不是在指令執(zhí)行階段,而是在執(zhí)行指令解釋處理時(shí)執(zhí)行更新和參照數(shù)據(jù)長(zhǎng)度選擇-使用信息。因此,即使采用其中每個(gè)指令讀取(獲取)、指令解釋(解碼)和執(zhí)行為獨(dú)立流水線(xiàn)信息的流水線(xiàn)結(jié)構(gòu),當(dāng)?shù)谝活?lèi)型指令后直接接著第二類(lèi)型指令時(shí),根據(jù)第一類(lèi)型指令更新的數(shù)據(jù)長(zhǎng)度選擇-使用信息可用在第二類(lèi)型指令的解碼階段中。
此處,第一類(lèi)型指令可包括數(shù)據(jù)存儲(chǔ)指令,其指示將第一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)給存儲(chǔ)器,以及數(shù)據(jù)存儲(chǔ)指令,其指示將第二長(zhǎng)度的數(shù)據(jù)存儲(chǔ)給寄存器,并且當(dāng)指令解釋處理的目標(biāo)為數(shù)據(jù)存儲(chǔ)指令之一時(shí),解碼單元可更新存儲(chǔ)的長(zhǎng)度選擇-使用信息從而表示屬于作為目標(biāo)的數(shù)據(jù)存儲(chǔ)指令之一的第一長(zhǎng)度和第二長(zhǎng)度之一。
使用所述結(jié)構(gòu),當(dāng)解碼不同類(lèi)型的指令用于將數(shù)據(jù)存儲(chǔ)到寄存器時(shí),例如用于讀取存儲(chǔ)在具體位置的特定數(shù)量字節(jié)中的數(shù)據(jù)并將該讀取的數(shù)據(jù)存儲(chǔ)到寄存器的指令,數(shù)據(jù)長(zhǎng)度選擇-使用信息的存儲(chǔ)內(nèi)容基于解碼指令,更具體地基于根據(jù)解碼指令在寄存器中設(shè)置的數(shù)據(jù)長(zhǎng)度而與解碼并行確定并更新。也就是說(shuō),除了作為指令用于將一般數(shù)據(jù)存儲(chǔ)到寄存器外,第一類(lèi)型指令還具有更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的功能。因此,根據(jù)由微處理器解釋和執(zhí)行的程序,消除了對(duì)包含其主要目的是更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的存儲(chǔ)內(nèi)容的具體指令或其它的需要。
另外,當(dāng)本地觀察時(shí),構(gòu)造一般程序從而直接或稍微在將數(shù)據(jù)存儲(chǔ)到寄存器中的指令后,執(zhí)行其用于運(yùn)算、傳送或其它的處理目標(biāo)為存儲(chǔ)在寄存器中的數(shù)據(jù)的指令。因此,如果對(duì)于運(yùn)算目標(biāo)數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度為可選擇的指令適當(dāng)?shù)靥崆霸O(shè)置為第二類(lèi)型指令,這基本上可使第二類(lèi)型指令的數(shù)據(jù)長(zhǎng)度正確地選擇。也就是說(shuō),這消除了對(duì)由微處理器支持的指令集中作為運(yùn)算目標(biāo)的各數(shù)據(jù)長(zhǎng)度的獨(dú)立指令的需要。
注意作為例外,在以數(shù)據(jù)長(zhǎng)度未正確地選擇的方式構(gòu)成的程序情況下,諸如程序中存在將要處理的數(shù)據(jù)長(zhǎng)度復(fù)雜混合的情況,這可通過(guò)例如提供特定的指令用于更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的存儲(chǔ)內(nèi)容而進(jìn)行處理。這樣,通過(guò)使由微處理器支持的指令集中第二類(lèi)型指令的數(shù)量大于該指令集中特定指令的數(shù)量,可減少用于更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的存儲(chǔ)內(nèi)容所需的指令。當(dāng)使用固定的位長(zhǎng)度格式時(shí),這給將包括在指令集中的多個(gè)指令留下更多空間。
此處,第一類(lèi)型指令可包括(i)指示在寄存器中設(shè)置n位數(shù)值的指令,(ii)指示在寄存器中設(shè)置2n位數(shù)值的指令,(iii)指示將n位數(shù)值從存儲(chǔ)器傳送到寄存器的指令,以及(iv)指示將2n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令,并且當(dāng)指令解釋處理的目標(biāo)為指示在寄存器中設(shè)置n位數(shù)值的指令時(shí),解碼單元可更新存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示n位,當(dāng)指令解釋處理的目標(biāo)為指示在寄存器中設(shè)置2n位數(shù)值的指令時(shí),解碼單元可更新存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示2n位,當(dāng)指令解釋處理的目標(biāo)為指示將n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令時(shí),解碼單元可更新存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示n位,并且當(dāng)指令解釋處理的目標(biāo)為指示將2n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令時(shí),解碼單元可更新存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示2n位。
以具體的指令為例,程序中先前的指令為用于設(shè)置由寄存器中操作數(shù)設(shè)定的中間數(shù)值,或用于將數(shù)據(jù)從存儲(chǔ)器傳送到寄存器,并且用于運(yùn)算、傳送或其它的處理目標(biāo)假定為在寄存器中一長(zhǎng)度的數(shù)據(jù),該長(zhǎng)度于由先前指令設(shè)置的大小相同。用所述結(jié)構(gòu),諸如所述的具體指令的指令可設(shè)置為第二類(lèi)型指令,其沒(méi)有明顯地設(shè)置處理數(shù)據(jù)的長(zhǎng)度。這消除了對(duì)由微處理器支持的指令集中各運(yùn)算目標(biāo)數(shù)據(jù)長(zhǎng)度提供獨(dú)立指令的需要。
此處,至少一個(gè)指令可為乘法指令,其包括在第一類(lèi)型指令和第二類(lèi)型指令中,并且當(dāng)指令解釋處理的目標(biāo)為乘法指令時(shí),解碼單元可根據(jù)存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息而選擇乘法指令中的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度從而根據(jù)所選的長(zhǎng)度執(zhí)行指令解釋處理并更新存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示預(yù)定數(shù)值。
由于微處理器已經(jīng)被解碼,假定數(shù)據(jù)長(zhǎng)度選擇-使用信息表示為一字節(jié)的數(shù)據(jù)長(zhǎng)度為例,例如,用于將一字節(jié)數(shù)據(jù)存儲(chǔ)到寄存器的指令。假定微處理器解碼乘法指令,該指令指示一特定寄存器的內(nèi)容與另一寄存器的內(nèi)容相乘。此處,輸入到每個(gè)寄存器中的數(shù)據(jù)被認(rèn)為具有一字節(jié)的長(zhǎng)度,但是兩個(gè)一字節(jié)數(shù)據(jù)的乘積結(jié)果表示為兩個(gè)字節(jié)。所述微處理器能夠處理這種情況,使能將要處理兩個(gè)字節(jié)長(zhǎng)度數(shù)據(jù)的第二類(lèi)型指令,該第二類(lèi)型指令在乘法指令之后并且其處理目標(biāo)為乘法指令的乘積結(jié)果。
此處,數(shù)據(jù)長(zhǎng)度選擇-使用信息可選擇性地表示多個(gè)長(zhǎng)度中的一個(gè),并且每次解碼單元執(zhí)行用于第一類(lèi)型指令中任意之一的指令解釋處理時(shí),該解碼單元可更新數(shù)據(jù)長(zhǎng)度選擇-使用信息從而以多個(gè)長(zhǎng)度的預(yù)定循環(huán)表示多個(gè)長(zhǎng)度中的下一個(gè)。
每次在微處理器解碼作為第一類(lèi)型指令、NOP指令時(shí),該結(jié)構(gòu)例如能夠使由數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度以諸如1字節(jié)、2字節(jié)、4字節(jié)、1字節(jié)、2字節(jié)、4字節(jié)、1字節(jié)的形式循環(huán)轉(zhuǎn)換,其中NOP指令為表示沒(méi)有具體指令將要執(zhí)行的傳統(tǒng)NOP指令。因此,數(shù)據(jù)長(zhǎng)度選擇-使用信息可通過(guò)例如在程序中的必要位置插入必要數(shù)量的NOP指令而進(jìn)行更新以表示不定長(zhǎng)度。這消除了對(duì)提供多條指令用于設(shè)置數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示指令集中的具體數(shù)值的需要。注意第一類(lèi)型指令為傳統(tǒng)的NOP指令為不必需的。
此處,微處理器還可包括多個(gè)寄存器,其能根據(jù)指令指定為處理目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,其中存儲(chǔ)單元存儲(chǔ)多段分別對(duì)應(yīng)于多個(gè)寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,第一類(lèi)型指令為指示將某一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到某一寄存器中的指令,第二類(lèi)型指令為相對(duì)存儲(chǔ)在某一寄存器中,并具有某一長(zhǎng)度的處理目標(biāo)數(shù)據(jù)的數(shù)據(jù)而指示進(jìn)行運(yùn)算處理的指令,并且當(dāng)指令解釋處理的目標(biāo)為第一類(lèi)型指令時(shí),解碼單元更新對(duì)應(yīng)于寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,其中由第一類(lèi)型指令指示將數(shù)據(jù)存儲(chǔ)到該寄存器,并且當(dāng)指令解釋處理的目標(biāo)為第二類(lèi)型指令時(shí),解碼單元根據(jù)數(shù)據(jù)長(zhǎng)度選擇-使用信息,其對(duì)應(yīng)于由第二類(lèi)型指令指定的用來(lái)存儲(chǔ)處理目標(biāo)數(shù)據(jù)的寄存器,選擇第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并指定用于第二類(lèi)型指令的指令執(zhí)行處理內(nèi)容從而相對(duì)所選的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度數(shù)值而進(jìn)行運(yùn)算處理。
根據(jù)所述結(jié)構(gòu),數(shù)據(jù)長(zhǎng)度存儲(chǔ)在微處理器的每個(gè)寄存器中,該寄存器用于存儲(chǔ)作為運(yùn)算、轉(zhuǎn)換等處理目標(biāo)的數(shù)據(jù)。這些數(shù)據(jù)長(zhǎng)度由第一類(lèi)型指令更新,并當(dāng)?shù)诙?lèi)型指令解碼時(shí)接著被參照。因此,當(dāng)執(zhí)行的程序?yàn)橹T如操作不同長(zhǎng)度的數(shù)據(jù)的程序時(shí),該結(jié)構(gòu)是有效的。作為實(shí)例,假定以下的指令在程序中以所述的順序設(shè)置用于在第一寄存器中存儲(chǔ)一字節(jié)的中間數(shù)值數(shù)據(jù)的指令(一字節(jié)數(shù)值存儲(chǔ)指令),用于在第二寄存器中存儲(chǔ)兩個(gè)字節(jié)的中間數(shù)值數(shù)據(jù)的指令(兩字節(jié)數(shù)值存儲(chǔ)指令),指向第一寄存器的內(nèi)容用于諸如運(yùn)算處理的指令,指向第二寄存器的內(nèi)容用于諸如運(yùn)算的處理指令。不管是否沒(méi)有明顯地指定數(shù)據(jù)長(zhǎng)度,但這些四個(gè)指令中的后兩個(gè)指令被解碼為指向第一寄存器的內(nèi)容用于處理作為一字節(jié)數(shù)值的指令以及指向第二寄存器的內(nèi)容用于處理作為兩個(gè)字節(jié)數(shù)值的指令。
此處,微處理器還可包括多個(gè)寄存器,其能根據(jù)指令指定為處理目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,其中存儲(chǔ)單元還存儲(chǔ)分別對(duì)應(yīng)于多個(gè)寄存器的多段有效信息,每段有效信息表明是否將數(shù)據(jù)長(zhǎng)度選擇-使用信息在指令解釋處理中確定為有效或無(wú)效,第一類(lèi)型指令為指示將某一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到某一寄存器中的指令,第二類(lèi)型指令為參照如存儲(chǔ)在某一寄存器中并具有某一長(zhǎng)度的處理目標(biāo)數(shù)據(jù)的數(shù)據(jù)而指示進(jìn)行運(yùn)算處理的指令,并且當(dāng)指令解釋處理的目標(biāo)為第一類(lèi)型指令時(shí),除了依照第一類(lèi)型指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息外,為了表示有效,解碼單元更新對(duì)應(yīng)于寄存器的有效信息,該寄存器中存儲(chǔ)的數(shù)據(jù)由第一類(lèi)型指令指示,當(dāng)指令解釋處理的目標(biāo)為第三類(lèi)型指令時(shí),為了表示無(wú)效,根據(jù)該第三指令,解碼單元更新對(duì)應(yīng)于某一寄存器的有效信息,并且當(dāng)指令解釋處理的目標(biāo)為第二類(lèi)型指令時(shí),(a)(i)如果對(duì)應(yīng)于由第二類(lèi)型指令指定的寄存器的有效信息作為存儲(chǔ)處理目標(biāo)數(shù)據(jù)表示有效時(shí),解碼單元根據(jù)數(shù)據(jù)長(zhǎng)度選擇-使用信息而選擇處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,(ii)如果對(duì)應(yīng)于由第二類(lèi)型指令指定的寄存器的有效信息作為存儲(chǔ)處理目標(biāo)數(shù)據(jù)表示無(wú)效時(shí),解碼單元選擇預(yù)定的長(zhǎng)度作為處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,以及(b)解碼單元為第二類(lèi)型指令指定指令執(zhí)行處理的內(nèi)容從而相對(duì)所選的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度數(shù)值而進(jìn)行運(yùn)算處理。
當(dāng)微處理器執(zhí)行程序時(shí),例如操作一字節(jié)數(shù)據(jù)作為處理目標(biāo)時(shí),數(shù)據(jù)長(zhǎng)度選擇-使用信息基本上表示數(shù)據(jù)長(zhǎng)度為一字節(jié)。然而,假定該程序包括不僅一部分用于在通用寄存器之一中存儲(chǔ)一字節(jié)的數(shù)據(jù),而且包括一部分用于在該通用寄存器中存儲(chǔ)例如4字節(jié)存儲(chǔ)器地址數(shù)值。如果將諸如對(duì)于利用通用寄存器存儲(chǔ)存儲(chǔ)器地址的指令設(shè)置為第三類(lèi)型指令,則微處理器能解碼從而參照由第三類(lèi)型指令指定的通用寄存器,而不需參照數(shù)據(jù)長(zhǎng)度選擇-使用信息設(shè)置數(shù)據(jù)長(zhǎng)度。因此,微處理器也適合用于程序的執(zhí)行,該程序利用交替用于存儲(chǔ)預(yù)定數(shù)據(jù)長(zhǎng)度和存儲(chǔ)存儲(chǔ)器地址的特定寄存器。


通過(guò)結(jié)合說(shuō)明本發(fā)明具體實(shí)施方式
的附圖的以下說(shuō)明,將使本發(fā)明的這些和其它目的、優(yōu)點(diǎn)及特征變得更加明顯。
在附圖中圖1所示為本發(fā)明第一實(shí)施方式的微處理器100的結(jié)構(gòu)圖;圖2所示為數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119的存儲(chǔ)內(nèi)容;圖3所示為由微處理器100可解碼指令的指令格式;圖4所示為第一類(lèi)型指令的實(shí)例,其為對(duì)應(yīng)電路112的第一類(lèi)型指令的處理目標(biāo);圖5所示為第二類(lèi)型指令的實(shí)例,其為對(duì)應(yīng)電路113的第二類(lèi)型指令的處理目標(biāo);圖6所示為描述微處理器100的操作流程圖;圖7所示為描述由解碼單元110執(zhí)行的指令解釋處理流程圖;圖8所示為由微處理器100解釋的程序?qū)嵗?;圖9所示為基于指令解碼在數(shù)據(jù)長(zhǎng)度選擇-使用信息中的轉(zhuǎn)變;圖10所示為本發(fā)明第二實(shí)施方式的微處理器200的結(jié)構(gòu)圖;圖11所示為數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219的存儲(chǔ)內(nèi)容;以及圖12所示為描述由變型微處理器的解碼單元執(zhí)行的指令解釋處理流程圖。
具體實(shí)施例方式
1.第一實(shí)施方式以下描述本發(fā)明第一實(shí)施方式的微處理器100。
1-1.結(jié)構(gòu)圖1所示為本發(fā)明第一實(shí)施方式的微處理器100的結(jié)構(gòu)圖。
微處理器100為集成電路,其獲取、解碼并執(zhí)行屬于具有固定長(zhǎng)度指令格式的指令集的指令代碼。如圖1所示,微處理器100由解碼單元110、通用寄存器120、算術(shù)運(yùn)算單元130、指令存儲(chǔ)器140、數(shù)據(jù)存儲(chǔ)器150和接口單元160組成。
通用寄存器120為用于臨時(shí)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)電路,該數(shù)據(jù)為計(jì)算、轉(zhuǎn)換等的處理目標(biāo)或處理結(jié)果。更具體地,通用寄存器120為8個(gè)寄存器的集合(寄存器R0到寄存器R7),其中各寄存器能夠存儲(chǔ)32位數(shù)據(jù)。
算術(shù)運(yùn)算單元130為實(shí)現(xiàn)多種運(yùn)算的電路,諸如用存儲(chǔ)在通用寄存器120中的數(shù)據(jù)或存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150中的數(shù)據(jù)作為處理目標(biāo)的加法和乘法。
指令存儲(chǔ)器140為用于存儲(chǔ)指令流的存儲(chǔ)器,該指令流組成執(zhí)行目標(biāo)的程序。
數(shù)據(jù)存儲(chǔ)器150為可擦寫(xiě)存儲(chǔ)器,當(dāng)執(zhí)行指令時(shí)數(shù)據(jù)可從該數(shù)據(jù)存儲(chǔ)器150進(jìn)行讀出或者寫(xiě)入。
包括總線(xiàn)的接口單元160為具有控制數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)器150和通用寄存器120之間以及在數(shù)據(jù)存儲(chǔ)器150和算術(shù)運(yùn)算單元130之間傳送的功能的電路,該接口單元160還具有控制指令代碼從指令存儲(chǔ)器140傳送到解碼單元110的功能。
解碼單元110具有基于連續(xù)從指令存儲(chǔ)器140中讀取的各指令代碼確定如何控制算術(shù)運(yùn)算單元130和接口單元160以參照指令代碼進(jìn)行操作的功能,并將控制信號(hào)傳輸給接口單元160以實(shí)現(xiàn)控制。也就是說(shuō),解碼單元110為具有解碼指令功能的電路。如圖1所示,解碼單元110具有指令解碼器111、第一類(lèi)型指令對(duì)應(yīng)電路112、第二類(lèi)型指令對(duì)應(yīng)電路113和數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119。
指令解碼器111為執(zhí)行解碼指令所需的各種控制的電路。
數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119為存儲(chǔ)電路,其存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息,該信息表示作為計(jì)算、數(shù)據(jù)傳送或其它的處理目標(biāo)的數(shù)據(jù)長(zhǎng)度。
第一類(lèi)型指令對(duì)應(yīng)電路112為具有當(dāng)作為解碼目標(biāo)的指令代碼為第一類(lèi)型指令時(shí)按照該第一類(lèi)型指令的內(nèi)容更新數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119內(nèi)容的功能的電路。注意以下將給出第一類(lèi)型指令的詳細(xì)描述。
第二類(lèi)型指令對(duì)應(yīng)電路113為具有當(dāng)作為解碼目標(biāo)的指令代碼為第二類(lèi)型指令時(shí)參照數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119的內(nèi)容而指定數(shù)據(jù)長(zhǎng)度,該數(shù)據(jù)長(zhǎng)度為對(duì)應(yīng)于第二類(lèi)型指令的指令代碼的處理目標(biāo),并將該指定的數(shù)據(jù)長(zhǎng)度傳送到指令解碼器111從而使指令解碼器111按照所述數(shù)據(jù)長(zhǎng)度進(jìn)行解碼。注意以下將給出第二類(lèi)型指令的詳細(xì)描述。
1-2.數(shù)據(jù)以下描述用在微處理器100中使用的數(shù)據(jù)長(zhǎng)度選擇-使用信息和各種指令。
1-2-1.數(shù)據(jù)長(zhǎng)度選擇-使用信息圖2所示為數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119的存儲(chǔ)內(nèi)容。
如圖2所示,數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息,其每個(gè)信息為兩位并對(duì)應(yīng)于不同的通用寄存器120其中之一。具體地,數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119存儲(chǔ)有總共16位信息,其由對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息到對(duì)應(yīng)于寄存器R7的數(shù)據(jù)長(zhǎng)度選擇-使用信息組成。
兩位長(zhǎng)度選擇-使用信息中的數(shù)值含義如下兩位長(zhǎng)度的00b(“b”表示二進(jìn)制表示)表示8位的數(shù)據(jù)長(zhǎng)度(1字節(jié)),01b表示16位的數(shù)據(jù)長(zhǎng)度(2字節(jié)),而10b表示32位的數(shù)據(jù)長(zhǎng)度(4字節(jié))。
1-2-2.指令格式圖3所示為由微處理器100可解碼指令的指令格式。
如圖3所示,指令由用于識(shí)別指令代碼的16位操作碼字段10和根據(jù)指令代碼設(shè)置為從0位到32位預(yù)定大小的操作數(shù)據(jù)字段20組成。
操作碼字段10由8位主字段11(主)、2為子字段12(子)、3位源寄存器字段12(源)和3位目標(biāo)寄存器字段14(目標(biāo))組成。主字段11用于識(shí)別基本指令類(lèi)型,子字段12用于識(shí)別詳細(xì)指令類(lèi)型或數(shù)據(jù)長(zhǎng)度,而源寄存器字段13和目標(biāo)寄存器字段14分別將通用寄存器120之一指定為處理目標(biāo)。
1-2-3第一類(lèi)型指令圖4所示為作為第一類(lèi)型指令對(duì)應(yīng)電路112的處理目標(biāo)的第一類(lèi)型指令實(shí)施例。
以下采用助記碼描述圖4所示的各第一類(lèi)型指令的含義以及該第一類(lèi)型指令對(duì)應(yīng)電路112如何響應(yīng)于各指令而更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。
(a)move指令“mov(d32),Rn”為指示在數(shù)據(jù)存儲(chǔ)器150中將位于32位(4字節(jié))操作數(shù)據(jù)字段中指定的存儲(chǔ)器地址所表示的位置處的8位數(shù)據(jù)傳輸給由目標(biāo)寄存器字段表示的寄存器R0到R7其中之一的指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于在mov指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示8位的值(00b)。
(b)move指令“mov(d32)16,Rn”為指示在數(shù)據(jù)存儲(chǔ)器150中將位于32位操作數(shù)據(jù)字段中指定的存儲(chǔ)器地址所表示的位置處的16位數(shù)據(jù)傳輸給目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于在mov指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示16位的值(01b)。根據(jù)操作字段的內(nèi)容,該mov指令和上述mov指令“mov(d32),Rn”之間的區(qū)別僅在于用于識(shí)別數(shù)據(jù)長(zhǎng)度的子字段(sub)內(nèi)容。
(c)move指令“mov imm8,Rn”為指示將8位操作數(shù)據(jù)字段表示的中間值存儲(chǔ)到目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于在mov指令的目標(biāo)寄存器字段中的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示8位的值(00b)。
(d)move指令“mov imm16,Rn”為指示將16位操作數(shù)據(jù)字段表示的中間值存儲(chǔ)到目標(biāo)寄存器段所表示的寄存器R0到R7其中之一的指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于在mov指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示16位的值(01b)。根據(jù)操作字段的內(nèi)容,該mov指令和上述mov指令“mov imm8,Rn”之間的區(qū)別僅在于用于識(shí)別數(shù)據(jù)長(zhǎng)度的子字段(sub)內(nèi)容。
(e)ext指令“ext Rn”為指示將目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容從8位擴(kuò)展到16位的指令。當(dāng)該ext指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于位于ext指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-是用信息更新為表示16位的值(01b)。
(f)move指令“mov Rn,Rm”為指示將源寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容傳輸給目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112更新對(duì)應(yīng)于位于mov指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容,使得他們與對(duì)應(yīng)于位于mov指令的源寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息內(nèi)容相同。
(g)mul指令“mul Rn,Rm”為指示源寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容與目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容進(jìn)行乘積運(yùn)算的指令,并在mul指令的目標(biāo)寄存器字段所表示的通用寄存器中存儲(chǔ)作為該乘積運(yùn)算結(jié)果的積。當(dāng)該mul指令是解碼目標(biāo)時(shí),第一類(lèi)型指令對(duì)應(yīng)電路112更新對(duì)應(yīng)于位于mul指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容,從而顯示一數(shù)據(jù)長(zhǎng)度,該數(shù)據(jù)長(zhǎng)度是對(duì)應(yīng)于在mul指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容所表示的數(shù)據(jù)長(zhǎng)度的兩倍。
由于第一類(lèi)型指令是具有指定通用寄存器中存儲(chǔ)的數(shù)據(jù)長(zhǎng)度的功能的指令,諸如在通用寄存器中存儲(chǔ)具體長(zhǎng)度的中間數(shù)據(jù)的指令和將具體長(zhǎng)度的數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)器傳輸給通用寄存器的指令,該第一類(lèi)型指令包括除了圖4所示的指令以外的其他指令。該第一類(lèi)型指令對(duì)應(yīng)電路112相對(duì)于各所述第一類(lèi)型指令根據(jù)預(yù)定算法更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。
1-2-4第二類(lèi)型指令圖5所示為通過(guò)第二類(lèi)型指令對(duì)應(yīng)電路113處理的第二類(lèi)型指令代碼。
以下采用助記碼描述圖5所示的各第二類(lèi)型指令的含義,以及該第二類(lèi)型指令對(duì)應(yīng)電路113如何響應(yīng)于各個(gè)指令而確定數(shù)據(jù)長(zhǎng)度選擇-使用信息。
(a)move指令“mov Rn,(d32,Rm)”為指示將存儲(chǔ)在源寄存器字段所表示的寄存器R0到R7其中之一中存儲(chǔ)的未指定長(zhǎng)度數(shù)據(jù)傳輸給數(shù)據(jù)存儲(chǔ)器150中存儲(chǔ)器地址所示的位置,該地址為(i)位于32位(4字節(jié))操作數(shù)據(jù)字段中指定的存儲(chǔ)器地址值和(ii)存儲(chǔ)在目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一中的值的和。當(dāng)該mov指令是解碼目標(biāo)時(shí),第二類(lèi)型指令對(duì)應(yīng)電路113參照對(duì)應(yīng)于在mov指令的目標(biāo)寄存器字段中指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,并通過(guò)選擇該數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度,指定該未指定的數(shù)據(jù)長(zhǎng)度。注意將通過(guò)第二類(lèi)型指令對(duì)應(yīng)電路113指定的數(shù)據(jù)長(zhǎng)度轉(zhuǎn)移給指令解碼器111,并且該指令解碼器111基于作為傳輸數(shù)據(jù)長(zhǎng)度的指令執(zhí)行目標(biāo)而執(zhí)行與指令執(zhí)行相關(guān)的控制。
(b)move指令“mov Rn,Rm”為除如前所述的第一類(lèi)型指令以外的第二類(lèi)型指令。當(dāng)該mov指令是解碼目標(biāo)時(shí),第二類(lèi)型指令對(duì)應(yīng)電路113通過(guò)選擇對(duì)應(yīng)于由mov指令中的源寄存器字段指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度而指定存儲(chǔ)在mov指令指定的通用寄存器中的數(shù)據(jù)長(zhǎng)度。
(c)add指令“add Rn,Rm”為指示對(duì)源寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容和目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容進(jìn)行求和運(yùn)算的指令,并在add指令的目標(biāo)寄存器字段所表示的通用寄存器中存儲(chǔ)作為求和運(yùn)算結(jié)果的和。當(dāng)該add指令是解碼目標(biāo)時(shí),第二類(lèi)型指令對(duì)應(yīng)電路113通過(guò)選擇對(duì)應(yīng)于由add指令中的源寄存器字段指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度而指定由add指令指定的通用寄存器中存儲(chǔ)的數(shù)據(jù)長(zhǎng)度。
(d)sub指令“sub Rn,Rm”是指示從源寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容中減去目標(biāo)寄存器字段所表示的寄存器R0到R7其中之一的內(nèi)容的指令,并將作為減法運(yùn)算結(jié)果的差值存儲(chǔ)到sub指令的目標(biāo)寄存器字段所表示的通用寄存器中。當(dāng)該sub指令是解碼目標(biāo)時(shí),第二類(lèi)型指令對(duì)應(yīng)電路113通過(guò)選擇對(duì)應(yīng)于由sub指令中的源寄存器字段指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度,指定存儲(chǔ)在由sub指令指定的通用寄存器中的數(shù)據(jù)的長(zhǎng)度。
根據(jù)操作碼字段的內(nèi)容,該sub指令僅在用于識(shí)別詳細(xì)指令類(lèi)型的子字段(sub)內(nèi)容方面與上面提到的add指令存在區(qū)別。在本實(shí)施例中,由于add指令和sub指令不指定數(shù)據(jù)長(zhǎng)度,并且不必采用子字段(sub)識(shí)別數(shù)據(jù)長(zhǎng)度,該子字段(sub)用于識(shí)別詳細(xì)的指令類(lèi)型。這表明通過(guò)這種方法,在指令集中可以包括大量指令。
(e)mul指令“mul Rn,Rm”為除如前所述的第一類(lèi)型指令以外的第二類(lèi)型指令。當(dāng)該mul指令是解碼目標(biāo)時(shí),第二類(lèi)型指令對(duì)應(yīng)電路113通過(guò)選擇對(duì)應(yīng)于由mul指令中的源寄存器指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息所表示的數(shù)據(jù)長(zhǎng)度指定存儲(chǔ)在由mul指令指定的通用寄存器中的數(shù)據(jù)長(zhǎng)度。注意在解碼mul指令時(shí),指令解碼器111基于乘法運(yùn)算結(jié)果的數(shù)據(jù)長(zhǎng)度是通過(guò)第二類(lèi)型指令對(duì)應(yīng)電路113指定的長(zhǎng)度兩倍的假設(shè)而執(zhí)行與指令執(zhí)行相關(guān)的控制。
第二類(lèi)型指令為其本身不指定作為處理目標(biāo)的數(shù)據(jù)長(zhǎng)度的指令。除圖5所示的實(shí)施例以外還存在其他第二類(lèi)型指令,并且該第二類(lèi)型指令對(duì)應(yīng)電路113根據(jù)關(guān)于各所述第二類(lèi)型指令的預(yù)定算法而確定數(shù)據(jù)長(zhǎng)度選擇-使用信息。
1-3操作以下描述通過(guò)具有所述結(jié)構(gòu)的微處理器100所進(jìn)行的操作。
圖6所示為通過(guò)微處理器100進(jìn)行操作的流程圖。
如圖6所示,微處理器100執(zhí)行如下步驟用于從指令存儲(chǔ)器140中讀取指令并通過(guò)解碼單元110獲取該讀取的指令的指令讀取處理(步驟S1),通過(guò)解碼單元110進(jìn)行的指令解釋處理(步驟S2),對(duì)于算術(shù)運(yùn)算單元130和接口單元160進(jìn)行指令執(zhí)行的指令執(zhí)行處理(步驟S3)。在由于諸如提供時(shí)鐘停止導(dǎo)致停止指令以前,微處理器100重復(fù)執(zhí)行所述步驟S1到S3。
圖7所示為通過(guò)解碼單元110執(zhí)行的指令解釋處理的流程圖。
解碼單元110執(zhí)行控制以使從指令存儲(chǔ)器140讀取的指令通過(guò)指令解碼器111解碼,從而為執(zhí)行指令做好準(zhǔn)備(步驟S11)。如果指令為第二類(lèi)型指令(步驟S12),該解碼單元110使第二類(lèi)型對(duì)應(yīng)電路113開(kāi)始工作。注意在步驟S11階段的解碼過(guò)程中,并沒(méi)有對(duì)于未指定數(shù)據(jù)長(zhǎng)度的指令執(zhí)行與數(shù)據(jù)長(zhǎng)度相關(guān)的控制。
第二類(lèi)型指令對(duì)應(yīng)電路113參照對(duì)應(yīng)于在指令中指定的具體通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息(步驟S13),以前面所述的方式指定數(shù)據(jù)長(zhǎng)度(步驟S14),并將該數(shù)據(jù)長(zhǎng)度傳輸給指令解碼器111。如果所傳輸?shù)臄?shù)據(jù)長(zhǎng)度為8位,該指令解碼器111將該指令視為處理目標(biāo)為8位數(shù)據(jù)的指令進(jìn)一步解碼該指令(步驟S15)。如果所傳輸?shù)臄?shù)據(jù)長(zhǎng)度為16位,該指令解碼器111將該指令視為處理目標(biāo)為16位數(shù)據(jù)的指令進(jìn)一步解碼該指令(步驟S16)。如果所傳輸?shù)臄?shù)據(jù)長(zhǎng)度為32位,該指令解碼器111進(jìn)一步將該指令視為處理目標(biāo)為32位數(shù)據(jù)的指令進(jìn)一步解碼該指令(步驟S17)。
接下來(lái),如果指令為第一類(lèi)型指令(步驟S18),該指令解碼器111使第一類(lèi)型對(duì)應(yīng)電路112開(kāi)始工作。并且第一類(lèi)型對(duì)應(yīng)電路112以前面所述的方式更新對(duì)應(yīng)于通過(guò)該指令所指定的具體通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息(步驟S19)。
注意如果從指令存儲(chǔ)器140讀取的指令不是第二類(lèi)型指令,則解碼單元111不執(zhí)行步驟S13到S17,并且如果該讀取的指令不是第一類(lèi)型指令,則解碼單元不執(zhí)行步驟S19。
以下參照?qǐng)D8和圖9描述通過(guò)解碼單元110用于指定數(shù)據(jù)長(zhǎng)度的操作,其中所述數(shù)據(jù)為沒(méi)有指定數(shù)據(jù)長(zhǎng)度的指令的處理目標(biāo)。
圖8所示為通過(guò)微處理器100解釋的程序。
圖9所示為基于指令解碼的數(shù)據(jù)長(zhǎng)度選擇-使用信息的轉(zhuǎn)換圖。圖9示出了在t1、t2、t3等時(shí)刻對(duì)應(yīng)于通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,其中t1、t2、t3等時(shí)刻為圖8的解碼指令1、指令2、指令3等完成以后直接對(duì)應(yīng)的時(shí)刻點(diǎn)。
(a)首先,當(dāng)解碼單元110解碼指令1時(shí),由于指令1是指示將8位中間值aah(“h”表示十六進(jìn)制數(shù)據(jù))存儲(chǔ)到寄存器R0中的指令,通過(guò)第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為00b(“b”表示二進(jìn)制數(shù)據(jù)),從而顯示8位數(shù)據(jù)長(zhǎng)度(見(jiàn)圖9的時(shí)刻t1)。
(b)然后,解碼單元110解碼指令2,該指令2指示將數(shù)據(jù)長(zhǎng)度未指定的寄存器R0的內(nèi)容傳輸給寄存器R2。這里,由于對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息顯示為8位,因此通過(guò)第二類(lèi)型對(duì)應(yīng)電路113將數(shù)據(jù)長(zhǎng)度指定為8位,并且將指令2解碼為將寄存器R0中的8位數(shù)據(jù)傳輸給寄存器R2的指令。而且,拷貝對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容作為對(duì)應(yīng)于寄存器R2的數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容。因此,對(duì)應(yīng)于寄存器R2的數(shù)據(jù)長(zhǎng)度選擇-使用信息變?yōu)?0b(見(jiàn)圖9中的t2)。
(c)接下來(lái),解碼單元110解碼指令3,該指令3用于指示寄存器R0中未指定數(shù)據(jù)長(zhǎng)度的內(nèi)容與R2中的內(nèi)容進(jìn)行乘積運(yùn)算,并將乘積運(yùn)算的積存儲(chǔ)到寄存器R2中。這里,由于對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息表示為8位,因此該第二類(lèi)型指令對(duì)應(yīng)電路113將數(shù)據(jù)長(zhǎng)度指定為8位,并將指令3解碼為對(duì)于寄存器R0和寄存器R2中的8位數(shù)據(jù)執(zhí)行乘積運(yùn)算作為計(jì)算目標(biāo)的指令。而且,將對(duì)應(yīng)于寄存器R2的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新位表示16位的值01b,其為8位的兩倍(見(jiàn)圖9中的t3)。
(d)當(dāng)解碼單元110已經(jīng)對(duì)指示將寄存器R2的未指定數(shù)據(jù)長(zhǎng)度內(nèi)容傳輸給數(shù)據(jù)存儲(chǔ)器150的指令4進(jìn)行解碼的時(shí)候,解碼單元110解碼指令5。指令5指示將來(lái)自數(shù)據(jù)存儲(chǔ)器150的16位數(shù)據(jù)傳輸給R1。這里,通過(guò)第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于寄存器R1的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示16位的值01b(見(jiàn)圖9的t5)。
(e)隨后,解碼單元110解碼指令6,其中該指令6為與寄存器R0相關(guān)的ext指令。這里,通過(guò)第一類(lèi)型指令對(duì)應(yīng)電路112將對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示16位的值01b(見(jiàn)圖9的t6)。
(f)然后,解碼單元110解碼指示對(duì)寄存器R0的未指定數(shù)據(jù)長(zhǎng)度內(nèi)容與寄存器R1的內(nèi)容加和的指令7。這里,基于由01b所表示的16位數(shù)據(jù)長(zhǎng)度執(zhí)行該加和運(yùn)算,其中第二類(lèi)型指令對(duì)應(yīng)電路113通過(guò)參照對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息而確定所述16位數(shù)據(jù)長(zhǎng)度。
連續(xù)通過(guò)解碼單元110解碼指令8以及隨后指令。
2.第二實(shí)施方式以下描述本發(fā)明第二實(shí)施方式的微處理器200。
2-1概述第二實(shí)施方式的微處理器200為經(jīng)過(guò)部分變型的第一實(shí)施方式中的微處理器100。如上所述,第一實(shí)施方式中的微處理器100存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息,該處理器100的其中多段對(duì)應(yīng)于數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路119中的多個(gè)通用寄存器并用于指定與具有未指定數(shù)據(jù)長(zhǎng)度的指令相關(guān)的數(shù)據(jù)長(zhǎng)度。與此相對(duì),第二實(shí)施方式中的微處理器200僅在數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219中與有效信息一起存儲(chǔ)單獨(dú)段數(shù)據(jù)長(zhǎng)度選擇-使用信息。有效信息的段分別對(duì)應(yīng)于多個(gè)通用寄存器120,并且每段顯示參照數(shù)據(jù)長(zhǎng)度選擇-使用信息是否有效。微處理器200結(jié)合一段數(shù)據(jù)長(zhǎng)度選擇-使用信息和多段有效信息而指定與沒(méi)有指定數(shù)據(jù)長(zhǎng)度的指令相關(guān)的數(shù)據(jù)長(zhǎng)度。
由于第二實(shí)施方式的微處理器200沒(méi)有用于各通用寄存器的各個(gè)數(shù)據(jù)長(zhǎng)度選擇-使用信息,因此其尤其適用于執(zhí)行諸如整個(gè)程序或者大部分程序基本僅處理8位或者16位數(shù)據(jù)的程序。
2-2結(jié)構(gòu)圖10為本發(fā)明第二實(shí)施方式微處理器200的結(jié)構(gòu)示圖。
微處理器200與微處理器100的不同之處在于已經(jīng)對(duì)解碼單元110進(jìn)行了變型。如圖10所示,微處理器200具有解碼單元210、通用寄存器120、算術(shù)運(yùn)算單元130、指令存儲(chǔ)器140、數(shù)據(jù)存儲(chǔ)器150和接口單元160。注意這里省略了對(duì)在第一實(shí)施方式中描述過(guò)的元件進(jìn)行說(shuō)明。
解碼單元210具有基于連續(xù)從指令存儲(chǔ)器140讀取的指令代碼而確定根據(jù)該指令代碼使算術(shù)運(yùn)算單元130和接口單元160開(kāi)始工作的控制內(nèi)容,并且向接口單元160發(fā)送控制信號(hào)以執(zhí)行控制的功能。換句話(huà)說(shuō),解碼單元110是具有解碼指令功能的電路。如圖10所示,解碼單元210具有指令解碼器211、第一類(lèi)型指令對(duì)應(yīng)電路212、第二類(lèi)型指令對(duì)應(yīng)電路213、第三類(lèi)型指令對(duì)應(yīng)電路214和數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219。
指令解碼器211為執(zhí)行解碼所需各種控制的電路。
數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219是用來(lái)存儲(chǔ)單段數(shù)據(jù)長(zhǎng)度選擇-使用信息和多段有效信息的存儲(chǔ)電路。該單段數(shù)據(jù)長(zhǎng)度選擇-使用信息表示作為計(jì)算、數(shù)據(jù)傳輸?shù)忍幚砟繕?biāo)的數(shù)據(jù)長(zhǎng)度。多段有效信息分別對(duì)應(yīng)于多個(gè)通用寄存器120。圖11所示為數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219的存儲(chǔ)內(nèi)容。如圖11所示,在這些1位的多段有效信息中,值0b表示有效,值1b表示無(wú)效。
第一類(lèi)型指令對(duì)應(yīng)電路212是具有如下功能的電路,即當(dāng)作為解碼目標(biāo)的指令代碼為第一類(lèi)型指令時(shí)(見(jiàn)圖4),可以根據(jù)第一類(lèi)型指令的內(nèi)容更新數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219的內(nèi)容。
第一實(shí)施方式的第一類(lèi)型指令對(duì)應(yīng)電路112根據(jù)第一類(lèi)型指令更新對(duì)應(yīng)于通過(guò)第一類(lèi)型指令指定的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息。與此相對(duì),第二實(shí)施方式的第一類(lèi)型指令對(duì)應(yīng)電路212設(shè)定對(duì)應(yīng)于由第一類(lèi)型指令指定的通用寄存器的有效信息段以顯示有效,并且然后根據(jù)第一類(lèi)型指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。執(zhí)行該更新的步驟而與將有效信息的哪一段設(shè)定為有效無(wú)關(guān)。
第二類(lèi)型指令對(duì)應(yīng)電路213是具有如下功能的電路,即當(dāng)作為解碼目標(biāo)的指令代碼為第二類(lèi)型指令時(shí)(見(jiàn)圖5),參照數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219的內(nèi)容指定作為處理目標(biāo)的數(shù)據(jù)長(zhǎng)度,其中該處理目標(biāo)對(duì)應(yīng)于第二類(lèi)型指令的指令代碼,并將該指定的數(shù)據(jù)長(zhǎng)度傳輸給指令解碼器211從而根據(jù)該數(shù)據(jù)長(zhǎng)度使指令解碼器211進(jìn)行解碼。
第二類(lèi)型指令對(duì)應(yīng)電路213和第二類(lèi)型指令對(duì)應(yīng)電路113的不同點(diǎn)如下。如這里所述,響應(yīng)于第二類(lèi)型的指令,第一實(shí)施方式的第二類(lèi)型指令對(duì)應(yīng)電路113參照對(duì)應(yīng)于假設(shè)要存儲(chǔ)處理目標(biāo)的通用寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,并選擇性指定該第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度。相反,第二類(lèi)型指令對(duì)應(yīng)電路213首先參照對(duì)應(yīng)于假設(shè)要存儲(chǔ)處理目標(biāo)數(shù)據(jù)的通用寄存器的有效信息段,然后,只有該有效信息段表示參照該數(shù)據(jù)長(zhǎng)度選擇-使用信息有效時(shí),才參照單段數(shù)據(jù)長(zhǎng)度選擇-時(shí)用信息以選擇性指定第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度。
第三類(lèi)型指令對(duì)應(yīng)電路214具有當(dāng)作為解碼目標(biāo)的指令代碼是第三類(lèi)型指令時(shí)更新存儲(chǔ)在數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路219中的有效信息的功能。第三類(lèi)型指令為具有某功能的指令,其中該功能為采用通用寄存器存儲(chǔ)內(nèi)容作為表示對(duì)應(yīng)于數(shù)據(jù)存儲(chǔ)器150的存儲(chǔ)器地址的值,第三類(lèi)型指令的實(shí)施例為用于在寄存器R1中存儲(chǔ)某個(gè)存儲(chǔ)器地址的指令。響應(yīng)于第三類(lèi)型指令,第三類(lèi)型指令對(duì)應(yīng)電路214將對(duì)應(yīng)于由第三類(lèi)型指令指定的通用寄存器的有效信息段更新為存儲(chǔ)存儲(chǔ)器地址值的位置,使得有效信息段指示無(wú)效。
2-3操作以下描述通過(guò)具有所述結(jié)構(gòu)的微處理器200的操作。
微處理器200以與微處理器100相同的方式執(zhí)行圖6所示的操作,不同之處在于解碼單元210執(zhí)行不同于圖7所示內(nèi)容的指令解釋處理。
(a)首先,指令解碼器211解碼從指令存儲(chǔ)器140讀取的指令。
(b)然后,解碼單元210判斷該指令是否是第二類(lèi)型指令。當(dāng)該指令為第二類(lèi)型指令時(shí),并且只有在對(duì)應(yīng)于由第二類(lèi)型指令指定的通用寄存器的有效信息段表示有效的情況下,其中該通用寄存器為存儲(chǔ)處理目標(biāo)數(shù)據(jù)的位置,第二類(lèi)型指令對(duì)應(yīng)電路213才將通過(guò)數(shù)據(jù)長(zhǎng)度選擇-使用信息顯示的數(shù)據(jù)長(zhǎng)度指定為處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并將該數(shù)據(jù)長(zhǎng)度轉(zhuǎn)移給指令解碼器211。收到該數(shù)據(jù)長(zhǎng)度后,指令解碼器211根據(jù)該收到的數(shù)據(jù)長(zhǎng)度進(jìn)一步解碼該指令。注意如果對(duì)應(yīng)于通用寄存器的有效信息顯示參考數(shù)據(jù)長(zhǎng)度選擇-使用信息是無(wú)效的,擇第二類(lèi)型指令對(duì)應(yīng)電路213將預(yù)定長(zhǎng)度指定為處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并且將指定的數(shù)據(jù)長(zhǎng)度轉(zhuǎn)移給指令解碼器211。該預(yù)定長(zhǎng)度為用于指定存儲(chǔ)器地址所需的長(zhǎng)度,一實(shí)施例為32位。
(c)然后,解碼單元210判斷該解碼指令是否為第一類(lèi)型指令,并且如果該解碼指令為第一類(lèi)型指令,第一類(lèi)型指令對(duì)應(yīng)電路212根據(jù)第一類(lèi)型指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息,然后更新對(duì)應(yīng)于通過(guò)第一類(lèi)型指令指定的通用寄存器的有效信息段以顯示其有效。
(d)接下來(lái),解碼單元210判斷該解碼指令是否為第三類(lèi)型指令,并且如果該解碼指令為第三類(lèi)型指令,第三類(lèi)型對(duì)應(yīng)電路214更新對(duì)應(yīng)于通過(guò)第三類(lèi)型指令指定的通用寄存器的有效信息段以顯示其有效。
解碼單元210重復(fù)所述步驟(a)到(d)從而對(duì)于每個(gè)指令執(zhí)行所述步驟。
3.第三實(shí)施方式以下描述了本發(fā)明第三實(shí)施方式的微處理器。
3-1概述第三實(shí)施方式的微處理器300為經(jīng)過(guò)部分修改的第二實(shí)施方式中的微處理器200。如上所述,第二實(shí)施方式的微處理器200在數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路中存儲(chǔ)單段數(shù)據(jù)長(zhǎng)度選擇-使用信息以及對(duì)應(yīng)于通用寄存器120的多段有效信息,根據(jù)第一類(lèi)型和第三類(lèi)型指令更新數(shù)據(jù)長(zhǎng)度保持電路219的內(nèi)容,并采用數(shù)據(jù)長(zhǎng)度保持電路219的內(nèi)容指定第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度。與此相對(duì),第三實(shí)施方式的微處理器在數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路中存儲(chǔ)單段數(shù)據(jù)長(zhǎng)度選擇-使用信息,但不存儲(chǔ)有效信息。第三實(shí)施方式的微處理器對(duì)于第一類(lèi)型和第三類(lèi)型指令執(zhí)行非特定處理,但是在每次解碼NOP指令時(shí),更新用于指定第二類(lèi)型指令的處理目標(biāo)數(shù)據(jù)長(zhǎng)度的數(shù)據(jù)長(zhǎng)度選擇-使用信息段,使得數(shù)據(jù)長(zhǎng)度選擇-使用信息段循環(huán)顯示8位、16位、32位、8位、16位、32位、8位等數(shù)據(jù)長(zhǎng)度。
3-2結(jié)構(gòu)第三實(shí)施方式的微處理器(以下稱(chēng)之為“變型微處理器”)一定程度上共用第二實(shí)施方式的微處理器200(見(jiàn)圖10)的結(jié)構(gòu)元件,但是與微處理器200的不同之處在于省略了第三類(lèi)型指令對(duì)應(yīng)電路,替代第一類(lèi)型指令對(duì)應(yīng)電路而提供了NOP指令對(duì)應(yīng)電路,并且數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路的存儲(chǔ)內(nèi)容是單個(gè)數(shù)據(jù)長(zhǎng)度選擇-使用信息段。注意在解碼NOP指令時(shí)該指令解碼器使能NOP指令對(duì)應(yīng)電路開(kāi)始工作,并且NOP指令對(duì)應(yīng)電路周期性更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的內(nèi)容。
3-3操作以下描述通過(guò)變型微處理器進(jìn)行的操作。
變型微處理器以與微處理器200相同的方式執(zhí)行圖6所示的操作,不同之處在于對(duì)指令解釋處理進(jìn)行了如下修改。注意在啟動(dòng)用于解釋程序的指令解釋處理之前,解碼單元將數(shù)據(jù)長(zhǎng)度選擇-使用信息設(shè)定為表示諸如8位的預(yù)定數(shù)據(jù)長(zhǎng)度的初始值。
圖12所示為通過(guò)變型微處理器的解碼單元執(zhí)行的指令解釋處理。
為了準(zhǔn)備執(zhí)行指令,該解碼單元對(duì)于指令解碼器執(zhí)行控制從而解碼從指令存儲(chǔ)器140讀取的指令(步驟S31)。如果該指令為第二類(lèi)型指令(步驟S32),該解碼單元使該第二類(lèi)型指令對(duì)應(yīng)電路開(kāi)始工作。注意在步驟S31階段的解碼過(guò)程中,對(duì)于沒(méi)有指定數(shù)據(jù)長(zhǎng)度的指令不執(zhí)行與數(shù)據(jù)長(zhǎng)度相關(guān)的控制。
第二類(lèi)型指令對(duì)應(yīng)電路參照數(shù)據(jù)長(zhǎng)度選擇-使用信息(步驟S33),指定該數(shù)據(jù)長(zhǎng)度(步驟S34),并將該數(shù)據(jù)長(zhǎng)度傳輸給指令解碼器。如果傳輸?shù)臄?shù)據(jù)是8位,該指令解碼器進(jìn)一步將該指令解碼為處理目標(biāo)為8位數(shù)據(jù)的指令(步驟S35)。如果所傳輸?shù)臄?shù)據(jù)長(zhǎng)度為16位,該指令解碼器進(jìn)一步將該指令解碼為處理目標(biāo)為16位數(shù)據(jù)的指令(步驟S36)。如果所傳輸?shù)臄?shù)據(jù)長(zhǎng)度為32位,該指令解碼器進(jìn)一步將該指令解碼為處理目標(biāo)為32位數(shù)據(jù)的指令(步驟S37)。
如果讀取的指令不是第二類(lèi)型指令而是NOP指令(步驟S38),該指令解碼器使NOP指令對(duì)應(yīng)電路開(kāi)始工作,并且如果數(shù)據(jù)長(zhǎng)度選擇-使用信息顯示8位,NOP指令對(duì)應(yīng)電路更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示16位(步驟S40和S41)。另一方面,如果數(shù)據(jù)長(zhǎng)度選擇-使用信息顯示16位,則NOP指令對(duì)應(yīng)電路更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示32位(步驟S40和S42)。而且,如果數(shù)據(jù)長(zhǎng)度選擇-使用信息顯示32位,則NOP指令對(duì)應(yīng)電路更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示8位(步驟S40和S43)。
4.補(bǔ)充說(shuō)明本發(fā)明的微處理器并不限于所述的第一到第三實(shí)施方式。以下是本發(fā)明微處理的可能修改實(shí)施例。
(1)在每個(gè)所述的實(shí)施方式中,微處理器指定一數(shù)據(jù)長(zhǎng)度,該數(shù)據(jù)長(zhǎng)度反映與存儲(chǔ)在8個(gè)通用寄存器(寄存器R0到R7)中的數(shù)據(jù)相關(guān)的數(shù)據(jù)長(zhǎng)度選擇-使用信息。但是,微處理器中通用寄存器的數(shù)量不限于8個(gè)。而且,該微處理器可以具有采用數(shù)據(jù)長(zhǎng)度選擇-使用信息僅對(duì)于某些通用寄存器指定存儲(chǔ)數(shù)據(jù)的長(zhǎng)度的結(jié)構(gòu)。
此外,盡管在所述實(shí)施方式中通用寄存器均具有可以存儲(chǔ)32位數(shù)據(jù)的大小,但是寄存器不限于32位,例如其可以是16位寄存器或者64位寄存器??梢愿鶕?jù)寄存器的大小表達(dá)數(shù)據(jù)長(zhǎng)度選擇-使用信息,具體地,根據(jù)與各種計(jì)算和數(shù)據(jù)傳輸?shù)奶幚砟繕?biāo)相關(guān)的可能數(shù)據(jù)長(zhǎng)度而表達(dá)數(shù)據(jù)長(zhǎng)度選擇-使用信息。例如,如果僅有可能的數(shù)據(jù)長(zhǎng)度是8位和16位,則要充分配置數(shù)據(jù)長(zhǎng)度選擇-使用信息從而可以識(shí)別兩種長(zhǎng)度。
(2)可以構(gòu)造微處理器以使其在低功耗下執(zhí)行控制。具體地,當(dāng)解碼單元解碼指令時(shí),在確定解碼指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度之后,可以控制該微處理器使得電路僅執(zhí)行到進(jìn)行指定長(zhǎng)度的數(shù)據(jù)計(jì)算處理或者數(shù)據(jù)傳輸處理所需的程度。例如,構(gòu)造該微處理器使得當(dāng)指定可以存儲(chǔ)32位數(shù)據(jù)的通用寄存器正在存儲(chǔ)8位長(zhǎng)度的數(shù)據(jù)時(shí),該微處理器節(jié)省通用寄存器中其余24位數(shù)據(jù)保持或者輸入/輸出所需的能量。
(3)在第一到第三實(shí)施方式所述的每個(gè)微處理器可以具有流水線(xiàn)結(jié)構(gòu),其中指令讀取(獲取)、指令解釋(解碼)和執(zhí)行均為分離的流水線(xiàn)級(jí)。
(4)在第一實(shí)施方式中,給出了一個(gè)在解碼mul指令時(shí)更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以使其顯示加倍數(shù)據(jù)長(zhǎng)度的實(shí)施例,然而,該實(shí)施例也可以有如下替代實(shí)施方式。假設(shè)解碼用于對(duì)寄存器R0和寄存器R1的內(nèi)容進(jìn)行乘積運(yùn)算并在寄存器R1中存儲(chǔ)該結(jié)果的mul指令。這里,可以更新對(duì)應(yīng)于寄存器R1的數(shù)據(jù)長(zhǎng)度選擇-使用信息從而重新顯示對(duì)應(yīng)于寄存器R0的數(shù)據(jù)長(zhǎng)度選擇-使用信息所示的各數(shù)據(jù)長(zhǎng)度和對(duì)應(yīng)于寄存器R1的數(shù)據(jù)長(zhǎng)度選擇-使用信息所示的各數(shù)據(jù)長(zhǎng)度(例如,在更新前有數(shù)據(jù)長(zhǎng)度選擇-使用信息所示的數(shù)據(jù)長(zhǎng)度)的和。除了mul指令以外,可以將計(jì)算目標(biāo)數(shù)據(jù)長(zhǎng)度和計(jì)算結(jié)果數(shù)據(jù)長(zhǎng)度不同的其他指令設(shè)定為第一類(lèi)型指令,并且可以根據(jù)所述第一類(lèi)型指令通過(guò)第一類(lèi)型指令對(duì)應(yīng)電路而更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。這些指令包括除法指令和位操作指令。
包含在第一類(lèi)型指令中的可以是指示將一個(gè)數(shù)據(jù)長(zhǎng)度存儲(chǔ)到寄存器中的數(shù)據(jù)存儲(chǔ)指令,以及指示將另一數(shù)據(jù)長(zhǎng)度存儲(chǔ)到該寄存器中的指令。該指令的實(shí)施例包括指示在通用寄存器中存儲(chǔ)8位中間數(shù)據(jù)的mov指令,指示在通用寄存器中存儲(chǔ)16位中間數(shù)據(jù)的mov指令,指示將存儲(chǔ)器中的8位數(shù)據(jù)存儲(chǔ)到通用寄存器的mov指令,以及指示將存儲(chǔ)器中的16位數(shù)據(jù)存儲(chǔ)到通用寄存器的mov指令。這里,應(yīng)該構(gòu)造第一類(lèi)型指令對(duì)應(yīng)電路以根據(jù)該指令執(zhí)行處理操作。
(5)在第二實(shí)施方式中,所述第三類(lèi)型指令為用于指示在通用寄存器中存儲(chǔ)32位(4個(gè)字節(jié))存儲(chǔ)器地址值的指令。但是,該存儲(chǔ)器地址值不限于32位,可以是16位。如果存儲(chǔ)器地址值是16位,則應(yīng)該構(gòu)造第三類(lèi)型指令對(duì)應(yīng)電路以根據(jù)該第三類(lèi)型指令將數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示16位的值。
(6)在第三實(shí)施方式中,給出了NOP指令的實(shí)施例,該NOP指令通常包含在指令集中作為用于指示非具體控制處理的指令,其具有周期性更新數(shù)據(jù)長(zhǎng)度選擇-使用信息的功能。但是,該指令集可以包括明確指示將數(shù)據(jù)長(zhǎng)度選擇-使用信息更新為表示具體數(shù)據(jù)長(zhǎng)度的數(shù)值的各種具體指令。該具體指令的實(shí)施例為指示更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示8位的具體指令,指示更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示16位的具體指令,指示更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示32位的具體指令。這里,可以構(gòu)造該微處理器以根據(jù)具體指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。注意可以將NOP指令設(shè)定為第一類(lèi)型指令,并且如上所述該第一類(lèi)型指令對(duì)應(yīng)電路可以根據(jù)NOP指令周期性更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。
還可以構(gòu)造第一和第二實(shí)施方式中的解碼單元以根據(jù)在第三實(shí)施方式中所示的NOP指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息,或者根據(jù)具體指令明確更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示具體數(shù)據(jù)長(zhǎng)度。
而且,如果例如數(shù)據(jù)長(zhǎng)度選擇-使用信息表示8位并且要在第三實(shí)施方式中更新為顯示32位,則可以創(chuàng)建使微處理器在該程序部分連續(xù)執(zhí)行兩個(gè)NOP指令的程序。以這種方式,可以構(gòu)造微處理器從而使得即使指令是具體指令而非NOP指令,也可以通過(guò)以預(yù)定設(shè)定方式排列具體指令更新數(shù)據(jù)長(zhǎng)度選擇-使用信息以顯示具體值。
盡管已經(jīng)參照附圖通過(guò)實(shí)施例對(duì)本發(fā)明進(jìn)行了全面描述,但是應(yīng)該注意熟悉本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種變化和改進(jìn)。因此除非這些變化已經(jīng)脫離的本發(fā)明的范圍,否則其應(yīng)該解釋為包含在本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種微處理器,其連續(xù)讀取指令并解釋和執(zhí)行每讀取的指令,包括存儲(chǔ)單元,用于存儲(chǔ)表示處理目標(biāo)數(shù)據(jù)長(zhǎng)度的數(shù)據(jù)長(zhǎng)度選擇-使用信息;解碼單元,用于相對(duì)所述指令連續(xù)執(zhí)行指令解釋處理從而按照所述指令對(duì)每個(gè)指令指定進(jìn)行指令解釋處理的內(nèi)容;以及執(zhí)行單元,用于相對(duì)每個(gè)指令并且按照對(duì)于該指令指定為指令執(zhí)行處理結(jié)果的內(nèi)容而進(jìn)行指令執(zhí)行處理,其中,當(dāng)所述指令解釋處理的目標(biāo)為第一類(lèi)型指令的任意之一時(shí),所述解碼單元按照所述第一類(lèi)型指令而更新所存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息,以及當(dāng)所述指令解釋處理的目標(biāo)為第二類(lèi)型指令的任意之一時(shí),所述解碼單元按照所存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息而選擇所述第二類(lèi)指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,并按照該選擇的長(zhǎng)度執(zhí)行所述指令解釋處理。
2.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,所述第一類(lèi)型指令包括數(shù)據(jù)存儲(chǔ)指令,其指示將第一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到寄存器,以及數(shù)據(jù)存儲(chǔ)指令,其指示將第二長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到寄存器,以及當(dāng)所述指令解釋處理的目標(biāo)為所述數(shù)據(jù)存儲(chǔ)指令之一時(shí),所述解碼單元更新所述存儲(chǔ)的長(zhǎng)度選擇-使用信息從而表示屬于為所述目標(biāo)的數(shù)據(jù)存儲(chǔ)指令之一的所述第一長(zhǎng)度和第二長(zhǎng)度其中之一。
3.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,所述第一類(lèi)型指令包括(i)指示在寄存器中設(shè)置n位數(shù)值的指令,(ii)指示在寄存器中設(shè)置2n位數(shù)值的指令,(iii)指示將n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令,以及(iv)指示將2n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令,以及當(dāng)所述指令解釋處理的目標(biāo)為指示在寄存器中設(shè)置n位數(shù)值的指令時(shí),所述解碼單元更新所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示n位,當(dāng)所述指令解釋處理的目標(biāo)為指示在寄存器中設(shè)置2n位數(shù)值的指令時(shí),所述解碼單元更新所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示2n位,當(dāng)所述指令解釋處理的目標(biāo)為指示將n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令時(shí),所述解碼單元更新所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示n位,以及當(dāng)所述指令解釋處理的目標(biāo)為指示將2n位數(shù)據(jù)從存儲(chǔ)器傳送到寄存器的指令時(shí),所述解碼單元更新所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示2n位。
4.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,所述指令的至少其中之一為乘法指令,其包括在所述第一類(lèi)型指令和第二類(lèi)型指令中,以及當(dāng)所述指令解釋處理的目標(biāo)為乘法指令時(shí),所述解碼單元按照所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息選擇所述乘法指令的處理目標(biāo)數(shù)據(jù)長(zhǎng)度從而根據(jù)所述選擇的長(zhǎng)度執(zhí)行所述指令解釋處理,并更新所述存儲(chǔ)的數(shù)據(jù)長(zhǎng)度選擇-使用信息以表示預(yù)定的數(shù)值。
5.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,所述數(shù)據(jù)長(zhǎng)度選擇-使用信息選擇性地表示多個(gè)長(zhǎng)度其中之一,并且每次所述解碼單元執(zhí)行對(duì)所述第一類(lèi)型指令任意之一的所述指令解釋處理時(shí),該解碼單元更新所述數(shù)據(jù)長(zhǎng)度選擇-使用信息從而以多個(gè)長(zhǎng)度的預(yù)定循環(huán)順序表示該多個(gè)長(zhǎng)度中的下一個(gè)。
6.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括多個(gè)寄存器,其能夠通過(guò)指令指定為處理目標(biāo)的存儲(chǔ)位置,其中所述存儲(chǔ)單元存儲(chǔ)多段數(shù)據(jù)長(zhǎng)度選擇-使用信息,其分別對(duì)應(yīng)于多個(gè)寄存器,所述第一類(lèi)型指令為指示將某一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到某一所述寄存器的指令,所述第二類(lèi)型指令為參照存儲(chǔ)在某一寄存器中并具有某一長(zhǎng)度的作為處理目標(biāo)數(shù)據(jù)的數(shù)據(jù)而執(zhí)行運(yùn)算處理的指令,以及當(dāng)所述指令解釋處理的目標(biāo)為第一類(lèi)型指令時(shí),所述解碼單元更新對(duì)應(yīng)于所述寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息,其中根據(jù)所述第一類(lèi)指令指示將數(shù)據(jù)存儲(chǔ)在所述寄存器中,以及當(dāng)所述指令解釋處理的目標(biāo)為所述第二類(lèi)型指令時(shí),所述解碼單元按照對(duì)應(yīng)于所述寄存器的數(shù)據(jù)長(zhǎng)度選擇-使用信息段而選擇所述第二類(lèi)指令的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,其中該寄存器由第二類(lèi)型指令指定為存儲(chǔ)該處理目標(biāo)數(shù)據(jù),并且指定用于第二類(lèi)型指令的指令執(zhí)行處理內(nèi)容從而相對(duì)所述處理目標(biāo)數(shù)據(jù)的選擇的長(zhǎng)度值而進(jìn)行所述運(yùn)算處理。
7.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括多個(gè)寄存器,其能根據(jù)指令指定為處理目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,其中所述存儲(chǔ)單元還包括多段分別對(duì)應(yīng)于所述多個(gè)寄存器的有效信息,每段有效信息表示在指令解釋處理中是否將所述數(shù)據(jù)長(zhǎng)度選擇-使用信息表示為有效或無(wú)效,所述第一類(lèi)型指令為將某一長(zhǎng)度的數(shù)據(jù)存儲(chǔ)到某一所述寄存器的指令,所述第二類(lèi)指令為相對(duì)存儲(chǔ)在某一所述寄存器中并具有某一長(zhǎng)度的作為所述處理目標(biāo)數(shù)據(jù)的數(shù)據(jù)而指示進(jìn)行運(yùn)算處理的指令,以及當(dāng)所述指令解釋處理的目標(biāo)為所述第一類(lèi)型指令時(shí),除了按照所述第一類(lèi)型指令更新所述數(shù)據(jù)長(zhǎng)度使用-選擇信息外,為了表示有效,所述解碼單元更新對(duì)應(yīng)于所述寄存器的有效信息段,其中通過(guò)所述第一類(lèi)指令指示將所述數(shù)據(jù)存儲(chǔ)在所述寄存器中,當(dāng)所述指令解釋處理的目標(biāo)為第三類(lèi)型指令時(shí),為了表示無(wú)效,所述解碼單元按照第三類(lèi)型指令而更新對(duì)應(yīng)于某一所述寄存器的有效信息段,以及當(dāng)所述指令解釋處理的目標(biāo)為第二類(lèi)型指令時(shí),(a)(i)如果對(duì)應(yīng)于由所述第二類(lèi)型指令指定為存儲(chǔ)處理目標(biāo)數(shù)據(jù)的所述寄存器的有效信息段表示有效,則所述解碼單元按照所述數(shù)據(jù)長(zhǎng)度選擇-使用信息而選擇所述處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,(ii)如果對(duì)應(yīng)于由所述第二類(lèi)型指令指定為存儲(chǔ)處理目標(biāo)數(shù)據(jù)的所述寄存器的所述有效信息段表示無(wú)效,則所述解碼單元選擇預(yù)定的長(zhǎng)度作為所述處理目標(biāo)數(shù)據(jù)的長(zhǎng)度,以及(b)所述解碼單元指定用于所述第二類(lèi)型指令的所述指令執(zhí)行處理內(nèi)容,從而相對(duì)于所選擇的處理目標(biāo)數(shù)據(jù)的長(zhǎng)度值而進(jìn)行運(yùn)算處理。
全文摘要
本發(fā)明公開(kāi)了一種解釋指令的微處理器,其中同一指令代碼可解釋為分別具有不同數(shù)據(jù)長(zhǎng)度的獨(dú)立指令,在解碼單元中提供有存儲(chǔ)數(shù)據(jù)長(zhǎng)度選擇-使用信息的數(shù)據(jù)長(zhǎng)度存儲(chǔ)電路。將指示向通用寄存器中存儲(chǔ)的指令,如向寄存器R1存儲(chǔ)8位數(shù)值的指令,提前設(shè)置為第一類(lèi)型指令。將沒(méi)有明確地指定數(shù)據(jù)長(zhǎng)度的指令,即處理目標(biāo)為存儲(chǔ)在所述通用寄存器中的各種長(zhǎng)度的數(shù)據(jù)的指令,提前設(shè)置為第二類(lèi)型指令。當(dāng)解碼第一類(lèi)型指令時(shí),所述解碼單元按照該第一類(lèi)型指令而更新數(shù)據(jù)長(zhǎng)度選擇-使用信息。當(dāng)解碼第二類(lèi)型指令時(shí),所述解碼單元通過(guò)參照該數(shù)據(jù)長(zhǎng)度選擇-使用信息而指定該數(shù)據(jù)長(zhǎng)度并基于該指定的數(shù)據(jù)長(zhǎng)度而解碼該第二類(lèi)型指令。
文檔編號(hào)G06F9/30GK1959630SQ200610152858
公開(kāi)日2007年5月9日 申請(qǐng)日期2006年10月20日 優(yōu)先權(quán)日2005年10月31日
發(fā)明者小田原裕幸, 濱口敏文, 村松伸哉 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
衡水市| 丰都县| 宾川县| 大厂| 五河县| 桦甸市| 富源县| 舟山市| 东安县| 黑山县| 丰镇市| 永清县| 吴忠市| 英吉沙县| 梓潼县| 两当县| 湖北省| 翁源县| 荆州市| 东平县| 东安县| 洛宁县| 永兴县| 渝北区| 蓬溪县| 额济纳旗| 株洲县| 呼玛县| 东乌珠穆沁旗| 铜山县| 五家渠市| 金川县| 沁源县| 当雄县| 淮安市| 郎溪县| 嘉兴市| 洛隆县| 平山县| 郸城县| 宜阳县|