8086/8088微處理器的功能結構
1.8088 與 8086 的主要區別
8088 與 8086 同屬於第三代 16 位的微處理器。這兩款 CPU 的硬件結構沒有太大的區別,二者的主要區別是在數據總線寬度,8086 的數據總線寬度為 16 位,而 8088 的數據總線寬度為 8 位。在內部結構上,兩款微處理器都有指令隊列,8086 的指令就緒隊列長度為 6 字節,而 8088 的指令就緒隊列長度為4 字節。
2.8088 的功能結構
8088 微處理器包含兩大功能部件,即執行單元(Execution Unit,EU)和總線接口單元(Bus Interface Unit,BIU)。
執行單元的主要功能是譯碼分析指令,執行指令,暫存中間運算結果並保留結果特征。
執行單元包括 EU 控制器、算術邏輯運算單元 ALU、通用寄存器組 AX、BX、CX、DX、SP、BP、DI、SI,專用寄存器、狀態標志寄存器(FLAGS)等部件,這些部件的寬度都是 16 位。
-
執行單元的操作過程:
執行單元通過 EU 控制電路從指令隊列中取出指令代碼,並對指令進行譯碼形成各種操作控制信號,控制 ALU 完成算術或邏輯運算,並將運算結果的特征保存在標志寄存器 FLAGS 中;控制其它各部件完成指令所規定的操作。如果指令隊列為空,EU 就等待。
總線接口單元負責 CPU 與內存或輸入/輸出接口的信息傳送,包括取指令、取操作數、保存運算結果
總線接口單元包括指令隊列、地址加法器、段寄存器、指令指針寄存器和總線控制邏輯。
-
總線單元的操作過程
當 EU從指令隊列中取走指令,指令隊列出現兩個或兩個以上的字節空間,且 EU 未向 BIU 申請讀/寫存儲器操作數時,BIU 就順序地預取后續指令的代碼,並填入指令隊列中。在 EU 執行指令過程中,BIU負責從指定的內存單元或外設讀取 EU 需要的數據,並負責將 EU 運算結果存儲到存儲器。當 EU 執行跳轉指令時,BIU 就使指令隊列復位(指令隊列清空),並立即從新地址取出指令傳送給 EU 去執行,然后再讀取后續的指令序列填滿指令隊列。
3. 指令流水線
在 8086/8088CPU 中,EU 和 BIU 兩部分按流水線方式工作。EU 從 BIU 的指令隊列中取指令並
執行指令。在 EU 執行指令期間,BIU 可以取指令放在指令隊列中。EU 執行指令和 BIU 取指令同時進行,節省了 CPU 訪問內存的時間,加快了程序的運行速度。
8086/8088CPU 通過采用指令流水線技術,執行單元和總線接口單元與指令隊列協同工作,實現指令的並行執行,提高了 CPU 的利用率,同時也降低了 CPU 對存儲器存取速度的要求。
8088CPU的引腳功能
1.最小模式
用於由8088單一微處理器構成的小系統。在這種方式下,由8088CPU直接產生小系統所需要的全部控制信號。
2.最大模式
用於實現多處理機系統,系統控制總線由8088和總線控制器8288共同構成。在這種方式下,8088CPU不直接提供用於存儲器或I/O讀寫的讀寫命令等控制信號,而是將當前要執行的傳送操作類型編碼為3個狀態位輸出,由總線控制器8288對狀態信號進行譯碼產生相應控制信號。
3.8088 引腳定義
這張是8088最大模式和最小模式的合圖。
下面是最大模式和最小模式一樣的引腳含義:
- AD7~AD0:8088 地址/數據分時復用總線(address/data bus),雙向,三態。
根據不同時鍾周期的要求,決定當前是傳送要訪問的存儲單元或I/O端口的低16位地址,還是傳送16位數據,或是處於高阻狀態。
- A15~A8:8 位地址信號,輸出,三態。在整個總線周期內提供存儲器高 8 位地址。
- A19/S6~A16/S3:分時復用地址/狀態總線(address/status bus),輸出,三態。提供地址信號A19~A16 (20位地址總線的高4位地址 ) 及狀態位 S6~S3。
S6=0,表示S6~S3當前表示的是狀態位 ,S6=1,則表示當前表示的是地址
S5指示當前中斷允許標志IF的狀態。
S4,S3的代碼組合用來指明當前正在使用的段寄存器。S4,S3的代碼組合及對應段寄存器的情況。
S4S3 = 00->ES; 01->SS; 10->CS; 11->DS
-
INTR: 中斷請求(interrupt request)信號,輸入,用來申請一個硬件中斷。
當 IF=1 時,若 INTR 保持高電平,則 8088 在當前指令執行完畢后就進入中斷響應周期(INTA ̅̅̅̅̅̅̅變為有效)。
-
NMI: 非屏蔽中斷(non-maskable interrupt)輸入信號。與 INTR 信號類似,但 NMI 中斷不必檢查 IF 標志位是否為 1。
-
RD ̅̅̅̅: 讀信號,輸出,三態。當它為低電平時,CPU 通過數據總線接收來自存儲器或 I/O設備的數據。
-
READY:准備就緒信號,輸入,高電平有效。 當READY信號高電平有效時,表示CPU要訪問的存儲器或I/O端口已經作好了輸入/輸出數據的准備工作 。
-
TEST:等待測試控制信號,輸入,低電平有效,CPU進入等待狀態。
信號用來支持構成多處理器系統,實現8086CPU與協處理器之間同步協調的功能,只有當CPU執行WAIT指令時才使用。
-
RESET:復位信號,輸入,高電平有效。
RESET信號有效時,CPU立即結束現行操作,處於復位狀態,初始化所有的內部寄存器為0000H(包括DS、SS、ES、IP、FLAGS和其余寄存器),並把指令隊列置空,注意CS代碼段寄存器置為FFFFH。復位后各內部寄存器的狀態,當RESET信號由高電平變為低電平時,CPU從FFFF0H地址開始重新啟動執行程序。
-
CLK:時鍾信號,輸入。CLK為CPU提供基本的定時脈沖信號。
-
VCC電源輸入引腳。
-
GND:接地引腳。
最小模式下
當MN/MX=1,即引腳接高電平時,CPU工作於最小模式。此時,引腳信號24~31的含義及其功能如下:
-
HOLD:總線保持請求信號,輸入,高電平有效。
在DMA數據傳送方式中,由總線控制器8237A發出一個高電平有效的總線請求信號,通HOLD引腳輸入到CPU,請求CPU讓出總線控制權。
-
HLDA(holdacknowledge):總線保持響應信號,輸出,高電平有效。
HLDA是與HOLD配合使用的聯絡信號。在HLDA有效期間,HLDA引腳輸出一個高電平有效的響應信號,同時總線將處於浮空狀態,CPU讓出對總線的控制權,將其交付給申請使用總線的8237A控制器使用,總線使用完后,會使HOLD信號變為低電平,CPU又重新獲得對總線的控制權。
-
WR ̅̅̅̅̅: 寫選通信號,輸出,三態。指示 8086/8088 正在輸出數據給存儲器或 I/O 設備。在WR ̅̅̅̅為低電平期間,數據總線包含給存儲器或 I/O 設備的有效數據。
-
IO/M ̅: 輸出,三態。該引腳選擇存儲器或 I/O 端口,即微處理器地址總線是存儲器地址還是 I/O 端口地址。 為高電平時,訪問存儲器;為低電平時,訪問I/O端口 。
-
DT/R:數據發送/接收信號,輸出,三態。
DT/R信號用來控制數據傳送的方向。DT/R為高電平時,CPU發送數據到存儲器或I/O端口;DT/R為低電平時,CPU接收來自存儲器或I/O端口的數據。
-
DEN:數據允許控制信號,輸出,三態,低電平有效。信號用作總線收發器的選通控制信號。當為低電平時,表明CPU進行數據的讀/寫操作。
-
ALE:地址鎖存允許信號,輸出,高電平有效。
CPU利用ALE信號可以把AD15~AD0地址/數據、A19/S6~A16/S3地址/狀態線上的地址信息鎖存在地址鎖存器中。
-
INTA:可屏蔽中斷響應信號,輸出,低電平有效。
CPU通過信號對外設提出的可屏蔽中斷請求做出響應。為低電平時,表示CPU已經響應外設的中斷請求,即將執行中斷服務程序。
最大模式下
當MN/MX直接接地就以最大模式下工作
-
RQ/,GT:總線請求允許信號輸入/總線請求允許輸出信號,雙向,低電平有效。
該信號用以取代最小模式時的HOLD/HLDA兩個信號的功能,是特意為多處理器系統而設計的。
當系統中某一部件要求獲得總線控制權時,就通過此信號線向8086CPU發出總線請求信號,若CPU響應總線請求,就通過同一引腳發回響應信號,允許總線請求,表明8086CPU已放棄對總線的控制權,將總線控制權交給提出總線請求的部件使用。
RQ/GT0優先級高於RQ/GT1。
-
LOCK:總線封鎖信號,輸出,低電平有效。信號有效時,表示此時8086CPU不允許其他總線部件占用總線。(相當於INTA)
-
S2,S1,S0:總線周期狀態信號,輸出,低電平有效。
-
QS1,QS0:指令隊列狀態信號,輸出。
QS1和QS0信號的組合可以指示總線接口部件BIU中指令隊列的狀態,以便其他處理器監視、跟蹤指令隊列的狀態。
00->隊列空閑;01->表明操作碼的第一個字節;10->隊列空;表明11->操作碼的后續字節
最小模式下不需要這兩個引腳是因為單一微處理器EU 執行指令和 BIU 取指令不能同時進行,也就沒有指令隊列
注:
在最小模式下,SSO與IO/M、DT/R共同決定當前總線周期的狀態。
在最大模式下,則是S2,S1,S0:共同決定當前總線周期的狀態。
8088的時序
CPU通過總線進行一次讀(或寫)所需時間稱為一個總線周期。
8088的一個標准總線周期由4個時鍾周期組成,分別稱為T1,T2,T3,T4。一個標准總線周期為800ns。
一般地,一條指令的執行需要若干個總線周期。
注意:
在微處理器的基本總線周期中,微處理器允許存儲器或I/O存取數據的時間是一定的。(因為存儲器或I/O不如CPU快,但CPU不願意等太久)。8088允許存儲器存取數據的時間是460ns(5MHz時鍾)。如果存儲器或I/O的存取時間超過460ns,則需要在總線周期中插入READY信號。
實現過程:
8088的基本讀寫時序中,在T3開始處,CPU采樣READY信號。若此時READY是低電平,則T3之后將會插入一個等待時鍾周期(Tw),這一時鍾周期使存儲器存取數據時間延長200ns。
在Tw的開始時刻,CPU還要檢查READY信號的狀態,如果仍為低電平,則再插入一個Tw。此過程一直持續到某個Tw開始時,READY變成有效的高電平,這時總線周期才進入T4時鍾周期。
8088CPU系統總線形成
1.總線緩沖與鎖存
8088微處理器的地址線由A19A16、A15A18和AD7~AD0組成,都是分時復用信號線,所以必須從分時復用的引腳中將地址、數據線分離,且必須對地址信息鎖存以保持穩定。
8282是帶有三態輸出的8D鎖存器,具有8個數據輸入端和8個數據輸出端
控制信號:選通輸入STB=1時,數據輸入端的數據就被鎖存在8282中;
輸出使能OE=0時,8282鎖存的數據就通過輸出端輸出
下圖使用了三片8282將地址鎖存起來,這 是因為8282只具有8位鎖存功能
2.最小模式下系統總線的形成
8088 微處理器工作在最小模式下,系統所有控制信號由 CPU 自身產生。最小模式下系統
總線包括數據總線 D0~D7、地址總線 A0~A19,主要的控制信號有RD ̅̅̅̅、WR ̅̅̅̅̅、IO/M ̅和INTA ̅̅̅̅̅̅̅。
3.最大模式下系統總線的形成
8088 工作在最大模式,系統的一些控制信號由總線控制器 8282 產生。地址總線和數據總
線的生成與最小模式一樣。最大模式僅僅用作系統包含 8087 算術協處理器的情況。
最大模式下系統總線包括數據總線D0D7、地址總線A0A19,主要的控制信號有MEMR ̅̅̅̅̅̅̅、
MEMW ̅̅̅̅̅̅̅、 IOR ̅̅̅̅ 、IOW ̅̅̅̅、INTA ̅̅̅̅̅。