2.按暫存機(jī)制分類
根據(jù)在CPU內(nèi)部存儲(chǔ)操作數(shù)的區(qū)別,可以把指令集體系分為三類。這三類分別為:堆棧(stack)、累加器(accumulator)和寄存器集(a set of registers)。
3.通用寄存器機(jī)的分類
通用寄存器機(jī)(general-purpose register machines)簡(jiǎn)稱GPR機(jī)。GPR的關(guān)鍵性優(yōu)點(diǎn)起因于編譯程序能有效地使用寄存器,無(wú)論是計(jì)算機(jī)表達(dá)式的值,還是從全局的角度使用寄存器來(lái)保存變量的值。在表達(dá)式求解時(shí),寄存器比堆;蛘呃奂悠髂芴峁└屿`活的次序。更重要的是寄存器能用來(lái)保存變量。當(dāng)變量分配給寄存器時(shí),訪存流量(memory traffic)就會(huì)減少,程序運(yùn)行就會(huì)加速,而且代碼密度也會(huì)得到改善?梢杂弥噶罴膬蓚(gè)主要特征來(lái)區(qū)分GPR體系結(jié)構(gòu)。這兩個(gè)特征都是關(guān)于ALU指令即典型的算術(shù)邏輯指令中操作數(shù)的本質(zhì)。第一個(gè)是ALU指令有兩個(gè)或三個(gè)操作數(shù)。在三操作數(shù)格式中,指令包括兩個(gè)源操作數(shù)物一個(gè)目的操作數(shù)。在二操作數(shù)格式中,有一個(gè)操作數(shù)既是源操作數(shù)又是目的操作數(shù)。第二個(gè)是ALU指令中有幾個(gè)操作數(shù)是存儲(chǔ)器地址,對(duì)典型的ALU指令,這個(gè)數(shù)可能在1與3之間。
(二) 指令格式及其優(yōu)化
1.指令格式的設(shè)計(jì)考慮對(duì)于指令格式(instruction format)的設(shè)計(jì)有一些優(yōu)先考慮的原則:
。1)關(guān)于指令的長(zhǎng)度,短指令要比長(zhǎng)指令更節(jié)約些。盡管存儲(chǔ)器的價(jià)格越來(lái)越便宜,但設(shè)計(jì)者還是不愿意浪費(fèi)它們。
(2)還要考慮是否有足夠的空間表示所有期望的操作。
。3)在GPR結(jié)構(gòu)中,無(wú)論是哪種寄存器與存儲(chǔ)器類型,提高存取指令的速度都是應(yīng)該考慮的一個(gè)重要原則。存儲(chǔ)器的存取速度越高,就能給處理機(jī)提供更多的指令進(jìn)行處理。在一定的存取速率下,如果平均指令長(zhǎng)度較短,那么存儲(chǔ)器就能供應(yīng)更多的指令。
。4)機(jī)器字長(zhǎng)(word length)應(yīng)該是字符長(zhǎng)度(character length)的整數(shù)倍。否則,在存儲(chǔ)字符時(shí)就會(huì)造成浪費(fèi),而且也會(huì)造成尋址困難。
(5)尋址字段長(zhǎng)度的選擇。假設(shè)存儲(chǔ)空間是2 19 位,如果存取單位的大小不同,則地址長(zhǎng)度也不相同。
2.指令格式化
指令格式的優(yōu)化既包括指令碼的優(yōu)化,也包括操作數(shù)的優(yōu)化。所謂指令格式的優(yōu)化就是從整個(gè)指令系統(tǒng)的利用率角度出發(fā),盡量設(shè)法減少指令中的冗余信息量,以便用最少的位數(shù)提供足夠的操作信息和地址信息。
3.哈夫曼編碼
哈夫曼編碼的基本概念是:對(duì)發(fā)生概率高的事件用短碼表示,對(duì)發(fā)生概率低的事件用長(zhǎng)碼表示,這樣做的結(jié)果可以使平均編碼長(zhǎng)度明顯壓縮,使之很接近理論編碼長(zhǎng)度。要對(duì)指令碼進(jìn)行優(yōu)化表示,就必須知道每條指令在程度中出現(xiàn)的概率,即指令的使用頻度,一般都是通過對(duì)大量已有的典型程序進(jìn)行統(tǒng)計(jì)而求得。獲得使用頻度后,即可根據(jù)這些數(shù)據(jù)構(gòu)造一個(gè)哈夫曼樹。具體算法是:把各指令按使用頻度從小到大排序;從中取出最小與次最小的兩個(gè)指令作為葉結(jié)點(diǎn)構(gòu)成二叉樹,其根為兩結(jié)點(diǎn)頻度之和,并把比值插入到頻度序列中;遞歸地使用此法繼續(xù)構(gòu)造二叉樹,直到全部指令都作為葉結(jié)點(diǎn)使用完為止。有了哈夫曼樹(它是一個(gè)二叉樹),即可用它進(jìn)行編碼。具體做法是:從根結(jié)點(diǎn)開始,把樹的左子樹線段標(biāo)為1,右子樹線段標(biāo)為0,直至葉結(jié)點(diǎn)。然后從每個(gè)指令所在的葉結(jié)點(diǎn)位置開始,沿最短路徑到達(dá)各個(gè)葉結(jié)點(diǎn)并依次寫下沿線的0、1序列。就得到該指令的哈夫曼編碼。
(三) 指令集的復(fù)雜化。
1.指令集發(fā)展的兩個(gè)途徑
。1)CISC途徑CISC是Complex Instruction Set Computer(復(fù)雜指令集計(jì)算機(jī))的縮寫。它的基本思想是:進(jìn)一步增強(qiáng)原有指令的功能,用更為復(fù)雜的新指令取代原先由軟件子程序完成的功能,實(shí)現(xiàn)軟件功能的硬化。這是一種傳統(tǒng)的發(fā)展方向,早在50年代就已采用。這種途徑必然導(dǎo)致機(jī)器的指令系統(tǒng)越來(lái)越龐大而復(fù)雜。事實(shí)上,目前使用的絕大多數(shù)計(jì)算機(jī)都屬于CISC類型。
。2)RISC途徑RISC是Reduced Instruction Set Computer(精簡(jiǎn)指令集計(jì)算機(jī))的縮寫。其基本思想是:通過減少指令總數(shù)和簡(jiǎn)化指令功能,降低硬件設(shè)計(jì)的復(fù)雜度,使指令能單周期執(zhí)行,并通過優(yōu)化編譯,提高指令的執(zhí)行速度。這是一種革新的發(fā)展方向,在70年代末才開始興起。這種途徑必然導(dǎo)致機(jī)器的指令系統(tǒng)進(jìn)一步精煉而簡(jiǎn)單。
2.面向目標(biāo)代碼的優(yōu)化
為了提高目標(biāo)程序的實(shí)現(xiàn)效率,人們對(duì)大量的機(jī)器語(yǔ)言目標(biāo)代碼及其執(zhí)行情況進(jìn)行了統(tǒng)計(jì)。對(duì)程序中出現(xiàn)的各種指令以及指令串進(jìn)行統(tǒng)計(jì)得到的百分比稱為靜態(tài)使用頻度。在程序執(zhí)行過程中對(duì)出現(xiàn)的各種指令以及指令串進(jìn)行統(tǒng)計(jì)得到的百分比稱為動(dòng)態(tài)使用頻度。按靜態(tài)使用頻度來(lái)改進(jìn)目標(biāo)代碼可減少目標(biāo)程序所占的存儲(chǔ)空間。按動(dòng)態(tài)使用頻度來(lái)改進(jìn)目標(biāo)代碼可減少目標(biāo)程序運(yùn)行的執(zhí)行時(shí)間。大量統(tǒng)計(jì)表明,動(dòng)態(tài)和靜態(tài)使用頻度兩者非常接近,最常用的指令是存、取、條件轉(zhuǎn)移等。對(duì)它們加以優(yōu)化,既可以減少程序所需的存儲(chǔ)空間,又可以提高程序的執(zhí)行速度。
3.面向高級(jí)語(yǔ)言的優(yōu)化
面向高級(jí)語(yǔ)言的優(yōu)化就是盡可能縮小高級(jí)語(yǔ)言與機(jī)器語(yǔ)言之間的語(yǔ)義差距,以利于支持高級(jí)語(yǔ)言編譯系統(tǒng),縮短編譯程序的長(zhǎng)度和編譯所需的時(shí)間。
4.面向操作系統(tǒng)的優(yōu)化
面向操作系統(tǒng)的優(yōu)化就是進(jìn)一步縮小操作系統(tǒng)與體系結(jié)構(gòu)之間的語(yǔ)義差距,以利于減少操作系統(tǒng)運(yùn)行所需的輔助時(shí)間,節(jié)省操作系統(tǒng)軟件所占用的存儲(chǔ)空間。操作系統(tǒng)的實(shí)現(xiàn)依賴于體系結(jié)構(gòu)對(duì)它的支持。許多傳統(tǒng)機(jī)器指令例如算術(shù)邏輯指令、字符編輯指令、移位指令、控制轉(zhuǎn)移指令等,都可用于操作系統(tǒng)的實(shí)現(xiàn)。此外,還有相當(dāng)一部分指令是專門為實(shí)現(xiàn)操作系統(tǒng)的各種功能而設(shè)計(jì)的。
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問:考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |