基本概念学习(9001)---指令系统
指令系統(tǒng)是計算機硬件的語言系統(tǒng),也叫機器語言,指機器所具有的全部指令的集合,它是軟件和硬件的主要界面,反映了計算機所擁有的基本功能。從系統(tǒng)結(jié)構(gòu)的角度看,它是系統(tǒng)程序員看到的計算機的主要屬性。因此指令系統(tǒng)表征了計算機的基本功能決定了機器所要求的能力,也決定了指令的格式和機器的結(jié)構(gòu)。設(shè)計指令系統(tǒng)就是要選擇計算機系統(tǒng)中的一些基本操作( 包括操作系統(tǒng)和高級語言中的) 應(yīng)由硬件實現(xiàn)還是由軟件實現(xiàn),選擇某些復(fù)雜操作是由一條專用的指令實現(xiàn), 還是由一串基本指令實現(xiàn), 然后具體確定指令系統(tǒng)的指令格式、類型、操作以及對操作數(shù)的訪問方式。
中文名
指令系統(tǒng)
類????別
機器語言
簡介
指令系統(tǒng)是指計算機所能執(zhí)行的全部指令的集
指令系統(tǒng)
合,它描述了計算機內(nèi)全部的控制信息和“邏輯判斷”能力。不同計算機的指令系統(tǒng)包含的指令種類和數(shù)目也不同。一般均包含算術(shù)運算型、邏輯運算型、數(shù)據(jù)傳送型、判定和控制型、移位操作型、位(位串)操作型、輸入和輸出型等指令。指令系統(tǒng)是表征一臺計算機性能的重要因素,它的格式與功能不僅直接影響到機器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機器的適用范圍。
一條指令就是機器語言的一個語句,它是一組有意義的二進(jìn)制代碼,指令的基本格式如:操作碼字段+地址碼字段,其中操作碼指明了指令的操作性質(zhì)及功能,地址碼則給出了操作數(shù)或操作數(shù)的地址。[1]?
發(fā)展歷程
指令系統(tǒng)的發(fā)展經(jīng)歷了從簡單到復(fù)雜的演變過程。早在20世紀(jì)50-60年代,計算機大多數(shù)采用分立元件的晶體管或電子管組成,其體積龐大,價格也很昂貴,因此計算機的硬件結(jié)構(gòu)比較簡單,所支持的指令系統(tǒng)也只有十幾至幾十條最基本的指令,而且尋址方式簡單。
到60年代中期,隨著集成電路的出現(xiàn),計算機的功耗、體積、價格等不斷下降,硬件功能不斷增強,指
指令系統(tǒng)
令系統(tǒng)也越來越豐富。
在70年代,高級語言己成為大、中、小型機的主要程序設(shè)計語言,計算機應(yīng)用日益普及。由于軟件的發(fā)展超過了軟件設(shè)計理論的發(fā)展,復(fù)雜的軟件系統(tǒng)設(shè)計一直沒有很好的理論指導(dǎo),導(dǎo)致軟件質(zhì)量無法保證,從而出現(xiàn)了所謂的“軟件危機”。人們認(rèn)為,縮小機器指令系統(tǒng)與高級語言語義差距,為高級語言提供很多的支持,是緩解軟件危機有效和可行的辦法。計算機設(shè)計者們利用當(dāng)時已經(jīng)成熟的微程序技術(shù)和飛速發(fā)展的VLSI技術(shù),增設(shè)各種各樣的復(fù)雜的、面向高級語言的指令,使指令系統(tǒng)越來越龐大。這是幾十年來人們在設(shè)計計算機時,保證和提高指令系統(tǒng)有效性方面?zhèn)鹘y(tǒng)的想法和作法。
指令格式
計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關(guān)系。從便于程序設(shè)計、增加基本操作并行性、提高指令功能的角度來看,指令中應(yīng)包含多種信息。但在有些指令中,由于部分信息可能無用,這將浪費指令所占的存儲空間,并增加了訪存次數(shù),也許反而會影響速度。因此,如何合理、科學(xué)地設(shè)計指令格式,使指令既能給出足夠的信息,又使其長度盡可能地與機器的字長相匹配,以節(jié)省存儲空間,縮短取指時間,提高機器的性能,這是指令格式設(shè)計中的一個重要問題。
精簡指令系統(tǒng)計算結(jié)構(gòu)(RISC)來設(shè)計芯片
計算機是通過執(zhí)行指令來處理各種數(shù)據(jù)的。為了指出數(shù)據(jù)的來源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含下列信息:
(1)操作碼。它具體說明了操作的性質(zhì)及功能。一臺計算機可能有幾十條至幾百條指令,每一條指令都有一個相應(yīng)的操作碼,計算機通過識別該操作碼來完成不同的操作。(2)操作數(shù)的地址。CPU 通過該地址就可以取得所需的操作數(shù)。(3)操作結(jié)果的存儲地址。把對操作數(shù)的處理所產(chǎn)生的結(jié)果保存在該地址中,以便再次使用。(4)下條指令的地址。執(zhí)行程序時,大多數(shù)指令按順序依次從主存中取出執(zhí)行,只有在遇到轉(zhuǎn)移指令時,程序的執(zhí)行順序才會改變。為了壓縮指令的長度,可以用一個程序計數(shù)器(Program Counter,PC)存放指令地址。每執(zhí)行一條指令,PC 的指令地址就自動 +1(設(shè)該指令只占一個主存單元),指出將要執(zhí)行的下一條指令的地址。當(dāng)遇到執(zhí)行轉(zhuǎn)移指令時,則用轉(zhuǎn)移地址修改 PC 的內(nèi)容。由于使用了 PC,指令中就不必明顯地給出下一條將要執(zhí)行指令的地址。
一條指令實際上包括兩種信息即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完成的操作(如加、減、乘、除、數(shù)據(jù)傳送等),其長度取決于指令系統(tǒng)中的指令條數(shù)。地址碼用來描述該指令的操作對象,它或者直接給出操作數(shù),或者指出操作數(shù)的存儲器地址或寄存器地址(即寄存器名)。
指令系統(tǒng)
一條指令就是機器語言的一個語句,它是一組有意義的二進(jìn)制代碼,指令的基本格式如:操作碼字段地址碼字段其中操作碼指明了指令的操作性質(zhì)及功能,地址碼則給出了操作數(shù)或操作數(shù)的地址。
各計算機公司設(shè)計生產(chǎn)的計算機,其指令的數(shù)量與功能、指令格式、尋址方式、數(shù)據(jù)格式都有差別,即使是一些常用的基本指令,如算術(shù)邏輯運算指令、轉(zhuǎn)移指令等也是各不相同的。因此,盡管各種型號計算機的高級語言基本相同,但將高級語言程序(例如 Fortran 語言程序)編譯成機器語言后,其差別
指令系統(tǒng)
也是很大的。因此將用機器語言表示的程序移植到其他機器上去幾乎是不可能的。從計算機的發(fā)展過程已經(jīng)看到,由于構(gòu)成計算機的基本硬件發(fā)展迅速,計算機的更新?lián)Q代是很快的,這就存在軟件如何跟上的問題。大家知道,一臺新機器推出交付使用時,僅有少量系統(tǒng)軟件(如操作系統(tǒng)等)可提交用戶,大量軟件是不斷充實的,尤其是應(yīng)用程序,有相當(dāng)一部分是用戶在使用機器時不斷產(chǎn)生的,這就是所謂第三方提供的軟件。為了緩解新機器的推出與原有應(yīng)用程序的繼續(xù)使用之間的矛盾,1964 年在設(shè)計 IBM360 計算機時所采用的系列機思想較好地解決了這一問題。從此以后,各個計算機公司生產(chǎn)的同一系列的計算機盡管其硬件實現(xiàn)方法可以不同,但指令系統(tǒng)、數(shù)據(jù)格式、I/O 系統(tǒng)等保持相同,因而軟件完全兼容(在此基礎(chǔ)上,產(chǎn)生了兼容機)。當(dāng)研制該系列計算機的新型號或高檔產(chǎn)品時,盡管指令系統(tǒng)可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上兼容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護(hù)用戶在軟件上的投資。[2]?
指令包括操作碼域和地址域兩部分。根據(jù)地址域所涉及的地址數(shù)量,常見的指令格式有以下幾種。
①三地址指令:一般地址域中A1、A2分別確定第一、第二操作數(shù)地址,A3確定結(jié)果地址。下一條指令的地址通常由程序計數(shù)器按順序給出。②二地址指令:地址域中A1確定第一操作數(shù)地址,A2同時確定第二操作數(shù)地址和結(jié)果地址。
③單地址指令:地址域中A 確定第一操作數(shù)地址。固定使用某個寄存器存放第二操作數(shù)和操作結(jié)果。因而在指令中隱含了它們的地址。
④零地址指令:在堆棧型計算機中,操作數(shù)一般存放在下推堆棧頂?shù)膬蓚€單元中,結(jié)果又放入棧頂,地址均被隱含,因而大多數(shù)指令只有操作碼而沒有地址域。
⑤可變地址數(shù)指令:地址域所涉及的地址的數(shù)量隨操作定義而改變。如有的計算機的指令中的地址數(shù)可少至 0個,多至6個。
性能要求
指令系統(tǒng)的性能決定了計算機的基本功能,它的設(shè)計直接關(guān)系到計算機的硬件結(jié)構(gòu)和用戶的需要。一個完善的指令系統(tǒng)應(yīng)滿足如下四方面的要求:
完備性
指用匯編語言編寫各種程序時,指令系統(tǒng)直接提供的指令足夠使用,而不必用軟件來實現(xiàn)。完備性要求指令系統(tǒng)豐富、功能齊全、使用方便。
指令系統(tǒng)
有效性
是指利用該指令系統(tǒng)所編寫的程序能夠高效率地運行。高效率主要表現(xiàn)在程序占據(jù)存儲空間小、執(zhí)行速度快。
規(guī)整性
包括指令系統(tǒng)的對稱性、勻齊性、指令格式和數(shù)據(jù)格式的一致性。對稱性是指:在指令系統(tǒng)中所有的寄存器和存儲器單元都可同等對待,所有的指令都可使用各種尋址方式;勻齊性是指:一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型;指令格式和數(shù)據(jù)格式的一致性是指:指令長度和數(shù)據(jù)長度有一定的關(guān)系,以方便處理和存取。
兼容性
至少要能做到“向上兼容”,即低檔機上運行的軟件可以在高檔機上運行。
尋址方式
根據(jù)指令內(nèi)容確定操作數(shù)地址的過程稱為尋址。完善的尋址方式可為用戶組織和使用數(shù)據(jù)提供方便。
①直接尋址:指令地址域中表示的是操作數(shù)地址。
②間接尋址:指令地址域中表示的是操作數(shù)地址的地址即指令地址碼對應(yīng)的存儲單元所給出的是地址A,操作數(shù)據(jù)存放在地址A指示的主存單元內(nèi)。有的計算機的指令可以多次間接尋址,如A指示的主存單元內(nèi)存放的是另一地址B,而操作數(shù)據(jù)存放在B指示的主存單元內(nèi),稱為多重間接尋址。
③立即尋址:指令地址域中表示的是操作數(shù)本身。
指令系統(tǒng)
④變址尋址:指令地址域中表示的是變址寄存器號i和位移值D。將指定的變址寄存器內(nèi)容E與位移值D相加,其和E+D為操作數(shù)地址。許多計算機具有雙變址功能,即將兩個變址寄存器內(nèi)容與位移值相加,得操作數(shù)地址。變址尋址有利于數(shù)組操作和程序共用。同時,位移值長度可短于地址長度,因而指令長度可以縮短。
⑤相對尋址:指令地址域中表示的是位移值D。程序計數(shù)器內(nèi)容(即本條指令的地址)K與位移值D相加,得操作數(shù)地址K+D。當(dāng)程序在主存儲器浮動時,相對尋址能保持原有程序功能。 此外,還有自增尋址、自減尋址、組合尋址等尋址方式。尋址方式可由操作碼確定,也可在地址域中設(shè)標(biāo)志,指明尋址方式。[3]?
種類
總況
隨著計算機系統(tǒng)結(jié)構(gòu)的發(fā)展,有些計算機還不斷引入新指令。如“測并置”指令是為在多機系統(tǒng)和多道程序中防止重入公用子程序而設(shè)置的。指令先測試標(biāo)志位以判斷該子程序是否正在使用。如未被使用,則轉(zhuǎn)入子程序并置該標(biāo)志位,以防其他進(jìn)程重入。后來又出現(xiàn)功能更強的信號(PV操作)指令。有的計算機還設(shè)置“執(zhí)行”指令。“執(zhí)行“指令執(zhí)行由地址域所確定的存儲單元中的指令。其目的是避免用程序直接修改程序中的指令。這對程序的檢查和流水線等技術(shù)的應(yīng)用均有好處。有的計算機采用堆棧實現(xiàn)程序的調(diào)用指令和返回指令。調(diào)用時將返回地址和各種狀態(tài)、參數(shù)壓入堆棧頂部,這樣就能較好地實現(xiàn)子程序的嵌套和遞歸調(diào)用,并可使子程序具有可重入性。另外,一些計算機使不少復(fù)雜的操作固定化,形成諸如多項式求值、隊列插項、隊列撤項和各種翻譯、編輯等指令。
按功能劃分
①數(shù)據(jù)處理指令:包括算術(shù)運算指令、邏輯運算指令、移位指令、比較指令等。
②數(shù)據(jù)傳送指令:包括寄存器之間、寄存器與主存儲器之間的傳送指令等。
③程序控制指令:包括條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令、轉(zhuǎn)子程序指令等。
④輸
指令系統(tǒng)
入-輸出指令:包括各種外圍設(shè)備的讀、寫指令等。有的計算機將輸入-輸出指令包含在數(shù)據(jù)傳送指令類中。
⑤狀態(tài)管理指令:包括諸如實現(xiàn)置存儲保護(hù)、中斷處理等功能的管理指令。
其他劃分
向量指令和標(biāo)量指令:有些大型機和巨型機設(shè)置功能齊全的向量運算指令系統(tǒng)。向量指令的基本操作對象是向量,即有序排列的一組數(shù)。若指令為向量操作,則由指令確定向量操作
指令系統(tǒng)
數(shù)的地址(主存儲器起始地址或向量寄存器號),并直接或隱含地指定如增量、向量長度等其他向量參數(shù)。向量指令規(guī)定處理機按同一操作處理向量中的所有分量,可有效地提高計算機的運算速度。不具備向量處理功能,只對單個量即標(biāo)量進(jìn)行操作的指令稱為標(biāo)量指令。
特權(quán)指令和用戶指令:在多用戶環(huán)境中,某些指令的不恰當(dāng)使用會引起機器的系統(tǒng)性混亂。如置存儲保護(hù)、中斷處理、輸入輸出等這類指令,均稱為特權(quán)指令,不允許用戶直接使用。為此,處理機一般設(shè)置特權(quán)和用戶兩種狀態(tài),或稱管(理)態(tài)和目(的)態(tài)。在特權(quán)狀態(tài)下,程序可使用包括特權(quán)指令在內(nèi)的全部指令。在用戶狀態(tài)下,只允許使用非特權(quán)指令,或稱用戶指令。用戶如使用特權(quán)指令則會發(fā)生違章中斷。如用戶需要申請操作系統(tǒng)進(jìn)行某些服務(wù),如輸入-輸出等,可使用“廣義指令”,或稱為“進(jìn)監(jiān)督”、“訪管”等的指令。
復(fù)雜指令系統(tǒng)與精簡指令系統(tǒng)
復(fù)雜指令系統(tǒng)( CISC)
早期的計算機, 存儲器是一個很昂貴的資源, 因此希望指令系統(tǒng)能支持生成最短的程序。此外, 還希望程序執(zhí)行時所需訪問的程序和數(shù)據(jù)位的總數(shù)越少越好。在微程序出現(xiàn)后, 將以前由一串指令所完成的功能移到了微代碼中, 從而改進(jìn)了代碼密度。此外, 它也避免了從主存取指令的較慢動作, 從而提高執(zhí)行效率。在微代碼中實現(xiàn)功能的另一論點是: 這些功能能較好的支持編譯程序。如果一條高級語言的語句能被轉(zhuǎn)換成一條機器語言指令, 這可使編譯軟件的編寫變得非常容易。此外, 在機器語言中含有類似高級語言的語句指令, 便能使機器語言與高級語言的間隙減少。這種發(fā)展趨向?qū)е铝藦?fù)雜指令系統(tǒng)( CISC) 設(shè)計風(fēng)格的形成, 即認(rèn)為計算機性能的提高主要依靠增加指令復(fù)雜性及其功能來獲取。
CISC 指令系統(tǒng)的主要特點是:
( 1) 指令系統(tǒng)復(fù)雜。具體表現(xiàn)在以下幾個方面:
① 指令數(shù)多, 一般大于100 條。
② 尋址方式多, 一般大于4 種。
③ 指令格式多, 一般大于4 種。
( 2) 絕大多數(shù)指令需要多個機器時鐘周期方可執(zhí)行完畢。
( 3) 各種指令都可以訪問存儲器。
CISC 指令系統(tǒng)主要存在如下三方面的問題:
( 1) CISC 中各種指令的使用頻度相差很懸殊, 大量的統(tǒng)計數(shù)字表明, 大約有20%的指令使用頻度比較高, 占據(jù)了80%的處理機時間。換句話說, 有80%的指令只在20%的處理機運行時間內(nèi)才被用到。
( 2) VLSI 的集成度迅速提高, 使得生產(chǎn)單芯片處理機成為可能。在單芯片處理機內(nèi), 希望采用規(guī)整的硬布線控制邏輯, 不希望用微程序。而在CISC 處理機中, 大量使用微程序技術(shù)以實現(xiàn)復(fù)雜的指令系統(tǒng), 給VLSI 工藝造成很大困難。
( 3) 雖然復(fù)雜指令簡化了目標(biāo)程序, 縮小了高級語言與機器指令之間的語義差距, 然而增加了硬件的復(fù)雜程度, 會使指令的執(zhí)行周期大大加大, 從而有可能使整個程序的執(zhí)行時間反而增加。[4]?
精簡指令系統(tǒng)( RISC)
由于CISC 技術(shù)在發(fā)展中出現(xiàn)了問題, 計算機系統(tǒng)結(jié)構(gòu)設(shè)計的先驅(qū)者們嘗試從另一條途徑來支持高級語言及適應(yīng)VLSI 技術(shù)特點。1975 年IBM 公司Jo hn Cocke 提出了精簡指令系統(tǒng)的設(shè)想。到了1979 年, 美國加州大學(xué)伯克萊分校由Patter son 教授領(lǐng)導(dǎo)的研究組, 首先提出了RISC 這一術(shù)語, 并先后研制了RISC-Ⅰ和RISC- Ⅱ計算機。1981 年美國的斯坦福大學(xué)在Hennessy教授領(lǐng)導(dǎo)下的研究小組研制了M IPS RISC 計算機, 強調(diào)高效的流水和采用編譯方法進(jìn)行流水調(diào)度, 使得RISC 技術(shù)設(shè)計風(fēng)格得到很大補充和發(fā)展。
90 年代初, IEEE 的Michael Slater 對于RISC 的定義作了如下描述:RISC 處理器所設(shè)計的指令系統(tǒng)應(yīng)使流水線處理能高效率執(zhí)行, 并使優(yōu)化編譯器能生成優(yōu)化代碼。
RISC 為使流水線高效率執(zhí)行, 應(yīng)具有下述特征:
( 1) 簡單而統(tǒng)一格式的指令譯碼;
( 2) 大部分指令可以單周期執(zhí)行完成;
( 3) 只有LOAD 和ST ORE 指令可以訪問存儲器;
( 4) 簡單的尋址方式;
( 5) 采用延遲轉(zhuǎn)移技術(shù);
( 6) 采用LOAD 延遲技術(shù)。
RISC 為使優(yōu)化編譯器便于生成優(yōu)化代碼, 應(yīng)具有下述特征:
( 1) 三地址指令格式;
( 2) 較多的寄存器;
( 3) 對稱的指令格式。
RISC 的主要問題是編譯后生成的目標(biāo)代碼較長, 占用了較多的存儲器空間。但由于半導(dǎo)體集成技術(shù)的發(fā)展, 使得RAM 芯片集成度不斷提高和成本不斷下降, 目標(biāo)代碼較長已不成為主要問題。RISC 技術(shù)存在另一個潛在缺點是對編譯器要求較高,除了常規(guī)優(yōu)化方法外, 還要進(jìn)行指令順序調(diào)度, 甚至能替代通常流水線中所需的硬件聯(lián)鎖功能。[5]?
執(zhí)行步驟
一條指令的執(zhí)行過程按時間順序可分為以下幾個步驟。
① CPU發(fā)出指令地址。將指令指針寄存器(IP)的內(nèi)容——指令地址,經(jīng)地址總線送入存儲器的地址寄存器中。
② 從地址寄存器中讀取指令。將讀出的指令暫存于存儲器的數(shù)據(jù)寄存器中。
③ 將指令送往指令寄存器。將指令從數(shù)據(jù)寄存器中取出,經(jīng)數(shù)據(jù)總線送入控制器的指令寄存器中。
④ 指令譯碼。指令寄存器中的操作碼部分送指令譯碼器,經(jīng)譯碼器分析產(chǎn)生相應(yīng)的操作控制信號,送往各個執(zhí)行部件。
⑤ 按指令操作碼執(zhí)行。
⑥ 修改程序計數(shù)器的值,形成下一條要取指令的地址。若執(zhí)行的是非轉(zhuǎn)移指令,即順序執(zhí)行,則指令指針寄存器的內(nèi)容加1,形成下一條要取指令的地址。指令指針寄存器也稱為程序計數(shù)器。[6]?
備注:轉(zhuǎn)自http://baike.baidu.com/link?url=V4Jjjx9oTWvVc7pm3MLuvRratgWwQj8OhhPvBAyBEqh1frFFeitHCt65cKDpqQ2ntVG76ORPfesV-OJE5LWJj_
轉(zhuǎn)載于:https://blog.51cto.com/jiaojusuimu/1879285
總結(jié)
以上是生活随笔為你收集整理的基本概念学习(9001)---指令系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天多一点(2016.12.04)》Ja
- 下一篇: QRCode.js -- 用 Javas