




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
三、計算機組織與體系結(jié)構(gòu)東軟人才實訓(xùn)中心Copyright2008ByNeusoftGroup.Allrightsreserved三、計算機組織與體系結(jié)構(gòu)東軟人才實訓(xùn)中心Copyright第三章:計算機組織與體系結(jié)構(gòu)
目標(biāo):本章旨在向?qū)W員介紹計算機的結(jié)構(gòu)與編程模型,通過本章的學(xué)習(xí),學(xué)員應(yīng)該掌握如下知識:計算機的存儲組織寄存器組數(shù)據(jù)通路編程模型學(xué)時:3.0學(xué)時教學(xué)方法:講授ppt+練習(xí)+案例分析第三章:計算機組織與體系結(jié)構(gòu)目標(biāo):學(xué)時:3.0學(xué)時3.1計算機體系結(jié)構(gòu)CPU內(nèi)部功能部件ALURegisterFilesPCIRControlUnit處理器內(nèi)部除了基本的計算單元ALU之外,還包含了:
指令寄存器IR----用來存儲要執(zhí)行的指令;
程序計數(shù)器PC----保存下一條執(zhí)行指令在內(nèi)存中的地址;
通用寄存器組----存儲待處理數(shù)據(jù);
控制單元--------控制ALU的執(zhí)行。3.1計算機體系結(jié)構(gòu)CPU內(nèi)部功能部件ALURegiste3.1計算機體系結(jié)構(gòu)圖
馮·諾伊曼體系結(jié)構(gòu)CPUALURegisterFilesPCIRControlUnit程序數(shù)據(jù)主存馮·諾伊曼體系結(jié)構(gòu),也稱普林斯頓體系結(jié)構(gòu)。在這種架構(gòu)里,程序指令和數(shù)據(jù)連續(xù)存儲,這樣程序指令和數(shù)據(jù)不能同時和處理器通信。處理器以及與存儲器之間的關(guān)系是定義系統(tǒng)特性的關(guān)鍵因素。3.1計算機體系結(jié)構(gòu)圖馮·諾伊曼體系結(jié)構(gòu)CPUALUR圖
哈佛體系結(jié)構(gòu)CPUALURegisterFilesPCIRControlUnit程序數(shù)據(jù)數(shù)據(jù)存儲器程序存儲器3.1計算機體系結(jié)構(gòu)(續(xù))哈佛體系結(jié)構(gòu)的主要特點是把指令和數(shù)據(jù)分開進(jìn)行存儲,也就是說有程序存儲器和數(shù)據(jù)存儲器兩個主要的存儲器。很多嵌入式處理器采用這種體系結(jié)構(gòu),如DSP和8051單片機。。圖哈佛體系結(jié)構(gòu)CPUALURegisterFilesPC處理器內(nèi)存地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖3.2存儲組織存儲器和處理器就通過三總線(地址、數(shù)據(jù)、控制總線)的方式進(jìn)行通信那么處理器是如何訪問存儲器的?需要知道處理器操作數(shù)據(jù)的特性地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖3.2存儲組織存儲處理器內(nèi)存地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖0xDD0xCC0xBB0xAA…0123圖
內(nèi)存邏輯模型3.2存儲組織
字長與端序的概念字長:就是CPU一次能從內(nèi)存讀取的比特數(shù)目。從處理器內(nèi)部角度來看,這與處理器內(nèi)部數(shù)據(jù)總線寬度、寄存器位數(shù)以及ALU相關(guān)。小端序:多字節(jié)數(shù)據(jù)的低位字節(jié)放在低地址存儲單元中;大端序:高位字節(jié)放在低地址存儲單元中地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖0xDD0xCC0問題:
1、在keil環(huán)境下使用C語言,若有如下定義: structdata1 { inti; charch;
doublef; }b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是多少?2、在keil環(huán)境下inti=0x1234如何存放?大端還是小端序?問題:圖3-6一個64MbytesSDRAM內(nèi)存模塊3.2存儲組織(續(xù))主存往往是用多個存儲模塊組合構(gòu)成的圖3-6一個64MbytesSDRAM內(nèi)存模塊3地址譯碼器M1M2M16…圖3-7存儲器組織框圖數(shù)據(jù)總線3.2存儲組織(續(xù))由地址譯碼器給出的片選信號圖3-7存儲器組織框圖數(shù)據(jù)總線3.2存儲組織(續(xù))由3.3處理器單元ALU圖ALU模型16位二進(jìn)制數(shù)16位二進(jìn)制數(shù)16位二進(jìn)制數(shù)被動的執(zhí)行部件-運算器處理器的計算核心是算術(shù)邏輯單元(ALU),ALU能夠?qū)崿F(xiàn)基本的算術(shù)運算和邏輯運算,以及存儲和控制操作。不同處理器的ALU功能方面有一定的差異,但基本上都是在多位加法器基礎(chǔ)上擴(kuò)充功能,使得ALU能夠進(jìn)行多種基本運算。在這個ALU模型中,除了兩個16位二進(jìn)制數(shù)輸入和一個16位二進(jìn)制數(shù)輸出外,ALU還有其它的輸入和輸出。其它的輸入是控制信號,不同的控制輸入確定了ALU當(dāng)前應(yīng)該進(jìn)行的操作,而其它的輸出則保存了完成操作的一些狀態(tài)??刂菩盘柺怯商幚砥鲀?nèi)部的控制器部件給出的,也就是說,運算器是在控制器的指揮控制下,來完成指定給它的運算處理功能,運算器只是一個被動的執(zhí)行部件。3.3處理器單元ALU圖ALU模型16位二進(jìn)制數(shù)13.3.1寄存器組
(RegisterFile)寄存器
(Register)
處理器內(nèi)部特別快速的存儲單元,用來創(chuàng)建和保存ALU操作和其它計算結(jié)果。CPU操作讀取或改寫存儲器的數(shù)據(jù)都是經(jīng)由寄存器完成不同的處理器具有不同的寄存器組-不同之處在于寄存器的數(shù)目、寄存器類型和每個寄存器的容量。-不同之處還在于寄存器的用途。通用寄存器可以用于多種目的,可以由程序員分配其功能,而專用寄存器僅限于某些特定的功能。3.3.1寄存器組(RegisterFile)寄存器3.3.2機器指令格式與ALU模型ALU匯編指令:AddR3,R1,R9機器指令:10100011000110011010圖ALU模型與機器指令助記符與操作碼、操作數(shù)二進(jìn)制位串形式的機器指令很難理解和記憶,通常會引入助記符,也就是匯編指令。匯編指令與機器指令是一對一的關(guān)系。3.3.2機器指令格式與ALU模型ALU匯編指令:Add3.3.3指令執(zhí)行過程
一條指令的執(zhí)行過程分為取指、譯碼、執(zhí)行
讀入CPU的機器指令并不是一步執(zhí)行完的,而是需要分解為更細(xì)微的操作(微操作),也就是指令譯碼。每個微操作按合適的次序驅(qū)動電子線路。例如考察指令A(yù)ddR3,R1,R9的執(zhí)行過程,至少在ALU在進(jìn)行加法操作之前,要把寄存器R9和R1中的數(shù)據(jù)送入ALU,并在ALU計算完后,將結(jié)果存到寄存器R3。3.3.3指令執(zhí)行過程一條指令的執(zhí)行過程分為取指、譯碼3.4數(shù)據(jù)通路數(shù)據(jù)通路,包括寄存器和ALU以及數(shù)據(jù)傳送線路。處理器內(nèi)部的數(shù)據(jù)通路可以有不同的結(jié)構(gòu),包括單總線、雙總線和三總線。3.4數(shù)據(jù)通路數(shù)據(jù)通路,包括寄存器和ALU以及數(shù)據(jù)傳送線路3.4.1單總線的數(shù)據(jù)通路圖
單總線的數(shù)據(jù)通路通用寄存器組PCIRMARMDRAB存儲器總線ALU由于一條總線在一個時間周期只能處理一次數(shù)據(jù)移動,ALU計算所需要的兩個操作數(shù)就需要兩個周期來移動,數(shù)據(jù)移動方面的限制會降低總體性能。3.4.1單總線的數(shù)據(jù)通路圖單總線的數(shù)據(jù)通路通用寄存器3.4.2雙總線的數(shù)據(jù)通路圖
雙總線的數(shù)據(jù)通路通用寄存器組PCIRMARMDRA存儲器總線ALU總線1總線23.4.2雙總線的數(shù)據(jù)通路圖雙總線的數(shù)據(jù)通路通用寄存器組3.5處理器編程模型處理器編程模型---名詞就是處理器內(nèi)部對匯編程序員可見的通用寄存器,cpu只能通過這些寄存器獲得存儲器以及IO中的內(nèi)容進(jìn)行各種各樣的運算處理,形成各種動作。編程模型主要從編程角度對處理器內(nèi)部結(jié)構(gòu)進(jìn)行抽象,也就是主要考慮數(shù)據(jù)的存儲,而忽略了數(shù)據(jù)的移動。指令集---動詞
描述處理器基本功能的指令集合。對于匯編程序員,需要掌握編程模型和指令集。嵌入式軟件工程師則至少應(yīng)該理解編程模型。3.5處理器編程模型處理器編程模型---名詞對于匯編程序員3.5.1微控制器編程模型A(Acc)BR0R1R2R3R4R5R6R7DPLDPHDPTR圖8051基本編程模型3.5.1微控制器編程模型A(Acc)BR0R1R2R33.5.2ARM編程模型r0r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15(PC)CPSR310NZCV圖ARM編程模型CPSR(SPSR)bits:
N(negative),Z(zero),C(carry),V
(overflow).3.5.2ARM編程模型r0r1r2r3r4r5r6r73.5.3尋址方式立即數(shù)尋址 MOVA,#20; 0x55AMOVA,#20程序存儲MOVA,#2020從代碼中獲得數(shù)據(jù)立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱為立即數(shù))。由CPU完成的任何操作都涉及到尋址,就是如何獲得數(shù)據(jù)。對操作數(shù)尋址的不同方法稱為尋址方式。尋址方式的不同在于對操作數(shù)地址信息說明的不同。3.5.3尋址方式立即數(shù)尋址0x55AMOVA,#203.5.3尋址方式(續(xù))直接尋址 MOVA,20;圖直接尋址方式指令中給出操作數(shù)所在的存儲單元的地址。0x55AMOVA,20程序存儲0x99200x993.5.3尋址方式(續(xù))圖直接尋址方式指令中給出操作數(shù)寄存器直接尋址 MOVA,R0;
圖存儲器直接尋址3.5.3尋址方式(續(xù))在寄存器直接尋址中,操作數(shù)是存放在寄存器中的,指令中給出寄存器的名稱。0xAA0x55R0AMOVA,R00xAA寄存器直接尋址圖存儲器直接尋址3.5.3尋址方式(續(xù))4、寄存器間接尋址MOVA,@R03.5.3尋址方式(續(xù))寄存器間接尋址中,操作數(shù)的地址存放在寄存器中,指令給出存放操作數(shù)地址的寄存器名。間接尋址的優(yōu)點是使得對數(shù)據(jù)的存取成為動態(tài)的。0x55AR00x400xAA0x40MOV A,@R00xAA4、寄存器間接尋址3.5.3尋址方式(續(xù))寄存器間接尋址5.基變址尋址MOVCA,@A+DPTR
3.5.3尋址方式(續(xù))這種尋址方式以16位的程序計數(shù)器PC或數(shù)據(jù)指針DPTR作為基址寄存器,以8位的累加器A作為變址寄存器。基址寄存器和變址寄存器的內(nèi)容相加形成16位的地址,該地址即為操作數(shù)的地址。0xCADPTR0x40000xAA0x400CMOVCA,@A+DPTR0xAA將A+DPTR作為地址裝載數(shù)據(jù)5.基變址尋址MOVCA,@A+DPTR3.5.33.5.4指令類型按操作數(shù)數(shù)目分類
(1)三地址指令 OperationAddr1,Addr2,Addr3; (2)兩地址指令 OperationAddr1,Addr2; (3)單地址指令 OperationAddr1;
3.5.4指令類型按操作數(shù)數(shù)目分類按操作功能劃分
(1)數(shù)據(jù)移動指令
使用數(shù)據(jù)移動指令可以將數(shù)據(jù)在機器的不同部件中進(jìn)行移動。
(2)算術(shù)和邏輯指令
算術(shù)和邏輯指令用來對寄存器和存儲器內(nèi)容進(jìn)行算術(shù)和邏輯處理。
(3)控制指令
控制指令用來改變指令的執(zhí)行次序。
(4)輸入輸出指令
輸入/輸出指令(I/O指令)用來在計算機和外圍部件之間傳輸數(shù)據(jù)。3.5.4指令類型(續(xù))按操作功能劃分3.5.4指令類型(續(xù))3.5.5堆棧操作與函數(shù)調(diào)用堆棧(stack)是函數(shù)調(diào)用機制的基礎(chǔ),對于程序員來說,這是一個比較重要的概念。從數(shù)據(jù)結(jié)構(gòu)角度來講,堆棧具有“先進(jìn)后出”(LIFO,LastInFirstOut)的特點。從數(shù)據(jù)存儲的角度來講,堆棧就是內(nèi)存的一個連續(xù)區(qū)域,在函數(shù)調(diào)用時候通常用來保存程序的返回地址。
處理器內(nèi)部有一個專用寄存器保存著棧頂?shù)刂罚Q為堆棧指針(stackpointer)。堆棧操作只能從棧頂一側(cè)訪問數(shù)據(jù)。處理器支持兩種堆棧操作,入棧和出棧。3.5.5堆棧操作與函數(shù)調(diào)用堆棧(stac嵌入式中的堆棧共生長四種情況(在入棧的時候):前遞增(又叫滿遞增)前遞減(又叫滿遞減)后遞增(又叫空遞增)后遞減(又叫空遞減)“遞增”說明堆棧由低地址向高地址生長,所以棧底內(nèi)存標(biāo)號低于棧頂內(nèi)存標(biāo)號?!斑f減”則相反?!扒啊闭f明堆棧指針SP先調(diào)整后再進(jìn)行入棧操作。“后”則先入棧,SP后調(diào)整。3.5.5堆棧操作與函數(shù)調(diào)用嵌入式中的堆棧共生長四種情況(在入棧的時候):3.5.5堆3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))3EDD堆棧指針SPPUSHRegA;//入棧7F3EDDPUSHRegA堆棧指針SP100099999810021001100099999810021001圖后遞增(空遞增)增長模式入棧操作StackRAM地址地址StackRAM(RegA=7F)(RegA=7F)
堆棧壓入數(shù)據(jù)操作只能堆棧頂部進(jìn)行。在圖中,堆棧指針SP總是指向棧頂。下一個壓入數(shù)據(jù)存放的內(nèi)存單元地址,在“壓入”數(shù)據(jù)后,SP再加1(根據(jù)壓入數(shù)據(jù)的字節(jié)數(shù)目)。這種模式稱為“后遞增增長模式”。也有另外一種模式,被稱為“前遞增增長模式”.兩種模式中,SP的操作有所不同,一個“先壓后增”,另一個“先增后壓”。Intelx86處理器是“前遞減增長模式”,8051微控制器是“前遞增增長模式”3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))3EDD堆棧指針SPPURegB=23POPRegB;//出棧RegB=7FPOPRegB圖
后遞增(空遞增)增長模式出棧操作堆棧指針SP7F3EDD10009999981003100210017F3EDD1000999998100310021001堆棧指針SP3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))RegB=23POPRegB;//出棧RegB=intfunc1(void){ return100; }voidmain(void){ func1(); …}MOVA,#100RET……MOV…………ACALL3000300050004999500130013002func1()main()Callfunc1()700070027000堆棧指針SP4999PC圖
堆棧與函數(shù)調(diào)用-后遞增堆棧3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))50007002300050007000intfunc1(void)MOVA,#100RETRegAALURegBRegCSPstack圖
簡化的計算機系統(tǒng)該計算機系統(tǒng)能執(zhí)行的指令是:POPRegX--
從棧頂“彈出”一個數(shù)據(jù),存放到數(shù)據(jù)寄存器RegX中。(其中RegX是RegA、RegB和RegC三個數(shù)據(jù)寄存器中的一個)PUSHRegX--
將寄存器RegX中的數(shù)據(jù)“壓入”堆棧中;ADD
---RegC=RegA+RegB
DEC
---RegC=RegB-RegA
MULT
---RegC=RegA*RegB考慮公式b2-4×a×c的計算:1.參數(shù)a、b、c和4按什么次序放堆棧中較好?2.用給出的指令寫出公式的計算過程。3.添加一條什么指令,能使計算過程更簡單,更有效率?練習(xí)題:
RegAALURegBRegCSPstack圖簡化練習(xí)題答案:
POPRegA ;彈出c->RegA POPRegB ;彈出a->RegB MULT ;a*c->RegC POPRegA ;彈出4->RegAPUSHRegC;a*c入棧
POPRegB ;彈出a*c->RegBMULT ;4ac>RegC
POPRegA ;彈出b->RegAPUSHRegC ;4ac入棧PUSHRegA ;b入棧POPRegB ;彈出b->RegBMULT ;b*b->RegCPOPRegA ;彈出4ac->RegAPUSHRegC ;b*b入棧POPRegB ;彈出b*b->RegBDEC ;b*b-4ac
按照b-4-a-c順序放入堆棧。(計算過程與參數(shù)在堆棧中的存放次序是相關(guān)的)增加MOV指令。練習(xí)題答案: POPRegA ;彈出c->術(shù)語縮語、術(shù)語英文全稱解釋ALUArithmeticLogicUnite算術(shù)邏輯單元IRInstructionregister指令寄存器ARMAdvancedRISCMicroprocessor高級精簡指令集處理器術(shù)語縮語、術(shù)語英文全稱解釋ALUArithmeticCopyright?2008
版權(quán)所有東軟集團(tuán)Copyright?2008版權(quán)所有東軟集團(tuán)三、計算機組織與體系結(jié)構(gòu)東軟人才實訓(xùn)中心Copyright2008ByNeusoftGroup.Allrightsreserved三、計算機組織與體系結(jié)構(gòu)東軟人才實訓(xùn)中心Copyright第三章:計算機組織與體系結(jié)構(gòu)
目標(biāo):本章旨在向?qū)W員介紹計算機的結(jié)構(gòu)與編程模型,通過本章的學(xué)習(xí),學(xué)員應(yīng)該掌握如下知識:計算機的存儲組織寄存器組數(shù)據(jù)通路編程模型學(xué)時:3.0學(xué)時教學(xué)方法:講授ppt+練習(xí)+案例分析第三章:計算機組織與體系結(jié)構(gòu)目標(biāo):學(xué)時:3.0學(xué)時3.1計算機體系結(jié)構(gòu)CPU內(nèi)部功能部件ALURegisterFilesPCIRControlUnit處理器內(nèi)部除了基本的計算單元ALU之外,還包含了:
指令寄存器IR----用來存儲要執(zhí)行的指令;
程序計數(shù)器PC----保存下一條執(zhí)行指令在內(nèi)存中的地址;
通用寄存器組----存儲待處理數(shù)據(jù);
控制單元--------控制ALU的執(zhí)行。3.1計算機體系結(jié)構(gòu)CPU內(nèi)部功能部件ALURegiste3.1計算機體系結(jié)構(gòu)圖
馮·諾伊曼體系結(jié)構(gòu)CPUALURegisterFilesPCIRControlUnit程序數(shù)據(jù)主存馮·諾伊曼體系結(jié)構(gòu),也稱普林斯頓體系結(jié)構(gòu)。在這種架構(gòu)里,程序指令和數(shù)據(jù)連續(xù)存儲,這樣程序指令和數(shù)據(jù)不能同時和處理器通信。處理器以及與存儲器之間的關(guān)系是定義系統(tǒng)特性的關(guān)鍵因素。3.1計算機體系結(jié)構(gòu)圖馮·諾伊曼體系結(jié)構(gòu)CPUALUR圖
哈佛體系結(jié)構(gòu)CPUALURegisterFilesPCIRControlUnit程序數(shù)據(jù)數(shù)據(jù)存儲器程序存儲器3.1計算機體系結(jié)構(gòu)(續(xù))哈佛體系結(jié)構(gòu)的主要特點是把指令和數(shù)據(jù)分開進(jìn)行存儲,也就是說有程序存儲器和數(shù)據(jù)存儲器兩個主要的存儲器。很多嵌入式處理器采用這種體系結(jié)構(gòu),如DSP和8051單片機。。圖哈佛體系結(jié)構(gòu)CPUALURegisterFilesPC處理器內(nèi)存地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖3.2存儲組織存儲器和處理器就通過三總線(地址、數(shù)據(jù)、控制總線)的方式進(jìn)行通信那么處理器是如何訪問存儲器的?需要知道處理器操作數(shù)據(jù)的特性地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖3.2存儲組織存儲處理器內(nèi)存地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖0xDD0xCC0xBB0xAA…0123圖
內(nèi)存邏輯模型3.2存儲組織
字長與端序的概念字長:就是CPU一次能從內(nèi)存讀取的比特數(shù)目。從處理器內(nèi)部角度來看,這與處理器內(nèi)部數(shù)據(jù)總線寬度、寄存器位數(shù)以及ALU相關(guān)。小端序:多字節(jié)數(shù)據(jù)的低位字節(jié)放在低地址存儲單元中;大端序:高位字節(jié)放在低地址存儲單元中地址數(shù)據(jù)讀寫控制圖CPU與主存典型框圖0xDD0xCC0問題:
1、在keil環(huán)境下使用C語言,若有如下定義: structdata1 { inti; charch;
doublef; }b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是多少?2、在keil環(huán)境下inti=0x1234如何存放?大端還是小端序?問題:圖3-6一個64MbytesSDRAM內(nèi)存模塊3.2存儲組織(續(xù))主存往往是用多個存儲模塊組合構(gòu)成的圖3-6一個64MbytesSDRAM內(nèi)存模塊3地址譯碼器M1M2M16…圖3-7存儲器組織框圖數(shù)據(jù)總線3.2存儲組織(續(xù))由地址譯碼器給出的片選信號圖3-7存儲器組織框圖數(shù)據(jù)總線3.2存儲組織(續(xù))由3.3處理器單元ALU圖ALU模型16位二進(jìn)制數(shù)16位二進(jìn)制數(shù)16位二進(jìn)制數(shù)被動的執(zhí)行部件-運算器處理器的計算核心是算術(shù)邏輯單元(ALU),ALU能夠?qū)崿F(xiàn)基本的算術(shù)運算和邏輯運算,以及存儲和控制操作。不同處理器的ALU功能方面有一定的差異,但基本上都是在多位加法器基礎(chǔ)上擴(kuò)充功能,使得ALU能夠進(jìn)行多種基本運算。在這個ALU模型中,除了兩個16位二進(jìn)制數(shù)輸入和一個16位二進(jìn)制數(shù)輸出外,ALU還有其它的輸入和輸出。其它的輸入是控制信號,不同的控制輸入確定了ALU當(dāng)前應(yīng)該進(jìn)行的操作,而其它的輸出則保存了完成操作的一些狀態(tài)??刂菩盘柺怯商幚砥鲀?nèi)部的控制器部件給出的,也就是說,運算器是在控制器的指揮控制下,來完成指定給它的運算處理功能,運算器只是一個被動的執(zhí)行部件。3.3處理器單元ALU圖ALU模型16位二進(jìn)制數(shù)13.3.1寄存器組
(RegisterFile)寄存器
(Register)
處理器內(nèi)部特別快速的存儲單元,用來創(chuàng)建和保存ALU操作和其它計算結(jié)果。CPU操作讀取或改寫存儲器的數(shù)據(jù)都是經(jīng)由寄存器完成不同的處理器具有不同的寄存器組-不同之處在于寄存器的數(shù)目、寄存器類型和每個寄存器的容量。-不同之處還在于寄存器的用途。通用寄存器可以用于多種目的,可以由程序員分配其功能,而專用寄存器僅限于某些特定的功能。3.3.1寄存器組(RegisterFile)寄存器3.3.2機器指令格式與ALU模型ALU匯編指令:AddR3,R1,R9機器指令:10100011000110011010圖ALU模型與機器指令助記符與操作碼、操作數(shù)二進(jìn)制位串形式的機器指令很難理解和記憶,通常會引入助記符,也就是匯編指令。匯編指令與機器指令是一對一的關(guān)系。3.3.2機器指令格式與ALU模型ALU匯編指令:Add3.3.3指令執(zhí)行過程
一條指令的執(zhí)行過程分為取指、譯碼、執(zhí)行
讀入CPU的機器指令并不是一步執(zhí)行完的,而是需要分解為更細(xì)微的操作(微操作),也就是指令譯碼。每個微操作按合適的次序驅(qū)動電子線路。例如考察指令A(yù)ddR3,R1,R9的執(zhí)行過程,至少在ALU在進(jìn)行加法操作之前,要把寄存器R9和R1中的數(shù)據(jù)送入ALU,并在ALU計算完后,將結(jié)果存到寄存器R3。3.3.3指令執(zhí)行過程一條指令的執(zhí)行過程分為取指、譯碼3.4數(shù)據(jù)通路數(shù)據(jù)通路,包括寄存器和ALU以及數(shù)據(jù)傳送線路。處理器內(nèi)部的數(shù)據(jù)通路可以有不同的結(jié)構(gòu),包括單總線、雙總線和三總線。3.4數(shù)據(jù)通路數(shù)據(jù)通路,包括寄存器和ALU以及數(shù)據(jù)傳送線路3.4.1單總線的數(shù)據(jù)通路圖
單總線的數(shù)據(jù)通路通用寄存器組PCIRMARMDRAB存儲器總線ALU由于一條總線在一個時間周期只能處理一次數(shù)據(jù)移動,ALU計算所需要的兩個操作數(shù)就需要兩個周期來移動,數(shù)據(jù)移動方面的限制會降低總體性能。3.4.1單總線的數(shù)據(jù)通路圖單總線的數(shù)據(jù)通路通用寄存器3.4.2雙總線的數(shù)據(jù)通路圖
雙總線的數(shù)據(jù)通路通用寄存器組PCIRMARMDRA存儲器總線ALU總線1總線23.4.2雙總線的數(shù)據(jù)通路圖雙總線的數(shù)據(jù)通路通用寄存器組3.5處理器編程模型處理器編程模型---名詞就是處理器內(nèi)部對匯編程序員可見的通用寄存器,cpu只能通過這些寄存器獲得存儲器以及IO中的內(nèi)容進(jìn)行各種各樣的運算處理,形成各種動作。編程模型主要從編程角度對處理器內(nèi)部結(jié)構(gòu)進(jìn)行抽象,也就是主要考慮數(shù)據(jù)的存儲,而忽略了數(shù)據(jù)的移動。指令集---動詞
描述處理器基本功能的指令集合。對于匯編程序員,需要掌握編程模型和指令集。嵌入式軟件工程師則至少應(yīng)該理解編程模型。3.5處理器編程模型處理器編程模型---名詞對于匯編程序員3.5.1微控制器編程模型A(Acc)BR0R1R2R3R4R5R6R7DPLDPHDPTR圖8051基本編程模型3.5.1微控制器編程模型A(Acc)BR0R1R2R33.5.2ARM編程模型r0r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15(PC)CPSR310NZCV圖ARM編程模型CPSR(SPSR)bits:
N(negative),Z(zero),C(carry),V
(overflow).3.5.2ARM編程模型r0r1r2r3r4r5r6r73.5.3尋址方式立即數(shù)尋址 MOVA,#20; 0x55AMOVA,#20程序存儲MOVA,#2020從代碼中獲得數(shù)據(jù)立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱為立即數(shù))。由CPU完成的任何操作都涉及到尋址,就是如何獲得數(shù)據(jù)。對操作數(shù)尋址的不同方法稱為尋址方式。尋址方式的不同在于對操作數(shù)地址信息說明的不同。3.5.3尋址方式立即數(shù)尋址0x55AMOVA,#203.5.3尋址方式(續(xù))直接尋址 MOVA,20;圖直接尋址方式指令中給出操作數(shù)所在的存儲單元的地址。0x55AMOVA,20程序存儲0x99200x993.5.3尋址方式(續(xù))圖直接尋址方式指令中給出操作數(shù)寄存器直接尋址 MOVA,R0;
圖存儲器直接尋址3.5.3尋址方式(續(xù))在寄存器直接尋址中,操作數(shù)是存放在寄存器中的,指令中給出寄存器的名稱。0xAA0x55R0AMOVA,R00xAA寄存器直接尋址圖存儲器直接尋址3.5.3尋址方式(續(xù))4、寄存器間接尋址MOVA,@R03.5.3尋址方式(續(xù))寄存器間接尋址中,操作數(shù)的地址存放在寄存器中,指令給出存放操作數(shù)地址的寄存器名。間接尋址的優(yōu)點是使得對數(shù)據(jù)的存取成為動態(tài)的。0x55AR00x400xAA0x40MOV A,@R00xAA4、寄存器間接尋址3.5.3尋址方式(續(xù))寄存器間接尋址5.基變址尋址MOVCA,@A+DPTR
3.5.3尋址方式(續(xù))這種尋址方式以16位的程序計數(shù)器PC或數(shù)據(jù)指針DPTR作為基址寄存器,以8位的累加器A作為變址寄存器。基址寄存器和變址寄存器的內(nèi)容相加形成16位的地址,該地址即為操作數(shù)的地址。0xCADPTR0x40000xAA0x400CMOVCA,@A+DPTR0xAA將A+DPTR作為地址裝載數(shù)據(jù)5.基變址尋址MOVCA,@A+DPTR3.5.33.5.4指令類型按操作數(shù)數(shù)目分類
(1)三地址指令 OperationAddr1,Addr2,Addr3; (2)兩地址指令 OperationAddr1,Addr2; (3)單地址指令 OperationAddr1;
3.5.4指令類型按操作數(shù)數(shù)目分類按操作功能劃分
(1)數(shù)據(jù)移動指令
使用數(shù)據(jù)移動指令可以將數(shù)據(jù)在機器的不同部件中進(jìn)行移動。
(2)算術(shù)和邏輯指令
算術(shù)和邏輯指令用來對寄存器和存儲器內(nèi)容進(jìn)行算術(shù)和邏輯處理。
(3)控制指令
控制指令用來改變指令的執(zhí)行次序。
(4)輸入輸出指令
輸入/輸出指令(I/O指令)用來在計算機和外圍部件之間傳輸數(shù)據(jù)。3.5.4指令類型(續(xù))按操作功能劃分3.5.4指令類型(續(xù))3.5.5堆棧操作與函數(shù)調(diào)用堆棧(stack)是函數(shù)調(diào)用機制的基礎(chǔ),對于程序員來說,這是一個比較重要的概念。從數(shù)據(jù)結(jié)構(gòu)角度來講,堆棧具有“先進(jìn)后出”(LIFO,LastInFirstOut)的特點。從數(shù)據(jù)存儲的角度來講,堆棧就是內(nèi)存的一個連續(xù)區(qū)域,在函數(shù)調(diào)用時候通常用來保存程序的返回地址。
處理器內(nèi)部有一個專用寄存器保存著棧頂?shù)刂罚Q為堆棧指針(stackpointer)。堆棧操作只能從棧頂一側(cè)訪問數(shù)據(jù)。處理器支持兩種堆棧操作,入棧和出棧。3.5.5堆棧操作與函數(shù)調(diào)用堆棧(stac嵌入式中的堆棧共生長四種情況(在入棧的時候):前遞增(又叫滿遞增)前遞減(又叫滿遞減)后遞增(又叫空遞增)后遞減(又叫空遞減)“遞增”說明堆棧由低地址向高地址生長,所以棧底內(nèi)存標(biāo)號低于棧頂內(nèi)存標(biāo)號?!斑f減”則相反?!扒啊闭f明堆棧指針SP先調(diào)整后再進(jìn)行入棧操作?!昂蟆眲t先入棧,SP后調(diào)整。3.5.5堆棧操作與函數(shù)調(diào)用嵌入式中的堆棧共生長四種情況(在入棧的時候):3.5.5堆3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))3EDD堆棧指針SPPUSHRegA;//入棧7F3EDDPUSHRegA堆棧指針SP100099999810021001100099999810021001圖后遞增(空遞增)增長模式入棧操作StackRAM地址地址StackRAM(RegA=7F)(RegA=7F)
堆棧壓入數(shù)據(jù)操作只能堆棧頂部進(jìn)行。在圖中,堆棧指針SP總是指向棧頂。下一個壓入數(shù)據(jù)存放的內(nèi)存單元地址,在“壓入”數(shù)據(jù)后,SP再加1(根據(jù)壓入數(shù)據(jù)的字節(jié)數(shù)目)。這種模式稱為“后遞增增長模式”。也有另外一種模式,被稱為“前遞增增長模式”.兩種模式中,SP的操作有所不同,一個“先壓后增”,另一個“先增后壓”。Intelx86處理器是“前遞減增長模式”,8051微控制器是“前遞增增長模式”3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))3EDD堆棧指針SPPURegB=23POPRegB;//出棧RegB=7FPOPRegB圖
后遞增(空遞增)增長模式出棧操作堆棧指針SP7F3EDD10009999981003100210017F3EDD1000999998100310021001堆棧指針SP3.5.5堆棧操作與函數(shù)調(diào)用(續(xù))RegB=23POPRegB;//出棧RegB=intfunc1(void){ return100; }voidmain(void){ func1(); …}MOVA,#100RET……MOV…
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度電子商務(wù)平臺員工勞務(wù)外包及運營合同
- 二零二五年度長租公寓退租服務(wù)保障協(xié)議
- 二零二五年度餐飲連鎖生意合作合同范本
- 房產(chǎn)證抵押貸款合同抵押物管理協(xié)議(2025年度)
- 二零二五年度精裝高層購房定金合同
- 2025年度私人宅基地買賣轉(zhuǎn)讓協(xié)議書及配套設(shè)施建設(shè)補充協(xié)議
- 2025年度租房押金監(jiān)管及退還標(biāo)準(zhǔn)合同
- 二零二五年度文化產(chǎn)業(yè)投資入股協(xié)議
- 2025年黑龍江貨運從業(yè)資格證的試題
- 培訓(xùn)班教師發(fā)言稿
- 《思想道德修養(yǎng)與法律基礎(chǔ)》說課(獲獎版)課件
- 固體物理21固體的結(jié)合課件
- 幼兒園中班居家安全教案
- 水平定向鉆施工規(guī)范方案
- 2022年東北大學(xué)現(xiàn)代控制理論試題及答案
- 教學(xué)樓畢業(yè)設(shè)計資料
- 國網(wǎng)直流電源系統(tǒng)技術(shù)監(jiān)督規(guī)定
- 香港雇傭合同協(xié)議書
- 建筑工程材料見證取樣及送檢培訓(xùn)講義(PPT)
- 部編版四年級語文下冊第二單元《習(xí)作:我的奇思妙想》課件PPT
- PS零基礎(chǔ)入門學(xué)習(xí)教程(適合純小白)PPT課件
評論
0/150
提交評論