《計(jì)算機(jī)硬件基礎(chǔ)-4-中央處理器(對(duì)應(yīng)教材第3章).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)硬件基礎(chǔ)-4-中央處理器(對(duì)應(yīng)教材第3章).ppt(44頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1,4 中央處理器,2,主要內(nèi)容,微處理器的一般結(jié)構(gòu) 8086微處理器的組成、引腳功能 8086的內(nèi)部寄存器和標(biāo)志位 8086的存儲(chǔ)器組織,3,4.1 微處理器的一般結(jié)構(gòu),運(yùn)算器 算術(shù)邏輯運(yùn)算,由加法器和 (ALU) 一些輔助邏輯電路組成 指令流控制 控制器 時(shí)序控制,產(chǎn)生節(jié)拍定時(shí)信號(hào) 指令譯碼和操作控制 寄存器組 存放臨時(shí)數(shù)據(jù)、運(yùn)算的中 間結(jié)果、運(yùn)算特征、操作數(shù)地址,,,,,性能:8位16位 32位 64位,主要部件,4,4.2 8086微處理器,主要內(nèi)容: 8086外部引線及功能; 8086的內(nèi)部結(jié)構(gòu)和特點(diǎn); 8086的工作時(shí)序。,5,,6,
2、8086的硬件特性,16位微處理器,CMOS型,40引腳DIP封裝 16位數(shù)據(jù)總線,20位地址總線 功耗:5V,360mA(低功耗型80C86僅需10mA) 輸入特性:輸入電流0.01mA 邏輯0:0.8V 邏輯1:2.0V 輸出特性: 邏輯0:0.45V,最大2.0mA 邏輯1:2.4V,最大-0.4mA 輸出引腳負(fù)載能力: 74HC、74ALS、74AS、74F負(fù)載10個(gè) 74LS負(fù)載5個(gè) 74、74S負(fù)載1個(gè),7,,一、指令流水線,,,取指令,,指令譯碼,,取操作數(shù),,執(zhí)行指令,,存放結(jié)果,,,,,CPU執(zhí)行一條指令的過程類似于工廠生產(chǎn)流水線,被分 解為多個(gè)小的步驟,稱為指令流水線。,
3、原料,調(diào)度分配,生產(chǎn)線,成品,倉庫,出廠,,,,,,數(shù)據(jù)和程序指令,控制器的調(diào)度分配,ALU等 功能部件,處理后的數(shù)據(jù),存儲(chǔ)器,輸出,,,8,指令流水線,指令流水線有兩種運(yùn)作方式: 串行方式: 取指令和執(zhí)行指令在不同的時(shí)刻按順序執(zhí)行。 并行方式: 取指令和執(zhí)行指令可同時(shí)執(zhí)行,需要有能并行工作的硬件的支持。,9,串行工作方式,8086以前的CPU采用串行工作方式,,,,取指令1,執(zhí)行1,取指令2,,執(zhí)行2,,,CPU,BUS,忙 碌,忙 碌,,取指令3,,執(zhí)行3,,忙 碌,,,,空閑,空閑,空閑,,,,,,,,t1,t0,t2,t3,t4,t5,6個(gè)周期執(zhí)行了3條指令,10,并行工作方式
4、,8086CPU采用并行工作方式,,,,,取指令1,取指令2,,,取指令3,取指令4,執(zhí)行1,執(zhí)行2,,執(zhí)行3,BUS,,執(zhí)行4,CPU,,,,,,,,t1,t0,t2,t3,t4,t5,,取指令5,,執(zhí)行5,6個(gè)周期執(zhí)行了5條指令,11,并行操作的前提,取指令部件和指令執(zhí)行部件要能夠并行工作; 各部件執(zhí)行時(shí)間基本相同,否則需再細(xì)分; 取指令部件取出的指令要能暫存在CPU內(nèi)部某個(gè)地方; 指令執(zhí)行部件在需要時(shí)總能立即獲得暫存的指令; 需要解決轉(zhuǎn)移指令問題。,12,8086 CPU的特點(diǎn),采用并行流水線工作方式: 通過設(shè)置指令預(yù)取隊(duì)列(IPQ)實(shí)現(xiàn) 對(duì)內(nèi)存空間實(shí)行分段管理: 將內(nèi)存分段并設(shè)置地址
5、段寄存器,以實(shí)現(xiàn)對(duì)1MB空間的尋址。 支持多處理器系統(tǒng):8087 FPU (Floating Point Unit),執(zhí)行部件,,,取指部件,,,,,,,13,二、8086CPU的引線及功能,引腳定義的方法可大致分為: 每個(gè)引腳只傳送一種信息(如RD) 電平的高低代表不同的含義(如M/IO) 在不同模式下有不同的名稱和定義(如WR/LOCK) 分時(shí)復(fù)用引腳(如AD15AD0) 引腳的輸入、輸出分別傳送不同的信息(如RQ/GT0),,,,,,,14,主要引線,地址總線、數(shù)據(jù)總線: AD15AD0:三態(tài) (高、低、高阻) 地址/數(shù)據(jù)復(fù)用引腳。ALE=1時(shí)作為地址線A16A0,ALE=0時(shí)作為數(shù)據(jù)線
6、D16D0。 傳送地址時(shí)為輸出,傳送數(shù)據(jù)時(shí)為雙向。 A19-A16/S6-S3:輸出,三態(tài) 地址/狀態(tài)復(fù)用引腳。ALE=1時(shí)作為地址線A19A16,ALE=0時(shí)作為控制信號(hào)。,15,主要引線,控制信號(hào): WR:輸出,三態(tài) 寫選通信號(hào),表示CPU正在寫數(shù)據(jù)到MEM或I/O設(shè)備。 RD:輸出,三態(tài) 讀信號(hào),表示CPU正在從總線上讀來自于MEM或I/O設(shè)備的數(shù)據(jù)。 M/IO:輸出,三態(tài) 區(qū)分是讀寫存儲(chǔ)器還是讀寫I/O端口(即地址總線上的地址是存儲(chǔ)器地址還是I/O端口地址)。,,,,16,主要引線,DEN:輸出,三態(tài) 數(shù)據(jù)總線允許信號(hào)。用來打開外部數(shù)據(jù)總線緩沖器。 DT/R:輸出,三態(tài) 表明CPU正在
7、傳送還是接收數(shù)據(jù),用來作為外部數(shù)據(jù)總線緩沖器的方向控制; ALE:輸出 地址鎖存允許信號(hào),表示地址/數(shù)據(jù)總線上傳輸?shù)氖堑刂沸盘?hào)。,,以上三個(gè)信號(hào)的用法見下頁圖,17,主要引線,RESET:輸入 復(fù)位信號(hào),保持4個(gè)以上時(shí)鐘周期的高電平時(shí)將引起CPU進(jìn)入復(fù)位過程(中斷允許標(biāo)志位(IF)清0,并從存儲(chǔ)單元FFFF0H開始執(zhí)行指令); BHE/S7:輸出 高8位數(shù)據(jù)總線允許。在讀/寫操作期間允許高8位數(shù)據(jù)總線D16D8有效(即讀/寫數(shù)據(jù)的高8位)。 READY:輸入 準(zhǔn)備就緒。用于與存儲(chǔ)器或I/O接口的同步。 =0時(shí)CPU進(jìn)入等待狀態(tài)(插入1個(gè)或多個(gè)等待周期)。,,18,三、8086 CPU的內(nèi)部結(jié)構(gòu)
8、,8086內(nèi)部由兩部分組成: 執(zhí)行單元(EU) 總線接口單元(BIU),,19,執(zhí)行單元,功能:執(zhí)行指令,具體操作如下 從IPQ中取指令代碼 譯碼 完成指定的操作 結(jié)果保存到目的操作數(shù) 運(yùn)算特征保存在標(biāo)志寄存器FLAGS(僅對(duì)影響標(biāo)志的指令),,,,,20,總線接口單元,功能: 從內(nèi)存中取指令到指令預(yù)取隊(duì)列IPQ; 負(fù)責(zé)與內(nèi)存或I/O接口之間的數(shù)據(jù)傳送; 在執(zhí)行轉(zhuǎn)移指令時(shí),BIU將清除IPQ,然后從轉(zhuǎn)移的目的地址處開始取指令并重新填充IPQ。,21,8086結(jié)構(gòu)特點(diǎn)小結(jié),有EU和BIU兩個(gè)獨(dú)立的、同時(shí)運(yùn)行的部件 二者通過IPQ構(gòu)成一個(gè)兩工位流水線 指令被EU和BIU
9、按流水線方式處理: 提高了CPU的運(yùn)行速度; 提高了CPU的執(zhí)行效率; 降低了對(duì)存儲(chǔ)器存取速度的要求。,22,四、8086的工作時(shí)序,工作時(shí)序分為很多小的時(shí)間片: 時(shí)鐘周期 一個(gè)時(shí)鐘脈沖所持續(xù)的時(shí)間。時(shí)鐘周期越短,CPU執(zhí)行速度越快。 總線周期 通過總線對(duì)存儲(chǔ)器或I/O接口進(jìn)行一次訪問所需要的時(shí)間。一般包括4個(gè)時(shí)鐘周期。,23,總線周期中各時(shí)鐘周期的操作,T1周期 CPU向存儲(chǔ)器或I/O發(fā)送地址 CPU向地址/數(shù)據(jù)分離器(地址鎖存器)發(fā)送ALE信號(hào) T2周期 給存儲(chǔ)器或I/O發(fā)送寫入的數(shù)據(jù) 測(cè)試READY引腳狀態(tài),以決定是否插入等待周期 發(fā)出RD或WR信號(hào) T3周期 等待存儲(chǔ)器或I/O存取
10、數(shù)據(jù)完成 使數(shù)據(jù)在CPU與存儲(chǔ)器或I/O之間傳輸 T4周期 寫入數(shù)據(jù),讀/寫總線周期的信號(hào)波形見下頁圖。,24,數(shù)據(jù)寫入存儲(chǔ)器時(shí)的總線操作寫總線周期,,,由ALE信號(hào)將地址鎖存到地址鎖存器,,DEN=0并且DT/R=1時(shí)打開總線緩沖器,將其放到系統(tǒng)數(shù)據(jù)總線上,,,,此信號(hào)與M/IO信號(hào)共同構(gòu)成存儲(chǔ)器寫控制信號(hào),將數(shù)據(jù)寫入存儲(chǔ)器,,25,數(shù)據(jù)從存儲(chǔ)器讀出的總線操作讀總線周期,,,DEN=0并且DT/R=0時(shí)打開總線緩沖器,將其放到CPU總線上,供CPU讀入,,,,,較完整的讀總線周期,,此信號(hào)與M/IO信號(hào)共同構(gòu)成存儲(chǔ)器讀控制信號(hào),,由ALE信號(hào)將地址鎖存到地址鎖存器,26,4.3 8086內(nèi)部
11、寄存器組,8086寄存器組又稱為8086的程序設(shè)計(jì)模型 它是程序設(shè)計(jì)中惟一可見的CPU部件 它是系統(tǒng)程序設(shè)計(jì)員的操作對(duì)象 含14個(gè)16位寄存器,按功能可分為三類: 通用寄存器,8個(gè) 段寄存器,4個(gè) 控制寄存器,2個(gè),,27,8086寄存器概貌,,,,,SP,IP,FLAGS,,AH,AL,BH,BL,CH,CL,DH,DL,AX BX CX DX,BP,SI,DI,CS,DS,ES,SS,通用寄存器,控制寄存器,段寄存器,28,一、通用寄存器,數(shù)據(jù)寄存器(AX,BX,CX,DX) 地址指針寄存器(SP,BP) 變址寄存器(SI,DI),,29,數(shù)據(jù)寄存器,用途:存放臨時(shí)數(shù)
12、據(jù)和存放運(yùn)算操作數(shù)。(例) 每個(gè)均為16位,但又可分為2個(gè)8位寄存器,即: AX AH,AL BX BH,BL CX CH,CL DX DH,DL,,,,,例如:若(AX)1234H, 則(AH)12H, (AL)34H,30,數(shù)據(jù)寄存器特有的習(xí)慣用法,AX:累加器 所有I/O指令都通過AX(AL)與接口傳送信息; 中間運(yùn)算結(jié)果也多放于AX(AL)中; 乘除法指令的一個(gè)操作數(shù)必須在AX(AL)中。 BX:基址寄存器 在間接尋址中用于存放操作數(shù)的基地址。 CX:計(jì)數(shù)寄存器 用于在循環(huán)指令或串操作指令中存放計(jì)數(shù)值。 DX:數(shù)據(jù)寄存器 在間接尋址的I/O指令中存放I/O端口地址; 在
13、32位乘除法運(yùn)算時(shí),存放高16位數(shù)。,31,地址指針寄存器,SP:堆棧指針寄存器 其內(nèi)容為堆棧棧頂?shù)钠频刂罚?任何堆棧操作后,SP都會(huì)自動(dòng)增/減量。 BP:基址指針寄存器 在間接尋址中用于存放操作數(shù)的基地址; 常用于訪問存放在堆棧中的數(shù)據(jù)。,32,BX與BP在應(yīng)用上的區(qū)別,作為通用寄存器,二者均可用于存放數(shù)據(jù); 作為基址寄存器,默認(rèn)情況下: 用BX作為指針?biāo)L問的數(shù)據(jù)在數(shù)據(jù)段(DS段); 用BP作為指針?biāo)L問的數(shù)據(jù)在堆棧段(SS段)。,注:間接尋址時(shí) 僅BX、BP、SI、DI可用于存儲(chǔ)器尋址; 僅DX可用于I/O尋址。,33,變址寄存器,SI:源變址寄存器,用于訪問源操作數(shù) DI:目
14、標(biāo)變址寄存器,用于訪問目的操作數(shù) 常用于操作數(shù)的間接尋址或變址尋址。 在串操作指令中,SI存放源操作數(shù)的偏移地址,而DI存放目標(biāo)操作數(shù)的偏移地址。,34,二、段寄存器,用于存放邏輯段的段基地址(簡(jiǎn)稱段地址) CS:代碼段寄存器。代碼段存放指令代碼 DS:數(shù)據(jù)段寄存器 ES:附加段寄存器 SS:堆棧段寄存器:指示堆棧區(qū)域的位置,,這兩個(gè)段存放操作數(shù),,堆棧段,SS,,,數(shù)據(jù)段,DS/ES,,,代碼段,CS,,,,,35,三、控制寄存器,IP:指令指針寄存器 其內(nèi)容為下一條要執(zhí)行的指令的偏移地址。 FLAGS:標(biāo)志寄存器 存放指令執(zhí)行結(jié)果的特征: 有些指令(如算術(shù)指令)要改變FLAGS的內(nèi)容(影
15、響FLAGS); 有些指令對(duì)FLAGS無影響。 6個(gè)狀態(tài)標(biāo)志位(CF,SF,AF,PF,OF,ZF) 3個(gè)控制標(biāo)志位(IF,TF,DF),P71例,,,,,O,D,I,T,S,Z,,A,,P,,C,15,0,2,4,6,7,8,9,10,11,FLAGS,36,4.4 8086的存儲(chǔ)器組織,8086可訪問1MB的存儲(chǔ)空間(為什么?) 哪個(gè)寄存器能夠放得下20位的地址? 用分段的方法解決。 段是存儲(chǔ)器中的一塊區(qū)域 段起始于存儲(chǔ)器內(nèi)16字節(jié)整倍數(shù)的邊界處。 段首地址的最低4位一定為0 用段和偏移的組合訪問存儲(chǔ)單元 每個(gè)段最大為64KB,最小為16B(為什么?) 所有存儲(chǔ)單元的地址都由段地址加偏移地
16、址組成 段地址被裝入段寄存器中以供尋址使用 偏移地址用于在64KB存儲(chǔ)器段內(nèi)選擇任一單元,37,,段和偏移,設(shè)段起始地址=60000H 段地址 偏移地址 0FFFFH,,,,,,,,6A000H,12H,60000H,6 0 0 0,,段寄存器,,,偏移地址A000H,, ,,38,物理地址和邏輯地址,物理地址: 存儲(chǔ)單元的硬件地址 物理地址=段地址16 (或段地址左移4位)+偏移地址 邏輯地址: 段和偏移形式的地址 邏輯地址用于匯編語言程序設(shè)計(jì) 以下地址都是邏輯地址的例子: 2500H:0100H 段地址A000H 偏移地址0001H,39,例1:,已知CS=1055H,DS=250AH
17、 ES=2EF0H,SS=8FF0H 數(shù)據(jù)段中某操作數(shù)偏移地址=0204H 各段首地址=? 畫出各段在內(nèi)存中的分布 該操作數(shù)的物理地址=? 這個(gè)例子說明: 段與段可以不連續(xù) 段之間可以重疊,,,,10550H,250A0H,2EF00H,8FF00H,,,,,,,,DS段,ES段,,,,,,,,,,,SS段,CS段,,40,默認(rèn)段和偏移寄存器,8086規(guī)定了訪問存儲(chǔ)器段的規(guī)則: 此規(guī)則定義了段地址寄存器和偏移地址寄存器的組合方式,其默認(rèn)規(guī)則如下表:,41,例2:,設(shè)當(dāng)前執(zhí)行的程序中某條指令的物理地址為5A1F6H,則程序所在的段的段地址=?當(dāng)前CS的內(nèi)容為多少? 解:(有多個(gè)解,求出任意
18、一個(gè)即可) 5A1F6H=5A10H10H+00F6H 所以,段地址=5A10H,CS的內(nèi)容為5A10H 想一想,還有哪些解?,思考題:設(shè)當(dāng)前數(shù)據(jù)段位于存儲(chǔ)器的A8000H到B7FFFH的地址空間, 問DS的內(nèi)容應(yīng)是什么才能訪問該數(shù)據(jù)段的所有存儲(chǔ)單元?,42,堆棧及堆棧段的使用,堆棧:內(nèi)存中一個(gè)特殊區(qū)域,用于存放需要保護(hù)的數(shù)據(jù)。 堆棧按后進(jìn)先出方式工作 堆棧通過SS(段地址)和SP(偏移地址)來訪問堆棧指針 堆棧的數(shù)據(jù)壓入方向是從高地址到低地址,彈出方向則相反 (堆棧指針的變化舉例) 常用于 響應(yīng)中斷 子程序調(diào)用 參數(shù)傳遞,43,,例3:,若已知(SS)=1000H (SP)=2000H 則堆棧段的段起始地址= ? 棧頂?shù)刂?? 若該段最后一個(gè)單元地址為10100H 則棧底單元的偏移地址=?,,,,,,,,段起始,,,,,,棧底,棧頂,,堆 棧 段,,,,,, ,44,作業(yè):,教材:3.1-3.11,謝謝大家!,