80x86微處理器結構及其工作模式

分類:IT技術 時間:2016-10-11

80X86是一系列微處理器

微處理器又稱為中央處理單元,即CPU,是一塊集成電路芯片。它是微型計算機的核心組成部分。
既然

微處理器
是微型計算機的核心,那麽我們有必要先來簡單地討論一下微型計算機。

微型計算機:

微型計算機
是指以微處理器為核心,配上存儲器、輸入/輸出接口電路等所組成的計算機(又稱為主機)。

微型計算機系統
是指以微型計算機為中心,配以相應的外圍設備、電源和輔助電路(統稱硬件)以及指揮電路工作的系統軟件所構成的系統。即,與一般的計算機系統一樣,微型計算機系統也是由硬件和軟件兩部分組成的。
這裏寫圖片描述

下面,我將介紹一些微型計算機系統中所涉及的基本概念,可能每個概念之間暫時沒有很明顯的關聯,但是,本著不用就不提的原則,盡量將所提到的知識點都串起來形成一個易於理解的簡單知識框架。

就像大腦控制著人工作一樣,
CPU控制著整個計算機的運作並進行運算。要想讓一個CPU工作就必須向它提供指令和數據。指令和數據在存儲器中存放,也就是我們平時所說的內存(以下如果沒做特別聲明,所提到的存儲器就是指內存)。磁盤不同於內存,如果磁盤上面的數據或程序不被讀入內存,就無法被CPU使用。

指令和數據
是應用上的概念,指令和數據沒有任何區別,都是二進制信息。 CPU在工作時把有的信息看作指令,有的信息看作數據,為同樣的信息賦予了不同的含義。

存儲單元:
存儲器被劃分成若幹個存儲單元,一個存儲單元存儲一個字節的信息,也就是8個二進制位。
有以下單位換算:

1B = 8個二進制位
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

每個存儲單元從0開始順序編號,這些編號可以看作存儲單元在內存中的地址。如下圖是一個擁有128個存儲單元的存儲器:
這裏寫圖片描述

CPU工作時經常要從內存中讀取數據或者向內存中寫入數據,這個過程需要CPU和存儲器之間進行地址信息、數據信息和控制信息交互。
那麽,CPU是通過什麽將這三種信息傳到存儲器芯片中的呢?電子計算機能處理、傳輸的信息都是電信號,電信號當然要用導線傳送。

在計算機中有專門連接CPU和其他芯片的導線,通常稱為總線。總線從物理上來講,就是一根根導線的集合。根據傳送信息的不同,總線從

邏輯
上又分為地址總線、控制總線和數據總線三類。
總線可以是帶狀的扁平電纜線,也可以是印刷板上一層極薄的金屬連線。

CPU從內存單元讀取數據的過程如下圖:
這裏寫圖片描述

(1)CPU通過地址線將地址信息3發出 
(2)CPU通過控制線發出內存讀命令,選中存儲器芯片,並通知它,將要從中讀取數據。
(3)存儲器將3號單元中的數據08通過數據線送入CPU。

寫操作與讀操作類似!如向3號單元寫入數據2,則步驟為:

(1)CPU通過地址線將地址信息3發出。 
(2)CPU通過控制總線發出內存寫命令,選中存儲器芯片,並通知它,要向裏面寫數據。
(3)CPU通過數據總線將數據2送入內存的3號單元中。

下面我們來簡單介紹一下這三種總線,

地址總線AB:
在對存儲器或I/O端口進行訪問時,傳送由CPU提供的要訪問的存儲單元或I/O端口的地址信息。AB是單向總線。
一個CPU有N根地址線,則可以說這個CPU的地址總線寬度為N,這樣的CPU可以尋找2的N次方個內存單元。

數據總線DB:
CPU與內存或其他器件之間的數據傳送是通過數據總線來完成的,數據總線的寬度決定了CPU和外界的數據傳送速度。8根數據總線一次可傳送一個字節。8088CPU的數據總線寬度為8,8086CPU的數據總線寬度為16。
例如,CPU想向內存中寫入數據89D8。
因為8088一次只能傳送一個字節的數據也就是8位,所以它要分兩次傳送,第一次傳送D8,第二次傳送89。但是8086有16根數據總線,可以傳送兩個字節的數據,所以可一次性將數據89D8傳入內存。DB是雙向總線

控制總線CB:
控制總線是一些不同的控制線的集合。有多少根控制總線就意味著CPU提供了對外部器件的多少種控制,控制總線的寬度決定了CPU對外部器件的控制能力。

我們知道,CPU由運算器(ALU)、控制器(CU)和內部寄存器(R)三部分組成。

控制器:

控制器是全機的指揮中心,它負責把指令逐條從存儲器中取出,經譯碼分析後向全機發出取數、執行、存數等控制命令,以完成程序所要求的功能。控制器包括以下幾個部分:

a.指令寄存器IR:
用來存放從存儲器取出的將要執行的指令碼。
當執行一條指令時,先把它從內存取到數據緩沖寄存器DR中,然後再傳送到指令寄存器IR中。
b.指令譯碼器ID:
對指令寄存器IR中的指令操作碼字段進行譯碼,以確定該指令執行什麽操作。

需要說明的是,指令通常由操作碼和操作數兩部分組成。操作碼表示該指令完成的操作,操作數表示參加操作的數本身或操作數所在地址。

c.可編程邏輯陣列PLA:用於產生取指令和執行指令所需要的各種微操作控制信號,並經過控制總線CB送往有關部件,使計算機完成相應的操作。

內部寄存器:

1)程序計數器PC:程序計數器有時也被稱為指令指針(IP),IP一般都是由CPU自動修改加一,使其總是存放下一條要執行的指令所在存儲單元的地址。但當遇到跳轉等改變程序執行順序的指令時,PC(IP)將從指令寄存器IR
中的地址字段得到。
2)地址寄存器AR:用來存放正要取出的指令的地址或操作數的地址。
3)數據緩沖寄存器DR:用來暫時存放指令或數據。它是CPU和內存、外部設備之間信息傳送的中轉站,用來補償CPU和內存、外圍設備之間在操作速度上存在的差異。
4)累加器:用來暫時存放ALU運算結果。
5)標誌寄存器FLAGS:有時也稱為程序狀態字(PSW)。編寫程序時,可以通過測試有關標誌位的狀態(1或0)來決定程序的流向。
6)寄存器陣列:寄存器陣列實際上就相當於CPU內部的RAM,可避免CPU頻繁的訪問存儲器,提高機器的運行速度。不同類型的CPU的寄存器陣列規模大小會有所不同。

CPU還有一個組成部分是運算器(算數邏輯單元ALU),運算器的主要作用就是運算嘛,參加運算的兩個操作數一個來自累加器A,一個來自內部數據總線,可以是緩沖寄存器中的內容,也可以是寄存器陣列中某個寄存器中的內容。

在這裏我們對內存的描述就只是在需要用到某個概念的時候就簡單介紹一下,由於它所含信息量過多,這兒不做詳細的說明。

在每個PC機中,都有一個主板。主板上有核心器件和一些主要器件,這些器件通過總線相連。這些器件有CPU、存儲器、外圍芯片組、擴展插槽等。擴展插槽上一般插有RAM內存條和各類接卡口。

CPU對外部設備都不能直接控制,如顯示器、音箱、打印機等。直接控制這些設備進行工作的是插在擴展槽上的接卡口。擴展槽通過總線和CPU相連,所以接卡口也通過總線和 CPU相連。CPU通過總線向接卡口發送命令,接卡口根據命令控制外設工作。

好了,
對於微型計算機的硬件我們就先簡單介紹到這裏,主要描述了主機上的CPU所涉及到的一些硬件概念。對於系統中的其他硬件例如,外圍設備,以及主機上的存儲器、I/O接口與輸入輸出設備等。

同時,軟件也是微型計算機系統不可缺少的組成部分,軟件包括系統軟件和用戶(應用軟件)。系統軟件是不需要幹預的,為其他程序的開發、調試以及運行等建立一個良好環境的程序。它主要包括操作系統和系統應用程序。

微型計算機的工作過程:

1) 把第一條指令所在存儲單元的地址賦給程序計數器PC。
2)取址,得到指令
3)對指令的操作碼字段進行譯碼,發出執行指令的微操作控制信號。
4)執行指令,完成指令所規定的操作。

對微型計算機系統做了一些簡單的了解以後,我們對微處理器的工作情景也就更為熟悉,讓我們先來看一幅處理器內部寄存器的輪廓圖。

這裏寫圖片描述

這塊兒說明一下,做圖片的時候由於考慮不周,圖片比例沒調好,顯示出來特別小,可以把縮放率調大一點再看圖,例如,Ctrl + 四下,哈哈!!

我們註意到上述多次提到段地址、段寄存器,這兩個名詞中包含者“段”這個概念,下面我們就來簡單說明一下,什麽是段。
8086CPU用

基礎地址(段地址×16)+偏移地址 = 物理地址
的方式給出內存單元的物理地址,使得我們可以用分段的方式來管理內存。

為了防止不理解,我這裏再重申一遍。也就是說,實際內存中並沒有分段,段的劃分來自於CPU,只是CPU自己用段地址和偏移地址來表示物理地址而已。

以後,在編程時可以根據需要,將若幹地址連續的內存單元看作一個段。這裏的編程指的是匯編語言編程。需要註意的是,由於段地址×16必然是16的倍數,所以一個段的起始地址也一定是16的倍數。偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB。

那麽,基礎地址為什麽一定要是 段地址×16不是乘其他數呢?由於地址總線是20位的,所以CPU在對內存訪問時,必須提供一個20位的地址信息給地址總線。又因為段地址存放在16位的段寄存器中,所以必須×16(10H),即左移四位才能使之變成20位的基礎地址,再加上偏移量就能定位到具體的物理內存單元了。

本來想著用一篇博客的內容就把8086微處理器大致介紹完,但是寫著寫著才發現牽扯的內容實在太多,一不小心就跑遠了。下面我以從功能上劃分8086微處理器為結尾,暫時先把簡單概念介紹到這裏,至於具體的堆棧操作以及中斷和工作模式等概念和它們所用到的一些基礎的匯編語言指令,只好在下篇再作介紹。

CPU從功能上可分為兩大部分:

1.總線接口單元BIU:

總線接口單元BIU的功能是負責完成CPU與存儲器或I/O設備之間的數據傳送。

2.執行單元EU:

執行單元不與系統外部直接相連,它的

功能
只是負責執行指令。執行的指令從BIU的指令緩沖隊列中直接得到。執行指令時若需要從存儲器或I/O端口讀寫操作數,由EU向BIU發出請求,再由BIU對存儲器或I/O端口進行訪問。
總之就是,BIU負責與系統外部交互,EU負責一心一意的執行指令。


Tags: 計算機系統 微處理器 集成電路 系統軟件 單位換算

文章來源:


ads
ads

相關文章
ads

相關文章

ad