指令系統(tǒng)概述
指令系統(tǒng)的發(fā)展經(jīng)歷了從簡單到復雜的演變過程。早在20世紀50-60年代,計算機大多數(shù)采用分立元件的晶體管或電子管組成,其體積龐大,價格也很昂貴,因此計算機的硬件結(jié)構(gòu)比較簡單,所支持的指令系統(tǒng)也只有十幾至幾十條最基本的指令,而且尋址方式簡單。
到60年代中期,隨著集成電路的出現(xiàn),計算機的功耗、體積、價格等不斷下降,硬件功能不斷增強,指令系統(tǒng)也越來越豐富。在70年代,高級語言己成為大、中、小型機的主要程序設計語言,計算機應用日益普及。由于軟件的發(fā)展超過了軟件設計理論的發(fā)展,復雜的軟件系統(tǒng)設計一直沒有很好的理論指導,導致軟件質(zhì)量無法保證,從而出現(xiàn)了所謂的“軟件危機”。人們認為,縮小機器指令系統(tǒng)與高級語言語義差距,為高級語言提供很多的支持,是緩解軟件危機有效和可行的辦法。計算機設計者們利用當時已經(jīng)成熟的微程序技術(shù)和飛速發(fā)展的VLSI技術(shù),增設各種各樣的復雜的、面向高級語言的指令,使指令系統(tǒng)越來越龐大。這是幾十年來人們在設計計算機時,保證和提高指令系統(tǒng)有效性方面?zhèn)鹘y(tǒng)的想法和作法。
計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關(guān)系。從便于程序設計、增加基本操作并行性、提高指令功能的角度來看,指令中應包含多種信息。但在有些指令中,由于部分信息可能無用,這將浪費指令所占的存儲空間,并增加了訪存次數(shù),也許反而會影響速度。因此,如何合理、科學地設計指令格式,使指令既能給出足夠的信息,又使其長度盡可能地與機器的字長相匹配,以節(jié)省存儲空間,縮短取指時間,提高機器的性能,這是指令格式設計中的一個重要問題。計算機是通過執(zhí)行指令來處理各種數(shù)據(jù)的。為了指出數(shù)據(jù)的來源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含下列信息:(1)操作碼。它具體說明了操作的性質(zhì)及功能。一臺計算機可能有幾十條至幾百條指令,每一條指令都有一個相應的操作碼,計算機通過識別該操作碼來完成不同的操作。(2)操作數(shù)的地址。CPU 通過該地址就可以取得所需的操作數(shù)。(3)操作結(jié)果的存儲地址。把對操作數(shù)的處理所產(chǎn)生的結(jié)果保存在該地址中,以便再次使用。(4)下條指令的地址。執(zhí)行程序時,大多數(shù)指令按順序依次從主存中取出執(zhí)行,只有在遇到轉(zhuǎn)移指令時,程序的執(zhí)行順序才會改變。為了壓縮指令的長度,可以用一個程序計數(shù)器(Program Counter,PC)存放指令地址。每執(zhí)行一條指令,PC 的指令地址就自動 +1(設該指令只占一個主存單元),指出將要執(zhí)行的下一條指令的地址。當遇到執(zhí)行轉(zhuǎn)移指令時,則用轉(zhuǎn)移地址修改 PC 的內(nèi)容。由于使用了 PC,指令中就不必明顯地給出下一條將要執(zhí)行指令的地址。
一條指令實際上包括兩種信息即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完成的操作(如加、減、乘、除、數(shù)據(jù)傳送等),其長度取決于指令系統(tǒng)中的指令條數(shù)。地址碼用來描述該指令的操作對象,它或者直接給出操作數(shù),或者指出操作數(shù)的存儲器地址或寄存器地址(即寄存器名)。一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼,指令的基本格式如:操作碼字段地址碼字段其中操作碼指明了指令的操作性質(zhì)及功能,地址碼則給出了操作數(shù)或操作數(shù)的地址。
各計算機公司設計生產(chǎn)的計算機,其指令的數(shù)量與功能、指令格式、尋址方式、數(shù)據(jù)格式都有差別,即使是一些常用的基本指令,如算術(shù)邏輯運算指令、轉(zhuǎn)移指令等也是各不相同的。因此,盡管各種型號計算機的高級語言基本相同,但將高級語言程序(例如 Fortran 語言程序)編譯成機器語言后,其差別也是很大的。因此將用機器語言表示的程序移植到其他機器上去幾乎是不可能的。從計算機的發(fā)展過程已經(jīng)看到,由于構(gòu)成計算機的基本硬件發(fā)展迅速,計算機的更新?lián)Q代是很快的,這就存在軟件如何跟上的問題。大家知道,一臺新機器推出交付使用時,僅有少量系統(tǒng)軟件(如操作系統(tǒng)等)可提交用戶,大量軟件是不斷充實的,尤其是應用程序,有相當一部分是用戶在使用機器時不斷產(chǎn)生的,這就是所謂第三方提供的軟件。為了緩解新機器的推出與原有應用程序的繼續(xù)使用之間的矛盾,1964 年在設計 IBM360 計算機時所采用的系列機思想較好地解決了這一問題。從此以后,各個計算機公司生產(chǎn)的同一系列的計算機盡管其硬件實現(xiàn)方法可以不同,但指令系統(tǒng)、數(shù)據(jù)格式、I/O 系統(tǒng)等保持相同,因而軟件完全兼容(在此基礎(chǔ)上,產(chǎn)生了兼容機)。當研制該系列計算機的新型號或高檔產(chǎn)品時,盡管指令系統(tǒng)可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上兼容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護用戶在軟件上的投資。