複製鏈接
請複製以下鏈接發送給好友

四地址

鎖定
要使確定的機器指令序列控制計算機自動連續地進行預定的信息處理,一條機器指令除包含2個操作數的地址(大多數算術運算操作要求2個操作數)外,還要一個存運算操作結果的地址及一個取下條指令的地址。其中前3個是存取操作數的地址,後一個是取指令的地址。如果都在指令碼中明確地表示出來,就稱之為四地址機器指令。在這樣的指令碼中,除操作碼域外,原來的操作數地址碼域部分包含了4個地址碼。
中文名
四地址
外文名
four-address
所屬領域
計算機組成原理
所屬問題
計算機的指令系統
相關概念
指令,指令系統等

目錄

四地址基本介紹

機器執行一條指定命令所需要的全部信息都必須明顯地或隱晦地包含在指令格式裏面,一般來説,這些信息包括:
1.操作碼(它代表要執行的當前機器命令)。
2.機器進行操作時所要用到的第一個操作數的地址。
3.機器進行操作時所要用到的第二個操作數的地址。
4.結果地址(運算結果將存入機器裏的這一地址)。
5.下條指令的地址(執行完本條指令後將從此地址取出下一條指令)。
如果所有這些參數都明顯地見之於機器命令中,這樣的指令格式就叫做四地址指令格式(參閲表1),這種格式的最主要優點可能就是在機器的指令系統中不必使用BRANCH(轉移)指令,每條指令本身都明顯地指出下一次要執行的指令位於何處。
表1 四地址指令格式
操作碼
第1操作數地址
第2操作數地址
結果地址
下一條指令地址
此外,由於有關的操作數地址和結果地址都明確指定好,因而各個操作數和結果可以各自分散在主存儲器中。四地址指令在一個指令週期內就可以處理所有這些變量,不必使用中間存儲器,但是,如果各個操作數都處於主存儲器中,而且所得的操作數也要放到主存儲器裏面,那麼,在這一個指令週期內就得進行幾次存儲器訪問。
下面的示範性程序説明如何使用四地址指令去求解下列式子:
4地址程序
機器內部操作
I1.MUL G,H,T1,I2
1.T1←G*H;下條指令寄存器←I2地址
I2.MUL D,E,T2,I3
2.T2←D*E;下條指令寄存器←I3地址
I3.DIV T2,F,T3,I4
3.T3←(D*E)/F;下條指令寄存器←I4地址
I4.ADD C,T3,T4,I5
4.T4←[C+(D*E)/F3;下條指令寄存器←I5地址
I5.ADD B,T4,T5,I6
5.T5←[B+C+(D*E)/F];下條指令寄存器←I6地址
I6.DIV T5,T1,A,I7
6.A←[B+C+(D*E)/F]/(G*H);下條指令寄存器←I7地址
I7.HLT
7.終止所有機器操作
説明:
1.T1,T2,T3,T4和T5為臨時存儲位置,有了這些位置之後,程序中所用到的所有變量在計算過程中就不會被沖掉。
2.由於每條指令中都含有下條指令的地址,因此,每條指令也起着轉移命令的作用。
3.所以,指令不必依照順序執行。
請注意,每條指令本身都含有轉移命令,指令的執行不必循着連續的存儲器位置依次進行。
四地址格式的主要缺點是需要的存儲器字長較長。例如,如果每個地址都需要12位來單獨説明,為了描述所需要的四個地址就需要48位,再加上操作碼的位數,四地址格式的指令字總長度就很大了,由於考慮到存儲器和有關硬件的成本,因此,小型機和微型機從來就不使用這種指令格式,但是,在微程序控制方面還是使用了四地址格式;這樣做需要增加微程序存儲器的字長,但卻達到提高處理機性能的目的 [1] 

四地址指令集

指令集即指令系統,表徵了計算機的基本功能。
指令系統是計算機硬件的語言系統。為此也叫機器語言、即機器語言程序員看到的機器的主要屬性,從這一方面説,指令系統是軟件和硬件的主要交界面,是計算機系統結構所研究的核心內容之一。
各計算機執行的指令系統不僅決定了機器所要求的能力,而且也決定了指令的格式和機器的結構;而不同結構的機器和不同的指令格式,應該具有與之相匹配的指令系統。
計算機的運行,就是計算機的中央處理器逐條執行各種指令的過程。
指令格式
一條指令應包含的信息有:操作碼;源操作數地址;目的操作數地址;下一條指令地址等,這由指令格式來表現。
根據不同的機器,指令的格式也是多樣化的,為了使硬件能夠識別並能執行不同類型的操作,指令必須是二進制編碼。指令字一般為計算機的一個字長度,在該字中包含操作碼、地址碼、各種特徵和校驗碼等信息。
現以算術運算指令為例説明指令格式的構成。首先要指定機器運算的類型是加法還是減法,其次要給出兩個做算術運算的操作數,並指出將運算結果存放到哪裏去。
指令格式可由以下兩部分信息組成:
1.操作部分
操作部分即為表示操作類型的操作碼,用OP(operation part)表示。指令的操作碼錶示該指令應進行什麼性質的操作,如進行加法、減法、乘法、除法、取數、存數等等。不同的指令用操作碼字段的不同編碼來表示,每一種編碼代表一種指令。
操作碼在彙編語言中一般是英語單詞或縮寫來唯一對應其二進制代碼,所以也叫指令記憶符或助憶符,如數據傳送指令為MOV。
設計計算機時,對指令系統的每一條指令都要規定一個操作碼。根據已定義的這個代碼,機器經譯碼後就能使計算機按規定操作去執行。
指令系統中的指令條數或指令類型的多少取決於給出操作碼位數行的大小。常規認為,行越大,則指令條數(2n)越多,功能越強,指令系統的規模也就越大。
組成操作碼字段的位數n一般取決於計算機指令系統的規模。較大的指令系統就需要更多的位數來表示每條特定的指令。
一般來説,一個包含n位的操作碼最多能夠表示2n條指令。即:含有n條指令的指令系統或指令集,OP字段至少應為
位。
那麼是否操作碼位數越多越好呢? 不一定。CPU 用指令寄存器IR(instructionregister)接受並表示指令。指令的長度受到機器結構的限制。機器字長表示機器內部數據通道和工作寄存器的寬度,是各種因素綜合表現的屬性,指令長度也要適合這個要求。確定操作碼的長度要考慮兩個方面:①用盡可能短的字段來表達全部指令;②硬件的實現儘可能簡單。
兩方面都最優是不可能的。一般涉及OP位數的指令編碼有三種情況:固定長度編碼、Huffman編碼、擴展編碼。
固定長度編碼是最簡單的編碼方法。其OP長度固定,指令規整。硬件譯碼簡單,在字長較長可以開支的大中型計算機及RISC(精簡指令集計算機)中使用。IBM-370計算機就是固定8位為OP。固定長度編碼的缺點是浪費位,信息冗餘度大,程序加長。
Huffman編碼方法中的OP是變長的。這種編碼把使用頻率高的指令的OP用較少的位數,使用頻率低的指令的OP用較多的位數,以此縮短程序長度。指令的使用頻率由使用中的典型程序進行統計而得到。Huffman編碼方法的缺點是,由於OP位數不固定,使譯碼困難,控制器的設計複雜化。
擴展編碼在指令長度固定的情況下,OP長度隨地址碼A的減少而增加。這樣可以在不加長指令的情況下擴展OP的位數,使指令條數增加。擴展編碼方法的缺點是增加了指令譯碼的難度。
一條指令所佔有的位數稱指令字長。指令字長取決於OP長度、D的長度和D的個數。不同機器的指令字長是不一樣的。
設計時要考慮:指令字長是字節的倍數、OP長度要覆蓋全部功能指令。
定長指令結構時,OP位數固定而使地址碼受限,這時要用“尋址”方法來擴大地址範圍;或者採用可變字長指令結構來充分利用有限的字長位數。
指令格式中符號的約定
以下介紹指令格式和後面指令舉例時,所用符號服從以下約定:
OP:表示操作碼,即命令、操作性質,如加、政、取數、存數、移位、清零、停機等。
Di:表示地址碼,這些地址可以是內存中的單元地址,也可以是運算器中通用寄存器名。
Mi:主存內存單元。
Ri:寄存器,
→或←:表示把操作(運算)結果傳送到指定的地方。
( ):表示地址的內容,例如,如果3表示3 號地址,那麼(3) 即表示3號地址中存放的
內容、假定內容是A時,則(3)=A。
;:在記憶符指令方式下表示對指令功能的解釋和説明,如MOV AX,BX;AX←(BX)。
PC:指令計數器,是一種寄存器,內裝正在執行的指令或立即要執行的下一條指令的地址。本寄存器有自動加1功能,PC←(PC) + 1表示取下一條指令地址。
AC/AX:累加器。
SP(stack pointer ):堆棧指針。
操作數的地址部分
地址部分除指定操作數地址和運算結果的地址外,可按地址部分的數量多少有各種規定格式,有四地址指令格式、三地址指令格式、二地址指令格式、單地址(一地址)指令格式、零地址指今格式和多地址指令格式。
根據一條指令中有N個操作數地址,可將該指令稱為N操作數指令或N地址指令。如有3個操作數地址的指令稱為三地址指令或三操作數指令。
四地址指令格式:
<b>表2 四地址指令格式</b><br>
OP
D1
D2
D3
D4
這裏D1是第一操作數地址,D2是第二操作數地址,D3是運算結果地址,D4是下一條指令地址。
指令功能:[D1]OP(D2)→D3(D4)=下一條指令地址( 非連續地址執行)→PC。第一操作數地址中的內容與第二操作數地址中的內容進行OP運算,運算結果送人第地址中去,同時指出執行的下一條指令的地址。明顯被執行的下一條指令的地址不是連續的 [2] 
參考資料
  • 1.    G.D.克拉夫特 W.N.託伊.小型/微型計算機硬件設計:科學出版社,1984年12月第1版
  • 2.    方輝雲,何苗,陳琛主編;金大衞,李雙星,宋潔副主編.計算機組成原理:華中科技大學出版社,2016.02