32位x86處理器架構

2022-09-20 02:42:09 字數 3365 閱讀 8557

我們看看32 位 x86 處理器的基本架構特點。這些處理器包括了 intel ia-32 系列中的成員和所有 32 位 amd 處理器。

x86 處理器有三個主要的操作模式:保護模式、實位址模式和系統管理模式;以及乙個子模式:虛擬 8086 (virtual-8086) 模式,這是保護模式的特殊情況。以下是對這些模式的簡介:

保護模式是處理器的原生狀態,在這種模式下,所有的指令和特性都是可用的。分配給程式的獨立記憶體區域被稱為段,而處理器會阻止程式使用自身段範圍之外的記憶體。

保護模式下,處理器可以在乙個安全環境中,直接執行實位址模式軟體,如 ms-dos 程式。換句話說,如果乙個程式崩潰了或是試圖向系統記憶體區域寫資料,都不會影響到同一時間內執行的其他程式。現代作業系統可以同時執行多個獨立的虛擬 8086 會話。

實位址模式實現的是早期 intel 處理器的程式設計環境,但是增加了一些其他的特性,如切換到其他模式的功能。當程式需要直接訪問系統記憶體和硬體裝置時,這種模式就很有用。

系統管理模式 (smm) 向作業系統提供了實現諸如電源管理和系統安全等功能的機制。這些功能通常是由計算機製造商實現的,他們為了乙個特定的系統設定而定製處理器。

在 32 位保護模式下,乙個任務或程式最大可以定址 4gb 的線性位址空間。從 p6 處理器開始,一種被稱為擴充套件物理定址 (extended physical addressing) 的技術使得可以被定址的物理記憶體空間增加到 64gb。

與之相反,實位址模式程式只能定址 1mb 空間。如果處理器在保護模式下執行多個虛擬 8086 程式,則每個程式只能擁有自己的 1mb 記憶體空間。

暫存器是直接位於 cpu 內的高速儲存位置,其設計訪問速度遠高於傳統儲存器。例如,當乙個迴圈處理為了速度進行優化時,其迴圈計數會保留在暫存器中而不是變數中。

下圖展示的是基本程式執行暫存器(basic program execution registers)。8 個通用暫存器,6 個段暫存器,乙個處理器狀態標誌暫存器(eflags),和一 個指令指標暫存器(eip)。

通用暫存器

通用暫存器主要用於算術運算和資料傳輸。如下圖所示,eax 暫存器的低 16 位在使用時可以用 ax 表示。

一些暫存器的組成部分可以處理 8 位的值。例如,ax 暫存器的高 8 位被稱為 ah,而低 8 位被稱為 al。同樣的重疊關係也存在於 eax、ebx、ecx 和 edx 暫存器中:

32 位

16 位

8 位(高)

8 位(低)

eaxax

ahal

ebxbx

bhbl

ecxcx

chcl

edxdx

dhdl

其他通用暫存器只能用 32 位或 16 位名稱來訪問,如下表所示:

32 位

16 位

32 位

16 位

esisi

ebpbp

edidi

espsp

特殊用法

某些通用暫存器有特殊用法:

段暫存器

實位址模式中,16 位段暫存器表示的是預先分配的記憶體區域的基址,這個記憶體區域稱為段。保護模式中,段暫存器中存放的是段描述符表指標。一些段中存放程式指令(**),其他段存放變數(資料),還有乙個堆疊段存放的是區域性函式變數和函式引數。

指令指標

eflags 暫存器

eflags (或 flags)暫存器包含了獨立的二進位制位,用於控制 cpu 的操作,或是反映一些 cpu 操作的結果。有些指令可以測試和控制這些單獨的處理器標誌位。

設定標誌位時,該標識位 =1;清除(或重置)標識位時,該標誌位 =0。

控制標誌位

控制標誌位控制 cpu 的操作。例如,它們能使得 cpu 每執行一條指令後進入中斷;在偵測到算術運算溢位時中斷執行;進入虛擬 8086 模式,以及進入保護模式。

程式能夠通過設定 eflags 暫存器中的單獨位來控制 cpu 的操作,比如,方向標誌位和中斷標誌位。

狀態標誌位

狀態標誌位反映了 cpu 執行的算術和邏輯操作的結果。其中包括:溢位位、符號位、零標誌位、輔助進製標誌位、奇偶校驗位和進製標誌位。下述說明中,標誌位的縮寫緊跟在標誌位名稱之後:

在實現高階多**和通訊應用時,mmx 技術提高了 intel 處理器的效能。8 個 64 位 mmx 暫存器支援稱為 simd(單指令,多資料,single-instruction,multiple-data)的特殊指令。

顧名思義,mmx 指令對 mmx 暫存器中的資料值進行並行操作。雖然,它們看上去是獨立的暫存器,但是 mmx 暫存器名實際上是浮點單元中使用的同樣暫存器的別名。

x86 結構還包括了 8 個 128 位 xmm 暫存器,它們被用於 simd 流擴充套件指令集。

浮點單元

浮點單元(fpu, floating-point unit)執行高速浮點算術運算。之前為了這個目的,需要乙個獨立的協處理器晶元。從 intel486 處理器開始,fpu 已經整合到主處理器晶元上。

fpu 中有 8 個浮點資料暫存器,分別命名為 st(0),st(1),st(2),st(3),st(4), st(5), st (6)和 st(7)。其他控制暫存器和指標暫存器如下圖所示。

x86 處理器按照前面討論的基本操作模式來管理記憶體。保護模式是最可靠、最強大的,但是它對應用程式直接訪問系統硬體有著嚴格的限制。

在實位址模式中,只能定址 1mb 記憶體,位址從 00000h 到 fffffh。處理器一次只能執行乙個程式,但是可以暫時中斷程式來處理來自外圍裝置的請求(稱為中斷(interrupt))。

應用程式被允許訪問記憶體的任何位置,包括那些直接與系統硬體相關的位址。ms-dos 作業系統在實位址模式下執行,windows 95 和 98 能夠引導進入這種模式。

在保護模式中,處理器可以同時執行多個程式,它為每個程序(執行中的程式)分配總共 4gb 的記憶體。每個程式都分配有自己的保留記憶體區域,程式之間禁止意外訪問其他程式的**和資料。ms-windows 和 linux 執行在保護模式下。

在虛擬 8086 模式中,計算機執行在保護模式下,通過建立乙個帶有 1mb 位址空間的虛擬 8086 機器來模擬執行於實位址模式的 80x86 計算機。例如,在 windows nt 和 2000 下,當開啟乙個命令視窗時,就建立了乙個虛擬 8086 機器。同一時間可以執行多個這樣的視窗,並且視窗之間都是受到保護的。

在 windows nt,2000 和 xp 系統中,某些需要直接使用計算機硬體的 ms-dos 程式不能執行在虛擬 8086 模式下。

X86處理器架構

包含有暫存器 算術邏輯單元 控制單元 時鐘位址 資料 控制匯流排1 將想要讀讀取的值的位址放在位址匯流排上。2 設定處理器rd 讀取 引腳 改變rd的值 3 等待乙個時鐘週期給儲存器晶元進行響應。4 將資料從資料匯流排複製到目標運算元。1 cpu從被稱為指令佇列的記憶體區域取得指令,之後立即增加指令...

《ubuntu下x86彙編》之x86處理器

一 處理器基本資訊 cat proc cpuinfo processor 0 vendor id genuineintel cpu family 6 model 23 model name pentium r dual core cpu e5500 2.80ghz processor 1 vendo...

64位x86 64處理器架構

本節重點關注所有使用 x86 64 指令集的 64 位處理器的基本架構細節。這些處理器包括 intel 64 和 amd64 處理器系列。指令集是已討論的 x86 指令集的 64 位擴充套件。以下為一些基本特徵 1 向後相容 x86 指令集。2 位址長度為 64 位,虛擬位址空間為 2 64 位元組...