版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Ch5: Instruction Set指令系統(tǒng)指令系統(tǒng)第第1 1講:指令系統(tǒng)的設(shè)計(jì)講:指令系統(tǒng)的設(shè)計(jì)第第2 2講:程序的機(jī)器級表示講:程序的機(jī)器級表示2第一講第一講 指令系統(tǒng)設(shè)計(jì)指令系統(tǒng)設(shè)計(jì)u指令系統(tǒng)設(shè)計(jì)的基本原則指令系統(tǒng)設(shè)計(jì)的基本原則u指令類型和格式指令類型和格式u數(shù)據(jù)類型數(shù)據(jù)類型寄存器組織、存儲器組織寄存器組織、存儲器組織u操作數(shù)的尋址方式操作數(shù)的尋址方式立即立即 / 寄存器寄存器 / 寄存器間接寄存器間接 / 直接直接 / 間接間接 / 堆棧堆棧 / 偏移偏移u操作碼的編碼操作碼的編碼定長編碼法、變長擴(kuò)展編碼法定長編碼法、變長擴(kuò)展編碼法u條件碼和標(biāo)志寄存器條件碼和標(biāo)志寄存器u指令設(shè)計(jì)風(fēng)
2、格指令設(shè)計(jì)風(fēng)格 u指令系統(tǒng)舉例指令系統(tǒng)舉例主主 要要 內(nèi)內(nèi) 容容3Instruction Set Designinstruction setsoftwarehardware一個(gè)完善的指令系統(tǒng)應(yīng)滿足以下幾個(gè)方面的要求:一個(gè)完善的指令系統(tǒng)應(yīng)滿足以下幾個(gè)方面的要求:u完備性:指令系統(tǒng)提供的指令足夠使用完備性:指令系統(tǒng)提供的指令足夠使用u有效性:程序能夠高效率運(yùn)行有效性:程序能夠高效率運(yùn)行u規(guī)整性:對稱性、勻齊性、一致性規(guī)整性:對稱性、勻齊性、一致性u兼容性:相同的基本結(jié)構(gòu)、共同的基本指令兼容性:相同的基本結(jié)構(gòu)、共同的基本指令集集u可擴(kuò)充性:操作碼字段預(yù)留一定的空間可擴(kuò)充性:操作碼字段預(yù)留一定的空間u
3、指令系統(tǒng)處在軟指令系統(tǒng)處在軟/硬件交界面,同時(shí)被硬件設(shè)計(jì)者和系統(tǒng)程序員看到硬件交界面,同時(shí)被硬件設(shè)計(jì)者和系統(tǒng)程序員看到u硬件設(shè)計(jì)者角度:指令系統(tǒng)為硬件設(shè)計(jì)者角度:指令系統(tǒng)為CPU提供功能需求,要求易于硬件設(shè)計(jì)提供功能需求,要求易于硬件設(shè)計(jì)u系統(tǒng)程序員角度:通過指令系統(tǒng)來使用硬件,要求易于編寫編譯器系統(tǒng)程序員角度:通過指令系統(tǒng)來使用硬件,要求易于編寫編譯器u指令系統(tǒng)設(shè)計(jì)的好壞還決定了:計(jì)算機(jī)的性能和成本指令系統(tǒng)設(shè)計(jì)的好壞還決定了:計(jì)算機(jī)的性能和成本u偽指令偽指令u指令指令u微指令微指令4一條指令須包含的信息一條指令須包含的信息問題:一條指令必須問題:一條指令必須明顯明顯或或隱含隱含包含的信息有哪
4、些?包含的信息有哪些?u操作碼:指定操作類型操作碼:指定操作類型 (操作碼長度:操作碼長度:固定可變固定可變) )u源操作數(shù)參照:一個(gè)或多個(gè)源操作數(shù)所在的地址源操作數(shù)參照:一個(gè)或多個(gè)源操作數(shù)所在的地址 (操作數(shù)來源操作數(shù)來源:主:主( (虛虛) )存存/ /寄存器寄存器/ /I/OI/O端口端口/ /指令本身)指令本身)u結(jié)果值參照:產(chǎn)生的結(jié)果存放何處(目的操作數(shù))結(jié)果值參照:產(chǎn)生的結(jié)果存放何處(目的操作數(shù)) (結(jié)果地址結(jié)果地址:主:主( (虛虛) )存存/ /寄存器寄存器/ /I/OI/O端口端口) )u下一條指令地址:下條指令存放何處下一條指令地址:下條指令存放何處 (下條指令地址下條指令
5、地址 :主:主( (虛虛) )存存) ) ( (正常情況隱含在正常情況隱含在PCPC中,改變順序時(shí)由指令給出)中,改變順序時(shí)由指令給出)回顧:馮回顧:馮.諾依曼結(jié)構(gòu)機(jī)器對指令規(guī)定:諾依曼結(jié)構(gòu)機(jī)器對指令規(guī)定:u 用二進(jìn)制表示,和數(shù)據(jù)一起存放在主存中用二進(jìn)制表示,和數(shù)據(jù)一起存放在主存中u 指令由兩部分組成:操作碼和操作數(shù)(或其地址碼)指令由兩部分組成:操作碼和操作數(shù)(或其地址碼) Operation Code: defines the operation type Operands: indicate operation source and destination5一條指令中應(yīng)該有幾個(gè)地址碼字段
6、?一條指令中應(yīng)該有幾個(gè)地址碼字段?零地址指令零地址指令 (1) (1) 無需操作數(shù)如:空操作停機(jī)等無需操作數(shù)如:空操作停機(jī)等 (2) (2) 所需操作數(shù)為默認(rèn)的如:堆棧累加器等所需操作數(shù)為默認(rèn)的如:堆棧累加器等 形式:形式:一地址指令一地址指令 其其地址既是操作數(shù)的地址,也是結(jié)果的地址地址既是操作數(shù)的地址,也是結(jié)果的地址 (1) (1) 單目運(yùn)算:如:取反取負(fù)等單目運(yùn)算:如:取反取負(fù)等 (2) (2) 雙目運(yùn)算:另一操作數(shù)為默認(rèn)的如:累加器等雙目運(yùn)算:另一操作數(shù)為默認(rèn)的如:累加器等 形式:形式:二地址指令(最常用)二地址指令(最常用) 分別存放雙目運(yùn)算中兩個(gè)操作數(shù),并將其中一個(gè)地址作為結(jié)果的地
7、址。分別存放雙目運(yùn)算中兩個(gè)操作數(shù),并將其中一個(gè)地址作為結(jié)果的地址。 形式:形式:三地址指令(三地址指令(RISC風(fēng)格)風(fēng)格) 分別作為雙目運(yùn)算中兩個(gè)源操作數(shù)的地址和一個(gè)結(jié)果的地址。分別作為雙目運(yùn)算中兩個(gè)源操作數(shù)的地址和一個(gè)結(jié)果的地址。 形式:形式:多地址指令多地址指令 大中型機(jī)中用于成批數(shù)據(jù)處理的指令大中型機(jī)中用于成批數(shù)據(jù)處理的指令,如如:向量向量 / 矩陣等(矩陣等(SIMD)OPOPA1A2A3OPA1A1OPA26從指令執(zhí)行周期看指令設(shè)計(jì)涉及的問題從指令執(zhí)行周期看指令設(shè)計(jì)涉及的問題InstructionFetchInstructionDecodeOperandFetchExecuteRe
8、sultStoreNextInstruction從存儲器取指令從存儲器取指令對指令譯碼,以確定將要做什么操作對指令譯碼,以確定將要做什么操作 計(jì)算操作數(shù)地址并取操作數(shù)計(jì)算操作數(shù)地址并取操作數(shù)進(jìn)行相應(yīng)計(jì)算,并得到標(biāo)志位進(jìn)行相應(yīng)計(jì)算,并得到標(biāo)志位將計(jì)算結(jié)果保存到目的地將計(jì)算結(jié)果保存到目的地計(jì)算下條指令地址(通常和取指令同時(shí)進(jìn)行)計(jì)算下條指令地址(通常和取指令同時(shí)進(jìn)行)指令地址、指令長度(定長指令地址、指令長度(定長/變長)變長)指令格式、操作碼編碼、操作數(shù)類型指令格式、操作碼編碼、操作數(shù)類型地址碼、尋址方式、操作數(shù)格式和存放方式地址碼、尋址方式、操作數(shù)格式和存放方式操作類型、標(biāo)志或條件碼操作類型、
9、標(biāo)志或條件碼結(jié)果數(shù)據(jù)位置(目的操作數(shù))結(jié)果數(shù)據(jù)位置(目的操作數(shù))下條指令地址(順序下條指令地址(順序 / 轉(zhuǎn)移)轉(zhuǎn)移)7指令格式的選擇應(yīng)遵循的幾條基本原則指令格式的選擇應(yīng)遵循的幾條基本原則u應(yīng)盡量短應(yīng)盡量短u要有足夠的操作碼位數(shù)要有足夠的操作碼位數(shù)u指令編碼必須有唯一的解釋,否則是不合法的指令指令編碼必須有唯一的解釋,否則是不合法的指令u指令字長應(yīng)是字節(jié)的整數(shù)倍指令字長應(yīng)是字節(jié)的整數(shù)倍u合理地選擇地址字段的個(gè)數(shù)合理地選擇地址字段的個(gè)數(shù)u指令盡量規(guī)整指令盡量規(guī)整與指令集設(shè)計(jì)相關(guān)的重要方面與指令集設(shè)計(jì)相關(guān)的重要方面u操作碼的全部組成:操作碼個(gè)數(shù)操作碼的全部組成:操作碼個(gè)數(shù) / 種類種類 / 復(fù)雜度
10、復(fù)雜度 LD/ST/INC/BRN 四種指令已足夠編制任何可計(jì)算程序,但程序會很長四種指令已足夠編制任何可計(jì)算程序,但程序會很長u數(shù)據(jù)類型:對哪幾種數(shù)據(jù)類型完成操作數(shù)據(jù)類型:對哪幾種數(shù)據(jù)類型完成操作u指令格式:指令長度指令格式:指令長度 / 地址碼個(gè)數(shù)地址碼個(gè)數(shù) / 各字段長度各字段長度u通用寄存器:個(gè)數(shù)通用寄存器:個(gè)數(shù) / 功能功能 / 長度長度u尋址方式:操作數(shù)地址的指定方式尋址方式:操作數(shù)地址的指定方式u下條指令的地址如何確定:順序,下條指令的地址如何確定:順序,PC+1;條件轉(zhuǎn)移;無條件轉(zhuǎn)移;條件轉(zhuǎn)移;無條件轉(zhuǎn)移;指令格式的設(shè)計(jì)指令格式的設(shè)計(jì)一般通過對操作碼進(jìn)行不同的編碼來定義不同的含
11、義,一般通過對操作碼進(jìn)行不同的編碼來定義不同的含義,操作碼相同時(shí),再由功能碼定義不同的含義操作碼相同時(shí),再由功能碼定義不同的含義! !8操作類型操作類型u不同機(jī)器的指令系統(tǒng)是各不相同的不同機(jī)器的指令系統(tǒng)是各不相同的u從系統(tǒng)功能來考慮,一個(gè)較為完善的指令系統(tǒng)中常見的指從系統(tǒng)功能來考慮,一個(gè)較為完善的指令系統(tǒng)中常見的指令類型包括:令類型包括: 數(shù)據(jù)傳送指令:數(shù)據(jù)傳送指令:用于數(shù)據(jù)在寄存器、主存單元、棧頂和用于數(shù)據(jù)在寄存器、主存單元、棧頂和I/O之間進(jìn)之間進(jìn)行傳送行傳送 運(yùn)算指令:運(yùn)算指令:用于各種算術(shù)運(yùn)算和邏輯運(yùn)算用于各種算術(shù)運(yùn)算和邏輯運(yùn)算 字符串處理指令:字符串處理指令:用于字符串查找、掃描、轉(zhuǎn)
12、換等用于字符串查找、掃描、轉(zhuǎn)換等 程序流控制指令:程序流控制指令:用于條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用、返回等用于條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用、返回等 輸入輸出指令:輸入輸出指令:用于用于CPU與外設(shè)接口進(jìn)行數(shù)據(jù)、狀態(tài)、命令等信與外設(shè)接口進(jìn)行數(shù)據(jù)、狀態(tài)、命令等信息的交換息的交換 系統(tǒng)控制指令:系統(tǒng)控制指令:用于內(nèi)核進(jìn)程控制機(jī)器的啟動、停止、系統(tǒng)模式用于內(nèi)核進(jìn)程控制機(jī)器的啟動、停止、系統(tǒng)模式切換等切換等9操作數(shù)類型和存儲方操作數(shù)類型和存儲方式式操作數(shù)是指令處理的對象,與高級語言數(shù)據(jù)類型對應(yīng),基本類型有哪些?操作數(shù)是指令處理的對象,與高級語言數(shù)據(jù)類型對應(yīng),基本類型有哪些?地址(指針)地址(指針) 被看成無
13、符號整數(shù),用來參加運(yùn)算以確定主被看成無符號整數(shù),用來參加運(yùn)算以確定主(虛虛)存地址存地址數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù) 定點(diǎn)數(shù)定點(diǎn)數(shù)(整數(shù)整數(shù)):一般用二進(jìn)制補(bǔ)碼表示:一般用二進(jìn)制補(bǔ)碼表示 浮點(diǎn)數(shù)浮點(diǎn)數(shù)(實(shí)數(shù)實(shí)數(shù)):大多數(shù)機(jī)器采用:大多數(shù)機(jī)器采用IEEE754標(biāo)準(zhǔn)標(biāo)準(zhǔn) 十進(jìn)制數(shù):用十進(jìn)制數(shù):用NBCD碼表示,壓縮碼表示,壓縮/非壓縮(匯編程序設(shè)計(jì)時(shí)用)非壓縮(匯編程序設(shè)計(jì)時(shí)用)位、位串、字符和字符串位、位串、字符和字符串 用來表示文本、聲音和圖像等用來表示文本、聲音和圖像等 4 bits is a nibble(一個(gè)十六進(jìn)制數(shù)字)(一個(gè)十六進(jìn)制數(shù)字) 8 bits is a byte 16 bits is
14、a half-word 32 bits is a word邏輯邏輯(布爾布爾)數(shù)據(jù)數(shù)據(jù) 按位操作(按位操作(0-假假1-真)真)存放在寄存器存放在寄存器或內(nèi)存單元中或內(nèi)存單元中10IA-32 & MIPS Data TypeuIA-32 基本類型:基本類型: 字節(jié)、字字節(jié)、字(16位位)、雙字、雙字(32位位)、四字、四字(64位位) 整數(shù):整數(shù): 16位、位、32位、位、64位三種位三種2-補(bǔ)碼表示的整數(shù)補(bǔ)碼表示的整數(shù) 18位壓縮位壓縮8421 BCD碼表示的十進(jìn)制整數(shù)碼表示的十進(jìn)制整數(shù) 無符號整數(shù)(無符號整數(shù)(8、16或或32位)位) 近指針:近指針:32位段內(nèi)偏移(有效地址)位段內(nèi)偏移(
15、有效地址) 浮點(diǎn)數(shù)浮點(diǎn)數(shù):IEEE 754(80位擴(kuò)展精度浮點(diǎn)數(shù)寄存器)位擴(kuò)展精度浮點(diǎn)數(shù)寄存器)uMIPS 基本類型:基本類型: 字節(jié)、半字字節(jié)、半字(16位位)、字、字(32位位)、雙字、雙字(64位位) 整數(shù):整數(shù): 16位、位、32位、位、64位三種位三種2-補(bǔ)碼表示的整數(shù)補(bǔ)碼表示的整數(shù) 無符號整數(shù):(無符號整數(shù):(16、32位)位) 浮點(diǎn)數(shù)浮點(diǎn)數(shù):IEEE 754(32位位/64位浮點(diǎn)數(shù)寄存器)位浮點(diǎn)數(shù)寄存器)11Addressing Modes(尋址方式)(尋址方式)u什么是什么是“尋址方式尋址方式”? 指令或操作數(shù)地址的指定方式。即:根據(jù)地址找到指令或操作數(shù)的方法。指令或操作數(shù)地址
16、的指定方式。即:根據(jù)地址找到指令或操作數(shù)的方法。u地址碼編碼由操作數(shù)的尋址方式?jīng)Q定地址碼編碼由操作數(shù)的尋址方式?jīng)Q定u地址碼編碼原則:地址碼編碼原則: 指令地址碼盡量短指令地址碼盡量短 操作數(shù)存放位置靈活,空間應(yīng)盡量大操作數(shù)存放位置靈活,空間應(yīng)盡量大 地址計(jì)算過程盡量簡單地址計(jì)算過程盡量簡單u指令的尋址指令的尋址-簡單簡單 正常:正常:PC增值增值 跳轉(zhuǎn)跳轉(zhuǎn) ( jump / branch / call / return ):同操作數(shù)的尋址:同操作數(shù)的尋址u操作數(shù)的尋址操作數(shù)的尋址-復(fù)雜(復(fù)雜(想象一下高級語言程序中操作數(shù)情況多復(fù)雜想象一下高級語言程序中操作數(shù)情況多復(fù)雜) 操作數(shù)來源:寄存器操作
17、數(shù)來源:寄存器 / 外設(shè)端口外設(shè)端口 / 主主(虛虛)存存 / 棧頂棧頂 操作數(shù)結(jié)構(gòu):位操作數(shù)結(jié)構(gòu):位 / 字節(jié)字節(jié) / 半字半字 / 字字 / 雙字雙字 / 一維表一維表 / 二維表二維表 / 通常尋址方式特指通常尋址方式特指“操作數(shù)的尋址操作數(shù)的尋址”為什么?為什么?目標(biāo)代碼短,省空間目標(biāo)代碼短,省空間利于編譯器優(yōu)化產(chǎn)生高效代碼利于編譯器優(yōu)化產(chǎn)生高效代碼指令執(zhí)行快指令執(zhí)行快SKIP12指令順序?qū)ぶ贩绞街噶铐樞驅(qū)ぶ贩绞絬由于指令地址在主存中順序排列,當(dāng)執(zhí)行一段程序時(shí),通常是由于指令地址在主存中順序排列,當(dāng)執(zhí)行一段程序時(shí),通常是一條指令接著一條指令地順序執(zhí)行一條指令接著一條指令地順序執(zhí)行u這種
18、程序順序執(zhí)行的過程稱為指令的這種程序順序執(zhí)行的過程稱為指令的順序?qū)ぶ贩绞巾樞驅(qū)ぶ贩绞奖仨毷褂帽仨毷褂贸绦蛴?jì)數(shù)器程序計(jì)數(shù)器PCPC來計(jì)數(shù)指令的順序號來計(jì)數(shù)指令的順序號該順序號就是指令在主存中的地址該順序號就是指令在主存中的地址指令逐條順序執(zhí)行,由指令逐條順序執(zhí)行,由PC+1PCPC+1PC控制控制BACK13指令跳躍尋址方式指令跳躍尋址方式u指令的指令的跳躍尋址跳躍尋址,是指下一條指令的地址碼不是由程序計(jì)數(shù)器,是指下一條指令的地址碼不是由程序計(jì)數(shù)器給出,而是由本條指令直接給出給出,而是由本條指令直接給出u程序跳躍后,按新的指令地址開始順序執(zhí)行程序跳躍后,按新的指令地址開始順序執(zhí)行 指令計(jì)數(shù)器的內(nèi)
19、容也必須相應(yīng)改變,以便及時(shí)跟蹤新的指令指令計(jì)數(shù)器的內(nèi)容也必須相應(yīng)改變,以便及時(shí)跟蹤新的指令地址地址u采用指令跳躍尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,采用指令跳躍尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,從而縮短程序長度,或?qū)⒛承┏绦蜃鳛楣渤绦蛘{(diào)用從而縮短程序長度,或?qū)⒛承┏绦蜃鳛楣渤绦蛘{(diào)用u指令系統(tǒng)中的各種條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令系統(tǒng)中的各種條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令的跳躍尋址而設(shè)置的指令的跳躍尋址而設(shè)置的BACK指令地址指令內(nèi)容存儲器PC101JMP 4234514u尋址方式的確定尋址方式的確定 (1)沒有專門的尋址方式位(由操作碼確定尋址方式)沒
20、有專門的尋址方式位(由操作碼確定尋址方式) 如:如:MIPS指令,一條指令中最多僅有一個(gè)主指令,一條指令中最多僅有一個(gè)主(虛虛)存地址,且僅有存地址,且僅有一到兩種尋址方式,一到兩種尋址方式,Load/store型機(jī)器指令屬于這種情況。型機(jī)器指令屬于這種情況。 (2)有專門的尋址方式位)有專門的尋址方式位 如:如:X86指令,一條指令中有多個(gè)操作數(shù),且尋址方式各不相同,指令,一條指令中有多個(gè)操作數(shù),且尋址方式各不相同,需要各自說明尋址方式,因此每個(gè)操作數(shù)有專門的尋址方式位。需要各自說明尋址方式,因此每個(gè)操作數(shù)有專門的尋址方式位。u有效地址的含義有效地址的含義 操作數(shù)所在存儲單元的地址(可能是邏
21、輯地址或物理地址),可通過操作數(shù)所在存儲單元的地址(可能是邏輯地址或物理地址),可通過指令的尋址方式和地址碼計(jì)算得到指令的尋址方式和地址碼計(jì)算得到u基本尋址方式基本尋址方式 立即立即 / 直接直接 / 間接間接 / 寄存器寄存器 / 寄存器間接寄存器間接 / 偏移偏移 / 堆棧堆棧Operands Addressing Modes15立即立即 / 直接直接 / 間接間接 / 寄存器寄存器 / 寄存器間接寄存器間接直接尋址間接尋址寄存器尋址寄存器間接尋址andi $s1,$s2,100 立即尋址16偏移尋址方式偏移尋址方式R存儲器存儲器操作數(shù)操作數(shù)寄存器堆寄存器堆A+AOP偏移尋址:偏移尋址:E
22、A=A+(R) R可以明顯給出,也可以隱含給出可以明顯給出,也可以隱含給出 R可以為可以為PC、基址寄存器、基址寄存器B、變址寄存器、變址寄存器 I 相對尋址:相對尋址: EA=A+(PC) 相對于相對于當(dāng)前指令處當(dāng)前指令處位移量為位移量為A的單元的單元 基址尋址:基址尋址: EA=A+(B) 相對于相對于基址基址(B)處處位移量為位移量為A的單元的單元 變址尋址:變址尋址: EA=A+(I) 相對于相對于首址首址A處處位移量為位移量為(I)的單元的單元.指令中給指令中給出的地址出的地址碼碼A稱為稱為形式地址形式地址17偏移尋址方式偏移尋址方式 l相對尋址相對尋址 指令地址碼給出一個(gè)偏移量指令
23、地址碼給出一個(gè)偏移量(帶符號數(shù)帶符號數(shù)),基準(zhǔn)地址,基準(zhǔn)地址由由PC給出。給出。 即:即:EA=(PC)+A (ex. MIPSs instruction: Beq) 可用來實(shí)現(xiàn)程序可用來實(shí)現(xiàn)程序(公共子程序公共子程序)的浮動的浮動 或或 指定轉(zhuǎn)移目標(biāo)地址指定轉(zhuǎn)移目標(biāo)地址 注意:當(dāng)前注意:當(dāng)前PC的值可以是正在執(zhí)行指令的地址或下條指令的地址的值可以是正在執(zhí)行指令的地址或下條指令的地址l基址尋址基址尋址 指令地址碼給出一個(gè)偏移量,基準(zhǔn)地址指令地址碼給出一個(gè)偏移量,基準(zhǔn)地址由基址寄存器由基址寄存器B給出。給出。即:即:EA=(B)+A (ex. MIPSs instructions: lw / s
24、w) 可用來實(shí)現(xiàn)多道程序重定位可用來實(shí)現(xiàn)多道程序重定位 或或 過程調(diào)用中參數(shù)的訪問過程調(diào)用中參數(shù)的訪問l變址尋址變址尋址 指令地址碼給出一個(gè)基準(zhǔn)地址,而偏移量指令地址碼給出一個(gè)基準(zhǔn)地址,而偏移量(無符號數(shù)無符號數(shù))由變址寄由變址寄存器存器 I 給出。即:給出。即:EA=(I)+A 可為循環(huán)重復(fù)操作提供一種高效機(jī)制,如實(shí)現(xiàn)對線性表的方便操作可為循環(huán)重復(fù)操作提供一種高效機(jī)制,如實(shí)現(xiàn)對線性表的方便操作SKIP18相對尋址實(shí)現(xiàn)相對尋址實(shí)現(xiàn)公共子程序的浮動公共子程序的浮動子程序內(nèi)地址關(guān)系相對獨(dú)立,與用戶程序的地址無子程序內(nèi)地址關(guān)系相對獨(dú)立,與用戶程序的地址無關(guān),不管浮動到哪里,總是實(shí)現(xiàn)關(guān),不管浮動到哪里
25、,總是實(shí)現(xiàn)AX和和120相加相加5052100101=(PC)102250251=(PC)252存儲器存儲器“ . ” 表示相對尋址方式表示相對尋址方式有效地址有效地址EA=(PC)+1即:操作數(shù)在當(dāng)前指令即:操作數(shù)在當(dāng)前指令隨后的一條指令后!隨后的一條指令后!假定每條指令占一個(gè)單元假定每條指令占一個(gè)單元通常計(jì)算有效通常計(jì)算有效地址時(shí),地址時(shí),PC已已指向下條指令指向下條指令!19相對尋址實(shí)現(xiàn)相對尋址實(shí)現(xiàn)相對轉(zhuǎn)移相對轉(zhuǎn)移BACK舉例:雙字節(jié)定長指令字,其中轉(zhuǎn)移指令的第一字節(jié)是操作碼舉例:雙字節(jié)定長指令字,其中轉(zhuǎn)移指令的第一字節(jié)是操作碼Jxx,第二字節(jié)是位移量第二字節(jié)是位移量D,用補(bǔ)碼表示,則轉(zhuǎn)
26、移目標(biāo)指令,用補(bǔ)碼表示,則轉(zhuǎn)移目標(biāo)指令相對于轉(zhuǎn)移指令相對于轉(zhuǎn)移指令的范圍的范圍為多少?為多少?若轉(zhuǎn)移指令地址為若轉(zhuǎn)移指令地址為2000H,轉(zhuǎn)移目標(biāo)地址為,轉(zhuǎn)移目標(biāo)地址為1FF0H,總是在取指令,總是在取指令同時(shí)對同時(shí)對PC增量,則轉(zhuǎn)移指令第二字節(jié)位移量為多少?增量,則轉(zhuǎn)移指令第二字節(jié)位移量為多少?-128+127 ?只有確定了是按字還是字節(jié)編址、位移量只有確定了是按字還是字節(jié)編址、位移量D是指指令條數(shù)還是單元數(shù),才能是指指令條數(shù)還是單元數(shù),才能確定目標(biāo)地址范圍確定目標(biāo)地址范圍(目標(biāo)地址范圍不等于位移量(目標(biāo)地址范圍不等于位移量D的表示范圍?。┑谋硎痉秶。.?dāng)按字節(jié)編址且當(dāng)按字節(jié)編址且D為單元
27、數(shù)為單元數(shù)時(shí),轉(zhuǎn)移目標(biāo)地址時(shí),轉(zhuǎn)移目標(biāo)地址= (PC)+2+D 跳轉(zhuǎn)范圍:跳轉(zhuǎn)范圍:-126128單元單元 - 6364條指令條指令 D=1FF0H2002H=EEH(18)不一定!不一定!不知道!不知道!1FF0H = 2000H+2+D舉例:舉例:MIPS指令指令“beq $1, $2, 25”的轉(zhuǎn)移目標(biāo)地址為的轉(zhuǎn)移目標(biāo)地址為(PC)+4+4*25,這里的這里的25是指令條數(shù)而不是單元數(shù)是指令條數(shù)而不是單元數(shù),MIPS采用定長指令字,按字節(jié)編址,采用定長指令字,按字節(jié)編址, 所有指令的長度所有指令的長度都是都是32位(位(4字節(jié))。字節(jié))。JxxD轉(zhuǎn)移轉(zhuǎn)移D2000H1FF0H20基址尋址
28、實(shí)現(xiàn)基址尋址實(shí)現(xiàn)程序重定位程序重定位用戶程序裝入系統(tǒng)后有一個(gè)基址,雖然偏移用戶程序裝入系統(tǒng)后有一個(gè)基址,雖然偏移量都為量都為51,但因基址不同,故操作數(shù)不同。,但因基址不同,故操作數(shù)不同。ADD AX, #511505051ADD AX, #511514051240251用戶程序用戶程序1用戶程序用戶程序2“ # ” 表示基址尋址方式表示基址尋址方式有效地址有效地址EA=基址值基址值+51基址為基址為100基址為基址為200存儲器存儲器BACK21變址尋址實(shí)現(xiàn)變址尋址實(shí)現(xiàn)線性表元素的存取線性表元素的存取u自動變址自動變址 指令中的地址碼指令中的地址碼A給定數(shù)組首給定數(shù)組首址,變址器址,變址器I
29、每次每次自動加自動加/減減數(shù)數(shù)組元素的長度組元素的長度x。 EA=( I )+A I=( I ) x 例如,例如,X86中的串操作指令中的串操作指令u對于對于“for (i=0;i=0;i-) .”,即地址從高即地址從高低增長:減低增長:減u可提供對線性表的方便訪問可提供對線性表的方便訪問若每個(gè)元素為一個(gè)字節(jié),則若每個(gè)元素為一個(gè)字節(jié),則 I=(I) 1若每個(gè)元素為若每個(gè)元素為4個(gè)字節(jié),則個(gè)字節(jié),則 I=(I) 40A0A1A2A3存儲器存儲器假定一維數(shù)組假定一維數(shù)組A從內(nèi)存從內(nèi)存100號單元開始號單元開始一般一般RSIC機(jī)器不提供自動變址尋址,并將變機(jī)器不提供自動變址尋址,并將變址和基址尋址統(tǒng)
30、一成一種偏移尋址方式址和基址尋址統(tǒng)一成一種偏移尋址方式22Example:MIPS中的循環(huán)處理中的循環(huán)處理 for (i=0;ir2,則轉(zhuǎn)移到,則轉(zhuǎn)移到label處執(zhí)行;否則順序執(zhí)行處執(zhí)行;否則順序執(zhí)行bgt的條件?的條件?無符號數(shù):無符號數(shù):ZF=0CF=0帶符號整數(shù):帶符號整數(shù):ZF=0NFOF對于帶符號和無符號運(yùn)算,標(biāo)對于帶符號和無符號運(yùn)算,標(biāo)志生成方式有沒有不同?志生成方式有沒有不同?沒有,因?yàn)榧臃娐凡恢朗菦]有,因?yàn)榧臃娐凡恢朗菬o符號數(shù)還是帶符號整數(shù)!無符號數(shù)還是帶符號整數(shù)!30指令設(shè)計(jì)風(fēng)格指令設(shè)計(jì)風(fēng)格 - 按操作數(shù)位置指定風(fēng)格來分按操作數(shù)位置指定風(fēng)格來分Accumulator
31、: (earliest machines) 累加器型累加器型特點(diǎn):其中一個(gè)操作數(shù)(源操作數(shù)特點(diǎn):其中一個(gè)操作數(shù)(源操作數(shù)1)和目的操作數(shù)總在累加器中)和目的操作數(shù)總在累加器中1 address add A acc acc + memA1(+x) address add x A acc acc + memA + xStack: (e.g. HP calculator, Java virtual machines) 堆棧型堆棧型特點(diǎn):總是將棧頂兩個(gè)操作數(shù)進(jìn)行運(yùn)算,指令無需指定操作數(shù)地址特點(diǎn):總是將棧頂兩個(gè)操作數(shù)進(jìn)行運(yùn)算,指令無需指定操作數(shù)地址0 address add tos tos + next
32、General Purpose Register: (e.g. IA-32, Motorola 68xxx) 通用寄存器型通用寄存器型特點(diǎn):操作數(shù)可以是寄存器或存儲器數(shù)據(jù)(即特點(diǎn):操作數(shù)可以是寄存器或存儲器數(shù)據(jù)(即A、B和和C可以是寄存器或存可以是寄存器或存儲單元)儲單元)2 address add A B EA(A) EA(A) + EA(B)3 address add A B C EA(A) EA(B) + EA(C)Load/Store: (e.g. SPARC, MIPS, PowerPC) 裝入裝入/存儲型存儲型特點(diǎn):運(yùn)算操作數(shù)只能是寄存器數(shù)據(jù),只有特點(diǎn):運(yùn)算操作數(shù)只能是寄存器數(shù)據(jù),
33、只有l(wèi)oad/store能訪問存儲器能訪問存儲器3 addressadd Ra Rb Rc Ra Rb + Rcload Ra Rb Ra memRbstore Ra Rb memRb Ra31指令風(fēng)格比較指令風(fēng)格比較Comparison:Bytes per instruction? Number of Instructions? Cycles per instruction?Code sequence for C = A + B for four classes of instruction sets:StackAccumulatorRegister Register (register-
34、memory)(load - store)Push ALoad ALoad R1,ALoad R1,APush BAdd BAdd R1,BLoad R2,BAddStore CStore C, R1Add R3,R1,R2Pop CStore C,R3復(fù)雜表達(dá)式時(shí),累加器型風(fēng)格指令條數(shù)變多,因?yàn)樗羞\(yùn)算都要用累加復(fù)雜表達(dá)式時(shí),累加器型風(fēng)格指令條數(shù)變多,因?yàn)樗羞\(yùn)算都要用累加器,使得程序中多出許多移入器,使得程序中多出許多移入 / 移出累加器的指令!移出累加器的指令! 75年開始,寄存器型占主導(dǎo)地位,原因:年開始,寄存器型占主導(dǎo)地位,原因: 寄存器速度快,使用大量通用寄存器可減少訪存操作寄存器
35、速度快,使用大量通用寄存器可減少訪存操作 表達(dá)式編譯時(shí)與順序無關(guān)(相對于表達(dá)式編譯時(shí)與順序無關(guān)(相對于Stack)( Java Virtual Machine 采用采用Stack型型)想象一下想象一下“C=a*x+b*y+x*y”用累加器型風(fēng)格實(shí)現(xiàn)的情況!用累加器型風(fēng)格實(shí)現(xiàn)的情況!指令條數(shù)較少指令條數(shù)較少32Examples of Register Usage每條典型每條典型ALU指令中的存儲器地址個(gè)數(shù)指令中的存儲器地址個(gè)數(shù)每條典型每條典型ALU指令中的最多操作數(shù)個(gè)數(shù)指令中的最多操作數(shù)個(gè)數(shù)Examples03SPARC, MIPS, Precision Architecture, Power
36、PC12Intel 80 x86, Motorola 6800022VAX (also has 3-operand formats)33VAX (also has 2-operand formats)In VAX(CISC):ADDL (R9), (R10), (R11);memR9 memR10 + memR11 In MIPS(RISC): lw R1, (R10) : R1 memR10 lw R2, (R11) :R2 memR11 add R3, R1, R2 :R3 R1+R2sw R3, (R9) :memR9 R3一條指令!一條指令!四條指令!四條指令!哪一種風(fēng)格更好呢?學(xué)了第
37、哪一種風(fēng)格更好呢?學(xué)了第6和第和第7章后會有更深的體會!章后會有更深的體會!哪種哪種CPI小????MIPS!33指令設(shè)計(jì)風(fēng)格指令設(shè)計(jì)風(fēng)格 按指令格式的復(fù)雜度來分按指令格式的復(fù)雜度來分早期早期CISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)設(shè)計(jì)風(fēng)格的主要特點(diǎn) (1) 指令系統(tǒng)復(fù)雜指令系統(tǒng)復(fù)雜 變長操作碼變長操作碼 / 變長指令字變長指令字 / 指令多指令多 / 尋址方式多尋址方式多 / 指令格式多指令格式多 (2) 指令周期長指令周期長 絕大多數(shù)指令需要多個(gè)時(shí)鐘周期才能完成絕大多數(shù)指令需要多個(gè)時(shí)鐘周期才能完成 (3) 各種指令都能訪問存儲器各種指令都能訪問存儲器 除了專門的存儲器讀寫指令外,運(yùn)算指令也能訪問存儲器除了
38、專門的存儲器讀寫指令外,運(yùn)算指令也能訪問存儲器 (4) 采用微程序控制采用微程序控制 (5) 有專用寄存器有專用寄存器 (6) 難以進(jìn)行編譯優(yōu)化來生成高效目標(biāo)代碼難以進(jìn)行編譯優(yōu)化來生成高效目標(biāo)代碼例如,例如,VAX-11/780小型機(jī)小型機(jī)16種尋址方式;種尋址方式;9種數(shù)據(jù)格式;種數(shù)據(jù)格式;303條指令;條指令;一條指令包括一條指令包括12個(gè)字節(jié)的操作碼和下續(xù)個(gè)字節(jié)的操作碼和下續(xù)N個(gè)操作數(shù)說明符。個(gè)操作數(shù)說明符。一個(gè)說明符的長度達(dá)一個(gè)說明符的長度達(dá)1 10個(gè)字節(jié)。個(gè)字節(jié)。按指令格式的復(fù)雜度來分,有兩種類型計(jì)算機(jī):按指令格式的復(fù)雜度來分,有兩種類型計(jì)算機(jī):復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CIS
39、C (Complex Instruction Set Computer)精簡指令集計(jì)算機(jī)精簡指令集計(jì)算機(jī)RISC (Reduce Instruction Set Computer)34復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CISCu對對CISC進(jìn)行測試,發(fā)現(xiàn)一個(gè)進(jìn)行測試,發(fā)現(xiàn)一個(gè)事實(shí)事實(shí): 在程序中各種指令出現(xiàn)的頻率懸殊很大,最常使用的是一些簡單在程序中各種指令出現(xiàn)的頻率懸殊很大,最常使用的是一些簡單指令,這些指令占程序的指令,這些指令占程序的80%,但只占指令系統(tǒng)的,但只占指令系統(tǒng)的20%。而且在。而且在微程序控制的計(jì)算機(jī)中,占指令總數(shù)微程序控制的計(jì)算機(jī)中,占指令總數(shù)20%的復(fù)雜指令占用了控制的復(fù)
40、雜指令占用了控制存儲器容量的存儲器容量的80%。u1982年美國加州伯克利大學(xué)的年美國加州伯克利大學(xué)的RISC,斯坦福大學(xué)的斯坦福大學(xué)的MIPS,IBM公公司的司的IBM801相繼宣告完成,這些機(jī)器被稱為相繼宣告完成,這些機(jī)器被稱為第一代第一代RISC機(jī)機(jī)。uCISC的缺陷的缺陷 日趨龐大的指令系統(tǒng)不但使計(jì)算機(jī)的日趨龐大的指令系統(tǒng)不但使計(jì)算機(jī)的研制周期變長研制周期變長,而且,而且難以保證難以保證設(shè)計(jì)的正確性,難以調(diào)試和維護(hù),設(shè)計(jì)的正確性,難以調(diào)試和維護(hù),并且因指令操作復(fù)雜而并且因指令操作復(fù)雜而增加機(jī)器增加機(jī)器周期周期,從而,從而降低了系統(tǒng)性能。降低了系統(tǒng)性能。u1975年年IBM公司開始研究公
41、司開始研究指令系統(tǒng)的合理性問題指令系統(tǒng)的合理性問題,John Cocks提出精提出精簡指令系統(tǒng)計(jì)算機(jī)簡指令系統(tǒng)計(jì)算機(jī) RISC ( Reduce Instruction Set Computer )。SKIP35Top 10 80 x86 Instructions Rank instructionInteger Average Percent total executed1load22%2conditional branch20%3compare16%4store12%5add8%6and6%7sub5%8move register-register4%9call1%10return1%Tot
42、al96% Simple instructions dominate instruction frequency( 簡單指令占主要部分,使用頻率高!簡單指令占主要部分,使用頻率高!) BACK36RISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)設(shè)計(jì)風(fēng)格的主要特點(diǎn) (1) 簡化的指令系統(tǒng)簡化的指令系統(tǒng) 指令少指令少 / 尋址方式少尋址方式少 / 指令格式少指令格式少 / 指令長度一致指令長度一致 (2) 以以RR方式工作方式工作 除除Load/Store指令可訪問存儲器外,其余指令都只訪問寄存器。指令可訪問存儲器外,其余指令都只訪問寄存器。 (3) 指令周期短指令周期短 以流水線方式工作,以流水線方式工作, 因而除因
43、而除Load/Store指令外,其他簡單指令都只指令外,其他簡單指令都只需一個(gè)或一個(gè)不到的時(shí)鐘周期就可完成。需一個(gè)或一個(gè)不到的時(shí)鐘周期就可完成。 (4) 采用大量通用寄存器,以減少訪存次數(shù)采用大量通用寄存器,以減少訪存次數(shù) (5) 采用組合邏輯電路控制,不用或少用微程序控制采用組合邏輯電路控制,不用或少用微程序控制 (6) 采用優(yōu)化的編譯系統(tǒng),力求有效地支持高級語言程序采用優(yōu)化的編譯系統(tǒng),力求有效地支持高級語言程序MIPS是典型的是典型的RISC處理器,處理器,82年以來新的指令集大多采用年以來新的指令集大多采用RISC體系結(jié)構(gòu)體系結(jié)構(gòu)x86因?yàn)橐驗(yàn)椤凹嫒菁嫒荨钡男枰A袅说男枰?,保留了CI
44、SC的風(fēng)格,同時(shí)也借鑒了的風(fēng)格,同時(shí)也借鑒了RISC思想思想 37指令系統(tǒng)舉例指令系統(tǒng)舉例: Address & RegistersIntel 8086VAX 11MC 68000MIPS2 x 8 bit bytesAX, BX, CX, DXSP, BP, SI, DICS, SS, DSIP, Flags2 x 8 bit bytes16 x 32 bit GPRs2 x 8 bit bytes8 x 32 bit GPRs7 x 32 bit addr reg1 x 32 bit SP1 x 32 bit PC2 x 8 bit bytes32 x 32 bit GPRs32 x 32
45、 bit FPRsHI, LO, PCacc, index, count, quotstack, stack frame, stringcode,stack,data segmentr15- program counterr14- stack pointerr13- frame pointerr12- argument pointer32322420問題:問題:GPR是什么?是什么?Flags是什么?是什么?指令系統(tǒng)舉例指令系統(tǒng)舉例:HIHI和和LOLO是是MIPSMIPS內(nèi)部內(nèi)部的乘商寄存器的乘商寄存器38指令前綴段前綴操作數(shù)長度地址長度 0或10或1 0或1 0或1前綴類型:字節(jié)數(shù):指令系
46、統(tǒng)舉例:指令系統(tǒng)舉例:Pentium指令格式指令格式前綴:前綴:包括指令、段、操作數(shù)長度、地址長度四種類型包括指令、段、操作數(shù)長度、地址長度四種類型指令:指令:含含操作碼、尋址方式、操作碼、尋址方式、SIB、位移量和直接數(shù)據(jù)、位移量和直接數(shù)據(jù)五部分,位移量和立即數(shù)都可是五部分,位移量和立即數(shù)都可是1/2/4B。SIB中基址中基址B和變址和變址I都可是都可是8個(gè)個(gè)GRS中任一個(gè)。中任一個(gè)。SS給出比例因子。操作碼:給出比例因子。操作碼:opcode; w:與機(jī)器模式(:與機(jī)器模式(16 / 32位)一起確定寄存器位數(shù)(位)一起確定寄存器位數(shù)(AL / AX / EAX); d:操:操作方向;作方
47、向;尋址方式:尋址方式: mod、r/m、 reg/op三個(gè)字段與三個(gè)字段與w字段和機(jī)器模式一起確定操作字段和機(jī)器模式一起確定操作數(shù)所在的寄存器編號或有效地址計(jì)算方式數(shù)所在的寄存器編號或有效地址計(jì)算方式變長指令字:變長指令字:1B17B變長操作碼:變長操作碼:4b / 5b / 6b / 7b / 8b /變長操作數(shù):變長操作數(shù):Byte / Word / DW / QW變長寄存器:變長寄存器:8位位 / 16位位 /32位位調(diào)用指令自動把返回地址壓棧調(diào)用指令自動把返回地址壓棧專門的專門的push/pop指令,自動修改棧指針指令,自動修改棧指針ALU指令在指令在Flags中隱含生成條件碼中隱含
48、生成條件碼ALU指令中的一個(gè)操作數(shù)可來自存儲器指令中的一個(gè)操作數(shù)可來自存儲器提供基址加比例索引尋址提供基址加比例索引尋址問題問題: 是累加器型、通用寄存器型、是累加器型、通用寄存器型、ld/st型?是型?是CISC型、型、RISC型?型?39Pentium處理器的尋址方式處理器的尋址方式 操作數(shù)的來源:操作數(shù)的來源: 立即數(shù)立即數(shù)(立即尋址立即尋址):直接來自指令:直接來自指令 寄存器寄存器(寄存器尋址寄存器尋址):來自:來自32位位 / 16位位 / 8位通用寄存器位通用寄存器 存儲單元存儲單元(其他尋址其他尋址):需進(jìn)行地址轉(zhuǎn)換:需進(jìn)行地址轉(zhuǎn)換 分段分段 分頁分頁指令中的信息:指令中的信息
49、: (1) 段寄存器段寄存器SR(隱含或顯式給出)隱含或顯式給出) (2) 8/16/32位位偏移量偏移量A (顯式給出)顯式給出) (2) 基址寄存器基址寄存器B (明顯給出,任意通用寄存器皆可)明顯給出,任意通用寄存器皆可) (3) 變址寄存器變址寄存器I (明顯給出,除明顯給出,除ESP外的任意通用寄存器皆可。)外的任意通用寄存器皆可。)有比例變址和非比例變址有比例變址和非比例變址比例變址時(shí)要乘以比例變址時(shí)要乘以比例因子比例因子S (1:8位位 / 2:16位位 / 4:32位位 / 8:64位位) 指令指令“ MOV EAX, ES: EBP+ESI*8+100”的含義是什么?的含義是
50、什么?40Pentium處理器尋址方式處理器尋址方式尋址方式尋址方式算法算法立即立即( (地址碼地址碼A A本身為操作數(shù)本身為操作數(shù)) )寄存器寄存器( (通用寄存器的內(nèi)容為操作數(shù)通用寄存器的內(nèi)容為操作數(shù)) )偏移量偏移量( (地址碼地址碼A A給出給出8/16/328/16/32位偏移量位偏移量) )基址基址( (地址碼地址碼B B給出基址器編號給出基址器編號) )基址帶偏移量基址帶偏移量( (一維表訪問一維表訪問) )比例變址帶偏移量比例變址帶偏移量( (一維表訪問一維表訪問) )基址帶變址和偏移量基址帶變址和偏移量( (二維表訪問二維表訪問) )基址帶比例變址和偏移量基址帶比例變址和偏移
51、量( (二維表訪問二維表訪問) )相對相對( (給出下一指令的地址,轉(zhuǎn)移控制給出下一指令的地址,轉(zhuǎn)移控制) )操作數(shù)操作數(shù)=A操作數(shù)操作數(shù)= (R)LA=(SR)+ALA=(SR)+(B)LA=(SR)+(B)+ALA=(SR)+ (I)xS+ALA=(SR)+(B)+(I) +ALA=(SR)+(B)+(I)xS+A轉(zhuǎn)移地址轉(zhuǎn)移地址=(PC)+A41Pentium處理器的存儲器尋址處理器的存儲器尋址SSCS基址寄存器基址寄存器變址寄存器變址寄存器比例因子比例因子1/2/4/8偏移量偏移量8/16/32位位x+線性地址線性地址有效地址有效地址線性地址空間線性地址空間需要時(shí)再對線性地址空需要時(shí)再
52、對線性地址空間進(jìn)行分頁處理。間進(jìn)行分頁處理。42uRISC型型 (類似于(類似于MIPS,32位定長操作碼、定長指令字),主要不同在于位定長操作碼、定長指令字),主要不同在于: 提供了特殊的兩種變址尋址方式,可減少指令數(shù)提供了特殊的兩種變址尋址方式,可減少指令數(shù) 兩個(gè)寄存器相加變址(基址寄存器和索引寄存器:間接變址尋址)兩個(gè)寄存器相加變址(基址寄存器和索引寄存器:間接變址尋址) 例:例:add $t0,$a0,$s3 lw &t1,0($t0) 自動變址(變址器自動自動變址(變址器自動+1) 例:例: lw &t0, 4($s3) addi $s3,$s3,4 引入特殊的數(shù)據(jù)塊指令,可減少指令
53、數(shù)引入特殊的數(shù)據(jù)塊指令,可減少指令數(shù) 單條指令可傳送多達(dá)單條指令可傳送多達(dá)32個(gè)字,并可進(jìn)行存儲區(qū)數(shù)據(jù)傳送個(gè)字,并可進(jìn)行存儲區(qū)數(shù)據(jù)傳送 提供一個(gè)特殊計(jì)數(shù)寄存器提供一個(gè)特殊計(jì)數(shù)寄存器ctr,自動減,自動減1,用于循環(huán)處理,用于循環(huán)處理 例:例:for (i=n; i!=0; i=i-1) ;Loop: addi $t0,$t0,-1 bne &t0, $zero, loop指令系統(tǒng)舉例指令系統(tǒng)舉例: PowerPClw $t1,$a0+$s3lwu $t0, 4($s3)Loop: bc loop, ctr!=043 MMX(Microprocessor Media Extension)指令技術(shù)
54、指令技術(shù)u圖形圖形/像、音像、音/視頻多媒體信息處理特點(diǎn)視頻多媒體信息處理特點(diǎn) 多個(gè)短整數(shù)并行操作(如多個(gè)短整數(shù)并行操作(如8位圖形像素和位圖形像素和16位音頻信號)位音頻信號) 頻繁的乘頻繁的乘-累加(如累加(如FIR濾波,矩陣運(yùn)算)濾波,矩陣運(yùn)算)uMMX的出發(fā)點(diǎn)的出發(fā)點(diǎn) 使用專門指令對大量數(shù)據(jù)進(jìn)行并行、復(fù)雜處理使用專門指令對大量數(shù)據(jù)進(jìn)行并行、復(fù)雜處理 處理的數(shù)據(jù)基本單位是處理的數(shù)據(jù)基本單位是8b、16b、32b、64b等等uMMX指令集由指令集由Intel提出,提出,1997年首次用于年首次用于P54C Pentium處理器處理器 引入新的數(shù)據(jù)類型和通用寄存器引入新的數(shù)據(jù)類型和通用寄存器
55、 四種四種64位緊縮定點(diǎn)整數(shù)類型(位緊縮定點(diǎn)整數(shù)類型(8 x 1B、4 x 1W、2 x 2W、1 x 4W) 8個(gè)個(gè)64位通用寄存器位通用寄存器MX0MX7(借用(借用8個(gè)個(gè)80位浮點(diǎn)寄存器)位浮點(diǎn)寄存器) 采用采用SIMD(Single Instruction Multi Data)技術(shù))技術(shù) 單條指令同時(shí)并行處理多個(gè)數(shù)據(jù)元素單條指令同時(shí)并行處理多個(gè)數(shù)據(jù)元素 例如,一條指令完成圖像中例如,一條指令完成圖像中8個(gè)像素的并行操作個(gè)像素的并行操作 引入飽和(引入飽和(Situration)運(yùn)算)運(yùn)算 非飽和非飽和(環(huán)繞環(huán)繞)運(yùn)算:上溢時(shí)高位數(shù)據(jù)被截去;飽和運(yùn)算:上溢時(shí)結(jié)果取最大值運(yùn)算:上溢時(shí)高位
56、數(shù)據(jù)被截去;飽和運(yùn)算:上溢時(shí)結(jié)果取最大值例如,圖像插值運(yùn)算:若例如,圖像插值運(yùn)算:若a點(diǎn)亮度點(diǎn)亮度F3H,b點(diǎn)亮度點(diǎn)亮度1DH,對,對a和和b線性插值結(jié)果為:線性插值結(jié)果為:環(huán)繞運(yùn)算:環(huán)繞運(yùn)算:(F3H+1DH)/2=10H/2=08H 插值點(diǎn)的亮度比插值點(diǎn)的亮度比1DH還低,不合理!還低,不合理!飽和運(yùn)算:飽和運(yùn)算: (F3H+1DH)/2=FFH/2=7FH 合理合理u在在Intel以后的處理器中又增加了以后的處理器中又增加了SSE、SSE2、SSE3,AVX等指令集等指令集 SSE(Streaming SIMD extensions)44第一講小結(jié)第一講小結(jié)u指令由指令由“操作碼操作碼”
57、和和“地址碼地址碼”兩部分組成。兩部分組成。u操作類型操作類型 傳送傳送 / 算術(shù)算術(shù) / 邏輯邏輯 / 移位移位 / 字符串字符串 / 轉(zhuǎn)移控制轉(zhuǎn)移控制 / 調(diào)用調(diào)用 / 中斷中斷 / 信號同步信號同步u操作數(shù)類型操作數(shù)類型 整數(shù)(帶符號、無符號、十進(jìn)制)、浮點(diǎn)數(shù)、位、位串整數(shù)(帶符號、無符號、十進(jìn)制)、浮點(diǎn)數(shù)、位、位串u地址碼的編碼要考慮:地址碼的編碼要考慮: 操作數(shù)的個(gè)數(shù)操作數(shù)的個(gè)數(shù) 尋址方式:立即尋址方式:立即 / 寄存器寄存器 / 寄間寄間 / 直接直接 / 間接間接 / 相對相對 / 基址基址 / 變址變址 / 堆棧堆棧u操作碼的編碼要考慮:操作碼的編碼要考慮: 定長操作碼定長操作
58、碼 / 擴(kuò)展操作碼擴(kuò)展操作碼u條件碼的生成條件碼的生成 四種基本標(biāo)志:四種基本標(biāo)志:NF(SF) / VF(OF) / CF / ZFu指令設(shè)計(jì)風(fēng)格:指令設(shè)計(jì)風(fēng)格: 按操作數(shù)地址指定方式來分:按操作數(shù)地址指定方式來分: 累加器型累加器型 、堆棧型、堆棧型 、通用寄存器型、通用寄存器型、load/store型型 按指令格式的復(fù)雜度來分按指令格式的復(fù)雜度來分 復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CISC、精簡指令集計(jì)算機(jī)、精簡指令集計(jì)算機(jī)RISCu典型指令系統(tǒng)舉例典型指令系統(tǒng)舉例 Pentium / PowerPC / MMX 以下通過以下通過MIPS指令系統(tǒng),介紹如何在機(jī)器語言級表示程序指令系統(tǒng),介
59、紹如何在機(jī)器語言級表示程序45 第二講第二講 程序的機(jī)器級表示程序的機(jī)器級表示主要內(nèi)容主要內(nèi)容uMIPS指令格式指令格式 R-類型類型 / I-類型類型 / J-類型類型uMIPS寄存器寄存器 長度長度 / 個(gè)數(shù)個(gè)數(shù) / 功能分配功能分配 uMIPS操作數(shù)操作數(shù) 寄存器操作數(shù)寄存器操作數(shù) / 存儲器操作數(shù)存儲器操作數(shù) / 立即數(shù)立即數(shù) / 文本文本 / 位位uMIPS指令尋址方式指令尋址方式 立即數(shù)尋址立即數(shù)尋址 / 寄存器尋址寄存器尋址 / 相對尋址相對尋址 / 偽直接尋址偽直接尋址 / 偏移尋址偏移尋址uMIPS指令類型指令類型 算術(shù)算術(shù) / 邏輯邏輯 / 數(shù)據(jù)傳送數(shù)據(jù)傳送 / 條件分支條
60、件分支 / 無條件轉(zhuǎn)移無條件轉(zhuǎn)移 uMIPS匯編語言形式匯編語言形式 操作碼的表示操作碼的表示 / 寄存器的表示寄存器的表示 / 存儲器數(shù)據(jù)表示存儲器數(shù)據(jù)表示u機(jī)器語言的解碼(反匯編)機(jī)器語言的解碼(反匯編)u高級語言、匯編語言、機(jī)器語言之間的轉(zhuǎn)換高級語言、匯編語言、機(jī)器語言之間的轉(zhuǎn)換u過程調(diào)用與堆棧過程調(diào)用與堆棧46MIPS指令格式指令格式u有三種指令格式有三種指令格式 R-Type兩個(gè)操作數(shù)和結(jié)果都在寄存器的運(yùn)算指令。如:兩個(gè)操作數(shù)和結(jié)果都在寄存器的運(yùn)算指令。如:sub rd, rs, rt I-Type 運(yùn)算指令:一個(gè)寄存器、一個(gè)立即數(shù)。如:運(yùn)算指令:一個(gè)寄存器、一個(gè)立即數(shù)。如:ori
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)保項(xiàng)目研發(fā)合作協(xié)議
- 2024臨時(shí)工合同模板
- 2024年度倉儲合同倉儲物及倉儲期限
- 2024年度軟件定制開發(fā)合同
- 2024年 衛(wèi)星發(fā)射與運(yùn)營服務(wù)合同
- 2024年商標(biāo)轉(zhuǎn)讓合同注意事項(xiàng)
- 2024年度碳排放權(quán)交易合同交易數(shù)量與交易價(jià)格
- 2(2024版)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評估合同
- 2024年度物業(yè)管理合同:住宅小區(qū)物業(yè)管理服務(wù)
- 2024年合作伙伴尋找居間合同 with 合作意向及中介費(fèi)用的規(guī)定
- 2024-2025學(xué)年上海市普陀區(qū)八年級(上)期中數(shù)學(xué)試卷
- 假期補(bǔ)課協(xié)議書
- 電子商務(wù)支付結(jié)算系統(tǒng)開發(fā)合同
- 服務(wù)質(zhì)量、保證措施
- (必練)廣東省軍隊(duì)文職(經(jīng)濟(jì)學(xué))近年考試真題試題庫(含答案)
- 含羞草天氣課件
- 2024年安全生產(chǎn)知識競賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場環(huán)境與對策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級上學(xué)期期中道德與法治試卷
- 部編版小學(xué)五年級上冊道法課程綱要(知識清單)
評論
0/150
提交評論