基于X86-64架構(gòu)的處理器如何實(shí)現(xiàn)兼容的應(yīng)用模式
為了使用戶的計(jì)算平臺實(shí)現(xiàn)從32位到64位體系結(jié)構(gòu)的平滑過渡,AMD公司開發(fā)了獨(dú)特的X86-64結(jié)構(gòu)。與目前的一些64位平臺相比,基于X86結(jié)構(gòu)的處理器可以實(shí)現(xiàn)對現(xiàn)有32位程序的完全兼容,而且這種兼容運(yùn)行模式是完全基于硬件的,而不是通過低效率的模擬32位指令方式來實(shí)現(xiàn)。這樣我們可以在X86-64平臺上繼續(xù)使用現(xiàn)有的應(yīng)用程序,不必等待開發(fā)人員或軟件廠商對程序的源代碼進(jìn)行重新編譯,這將為用戶省去大量的購買以及相關(guān)的培訓(xùn)費(fèi)用。
在某種程度上基于X86-64架構(gòu)的Opteron處理器平臺可以看作是以往X86-32的擴(kuò)展,如果不考慮對64位指令的支持,基于X86-64結(jié)構(gòu)的處理器在指令的執(zhí)行順序以及處理過程都是一樣的。AMD對Opteron處理器的寄存器作出了較大改進(jìn)。寄存器是處理器內(nèi)部在運(yùn)算過程中暫時存放數(shù)據(jù)的存儲單元,里面保存著那些正準(zhǔn)備要處理的數(shù)據(jù)或者是已經(jīng)處理過的數(shù)據(jù)。CPU的運(yùn)算單元訪問寄存器所用時間要比訪問處理器緩存以及內(nèi)存的時間都要短。 增加寄存器,可減少CPU 訪問處理器L1、L2緩存以及內(nèi)存次數(shù),從而提高CPU的工作速度。
寄存器中的通用寄存器用途廣泛并可由軟件開發(fā)人員自行規(guī)定其用途。通用寄存器的數(shù)目因處理器結(jié)構(gòu)而異,X86-32位處理器具有EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP共8個32位通用寄存器等。與以往的32位X86結(jié)構(gòu)相比,AMD的64位處理器在原有的8個通用寄存器的基礎(chǔ)上又增添了8個寄存器。這8個寄存器是工作在64位下,經(jīng)過64位編碼的程序就可以使用到它們。AMD同時也將原有的EAX等寄存器擴(kuò)展至64位的RAX。從擴(kuò)充方式上看,EAX等寄存器可以看作是RAX的一個子集,系統(tǒng)仍舊可以完整地執(zhí)行以往的32位編碼程序。通用寄存器除了可高效的存儲數(shù)據(jù)外,還可作為尋址時的地址指針,從而縮短指令長度和指令執(zhí)行時間,加快CPU的運(yùn)算處理速度,同時也給編程帶來方便。單單從寄存器結(jié)構(gòu)來看,X86-64較多的寄存器將會大幅度的提升處理器的性能,也會更加受到軟件開發(fā)人員的喜愛。
目前的處理器產(chǎn)品都采用了SIMD(單指令多數(shù)據(jù))技術(shù)來提高處理器的運(yùn)算能力,常見的單指令多數(shù)據(jù)技術(shù)分別有Intel公司的SSE、SSE2以及AMD公司的3DNow!,以往的X86-32結(jié)構(gòu)的AMD處理器除了具備3DNow!技術(shù)外還提供了對Intel SSE指令集的兼容,而X86-64則通過16個寄存器來提供對SSE2的支持。在SIMD技術(shù)方面,AMD的X86-64結(jié)構(gòu)將提供比以往任何設(shè)計(jì)都要出色的兼容性。
為了更好的在32/64位混合模式下工作,X86-64結(jié)構(gòu)提供了多種處理器工作模式。在“長模式”下如果用戶使用64位操作系統(tǒng)以及為64位計(jì)算編譯的軟件,那么就可以獲得8個新增64位通用寄存器、擴(kuò)展6 4位通用寄存器等眾多新特性?!伴L模式”下還包含了一種“兼容模式”,在此模式下用戶可以在64位操作系統(tǒng)上運(yùn)行32位的應(yīng)用程序,從應(yīng)用程序的角度看,在“兼容模式”下其所使用的處理器也就是普通32位X86處理器。而從操作系統(tǒng)的角度來看,常規(guī)的地址變換,中斷以及系統(tǒng)數(shù)據(jù)結(jié)構(gòu)操作都是在64位“長模式”下進(jìn)行的。“傳統(tǒng)模式”則是AMD的64位處理器為32位應(yīng)用所提供的運(yùn)行模式,這種模式下的X86-64結(jié)構(gòu)處理器的運(yùn)行與一般的32位處理器沒有區(qū)別,可以完全兼容目前的32位操作系統(tǒng)以及32位應(yīng)用程序。
評論