本申請的權(quán)利要求范圍要求如下申請的優(yōu)先權(quán):2014年9月3日遞交的申請?zhí)枮?2/045,082的美國臨時案。在此合并參考上述美國臨時申請案的全部內(nèi)容。
技術(shù)領域
本發(fā)明有關于模式切換處理方法,更具體地,有關于模式切換處理方法及相應的處理器。
背景技術(shù):
處理器是各種電子裝置所需的關鍵元件。例如,操作系統(tǒng)(operating system,OS)可由電子裝置的處理器執(zhí)行以控制應用軟件的執(zhí)行用于執(zhí)行用戶所需數(shù)據(jù)處理。操作系統(tǒng)可在不同操作系統(tǒng)模式間切換,例如用戶模式和內(nèi)核模式(kernel mode)。從第一操作系統(tǒng)模式到第二操作系統(tǒng)模式的切換需要是可逆的,當退出第二操作系統(tǒng)模式時,將返回第一操作系統(tǒng)模式,這樣在沒有被中斷的情況下,第一操作系統(tǒng)模式將繼續(xù)。為了實現(xiàn)這種可逆性,需要在剛離開第一操作系統(tǒng)模式時將各個寄存器(例如處理器內(nèi)的寄存器)的內(nèi)容存儲,以使在第二操作系統(tǒng)模式結(jié)束使用寄存器(例如,處理器內(nèi)部的寄存器)且控制返回至第一操作系統(tǒng)模式之后可恢復這些內(nèi)容。這通常是通過在離開第一操作系統(tǒng)模式時將第一操作系統(tǒng)模式中處理器寄存器的寄存器數(shù)據(jù)保存至外部動態(tài)隨機存取存儲器(dynamic random access memory,DRAM)中分配的堆棧存儲器的一個區(qū)域,且在返回第一操作系統(tǒng)模式時將來自堆棧存儲器的該區(qū)域的保存的存儲器數(shù)據(jù)返回至該處理器寄存器而實現(xiàn)的。
傳統(tǒng)模式切換處理方法可保存和恢復處理器使用的所有寄存器的內(nèi)容。然而,此傳統(tǒng)方法所具有的問題是寫入堆棧存儲器和隨后從堆棧存儲器讀取的操作相對較慢,這將不可避免地降低處理器的性能。因此,需要一種創(chuàng)新的模式切換處理方法能避免/減少不必要的存儲器數(shù)據(jù)存取從而加速模式切換操作。
技術(shù)實現(xiàn)要素:
根據(jù)本發(fā)明的實施例,提出一種具有較少不必要寄存器數(shù)據(jù)存取的模式切換處理方法及相關非臨時機器可讀介質(zhì)。根據(jù)本發(fā)明的第一個方面,揭露一種模式切換處理方法。該模式切換處理方法包括:當操作系統(tǒng)模式從第一模式切換至第二模式時,將存儲在多個寄存器中的寄存器數(shù)據(jù)的僅一部分保存至存儲裝置中;其中,在該第一模式中使用M位寄存器長度,在該第二模式中使用N位寄存器長度,且M和N為不同整數(shù)。
根據(jù)本發(fā)明的第二個方面,揭露一種模式切換處理方法。該模式切換處理方法包括:包括:當操作系統(tǒng)模式從第二模式切換至第一模式時,將存儲裝置中的保存的寄存器數(shù)據(jù)集合恢復至多個寄存器的存儲空間的僅一部分;其中,M位寄存器長度用于第一模式,N位寄存器長度用于第二模式,且M和N為不同整數(shù)。
根據(jù)本發(fā)明的第三個方面,揭露一種包括存儲于其中的程序代碼的非臨時機器可讀介質(zhì)。當處理器執(zhí)行該程序代碼時,該程序代碼使該處理器執(zhí)行下列步驟:當操作系統(tǒng)模式從第一模式切換至第二模式時,將存儲在多個寄存器中的寄存器數(shù)據(jù)的僅一部分保存至存儲裝置中;其中,在該第一模式中使用M位寄存器長度,在該第二模式中使用N位寄存器長度,且M和N為不同整數(shù)。
根據(jù)本發(fā)明的第三個方面,揭露一種非臨時機器可讀介質(zhì),包括存儲于其中的程序代碼,其中當處理器執(zhí)行該程序代碼時,該程序代碼使該處理器執(zhí)行下列步驟:當操作系統(tǒng)模式從第二模式切換至第一模式時,將存儲裝置中的保存的寄存器數(shù)據(jù)集合恢復至多個寄存器的存儲空間的僅一部分;其中,在該第一模式中使用M位寄存器長度,在該第二模式中使用N位寄存器長度,且M和N為不同整數(shù)。
附圖說明
圖1是根據(jù)本發(fā)明一個實施例的處理系統(tǒng)的模塊示意圖。
圖2為根據(jù)本發(fā)明一個實施例32位處理器結(jié)構(gòu)使用的寄存器的示意圖。
圖3為根據(jù)本發(fā)明一個實施例64位處理器結(jié)構(gòu)使用的寄存器的示意圖。
圖4為64位通用目的寄存器的示意圖。
圖5為第一寄存器數(shù)據(jù)保存機制的示例示意圖。
圖6為第二寄存器數(shù)據(jù)保存機制的示例示意圖。
圖7為第三寄存器數(shù)據(jù)保存機制的示例示意圖。
圖8為第一寄存器數(shù)據(jù)恢復機制的示例示意圖。
圖9為第一寄存器數(shù)據(jù)恢復機制的示例示意圖。
圖10為第三寄存器數(shù)據(jù)恢復機制的示例示意圖。
圖11為將本發(fā)明提出的模式切換處理方法運用至基于ARM計算機系統(tǒng)的示例示意圖。
圖12為將本發(fā)明提出的模式切換處理方法運用至基于ARM計算機系統(tǒng)的示例示意圖。
圖13為根據(jù)本發(fā)明一個實施例的模式切換處理方法的流程圖。
具體實施方式
在說明書及后續(xù)的權(quán)利要求當中使用了某些詞匯來指稱特定的元件。所屬領域技術(shù)人員應可理解,制造商可能會用不同的名詞來稱呼同樣的元件。本說明書及后續(xù)的權(quán)利要求并不以名稱的差異來作為區(qū)別元件的方式,而是以元件在功能上的差異來作為區(qū)別的基準。在通篇說明書及后續(xù)的權(quán)利要求當中所提及的「包括」為開放式的用語,故應解釋成「包括但不限定于」。此外,「耦接」一詞在此包括任何直接及間接的電氣連接手段。因此,若文中描述第一裝置耦接于第二裝置,則代表該第一裝置可直接連接于該第二裝置,或透過其他裝置或連接手段間接地連接至該第二裝置。
圖1是根據(jù)本發(fā)明一個實施例的處理系統(tǒng)100的模塊示意圖。處理系統(tǒng)100為電子裝置的一部分,該電子裝置可例如,電視、移動電話、平板電腦或可穿戴式設備。處理系統(tǒng)100可包括處理器102、非臨時機器可讀介質(zhì)(non-transitory machine readable medium)104以及存儲裝置106。應注意的是圖1僅顯示了本發(fā)明有關的元件。實際上,處理系統(tǒng)100可配置為包括用于實現(xiàn)其他功能的額外元件。在此實施例中,非臨時機器可讀介質(zhì)104和存儲器106可用分離的存儲裝置實現(xiàn)。例如,非臨時機器可讀介質(zhì)104可為非易失性機器可讀介質(zhì)(例如閃存),且存儲器106可為易失性機器可讀介質(zhì)(例如動態(tài)隨機存取存儲器)?;蛘撸桥R時機器可讀介質(zhì)104和存儲器106可用同一存儲裝置中分配的分離存儲空間實現(xiàn)。簡而言之,本發(fā)明對非臨時機器可讀介質(zhì)104和存儲器106的具體實現(xiàn)沒有限制。
處理器102可具有包括REG0-REGn在內(nèi)的多個寄存器。當處理器102為N位處理器時,寄存器REG0-REGn的大部分或全部可為N位寄存器。例如,處理器102可為64位基于ARM(ARM-based)的處理器,且寄存器REG0-REGn的大部分可為64位寄存器。應注意,同一處理器102中實現(xiàn)的寄存器REG0-REGn的數(shù)目可根據(jù)處理器102的實際處理器結(jié)構(gòu)。在此實施例中,提出的具有更少不必要寄存器數(shù)據(jù)存取的模式切換方法可應用至處理器102內(nèi)部的寄存器REG0-REGn。然而,此僅用于說明目的,并不意在限制本發(fā)明。此外,提出的具有更少不必要寄存器數(shù)據(jù)存取的模式切換方法可應用至任意處理電路使用的寄存器及/或處理器102外部的寄存器。
非臨時機器可讀介質(zhì)104可設置為存儲程序代碼PROG。程序代碼PROG可為操作系統(tǒng)(OS)的一部分,例如基于Linux的OS,且程序代碼PROG可被處理器102加載并執(zhí)行以處理操作系統(tǒng)模式的模式切換操作。存儲裝置106可設置為具有分配在其中的堆棧存儲器(stack memory)。因此,當操作系統(tǒng)模式從第一模式切換至第二模式時,第一模式中的指令執(zhí)行可被中斷,且處理器102上運行的程序代碼PROG可將處理器102的寄存器數(shù)據(jù)存儲至堆棧存儲器,這樣保存的寄存器數(shù)據(jù)集合DATAREG在存儲裝置106中為可用的。當操作系統(tǒng)模式從第二模式切換至第一模式時,處理器102上運行的程序代碼PROG可將堆棧存儲器中的保存的寄存器數(shù)據(jù)集合DATAREG恢復至處理器102,從而致能繼續(xù)第一模式中的指令執(zhí)行。
當處理器102為N位處理器時,處理器102可配置為操作在N位模式、N/2位模式、N/4位模式…及一位模式。因此,處理器102可操作在N位模式(其中可使用N位寄存器長度)中,且可操作在M位模式(其中可使用M位寄存器長度)中,其中N和M可為不同整數(shù)。由于處理器102的N位模式的寄存器使用可能不同于處理器102的M位模式的寄存器使用,保存/恢復處理器的所有寄存器REG0-REGn的全部寄存器數(shù)據(jù)可能會導致不必要的寄存器數(shù)據(jù)存取及不必要的存儲裝置存取。相較于保存/恢復處理器的所有寄存器REG0-REGn的全部寄存器數(shù)據(jù)的傳統(tǒng)模式切換處理方法,本發(fā)明提出的模式切換處理方法可避免/減少不必要的寄存器數(shù)據(jù)存取以實現(xiàn)快速模式切換和減少的功率消耗。提出的模式切換處理方法的更多細節(jié)如下所示。
圖2為根據(jù)本發(fā)明一個實施例32位處理器結(jié)構(gòu)使用的寄存器的示意圖。32位處理器結(jié)構(gòu)可支持多個處理器模式,例如USR(用戶)模式、IRQ(中斷)模式、FIQ(快速中斷)模式、SVC(監(jiān)視)模式、ABT(退出)模式、UND(未定義)模式及HYP(管理)模式等等。例如,當用戶應用程序運行在處于用戶模式的操作系統(tǒng)模式中時,處理器可操作在用戶模式的處理器模式中;且當操作系統(tǒng)模式從用戶模式切換至內(nèi)核模式時,處理器可操作在監(jiān)視模式的處理器模式中。如圖2中所示,一組寄存器R0-R7可被所有處理器模式共享。第一組寄存器R8-R12在用戶模式中為可用的,且第二組寄存器R8-R12在快速中斷模式中為可用的。寄存器R13的每個可為堆棧指針(stack pointer,SP)。寄存器R14的每個可為鏈接指針(link pointer,LP)。如圖2中所示,第一組寄存器R13和R14在用戶模式中為可用的,第二組寄存器R13和R14在監(jiān)視模式中為可用的,第三組寄存器R13和R14在退出模式中為可用的,第四組寄存器R13和R14在未定義模式中為可用的,第五組寄存器R13和R14在中斷模式中為可用的,第六組寄存器R13和R14在快速中斷模式中為可用的。此外,附加寄存器R13在管理模式中為可用的。應注意的是32位處理器結(jié)構(gòu)可具有附加寄存器(圖未示),包括程序計數(shù)器(program counter,PC)、管理模式寄存器(ELR_Hyp)、保存的程序狀態(tài)寄存器(SPSR)等等。
圖3為根據(jù)本發(fā)明一個實施例64位處理器結(jié)構(gòu)使用的寄存器的示意圖。如圖3所示,其中有31個64位通用目的寄存器X0-X30,其下半部分可存取為W0-W30。通用目的寄存器X0-X30可為64位寬度以處理由64位處理器執(zhí)行的64位指令集合的較大地址。對于由同一64位處理器執(zhí)行的32位指令集合,32位存取可僅使用64位通用目的寄存器X0-X30的下半部分W0-W30。圖4為64位通用目的寄存器的示意圖。64位通用目的寄存器可劃分為上半部分P1(由更重要位—位[63:32]組成)和下半部分P2(由較不重要位—位[31:0]組成)。在64位處理器可用于操作在64位模式(其中可使用64位寄存器長度)的另一情形中,上半部分P1和下半部分P2都將被使用。在64位處理器可用于操作在32位模式(其中可使用32位寄存器長度)的情形中,僅使用下半部分P2,其中,上半部分P1可被忽略或被0填充。此外,如圖2中所示的32位處理器結(jié)構(gòu)中定義的寄存器可被映射在圖4中所示的64位處理器結(jié)構(gòu)中定義的64位通用目的寄存器X0-X30的下半部分,以致能在64位處理器結(jié)構(gòu)上運行32位指令集合。應注意的是64位處理器機構(gòu)可具有附加寄存器(圖未示),包括堆棧指針寄存器、異常(exception)鏈接寄存器、保存的程序狀態(tài)寄存器(SPSR)等等。
舉例而言,圖1中所示的處理器102可為至少使用圖3中所示的64位通用目的寄存器X0-X30的64位處理器。如上所述,當用戶應用程序運行在處于用戶模式的操作系統(tǒng)模式中時,處理器可操作在用戶模式的處理器模式中;且當操作系統(tǒng)模式從用戶模式切換至內(nèi)核模式時,處理器可操作在監(jiān)視模式的處理器模式中。在用戶應用可為32位應用且操作系統(tǒng)可為64位操作系統(tǒng)的情形中,并非所有64位通用目的寄存器X0-X30在用戶模式中可被全部存取。例如,對于64位通用目的寄存器X0-X30,一些通用目的寄存器X0-X14的僅下半部分P2可被32位應用存取?;谏鲜鲇^察,本發(fā)明因此提出一種部分寄存器數(shù)據(jù)保存/恢復機制以增強模式切換效率。
請再次參考圖1,當操作系統(tǒng)從第一模式切換至第二模式時,運行在處理器102上的程序代碼(例如模式切換處理程序)PROG可用于執(zhí)行保存操作。其中M位長度寄存器可用于第一模式中,且N位寄存器長度可用于第二模式中,且M和N可為不同整數(shù)。例如,處理器102可為64位處理器(例如,64位基于ARM的處理器),第一模式可為32位用戶模式,且第二模式可為64位內(nèi)核模式。因此,由于M=32且N=64,M小于N。例如,可檢查程序狀態(tài)寄存器(例如,SPSR)決定處理器為操作在N位指令模式還是M位指令模式以決定是否將發(fā)生從“USR”處理器模式到“SVC”處理器模式的模式切換。然而,此僅用于說明目的,并不意在現(xiàn)在本發(fā)明。實際上,本發(fā)明提出的切換處理方法可采用能檢查是否操作系統(tǒng)模式將從短位模式切換至長位模式的任意方法。
當操作系統(tǒng)模式從第一模式(例如32位用戶模式)切換至第二模式(例如64位內(nèi)核模式)、運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可僅將存儲在寄存器(例如處理器102內(nèi)的寄存器REG0-REGn)中的寄存器數(shù)據(jù)的一部分保存至存儲裝置103中以作為保存的寄存器數(shù)據(jù)集合DATAREG。
對于后述的幾個例子,假設使用圖3中所示的通用目的寄存器X0-X30。然而,此僅用于說明目的,并非意在限制本發(fā)明。實際上,根據(jù)實際設計考量,寄存器的數(shù)目可調(diào)整。例如,提出的具有較少不必要寄存器數(shù)據(jù)存取的處理模式切換的方法可運用于通用目的寄存器X0-X40,及/或通用目的寄存器X0-X15的下半部分可以短位模式被存取。
在第一寄存器數(shù)據(jù)保存機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可僅將存儲在寄存器REG0-REGn中的寄存器數(shù)據(jù)的一部分保存至存儲裝置106中以創(chuàng)建保存的寄存器數(shù)據(jù)集合DATAREG,其中,存儲在寄存器REG0-REGn的每個中的寄存器數(shù)據(jù)的剩余部分不保存在存儲裝置106中。例如,該寄存器數(shù)據(jù)的該部分可存儲在圖4中所示寄存器的下半部分(lower-half part)P2,該寄存器數(shù)據(jù)的剩余部分可存儲在圖4中所示寄存器的上半部分P1,其中,寄存器的下半部分P2允許用于第一模式(例如用戶模式)和第二模式(例如內(nèi)核模式)的每個之中,且寄存器的該上半部分P1允許用于該第二模式(例如用戶模式)中,但不允許用于該第一模式(例如內(nèi)核模式)中。
圖5為第一寄存器數(shù)據(jù)保存機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的通用目的寄存器X0-X30。因此,僅通用目的寄存器X0-X30的下半部分中存儲的該部分寄存器數(shù)據(jù)D0_P2-D30_P2可保存在存儲裝置106中。相較于傳統(tǒng)模式切換處理方法的保存所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅保存所有通用目的寄存器X0-X30的部分寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,僅通用目的寄存器X0-X14的下半部分可包括第一模式(例如用戶模式)的有效寄存器數(shù)據(jù)。
在第二寄存器數(shù)據(jù)保存機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可僅將存儲在處理器102的寄存器REG0-REGn的一部分中存儲的多個寄存器數(shù)據(jù)保存至存儲裝置106中以創(chuàng)建保存的寄存器數(shù)據(jù)集合DATAREG,其中,存儲在寄存器REG0-REGn的剩余部分中的多個寄存器數(shù)據(jù)不保存在存儲裝置106中。例如,該寄存器REG0-REGn的該部分可允許用于第一模式(例如用戶模式)和第二模式(例如內(nèi)核模式)的每個之中,且寄存器REG0-REGn的該剩余部分不可允許用于該第二模式(例如用戶模式)中,但不允許用于該第一模式(例如內(nèi)核模式)中。
圖6為第二寄存器數(shù)據(jù)保存機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的64位通用目的寄存器X0-X30。因此,僅一些通用目的寄存器X0-X14中的寄存器數(shù)據(jù),包括通用目的寄存器X0-X14的上半部分中的部分寄存器數(shù)據(jù)D0_P1-D14_P1和通用目的寄存器X0-X14的下半部分中的部分寄存器數(shù)據(jù)D0_P2-D14_P2可被保存在存儲裝置106中。相較于傳統(tǒng)模式切換處理方法的保存所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅保存部分通用目的寄存器X0-X14的全部寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,通用目的寄存器X0-X14的僅下半部分可包括第一模式(例如用戶模式)的有效寄存器數(shù)據(jù)。
在第三寄存器數(shù)據(jù)保存機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可僅將存儲在處理器102的寄存器REG0-REGn的一部分的每個中存儲的一部分寄存器數(shù)據(jù)保存至存儲裝置106中以創(chuàng)建保存的寄存器數(shù)據(jù)集合DATAREG。換言之,可將第三寄存器數(shù)據(jù)保存機制看作具有第一寄存器數(shù)據(jù)保存機制和第二寄存器數(shù)據(jù)保存機制的技術(shù)特征。
圖7為第三寄存器數(shù)據(jù)保存機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的64位通用目的寄存器X0-X30。因此,僅一些通用目的寄存器X0-X14的下半部分中的部分寄存器數(shù)據(jù)D0_P2-D14_P2可被保存在存儲裝置106中。相較于傳統(tǒng)模式切換處理方法的保存所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅保存部分通用目的寄存器X0-X14的部分寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,僅通用目的寄存器X0-X14的下半部分可包括第一模式(例如用戶模式)的有效寄存器數(shù)據(jù)。
如果由于第二模式(例如內(nèi)核模式)的退出,使操作系統(tǒng)模式從第二模式(例如內(nèi)核模式)切換至第一模式(例如用戶模式),運行在處理器102上的程序代碼PROG可將存儲裝置106中保存的寄存器數(shù)據(jù)集合DATAREG恢復至處理器102以用于恢復第一模式(例如用戶模式)中32位應用的指令執(zhí)行。因此,當操作系統(tǒng)模式從第二模式(例如內(nèi)核模式)切換至第一模式(例如用戶模式)時,運行在處理器(例如64位處理器)102上的程序代碼PROG可更執(zhí)行恢復操作。例如,可檢查程序狀態(tài)寄存器(例如,SPSR)以決定處理器為操作在N位指令模式還是M位指令模式以決定是否將發(fā)生從“USR”處理器模式到“SVC”處理器模式的模式切換。然而,此僅用于說明目的,并不意在現(xiàn)在本發(fā)明。實際上,本發(fā)明提出的切換處理方法可采用能檢查是否操作系統(tǒng)模式將從短位模式切換至長位模式的任意方法。
當操作系統(tǒng)模式從第二模式(例如內(nèi)核模式)切換至第一模式(例如用戶模式)、運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可將存儲裝置106中的保存的寄存器數(shù)據(jù)集合恢復至多個寄存器(例如,處理器102內(nèi)的寄存器REG0-REGn)的存儲空間的僅一部分。
在第一寄存器數(shù)據(jù)恢復機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可將保存的寄存器數(shù)據(jù)集合DATAREG(可根據(jù)第一示例寄存器數(shù)據(jù)存取機制進行保存)中包括的寄存器數(shù)據(jù)恢復至處理器102的多個寄存器REG0-REGn中每個寄存器的僅一部分,其中,保存的寄存器數(shù)據(jù)集合DATAREG(可根據(jù)第一示例寄存器數(shù)據(jù)存取機制進行保存)中包括的寄存器數(shù)據(jù)不被恢復至處理器102的多個寄存器REG0-REGn中每個寄存器的剩余部分。例如,如圖4所示,該寄存器的該部分可為該寄存器的下半部分P2,且如圖4所示該寄存器的該剩余部分可為該寄存器的上半部分P1,其中,寄存器的下半部分P2允許用于第一模式(例如用戶模式)和第二模式(例如內(nèi)核模式)的每個之中,且寄存器的該上半部分P1允許用于該第二模式(例如內(nèi)核模式)中,但不允許用于該第一模式(例如用戶模式)中。
圖8為第一寄存器數(shù)據(jù)恢復機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的64位通用目的寄存器X0-X30。因此,該保存的寄存器數(shù)據(jù)集合DATAREG中包括的寄存器數(shù)據(jù)D0_P2-D30_P2可被恢復至圖3中所示通用目的寄存器X0-X30的僅下半部分。相較于傳統(tǒng)模式切換處理方法的恢復所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅恢復所有通用目的寄存器X0-X30的部分寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,僅通用目的寄存器X0-X14的下半部分可在第一模式(例如用戶模式)中進行存取。
在第二寄存器數(shù)據(jù)恢復機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可將保存的寄存器數(shù)據(jù)集合DATAREG(可根據(jù)第二示例寄存器數(shù)據(jù)存取機制進行保存)中包括的寄存器數(shù)據(jù)恢復至處理器102的多個寄存器REG0-REGn中的一部分,其中,保存的寄存器數(shù)據(jù)集合DATAREG(可根據(jù)第二示例寄存器數(shù)據(jù)存取機制進行保存)中包括的寄存器數(shù)據(jù)不被恢復至處理器102的多個寄存器REG0-REGn中的剩余部分。例如,該寄存器REG0-REGn的該部分可允許用于第一模式(例如用戶模式)和第二模式(例如內(nèi)核模式)的每個之中,且寄存器的該剩余部分可允許用于該第二模式(例如內(nèi)核模式)中,但不允許用于該第一模式(例如用戶模式)中。
圖9為第二寄存器數(shù)據(jù)恢復機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的64位通用目的寄存器X0-X30。因此,該保存的寄存器數(shù)據(jù)集合DATAREG中包括的寄存器數(shù)據(jù)D0_P1-D14_P1和D0_P2-D14_P2可被恢復至僅部分通用目的寄存器X0-X14。相較于傳統(tǒng)模式切換處理方法的恢復所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅恢復部分通用目的寄存器X0-X14的全部寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,僅通用目的寄存器X0-X14的下半部分可在第一模式(例如用戶模式)中進行存取。
在第三寄存器數(shù)據(jù)恢復機制中,運行在處理器(例如64位處理器)102上的程序代碼(例如,模式切換處理程序)PROG可將保存的寄存器數(shù)據(jù)集合DATAREG(可根據(jù)第三示例寄存器數(shù)據(jù)存取機制進行保存)中包括的寄存器數(shù)據(jù)恢復至處理器102的寄存器REG0-REGn中每個寄存器的一部分。換言之,可將第三寄存器數(shù)據(jù)恢復機制可被看作組合第一寄存器數(shù)據(jù)恢復機制和第二寄存器數(shù)據(jù)恢復機制的技術(shù)特征。
圖10為第三寄存器數(shù)據(jù)恢復機制的示例示意圖。假設寄存器REG0-REGn可包括圖3中所示的64位通用目的寄存器X0-X30。因此,該保存的寄存器數(shù)據(jù)集合DATAREG中包括的寄存器數(shù)據(jù)D0_P1-D14_P1可僅被恢復至部分通用目的寄存器X0-X14的下半部分。相較于傳統(tǒng)模式切換處理方法的恢復所有通用目的寄存器X0-X30的全部寄存器數(shù)據(jù),本發(fā)明提出的僅恢復部分通用目的寄存器X0-X14的部分寄存器數(shù)據(jù)的模式切換處理方法對存儲裝置106需要更少的數(shù)據(jù)存取。應注意,僅通用目的寄存器X0-X14的下半部分可在第一模式(例如用戶模式)中進行存取。
當采用其中一種前述的寄存器數(shù)據(jù)保存機制和其中一種前述的寄存器數(shù)據(jù)恢復機制時,可避免部分或全部的寄存器存取從而減少將寄存器數(shù)據(jù)寫入至存儲裝置106和從存儲裝置106讀取寄存器數(shù)據(jù)所需的時間。圖11和圖12為將本發(fā)明提出的模式切換處理方法運用至基于ARM計算機系統(tǒng)的示例示意圖。64位基于ARM處理器可支持四個異常級別(exception level)EL0、EL1、EL2及EL3,其中,異常級別EL3可為具有最多異常特權(quán)的最高異常級別。例如,用戶模式可歸類在異常級別EL0中,且監(jiān)視模式可歸類在異常級別EL1中。當操作系統(tǒng)模式切換操作在32位用戶模式和64位內(nèi)核模式之間發(fā)生時,使用上述的第三示例寄存器數(shù)據(jù)保存機制和第三示例寄存器數(shù)據(jù)恢復機制可跳過64位寄存器的上半部分且跳過冗余的64位寄存器,從而僅保存和恢復64位基于ARM處理器的寄存器的必要寄存器數(shù)據(jù)。通過此方式,可實現(xiàn)基于ARM計算機系統(tǒng)的快速模式切換。
圖13為根據(jù)本發(fā)明一個實施例的模式切換處理方法的流程圖。該模式切換處理方法可由圖1中所示的處理系統(tǒng)100所采用。多個步驟并不要求以圖13中所示的確切順序執(zhí)行。此外,一或多個步驟可從圖13中所示流程省略或添加進圖13中所示流程。該模式切換處理方法可簡略概況如下。
步驟1302:是否操作系統(tǒng)模式從第一模式(例如使用M位寄存器長度的用戶模式)切換至第二模式(例如使用N位寄存器長度的內(nèi)核模式,其中N>M)?如果是,進行步驟1304;否則,進行步驟1302以等待操作系統(tǒng)模式從短位模式切換至長位模式。
步驟1304:將存儲在寄存器中的寄存器數(shù)據(jù)的僅一部分保存至存儲裝置中,以使保存的寄存器數(shù)據(jù)在該存儲裝置中為可用的。
步驟1306:是否操作系統(tǒng)模式從第二模式(例如使用N位寄存器長度的內(nèi)核模式)切換至第一模式(例如使用M位寄存器長度的內(nèi)核模式,其中M<N)?如果是,進行步驟1308;否則,進行步驟1306以等待操作系統(tǒng)模式從長位模式切換至短位模式。
步驟1308:將存儲裝置中的保存的寄存器數(shù)據(jù)集合恢復至多個寄存器的存儲空間的僅一部分。
在閱讀上述段落后,本領域技術(shù)人員可理解圖13中所示的每個步驟的細節(jié),為簡潔,更詳細描述在此省略。
在上述實施例中,處理器102可為64位處理器(例如64位基于ARM處理器),第一模式可為M位操作系統(tǒng)模式(例如32位用戶模式),且第二模式可為N位操作系統(tǒng)模式(例如64位內(nèi)核模式)。然而,此僅用于說明目的,并非意在限制本發(fā)明。實際上,本發(fā)明提出的模式切換處理方法可運用至短位模式和高位模式之間的任意模式切換以避免模式切換的保存階段和恢復階段期間存儲裝置中的一些或全部不必要數(shù)據(jù)存取。
本領域技術(shù)人員在保存本發(fā)明精神的前提下可對裝置及方法做若干修改和變更。相應地,上述揭露應只以后附權(quán)利要求的范圍和限定為準。