JILK - CPU - (3) - CPU的操作模式

IA-32架構支持三種CPU操作模式(operating mode):實地址模式、保護模式和系統管理模式。到了Intel 64架構時,又增加了一種IA-32e模式,而IA-32e可分爲兩種子模式:兼容模式和64位模式。因此Intel CPU可處於五種操作模式下,而從一個彙編程序員的角度來看,不同的操作模式提供了不同的CPU處理環境和指令集。

1)實地址模式(Real-address mode)。該模式提供了Intel 8086的CPU環境,除此之外,還提供了一定的擴展,如從實地址模式切換到保護模式(protected mode)或系統管理模式(system management mode)。在加電或重啓之後,CPU將會進入該模式。

2)保護模式(Protected mode)。這是IA-32架構上最爲基礎的模式。該模式支持模擬出虛擬8086模式(virtual-8086 mode),也就說可以爲每個8086的應用程序模擬出實地址模式的環境,從而讓該應用程序認爲其是在8086的環境上運行的。

3)系統管理模式(System management mode,SMM)。當CPU的SMM中斷引腳(SMI#)或從APIC(高級可編程中斷控制器)裏傳來SMI中斷,CPU將會進入該模式。在進入該模式之前,CPU會將當前執行的上下文(包括各寄存器的值等)保存起來,然後切換到另外一個獨立的地址空間去,然後執行該模式下相關的代碼,譬如可用來實現一些與平臺相關的功能,如電源管理,系統安全等。當在系統管理模式執行完後,CPU再將進入模式之前的上下文調出,並恢復執行之前未完成的程序或任務。

4)兼容模式(Compatibility mode, sub-mode of IA-32e mode)。這是Intel 64架構下的IA-32e模式下的子模式。這是一個與保護模式非常相似的模式,它允許16位和32位的應用程序不用重編譯就可以運行在64位的操作系統下,這是因爲兼容模式和64位模式的區別粒度可以去到代碼段的粒度上,因此在一個代碼段上啓用兼容模式,而在另一個代碼段上啓用64位模式。與保護模式不同的是:能夠在虛擬8086模式下運行的或在藉助硬件的任務管理運行的應用程序在兼容模式下將無法運行。兼容模式和保護模式一樣,支持的線性地址空間只能去到4G,但它們都支持PAE(Physical address extensions)。

5)64位模式(64 bit mode, sub-mode of IA-32e mode)。顧名思義,64位模式支持64位的線性地址空間。除此之外,其可用的通用寄存器和SIMD所能用的寄存器也有所增加,通用寄存器的位寬也擴展到64位。在64位模式下,默認的地址爲64位,數據爲32位。


發佈了34 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章