卅年史詩(shī)!地球上出現(xiàn)過(guò)的CPU完全收
■指令系統(tǒng)
要講CPU,就必須先講一下指令系統(tǒng)。指令系統(tǒng)指的是一個(gè)CPU所能夠處理的全部指令的集合,是一個(gè)CPU的根本屬性。比如我們現(xiàn)在所用的CPU都是采用x86指令集的,他們都是同一類型的CPU,不管是PIII、Athlon或Joshua。我們也知道,世界上還有比PIII和Athlon快得多的CPU,比如Alpha,但它們不是用x86指令集,不能使用數(shù)量龐大的基于x86指令集的程序,如Windows98。之所以說(shuō)指令系統(tǒng)是一個(gè)CPU的根本屬性,是因?yàn)橹噶钕到y(tǒng)決定了一個(gè)CPU能夠運(yùn)行什么樣的程序。
所有采用高級(jí)語(yǔ)言編出的程序,都需要翻譯(編譯或解釋)成為機(jī)器語(yǔ)言后才能運(yùn)行,這些機(jī)器語(yǔ)言中所包含的就是一條條的指令。
1、指令的格式
一條指令一般包括兩個(gè)部分:操作碼和地址碼。操作碼其實(shí)就是指令序列號(hào),用來(lái)告訴CPU需要執(zhí)行的是那一條指令。地址碼則復(fù)雜一些,主要包括源操作數(shù)地址、目的地址和下一條指令的地址。在某些指令中,地址碼可以部分或全部省略,比如一條空指令就只有操作碼而沒(méi)有地址碼。
舉個(gè)例子吧,某個(gè)指令系統(tǒng)的指令長(zhǎng)度為32位,操作碼長(zhǎng)度為8位,地址長(zhǎng)度也為8位,且第一條指令是加,第二條指令是減。當(dāng)它收到一個(gè)“00000010000001000000000100000110”的指令時(shí),先取出它的前8位操作碼,即00000010,分析得出這是一個(gè)減法操作,有3個(gè)地址,分別是兩個(gè)源操作數(shù)地址和一個(gè)目的地址。于是,CPU就到內(nèi)存地址00000100處取出被減數(shù),到00000001處取出減數(shù),送到ALU中進(jìn)行減法運(yùn)算,然后把結(jié)果送到00000110處。
這只是一個(gè)相當(dāng)簡(jiǎn)單化的例子,實(shí)際情況要復(fù)雜的多。
2、指令的分類與尋址方式
一般說(shuō)來(lái),現(xiàn)在的指令系統(tǒng)有以下幾種類型的指令:
(1) 算術(shù)邏輯運(yùn)算指令
算術(shù)邏輯運(yùn)算指令包括加減乘除等算術(shù)運(yùn)算指令,以及與或非異或等邏輯運(yùn)算指令?,F(xiàn)在的指令系統(tǒng)還加入了一些十進(jìn)制運(yùn)算指令以及字符串運(yùn)算指令等。
(2) 浮點(diǎn)運(yùn)算指令
用于對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算。浮點(diǎn)運(yùn)算要大大復(fù)雜于整數(shù)運(yùn)算,所以CPU中一般還會(huì)有專門負(fù)責(zé)浮點(diǎn)運(yùn)算的浮點(diǎn)運(yùn)算單元?,F(xiàn)在的浮點(diǎn)指令中一般還加入了向量指令,用于直接對(duì)矩陣進(jìn)行運(yùn)算,對(duì)于現(xiàn)在的多媒體和3D處理很有用。
(3) 位操作指令
學(xué)過(guò)C的人應(yīng)該都知道C語(yǔ)言中有一組位操作語(yǔ)句,相對(duì)應(yīng)的,指令系統(tǒng)中也有一組位操作指令,如左移一位右移一位等。對(duì)于計(jì)算機(jī)內(nèi)部以二進(jìn)制不碼表示的數(shù)據(jù)來(lái)說(shuō),這種操作是非常簡(jiǎn)單快捷的。
(4) 其他指令
上面三種都是運(yùn)算型指令,除此之外還有許多非運(yùn)算的其他指令。這些指令包括:數(shù)據(jù)傳送指令、堆棧操作指令、轉(zhuǎn)移類指令、輸入輸出指令和一些比較特殊的指令,如特權(quán)指令、多處理器控制指令和等待、停機(jī)、空操作等指令。
對(duì)于指令中的地址碼,也會(huì)有許多不同的尋址(編址)方式,主要有直接尋址,間接尋址,寄存器尋址,基址尋址,變址尋址等,某些復(fù)雜的指令系統(tǒng)會(huì)有幾十種甚至更多的尋址方式。<
關(guān)注我們


