計算機組成原理第9講-指令格式解析_第1頁
計算機組成原理第9講-指令格式解析_第2頁
計算機組成原理第9講-指令格式解析_第3頁
計算機組成原理第9講-指令格式解析_第4頁
計算機組成原理第9講-指令格式解析_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

計算機組成原理Principlesof

ComputerOrganization廣義雙語教學課程://09/skyclass25/青島理工高校校級精品課程:///ec/C84/1盛建倫jlsheng@第5章指令系統(tǒng)指令格式InstructionFormats尋址方式Addressingmodes指令系統(tǒng)的設(shè)計方法Chapter5InstructionSetsRISCAninstructionset,orinstructionsetarchitecture(ISA),isthepartofthecomputerarchitecturerelatedtoprogramming,includingthenativedatatypes,instructions,registers,addressingmodes,memoryarchitecture,interruptandexceptionhandling,andexternalI/O.2盛建倫jlsheng@指示計算機完成某一特定操作的最基本的吩咐稱為計算機的“指令”Instruction。指令是計算機硬件能干脆識別并執(zhí)行的吩咐,是用機器語言編寫程序的基礎(chǔ)工具。一條指令能完成某種基本操作,一臺計算機有幾十條到幾百條不同的指令。一臺計算機的指令格式及其全部指令的集合稱為該計算機的指令系統(tǒng)。指令系統(tǒng)表征著計算機的基本功能,是程序設(shè)計者看到的機器的主要屬性和軟、硬件的主要交界面。指令系統(tǒng)的設(shè)計主要包括操作類型、操作內(nèi)容和指令格式的設(shè)計?!?.2指令格式InstructionFormats3盛建倫jlsheng@§5.2.1指令的一般格式計算機是通過執(zhí)行指令來處理各種數(shù)據(jù)的,為了指出數(shù)據(jù)的來源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令應(yīng)包含下列信息:(1)操作的性質(zhì)及功能。(2)操作數(shù)(Operands)的地址(Address)。(3)操作結(jié)果的地址。(4)下一條指令的地址。以上信息可以歸納為兩類:一是表示該指令要完成的操作,每種操作都用一個二進制形式的代碼表示,稱為操作碼(OperationCode),操作碼一般位于指令字的前部。二是描述操作數(shù)或下條指令的地址,稱為地址碼(AddressCode)。4盛建倫jlsheng@指令的基本格式:操作碼地址碼指令中的地址碼字段用來指出參與操作的操作數(shù)的地址,地址碼的位數(shù)確定能夠干脆訪問的存儲空間范圍。指令操作碼的長度(二進制位數(shù))確定了指令系統(tǒng)中完成不同操作的指令條數(shù)。指令是用來表示限制信息的一組二進制形式的代碼,它應(yīng)包含與自動進行某個基本信息處理操作有關(guān)的內(nèi)容。指令格式InstructionFormats5盛建倫jlsheng@指令的地址結(jié)構(gòu)地址結(jié)構(gòu)是指在指令中給出幾個地址。依據(jù)地址碼中所給出的地址個數(shù),可有幾種不同的指令格式:(1)三地址指令Three-AddressInstruction格式:OPCODEA1A2A3其中:OPCODE—操作碼,A1—第一操作數(shù)地址,A2—其次操作數(shù)地址,A3—操作結(jié)果的存貯地址。其操作表達式為:(A1)OP(A2)→A3(2)兩地址指令Two-AddressInstruction格式:OPCODEA1A2其操作表達式為:(A1)OP(A2)→A1目的操作數(shù)源操作數(shù)6盛建倫jlsheng@(3)一地址指令One-AddressInstruction格式:OPCODEA一地址指令常被稱為“單操作數(shù)指令”,事實上它有兩種狀況。一是參與操作的只有一個操作數(shù),在對地址A所指定的操作數(shù)執(zhí)行OPCODE規(guī)定的操作后,產(chǎn)生的結(jié)果仍存回到該地址中。例如,加1、減1、求反、(移位)等都是單操作數(shù)指令。二是參與操作的有兩個操作數(shù),其中一個是隱含的。例如,一些對兩個操作數(shù)進行算術(shù)邏輯運算的指令也接受這種格式。此時,另一個操作數(shù)(目的操作數(shù))隱含在累加器中,指令執(zhí)行后目的操作數(shù)為操作結(jié)果取代。又如,堆棧操作指令也是有2個操作數(shù)的一地址指令,在指令中給出了一個操作數(shù)地址,另一個操作數(shù)隱含在棧頂。7盛建倫jlsheng@(4)零地址指令Zero-AddressInstruction格式:OPCODE指令中只有操作碼,沒有操作數(shù),所以也稱無操作數(shù)指令。零地址格式的指令有兩種狀況:①無需任何操作數(shù)。如空操作指令,停機指令等。②操作數(shù)的地址是隱含的。(5)多地址指令某些計算機設(shè)置有一些功能很強的、用于實現(xiàn)成批數(shù)據(jù)處理的指令。如字符串處理指令,向量、矩陣運算指令等。為了描述一批數(shù)據(jù),指令中須要多個地址來指出數(shù)據(jù)存放的首地址、長度和下標等信息。例如,CDCSTAR-100的矩陣運算指令,其地址碼部分有7個地址字段,用以指出參與運算的兩個矩陣及結(jié)果的存儲狀況。8盛建倫jlsheng@操作碼的編碼指令操作碼通常有兩種編碼格式。(1)固定長度操作碼Fixed-LengthOpcode即操作碼的長度固定,且集中放在指令字的一個字段中。這種格式有利于簡化硬件設(shè)計,削減指令譯碼時間。若操作碼長度為K位,則最多可有2k條不同指令。(2)可變長度操作碼Variable-LengthOpcode即操作碼的長度可變,且分散地放在指令字的不同字段中。這種格式能有效地壓縮程序中操作碼的平均長度。但將增加指令譯碼和分析的難度,使限制器的設(shè)計困難化。例如,操作碼擴展技術(shù),哈夫曼編碼等。§5.2.2指令操作碼的擴展技術(shù)操作碼擴展技術(shù),在指令字中用一個固定長度的字段來表示基本操作碼,對于一部分不須要某個地址碼的指令,把操作碼擴充到該地址字段。既能充分利用指令字的各個字段,又能在不增加指令長度的狀況下擴展操作碼的長度,以表示更多的指令。【例1】某計算機的字長為16位,欲設(shè)計的指令系統(tǒng)有零地址指令16條,一地址指令15條,兩地址指令15條及三地址指令15條,設(shè)每個地址碼字段為4位,應(yīng)如何設(shè)計?OPCODEA1A2A310盛建倫jlsheng@【例1】某計算機的字長為16位,欲設(shè)計的指令系統(tǒng)有零地址指令16條,一地址指令15條,兩地址指令15條及三地址指令15條,設(shè)每個地址碼字段為4位,應(yīng)如何設(shè)計?解1.按固定長度操作碼格式設(shè)計。假如要求指令字長是字節(jié)的整數(shù)倍,則零地址指令長度應(yīng)當為8位,一地址指令長度應(yīng)當為16位,二地址指令長度應(yīng)當為16位,三地址指令長度應(yīng)當為24位。地址碼字段的長度均可大于4位。零地址指令長度為6位,一地址指令長度為10位,二地址指令長度為14位,三地址指令長度為18位。∵26=64

>61∴操作碼長度為6位共61條指令。11盛建倫jlsheng@【例1】某計算機的字長為16位,欲設(shè)計的指令系統(tǒng)有零地址指令16條,一地址指令15條,兩地址指令15條及三地址指令15條,設(shè)每個地址碼字段為4位,應(yīng)如何設(shè)計?解2.按操作碼擴展技術(shù)設(shè)計。指令格式為:OPA1A2A315121187430指令格式包括1個基本操作碼字段和3個地址碼字段。各字段均為4位,指令字長為16位。要求三地址指令15條,24=16>15,所以,基本操作碼字段長度為4位。地址碼字段4位。12盛建倫jlsheng@4位基本操作碼,共有16個碼位。其中0000~1110作為15條三地址指令的操作碼,1111作為擴展標記用于把操作碼擴展到A1。15條二地址指令操作碼為11110000~11111110。留下一個碼字11111111作為擴展標記用于把操作碼擴展到A2。15條一地址指令的操作碼為111111110000~111111111110。碼字111111111111作為擴展標記用于把操作碼擴展到A3。16條零地址指令的操作碼為1111111111110000~1111111111111111OPA1A2A31512118743013盛建倫jlsheng@此外還有其它的擴展方法。例如,可以形成15條三地址指令,14條兩地址指令,31條一地址指令和16條零地址指令。本例所用的操作碼擴展方法稱為15/15/15法。它是指在4位二進制表示的16個碼點中,用15個來表示最常用指令的操作碼,剩下的一個碼字用于把操作碼擴展到下一個4位。而下一個4位表示的16個碼字也按同樣的原則處理和擴展。作為今日的作業(yè)題14盛建倫jlsheng@§5.2.3指令長度與數(shù)據(jù)字長的關(guān)系

指令的長度(指令字長InstructionLength)主要取決于操作碼的長度、操作數(shù)地址的長度和操作數(shù)地址的個數(shù)。指令的長度有定長格式的,也有變長格式的。當操作數(shù)地址是主存儲器的干脆地址時,其地址碼的位數(shù)就很長。當操作數(shù)地址是寄存器號時,地址碼的位數(shù)就很短。所以,在兩地址和多地址指令中通常只有一個操作數(shù)地址是存儲器干脆地址。為了充分利用存儲空間,指令的長度通常為字節(jié)的整數(shù)倍。指令的長度與機器的字長沒有固定的關(guān)系,既可以大于或等于機器的字長,也可以小于機器的字長。指令的長度大于機器的字長時稱為長格式指令,它須要幾個連續(xù)字單元或字單元加字節(jié)單元來存儲。指令的長度小于或等于機器的字長時,稱為短格式指令,它只需一個字單元或一至幾個連續(xù)的字節(jié)單元來存儲。15存儲器按:字編址字節(jié)編址位編址數(shù)據(jù)在存儲器中的存放方式字地址為低字節(jié)地址字地址為高字節(jié)地址37621540字地址04低字節(jié)04512673字地址04高字節(jié)低字節(jié)在前高字節(jié)在前地址000001010011100101110111數(shù)據(jù)ABCDEFGHJKLMNOPQ存儲器內(nèi)容為GHEFCDABPQNOLMJK存儲器內(nèi)容為ABCDEFGHJKLMNOPQ16盛建倫jlsheng@地址(十進制)04812162024283236雙字雙字(地址32)雙字雙字(地址24)半字(地址20)半字(地址22)半字(地址16)半字(地址18)字節(jié)(地址8)字節(jié)(地址9)字節(jié)(地址10)字節(jié)(地址11)字(地址4)字(地址0)字節(jié)(地址14)字節(jié)(地址15)字節(jié)(地址13)字節(jié)(地址12)邊界對準地址(十進制)048字節(jié)(地址7)字節(jié)(地址6)字(地址2)半字(地址10)半字(地址8)半字(地址0)字(地址4)邊界未對準存儲器中的數(shù)據(jù)存放(存儲字長為32位)§5.4指令類型指令的操作類型按功能可分成算術(shù)邏輯運算、數(shù)據(jù)傳送、程序限制、輸入輸出等類型。1.算術(shù)邏輯運算Arithmetic&Logical一些低檔的微型機只有定點加減運算指令、求補指令、比較指令、加1減1指令等算術(shù)運算指令。較高檔的機器還有十進制運算指令、定點乘除指令、浮點運算指令等。一些大型機、巨型機還設(shè)有向量運算指令,可以干脆對整個向量Vector或矩陣Array進行求和、求積等運算。邏輯運算類指令包括邏輯與、或、非、異或和測試等。有些機器還有位操作BitManipulation、位測試等指令。算術(shù)邏輯運算指令都影響狀態(tài)標記位Flag(程序狀態(tài)字PSW)18盛建倫jlsheng@2.移位操作Shift移位有算術(shù)移位、邏輯移位和循環(huán)移位三種。可以實現(xiàn)對操作數(shù)左移或右移一位或多位。循環(huán)移位Rotate有帶進位位的大循環(huán)和不帶進位位的小循環(huán)兩種,常用于實現(xiàn)循環(huán)式限制、壓縮BCD碼凹凸字位互換及多倍字長的移位等。6336CyCyCyCy交換后19盛建倫jlsheng@3.數(shù)據(jù)傳送DataTransfer在程序中運用最多的是數(shù)據(jù)傳送指令。這類指令的功能是實現(xiàn)寄存器與寄存器,寄存器與存儲單元以及存儲單元與存儲單元之間的數(shù)據(jù)傳送,包括對數(shù)據(jù)的讀(取數(shù)load)和寫(存數(shù)store)。數(shù)據(jù)傳送時,數(shù)據(jù)從源地址Source傳送到目的地址Destination,源地址中的數(shù)據(jù)保持不變。有些機器設(shè)置有數(shù)據(jù)塊傳送指令,可一次把多達64K的數(shù)據(jù)從一個存儲區(qū)傳送到另一個存儲區(qū)。堆棧的壓入Push和彈出Pop指令也屬于數(shù)據(jù)傳送指令。數(shù)據(jù)交換指令則完成源操作數(shù)與目的操作數(shù)的互換。20盛建倫jlsheng@4.轉(zhuǎn)移(程序限制ProgramControl)這類操作主要用于限制程序的流向,包括停機、無條件轉(zhuǎn)移Jump、條件轉(zhuǎn)移、子程序調(diào)用與返回、中斷和陷井指令等。條件轉(zhuǎn)移ConditionalBranch是依據(jù)對某些條件測試的結(jié)果(通常是前面執(zhí)行的算術(shù)邏輯運算指令對狀態(tài)標記位的影響)確定是否發(fā)生轉(zhuǎn)移,若條件滿足則轉(zhuǎn)移,否則依次執(zhí)行下一條指令。轉(zhuǎn)移還有確定轉(zhuǎn)移和相對轉(zhuǎn)移的區(qū)分。確定轉(zhuǎn)移是轉(zhuǎn)移到一個給定的目標地址(在整個存儲器范圍內(nèi))。相對轉(zhuǎn)移是相對當前地址(程序計數(shù)器PC內(nèi)容)向前或向后轉(zhuǎn)移一個位移量的范圍(小范圍)。21盛建倫jlsheng@子程序調(diào)用SubroutineCall與返回SubroutineReturn指令也有條件調(diào)用/條件返回和無條件調(diào)用/無條件返回的區(qū)分。中斷指令設(shè)置中斷類型,開放或禁止中斷Interrupt等。陷井Trap是一種異樣中斷,其目的不是為了懇求CPU正常處理中斷,而是為了把發(fā)生的各種事務(wù)通知CPU,并依據(jù)故障狀況轉(zhuǎn)入相應(yīng)的故障處理程序。陷井指令一般不供應(yīng)應(yīng)用戶運用。以上四類操作是各種計算機都有的最基本的指令操作。22盛建倫jlsheng@5.輸入輸出Input/Output輸入輸出指令用來實現(xiàn)主機與外設(shè)間的各類信息交換,如數(shù)據(jù)的輸入和輸出、向外設(shè)發(fā)出的限制吩咐、檢測外設(shè)的工作狀態(tài)等。由于I/O端口的數(shù)目遠少于存儲單元數(shù),故此類指令的地址碼較短。有些計算機接受內(nèi)存和外設(shè)(接口)統(tǒng)一編址的方法,把外設(shè)看作內(nèi)存單元,全部能對內(nèi)存單元進行操作的指令均可對外設(shè)端口進行操作(包括算術(shù)邏輯運算)。這樣的計算機就沒有輸入輸出指令。6.字符串處理字符串處理指令實現(xiàn)對字符串String的非數(shù)值處理,包括:字符串的傳送、字符串比較、字符串查詢、字符串轉(zhuǎn)換等。23盛建倫jlsheng@7.特權(quán)指令特權(quán)指令是用于系統(tǒng)資源安排和管理的指令。例如,檢測用戶的訪問權(quán)限,修改段表、頁表,變更系統(tǒng)的工作模式,任務(wù)的創(chuàng)建和切換等。8.多處理機指令MultiprocessorInstruction多處理機指令是特地為支持多處理機系統(tǒng)而設(shè)置的指令。9.多媒體指令MultimediaInstruction多媒體指令是特地為處理多媒體數(shù)據(jù)而設(shè)置的指令。例如,Pentium處理器的MMX指令。特權(quán)指令只能用于操作系統(tǒng)和其他系統(tǒng)軟件。24盛建倫jlsheng@§5.4.3指令系統(tǒng)的兼容性Compatibility從20世紀60年頭的IBM360大型機起先,出現(xiàn)了系列機。在一個系列內(nèi)有不同檔次的機型。系列機中的中學低檔機都具有相同的系統(tǒng)結(jié)構(gòu),相同的指令系統(tǒng)。從今出現(xiàn)了“兼容”Compatible。25盛建倫jlsheng@計算機組成原理設(shè)計性作業(yè)課題2指令系統(tǒng)設(shè)計設(shè)計一個簡潔的(沒有中斷功能)16位RISC定點處理器的指令系統(tǒng)。指令系統(tǒng)設(shè)計的任務(wù)包括設(shè)計:指令功能、指令格式、尋址方式、全部指令的助記符、指令編碼等。試分析一個簡潔的計算機至少須要哪些指令就能夠完成最基本的運算?對于RISC機,適當增加一些功能比較強的更有用的指令有利于編程。提示:指令系統(tǒng)設(shè)計與寄存器結(jié)構(gòu)、標記寄存器、等有關(guān)。可以參考“定點運算器設(shè)計”的通用寄存器組、標記寄存器。第6周周末完成26盛建倫jlsheng@試驗課題1ALU設(shè)計試驗內(nèi)容:依據(jù)題目要求設(shè)計一個16位ALU的邏輯,確定外部的端口(名稱、有效電平)和內(nèi)部各元件的連接,畫出系統(tǒng)框圖和邏輯圖,設(shè)計仿真數(shù)據(jù),用VHDL編程和仿真。一、主要元件設(shè)計

1.4位并行進位加法器功能要求:能完成兩個4位二進制數(shù)(補碼和無符號數(shù))的加法和邏輯加運算。內(nèi)部有并行進位鏈。可以擴展成多位組。2.組間并行進位鏈邏輯功能要求:4個4位小組的組間并行進位鏈邏輯。將組間并行進位鏈邏輯與4個4位超前進位加法器連接可以構(gòu)成16位超前進位加法器。可參考74182的邏輯函數(shù)。27盛建倫jlsheng@試驗課題1ALU設(shè)計一、主要元件設(shè)計3.函數(shù)發(fā)生器功能要求:能把輸入的兩個16位二進制數(shù)進行變換,與后面的16位超前進位加法器協(xié)作完成兩個16位二進制數(shù)(補碼和無符號數(shù))的8種算術(shù)運算(有些運算考慮低位來的進位)和8種邏輯運算。提示:ALU的功能參考數(shù)字邏輯課程的“多功能加法器”試驗。二、頂層設(shè)計用層次結(jié)構(gòu)設(shè)計的方法設(shè)計一個16位ALU。內(nèi)部包括4個4位并行進位加法器、組間并行進位鏈、16位函數(shù)發(fā)生器等。功能要求:能完成兩個16位二進制數(shù)以及低位來的進位的8種算術(shù)運算和8種邏輯運算。可參考74181。

28盛建倫jlsheng@試驗課題1ALU設(shè)計三、仿真設(shè)計仿真波形數(shù)據(jù),要考慮到全部可能的狀況。在試驗報告中必需清晰說明仿真波形數(shù)據(jù)是怎樣設(shè)計的。四、深化的課題上面設(shè)計的ALU還沒有標記寄存器,假如想為ALU增加標記寄存器,應(yīng)當怎樣設(shè)計?標記位是怎樣產(chǎn)生的?29盛建倫jlsheng@5-1,4,5,6HomeworkInstructionspersecond-Mostconsumerspickacomputerarchitecture(normallyIntelIA32architecture)tobeabletorunalargebaseofpre-existingpre-compiledsoftware.Beingrelativelyuninformedoncomputerbenchmarks,someofthempickaparticularCPUbasedonoperatingfrequency).SomesystemdesignersbuildingparallelcomputerspickCPUsbasedonthespeedperdollar.ComputerprogrammerswhoprogramdirectlyinassemblylanguagewantaCPUtosupportafullfeaturedinstructionset.30盛建倫jlsheng@七、(共7分)推斷題(請在正確的句子前寫T,錯誤的句子前寫F)()1.零的原碼表示形式不是唯一的。()2.兩個符號相同的浮點數(shù)相加后必需進行一次右規(guī)。()4.帶符號機器數(shù)的符號位都用0表示正數(shù),1表示負數(shù)。()5.補碼加減法運算,符號位產(chǎn)生的進位是模。()3.計算機的ALU是用加法和部分積右移操作實現(xiàn)乘法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論