指令系統

指令系統

計算機語言系統
指令系統是計算機硬件的語言系統,也叫機器語言,它是軟件和硬件的主要界面,從系統結構的角度看,它是系統程序員看到的計算機的主要屬性。因此指令系統表征了計算機的基本功能決定了機器所要求的能力,它的格式與功能不僅直接影響到機器的硬件結構,而且也直接影響到系統軟件,影響到機器的适用範圍。對不同的計算機在設計指令系統時,應對指令格式、類型及操作功能給予應有的重視。設計指令系統就是要選擇計算機系統中的一些基本操作(包括操作系統和高級語言中的)應由硬件實現還是由軟件實現,選擇某些複雜操作是由一條專用的指令實現,還是由一串基本指令實現,然後具體确定指令系統的指令格式、類型、操作以及對操作數的訪問方式。[1]
    中文名:指令系統 外文名: 适用領域: 所屬學科: 類 别:機器語言 發源時間:二十世紀五十年代

概況

一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼,指令的基本格式如:操作碼字段地址碼字段其中操作碼指明了指令的操作性質及功能,地址碼則給出了操作數或操作數的地址。

計算機公司設計生産的計算機,其指令的數量與功能、指令格式、尋址方式數據格式都有差别,即使是一些常用的基本指令,如算術邏輯運算指令轉移指令等也是各不相同的。因此,盡管各種型号計算機的高級語言基本相同,但将高級語言程序(例如Fortran語言程序)編譯成機器語言後,其差别也是很大的。

因此将用機器語言表示的程序移植到其他機器上去幾乎是不可能的。從計算機的發展過程已經看到,由于構成計算機的基本硬件發展迅速,計算機的更新換代是很快的,這就存在軟件如何跟上的問題。大家知道,一台新機器推出交付使用時,僅有少量系統軟件(如操作系統等)可提交用戶,大量軟件是不斷充實的,尤其是應用程序,有相當一部分是用戶在使用機器時不斷産生的,這就是所謂第三方提供的軟件。

為了緩解新機器的推出與原有應用程序的繼續使用之間的矛盾,1964年在設計IBM360計算機時所采用的系列機思想較好地解決了這一問題。從此以後,各個計算機公司生産的同一系列的計算機盡管其硬件實現方法可以不同,但指令系統、數據格式、I/O系統等保持相同,因而軟件完全兼容(在此基礎上,産生了兼容機)。當研制該系列計算機的新型号或高檔産品時,盡管指令系統可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上兼容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護用戶在軟件上的投資。

CISC(複雜指令系統)和RISC(精簡指令系統)

指令格式

計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關系。從便于程序設計、增加基本操作并行性、提高指令功能的角度來看,指令中應包含多種信息。但在有些指令中,由于部分信息可能無用,這将浪費指令所占的存儲空間,并增加了訪存次數,也許反而會影響速度。因此,如何合理、科學地設計指令格式,使指令既能給出足夠的信息,又使其長度盡可能地與機器的字長相匹配,以節省存儲空間,縮短取指時間,提高機器的性能,這是指令格式設計中的一個重要問題。

計算機是通過執行指令來處理各種數據的。為了指出數據的來源、操作結果的去向及所執行的操作,一條指令必須包含下列信息:

(1)操作碼。它具體說明了操作的性質及功能。一台計算機可能有幾十條至幾百條指令,每一條指令都有一個相應的操作碼,計算機通過識别該操作碼來完成不同的操作。

(2)操作數的地址。CPU通過該地址就可以取得所需的操作數。

(3)操作結果的存儲地址。把對操作數的處理所産生的結果保存在該地址中,以便再次使用。

(4)下條指令的地址。執行程序時,大多數指令按順序依次從主存中取出執行,隻有在遇到轉移指令時,程序的執行順序才會改變。為了壓縮指令的長度,可以用一個程序計數器(ProgramCounter,PC)存放指令地址。每執行一條指令,PC的指令地址就自動+1(設該指令隻占一個主存單元),指出将要執行的下一條指令的地址。當遇到執行轉移指令時,則用轉移地址修改PC的内容。由于使用了PC,指令中就不必明顯地給出下一條将要執行指令的地址。

一條指令實際上包括兩種信息即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完成的操作(如加、減、乘、除、數據傳送等),其長度取決于指令系統中的指令條數。地址碼用來描述該指令的操作對象,它或者直接給出操作數,或者指出操作數的存儲器地址或寄存器地址(即寄存器名)。

指令包括操作碼域和地址域兩部分。根據地址域所涉及的地址數量,常見的指令格式有以下幾種。

①三地址指令:一般地址域中A1A2分别确定第一、第二操作數地址,A3确定結果地址。下一條指令的地址通常由程序計數器按順序給出。

②二地址指令:地址域中A1确定第一操作數地址,A2同時确定第二操作數地址和結果地址。

③單地址指令:地址域中A确定第一操作數地址。固定使用某個寄存器存放第二操作數和操作結果。因而在指令中隐含了它們的地址。

④零地址指令:在堆棧型計算機中,操作數一般存放在下推堆棧頂的兩個單元中,結果又放入棧頂,地址均被隐含,因而大多數指令隻有操作碼而沒有地址域。

⑤可變地址數指令:地址域所涉及的地址的數量随操作定義而改變。如有的計算機的指令中的地址數可少至0個,多至6個。

尋址方式

根據指令内容确定操作數地址的過程稱為尋址。完善的尋址方式可為用戶組織和使用數據提供方便。

①直接尋址:指令地址域中表示的是操作數地址。

②間接尋址:指令地址域中表示的是操作數地址的地址即指令地址碼對應的存儲單元所給出的是地址A,操作數據存放在地址A指示的主存單元内。有的計算機的指令可以多次間接尋址,如A指示的主存單元内存放的是另一地址B,而操作數據存放在B指示的主存單元内,稱為多重間接尋址。

③立即尋址:指令地址域中表示的是操作數本身。

④變址尋址:指令地址域中表示的是變址寄存器号i和位移值D。将指定的變址寄存器内容E與位移值D相加,其和E+D為操作數地址。許多計算機具有雙變址功能,即将兩個變址寄存器内容與位移值相加,得操作數地址。變址尋址有利于數組操作和程序共用。同時,位移值長度可短于地址長度,因而指令長度可以縮短。

⑤相對尋址:指令地址域中表示的是位移值D。程序計數器内容(即本條指令的地址)K與位移值D相加,得操作數地址K+D。當程序在主存儲器浮動時,相對尋址能保持原有程序功能。此外,還有自增尋址、自減尋址、組合尋址等尋址方式。尋址方式可由操作碼确定,也可在地址域中設标志,指明尋址方式。

種類

總況

随着計算機系統結構的發展,有些計算機還不斷引入新指令。如“測并置”指令是為在多機系統和多道程序中防止重入公用子程序而設置的。指令先測試标志位以判斷該子程序是否正在使用。如未被使用,則轉入子程序并置該标志位,以防其他進程重入。後來又出現功能更強的信号(PV操作)指令。有的計算機還設置“執行”指令。“執行“指令執行由地址域所确定的存儲單元中的指令。其目的是避免用程序直接修改程序中的指令。

這對程序的檢查和流水線等技術的應用均有好處。有的計算機采用堆棧實現程序的調用指令和返回指令。調用時将返回地址和各種狀态、參數壓入堆棧頂部,這樣就能較好地實現子程序的嵌套和遞歸調用,并可使子程序具有可重入性。另外,一些計算機使不少複雜的操作固定化,形成諸如多項式求值、隊列插項、隊列撤項和各種翻譯、編輯等指令。

按功能劃分

①數據處理指令:包括算術運算指令、邏輯運算指令、移位指令、比較指令等。

②數據傳送指令:包括寄存器之間、寄存器與主存儲器之間的傳送指令等。

③程序控制指令:包括條件轉移指令、無條件轉移指令、轉子程序指令等。

④輸入-輸出指令:包括各種外圍設備的讀、寫指令等。有的計算機将輸入-輸出指令包含在數據傳送指令類中。

⑤狀态管理指令:包括諸如實現置存儲保護、中斷處理等功能的管理指令。

其他劃分

向量指令和标量指令:有些大型機和巨型機設置功能齊全的向量運算指令系統。向量指令的基本操作對象是向量,即有序排列的一組數。若指令為向量操作,則由指令确定向量操作數的地址(主存儲器起始地址或向量寄存器号),并直接或隐含地指定如增量、向量長度等其他向量參數。向量指令規定處理機按同一操作處理向量中的所有分量,可有效地提高計算機的運算速度。不具備向量處理功能,隻對單個量即标量進行操作的指令稱為标量指令。

特權指令和用戶指令:在多用戶環境中,某些指令的不恰當使用會引起機器的系統性混亂。如置存儲保護、中斷處理、輸入輸出等這類指令,均稱為特權指令,不允許用戶直接使用。為此,處理機一般設置特權和用戶兩種狀态,或稱管(理)态和目(的)态。在特權狀态下,程序可使用包括特權指令在内的全部指令。在用戶狀态下,隻允許使用非特權指令,或稱用戶指令。用戶如使用特權指令則會發生違章中斷。如用戶需要申請操作系統進行某些服務,如輸入-輸出等,可使用“廣義指令”,或稱為“進監督”、“訪管”等的指令。

發展過程

回顧計算機的發展曆史,指令系統的發展經曆了從簡單到複雜的演變過程。早在20世紀50-60年代,計算機大多數采用分立元件的晶體管或電子管組成,其體積龐大,價格也很昂貴,因此計算機的硬件結構比較簡單,所支持的指令系統也隻有十幾至幾十條最基本的指令,而且尋址方式簡單。到60年代中期,随着集成電路的出現,計算機的功耗、體積、價格等不斷下降,硬件功能不斷增強,指令系統也越來越豐富。

在70年代,高級語言己成為大、中、小型機的主要程序設計語言,計算機應用日益普及。由于軟件的發展超過了軟件設計理論的發展,複雜的軟件系統設計一直沒有很好的理論指導,導緻軟件質量無法保證,從而出現了所謂的“軟件危機”。

人們認為,縮小機器指令系統與高級語言語義差距,為高級語言提供很多的支持,是緩解軟件危機有效和可行的辦法。計算機設計者們利用當時已經成熟的微程序技術和飛速發展的VLSI技術,增設各種各樣的複雜的、面向高級語言的指令,使指令系統越來越龐大。這是幾十年來人們在設計計算機時,保證和提高指令系統有效性方面傳統的想法和作法。按這種傳統方法設計的計算機系統稱為複雜指令系統計算機(ComplexSetInstructionComputer),簡稱CISC.

RISC是一種計算機體系結構的設計思想,是近代計算機體系結構發展史中的一個裡程碑。然而,直到現在,RISC還沒有一個确切的定義。90年代初,IEEE的MichaelSlater對于RISC的定義做了如下描述:RISC處理器所設計的指令系統應使流水線處理能高效率執行,并使優化編譯器能生成優化代碼。

1.RISC為使流水線高效率執行,應具有下述特征:(1)簡單而統一格式的指令譯碼;(2)大部分指令可以單周期執行完成;(3)隻有LAD和STORE指令可以訪問存儲器;(4)簡單的尋址方式;(5)采用延遲轉移技術;(6)采用LOAD延遲技術。

2.RISC為使優化編譯器便于生成優化代碼,應具有下述特征:

(1)三地址指令格式

(2)較多的寄存器

(3)對稱的指令格式。

減少指令平均執行周期數是RISC思想的精華。

性能要求

指令系統的性能決定了計算機的基本功能,它的設計直接關系到計算機的硬件結構和用戶的需要。一個完善的指令系統應滿足如下四方面的要求:

完備性

指用彙編語言編寫各種程序時,指令系統直接提供的指令足夠使用,而不必用軟件來實現。完備性要求指令系統豐富、功能齊全、使用方便。

有效性

是指利用該指令系統所編寫的程序能夠高效率地運行。高效率主要表現在程序占據存儲空間小、執行速度快。

規整性

包括指令系統的對稱性、勻齊性、指令格式和數據格式的一緻性。對稱性是指:在指令系統中所有的寄存器和存儲器單元都可同等對待,所有的指令都可使用各種尋址方式;勻齊性是指:一種操作性質的指令可以支持各種數據類型;指令格式和數據格式的一緻性是指:指令長度和數據長度有一定的關系,以方便處理和存取。

兼容性

至少要能做到“向上兼容”,即低檔機上運行的軟件可以在高檔機上運行。

執行步驟

一條指令的執行過程按時間順序可分為以下幾個步驟。

①CPU發出指令地址。将指令指針寄存器(IP)的内容——指令地址,經地址總線送入存儲器的地址寄存器中。

②從地址寄存器中讀取指令。将讀出的指令暫存于存儲器的數據寄存器中。

③将指令送往指令寄存器。将指令從數據寄存器中取出,經數據總線送入控制器的指令寄存器中。

④指令譯碼。指令寄存器中的操作碼部分送指令譯碼器,經譯碼器分析産生相應的操作控制信号,送往各個執行部件。

⑤按指令操作碼執行。

⑥修改程序計數器的值,形成下一條要取指令的地址。若執行的是非轉移指令,即順序執行,則指令指針寄存器的内容加1,形成下一條要取指令的地址。指令指針寄存器也稱為程序計數器。

相關詞條

相關搜索

其它詞條