CN106663027A - 具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质 - Google Patents
具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质 Download PDFInfo
- Publication number
- CN106663027A CN106663027A CN201580047377.5A CN201580047377A CN106663027A CN 106663027 A CN106663027 A CN 106663027A CN 201580047377 A CN201580047377 A CN 201580047377A CN 106663027 A CN106663027 A CN 106663027A
- Authority
- CN
- China
- Prior art keywords
- register
- mode
- register data
- storage device
- allowed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种模式切换处理方法包括:当操作系统模式从第一模式切换至第二模式时,将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中;其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
Description
相关申请的交叉引用
本申请的权利要求范围要求如下申请的优先权:2014年9月3日递交的申请号为62/045,082的美国临时案。在此合并参考上述美国临时申请案的全部内容。
技术领域
本发明有关于模式切换处理方法,更具体地,有关于模式切换处理方法及相应的处理器。
背景技术
处理器是各种电子装置所需的关键元件。例如,操作系统(operating system,OS)可由电子装置的处理器执行以控制应用软件的执行用于执行用户所需数据处理。操作系统可在不同操作系统模式间切换,例如用户模式和内核模式(kernel mode)。从第一操作系统模式到第二操作系统模式的切换需要是可逆的,当退出第二操作系统模式时,将返回第一操作系统模式,这样在没有被中断的情况下,第一操作系统模式将继续。为了实现这种可逆性,需要在刚离开第一操作系统模式时将各个寄存器(例如处理器内的寄存器)的内容存储,以使在第二操作系统模式结束使用寄存器(例如,处理器内部的寄存器)且控制返回至第一操作系统模式之后可恢复这些内容。这通常是通过在离开第一操作系统模式时将第一操作系统模式中处理器寄存器的寄存器数据保存至外部动态随机存取存储器(dynamicrandom access memory,DRAM)中分配的堆栈存储器的一个区域,且在返回第一操作系统模式时将来自堆栈存储器的该区域的保存的存储器数据返回至该处理器寄存器而实现的。
传统模式切换处理方法可保存和恢复处理器使用的所有寄存器的内容。然而,此传统方法所具有的问题是写入堆栈存储器和随后从堆栈存储器读取的操作相对较慢,这将不可避免地降低处理器的性能。因此,需要一种创新的模式切换处理方法能避免/减少不必要的存储器数据存取从而加速模式切换操作。
发明内容
根据本发明的实施例,提出一种具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质。根据本发明的第一个方面,揭露一种模式切换处理方法。该模式切换处理方法包括:当操作系统模式从第一模式切换至第二模式时,将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中;其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
根据本发明的第二个方面,揭露一种模式切换处理方法。该模式切换处理方法包括:包括:当操作系统模式从第二模式切换至第一模式时,将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分;其中,M位寄存器长度用于第一模式,N位寄存器长度用于第二模式,且M和N为不同整数。
根据本发明的第三个方面,揭露一种包括存储于其中的程序代码的非临时机器可读介质。当处理器执行该程序代码时,该程序代码使该处理器执行下列步骤:当操作系统模式从第一模式切换至第二模式时,将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中;其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
根据本发明的第三个方面,揭露一种非临时机器可读介质,包括存储于其中的程序代码,其中当处理器执行该程序代码时,该程序代码使该处理器执行下列步骤:当操作系统模式从第二模式切换至第一模式时,将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分;其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
附图说明
图1是根据本发明一个实施例的处理系统的模块示意图。
图2为根据本发明一个实施例32位处理器结构使用的寄存器的示意图。
图3为根据本发明一个实施例64位处理器结构使用的寄存器的示意图。
图4为64位通用目的寄存器的示意图。
图5为第一寄存器数据保存机制的示例示意图。
图6为第二寄存器数据保存机制的示例示意图。
图7为第三寄存器数据保存机制的示例示意图。
图8为第一寄存器数据恢复机制的示例示意图。
图9为第一寄存器数据恢复机制的示例示意图。
图10为第三寄存器数据恢复机制的示例示意图。
图11为将本发明提出的模式切换处理方法运用至基于ARM计算机系统的示例示意图。
图12为将本发明提出的模式切换处理方法运用至基于ARM计算机系统的示例示意图。
图13为根据本发明一个实施例的模式切换处理方法的流程图。
具体实施方式
在说明书及后续的权利要求当中使用了某些词汇来指称特定的元件。所属领域技术人员应可理解,制造商可能会用不同的名词来称呼同样的元件。本说明书及后续的权利要求并不以名称的差异来作为区别元件的方式,而是以元件在功能上的差异来作为区别的基准。在通篇说明书及后续的权利要求当中所提及的「包括」为开放式的用语,故应解释成「包括但不限定于」。此外,「耦接」一词在此包括任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接连接于该第二装置,或透过其他装置或连接手段间接地连接至该第二装置。
图1是根据本发明一个实施例的处理系统100的模块示意图。处理系统100为电子装置的一部分,该电子装置可例如,电视、移动电话、平板电脑或可穿戴式设备。处理系统100可包括处理器102、非临时机器可读介质(non-transitory machine readable medium)104以及存储装置106。应注意的是图1仅显示了本发明有关的元件。实际上,处理系统100可配置为包括用于实现其他功能的额外元件。在此实施例中,非临时机器可读介质104和存储器106可用分离的存储装置实现。例如,非临时机器可读介质104可为非易失性机器可读介质(例如闪存),且存储器106可为易失性机器可读介质(例如动态随机存取存储器)。或者,非临时机器可读介质104和存储器106可用同一存储装置中分配的分离存储空间实现。简而言之,本发明对非临时机器可读介质104和存储器106的具体实现没有限制。
处理器102可具有包括REG0-REGn在内的多个寄存器。当处理器102为N位处理器时,寄存器REG0-REGn的大部分或全部可为N位寄存器。例如,处理器102可为64位基于ARM(ARM-based)的处理器,且寄存器REG0-REGn的大部分可为64位寄存器。应注意,同一处理器102中实现的寄存器REG0-REGn的数目可根据处理器102的实际处理器结构。在此实施例中,提出的具有更少不必要寄存器数据存取的模式切换方法可应用至处理器102内部的寄存器REG0-REGn。然而,此仅用于说明目的,并不意在限制本发明。此外,提出的具有更少不必要寄存器数据存取的模式切换方法可应用至任意处理电路使用的寄存器及/或处理器102外部的寄存器。
非临时机器可读介质104可设置为存储程序代码PROG。程序代码PROG可为操作系统(OS)的一部分,例如基于Linux的OS,且程序代码PROG可被处理器102加载并执行以处理操作系统模式的模式切换操作。存储装置106可设置为具有分配在其中的堆栈存储器(stack memory)。因此,当操作系统模式从第一模式切换至第二模式时,第一模式中的指令执行可被中断,且处理器102上运行的程序代码PROG可将处理器102的寄存器数据存储至堆栈存储器,这样保存的寄存器数据集合DATAREG在存储装置106中为可用的。当操作系统模式从第二模式切换至第一模式时,处理器102上运行的程序代码PROG可将堆栈存储器中的保存的寄存器数据集合DATAREG恢复至处理器102,从而致能继续第一模式中的指令执行。
当处理器102为N位处理器时,处理器102可配置为操作在N位模式、N/2位模式、N/4位模式…及一位模式。因此,处理器102可操作在N位模式(其中可使用N位寄存器长度)中,且可操作在M位模式(其中可使用M位寄存器长度)中,其中N和M可为不同整数。由于处理器102的N位模式的寄存器使用可能不同于处理器102的M位模式的寄存器使用,保存/恢复处理器的所有寄存器REG0-REGn的全部寄存器数据可能会导致不必要的寄存器数据存取及不必要的存储装置存取。相较于保存/恢复处理器的所有寄存器REG0-REGn的全部寄存器数据的传统模式切换处理方法,本发明提出的模式切换处理方法可避免/减少不必要的寄存器数据存取以实现快速模式切换和减少的功率消耗。提出的模式切换处理方法的更多细节如下所示。
图2为根据本发明一个实施例32位处理器结构使用的寄存器的示意图。32位处理器结构可支持多个处理器模式,例如USR(用户)模式、IRQ(中断)模式、FIQ(快速中断)模式、SVC(监视)模式、ABT(退出)模式、UND(未定义)模式及HYP(管理)模式等等。例如,当用户应用程序运行在处于用户模式的操作系统模式中时,处理器可操作在用户模式的处理器模式中;且当操作系统模式从用户模式切换至内核模式时,处理器可操作在监视模式的处理器模式中。如图2中所示,一组寄存器R0-R7可被所有处理器模式共享。第一组寄存器R8-R12在用户模式中为可用的,且第二组寄存器R8-R12在快速中断模式中为可用的。寄存器R13的每个可为堆栈指针(stack pointer,SP)。寄存器R14的每个可为链接指针(link pointer,LP)。如图2中所示,第一组寄存器R13和R14在用户模式中为可用的,第二组寄存器R13和R14在监视模式中为可用的,第三组寄存器R13和R14在退出模式中为可用的,第四组寄存器R13和R14在未定义模式中为可用的,第五组寄存器R13和R14在中断模式中为可用的,第六组寄存器R13和R14在快速中断模式中为可用的。此外,附加寄存器R13在管理模式中为可用的。应注意的是32位处理器结构可具有附加寄存器(图未示),包括程序计数器(programcounter,PC)、管理模式寄存器(ELR_Hyp)、保存的程序状态寄存器(SPSR)等等。
图3为根据本发明一个实施例64位处理器结构使用的寄存器的示意图。如图3所示,其中有31个64位通用目的寄存器X0-X30,其下半部分可存取为W0-W30。通用目的寄存器X0-X30可为64位宽度以处理由64位处理器执行的64位指令集合的较大地址。对于由同一64位处理器执行的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位处理器结构中定义的寄存器可被映射在图4中所示的64位处理器结构中定义的64位通用目的寄存器X0-X30的下半部分,以致能在64位处理器结构上运行32位指令集合。应注意的是64位处理器机构可具有附加寄存器(图未示),包括堆栈指针寄存器、异常(exception)链接寄存器、保存的程序状态寄存器(SPSR)等等。
举例而言,图1中所示的处理器102可为至少使用图3中所示的64位通用目的寄存器X0-X30的64位处理器。如上所述,当用户应用程序运行在处于用户模式的操作系统模式中时,处理器可操作在用户模式的处理器模式中;且当操作系统模式从用户模式切换至内核模式时,处理器可操作在监视模式的处理器模式中。在用户应用可为32位应用且操作系统可为64位操作系统的情形中,并非所有64位通用目的寄存器X0-X30在用户模式中可被全部存取。例如,对于64位通用目的寄存器X0-X30,一些通用目的寄存器X0-X14的仅下半部分P2可被32位应用存取。基于上述观察,本发明因此提出一种部分寄存器数据保存/恢复机制以增强模式切换效率。
请再次参考图1,当操作系统从第一模式切换至第二模式时,运行在处理器102上的程序代码(例如模式切换处理程序)PROG可用于执行保存操作。其中M位长度寄存器可用于第一模式中,且N位寄存器长度可用于第二模式中,且M和N可为不同整数。例如,处理器102可为64位处理器(例如,64位基于ARM的处理器),第一模式可为32位用户模式,且第二模式可为64位内核模式。因此,由于M=32且N=64,M小于N。例如,可检查程序状态寄存器(例如,SPSR)决定处理器为操作在N位指令模式还是M位指令模式以决定是否将发生从“USR”处理器模式到“SVC”处理器模式的模式切换。然而,此仅用于说明目的,并不意在现在本发明。实际上,本发明提出的切换处理方法可采用能检查是否操作系统模式将从短位模式切换至长位模式的任意方法。
当操作系统模式从第一模式(例如32位用户模式)切换至第二模式(例如64位内核模式)、运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可仅将存储在寄存器(例如处理器102内的寄存器REG0-REGn)中的寄存器数据的一部分保存至存储装置103中以作为保存的寄存器数据集合DATAREG。
对于后述的几个例子,假设使用图3中所示的通用目的寄存器X0-X30。然而,此仅用于说明目的,并非意在限制本发明。实际上,根据实际设计考量,寄存器的数目可调整。例如,提出的具有较少不必要寄存器数据存取的处理模式切换的方法可运用于通用目的寄存器X0-X40,及/或通用目的寄存器X0-X15的下半部分可以短位模式被存取。
在第一寄存器数据保存机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可仅将存储在寄存器REG0-REGn中的寄存器数据的一部分保存至存储装置106中以创建保存的寄存器数据集合DATAREG,其中,存储在寄存器REG0-REGn的每个中的寄存器数据的剩余部分不保存在存储装置106中。例如,该寄存器数据的该部分可存储在图4中所示寄存器的下半部分(lower-half part)P2,该寄存器数据的剩余部分可存储在图4中所示寄存器的上半部分P1,其中,寄存器的下半部分P2允许用于第一模式(例如用户模式)和第二模式(例如内核模式)的每个之中,且寄存器的该上半部分P1允许用于该第二模式(例如用户模式)中,但不允许用于该第一模式(例如内核模式)中。
图5为第一寄存器数据保存机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的通用目的寄存器X0-X30。因此,仅通用目的寄存器X0-X30的下半部分中存储的该部分寄存器数据D0_P2-D30_P2可保存在存储装置106中。相较于传统模式切换处理方法的保存所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅保存所有通用目的寄存器X0-X30的部分寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,仅通用目的寄存器X0-X14的下半部分可包括第一模式(例如用户模式)的有效寄存器数据。
在第二寄存器数据保存机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可仅将存储在处理器102的寄存器REG0-REGn的一部分中存储的多个寄存器数据保存至存储装置106中以创建保存的寄存器数据集合DATAREG,其中,存储在寄存器REG0-REGn的剩余部分中的多个寄存器数据不保存在存储装置106中。例如,该寄存器REG0-REGn的该部分可允许用于第一模式(例如用户模式)和第二模式(例如内核模式)的每个之中,且寄存器REG0-REGn的该剩余部分不可允许用于该第二模式(例如用户模式)中,但不允许用于该第一模式(例如内核模式)中。
图6为第二寄存器数据保存机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的64位通用目的寄存器X0-X30。因此,仅一些通用目的寄存器X0-X14中的寄存器数据,包括通用目的寄存器X0-X14的上半部分中的部分寄存器数据D0_P1-D14_P1和通用目的寄存器X0-X14的下半部分中的部分寄存器数据D0_P2-D14_P2可被保存在存储装置106中。相较于传统模式切换处理方法的保存所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅保存部分通用目的寄存器X0-X14的全部寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,通用目的寄存器X0-X14的仅下半部分可包括第一模式(例如用户模式)的有效寄存器数据。
在第三寄存器数据保存机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可仅将存储在处理器102的寄存器REG0-REGn的一部分的每个中存储的一部分寄存器数据保存至存储装置106中以创建保存的寄存器数据集合DATAREG。换言之,可将第三寄存器数据保存机制看作具有第一寄存器数据保存机制和第二寄存器数据保存机制的技术特征。
图7为第三寄存器数据保存机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的64位通用目的寄存器X0-X30。因此,仅一些通用目的寄存器X0-X14的下半部分中的部分寄存器数据D0_P2-D14_P2可被保存在存储装置106中。相较于传统模式切换处理方法的保存所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅保存部分通用目的寄存器X0-X14的部分寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,仅通用目的寄存器X0-X14的下半部分可包括第一模式(例如用户模式)的有效寄存器数据。
如果由于第二模式(例如内核模式)的退出,使操作系统模式从第二模式(例如内核模式)切换至第一模式(例如用户模式),运行在处理器102上的程序代码PROG可将存储装置106中保存的寄存器数据集合DATAREG恢复至处理器102以用于恢复第一模式(例如用户模式)中32位应用的指令执行。因此,当操作系统模式从第二模式(例如内核模式)切换至第一模式(例如用户模式)时,运行在处理器(例如64位处理器)102上的程序代码PROG可更执行恢复操作。例如,可检查程序状态寄存器(例如,SPSR)以决定处理器为操作在N位指令模式还是M位指令模式以决定是否将发生从“USR”处理器模式到“SVC”处理器模式的模式切换。然而,此仅用于说明目的,并不意在现在本发明。实际上,本发明提出的切换处理方法可采用能检查是否操作系统模式将从短位模式切换至长位模式的任意方法。
当操作系统模式从第二模式(例如内核模式)切换至第一模式(例如用户模式)、运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可将存储装置106中的保存的寄存器数据集合恢复至多个寄存器(例如,处理器102内的寄存器REG0-REGn)的存储空间的仅一部分。
在第一寄存器数据恢复机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可将保存的寄存器数据集合DATAREG(可根据第一示例寄存器数据存取机制进行保存)中包括的寄存器数据恢复至处理器102的多个寄存器REG0-REGn中每个寄存器的仅一部分,其中,保存的寄存器数据集合DATAREG(可根据第一示例寄存器数据存取机制进行保存)中包括的寄存器数据不被恢复至处理器102的多个寄存器REG0-REGn中每个寄存器的剩余部分。例如,如图4所示,该寄存器的该部分可为该寄存器的下半部分P2,且如图4所示该寄存器的该剩余部分可为该寄存器的上半部分P1,其中,寄存器的下半部分P2允许用于第一模式(例如用户模式)和第二模式(例如内核模式)的每个之中,且寄存器的该上半部分P1允许用于该第二模式(例如内核模式)中,但不允许用于该第一模式(例如用户模式)中。
图8为第一寄存器数据恢复机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的64位通用目的寄存器X0-X30。因此,该保存的寄存器数据集合DATAREG中包括的寄存器数据D0_P2-D30_P2可被恢复至图3中所示通用目的寄存器X0-X30的仅下半部分。相较于传统模式切换处理方法的恢复所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅恢复所有通用目的寄存器X0-X30的部分寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,仅通用目的寄存器X0-X14的下半部分可在第一模式(例如用户模式)中进行存取。
在第二寄存器数据恢复机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可将保存的寄存器数据集合DATAREG(可根据第二示例寄存器数据存取机制进行保存)中包括的寄存器数据恢复至处理器102的多个寄存器REG0-REGn中的一部分,其中,保存的寄存器数据集合DATAREG(可根据第二示例寄存器数据存取机制进行保存)中包括的寄存器数据不被恢复至处理器102的多个寄存器REG0-REGn中的剩余部分。例如,该寄存器REG0-REGn的该部分可允许用于第一模式(例如用户模式)和第二模式(例如内核模式)的每个之中,且寄存器的该剩余部分可允许用于该第二模式(例如内核模式)中,但不允许用于该第一模式(例如用户模式)中。
图9为第二寄存器数据恢复机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的64位通用目的寄存器X0-X30。因此,该保存的寄存器数据集合DATAREG中包括的寄存器数据D0_P1-D14_P1和D0_P2-D14_P2可被恢复至仅部分通用目的寄存器X0-X14。相较于传统模式切换处理方法的恢复所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅恢复部分通用目的寄存器X0-X14的全部寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,仅通用目的寄存器X0-X14的下半部分可在第一模式(例如用户模式)中进行存取。
在第三寄存器数据恢复机制中,运行在处理器(例如64位处理器)102上的程序代码(例如,模式切换处理程序)PROG可将保存的寄存器数据集合DATAREG(可根据第三示例寄存器数据存取机制进行保存)中包括的寄存器数据恢复至处理器102的寄存器REG0-REGn中每个寄存器的一部分。换言之,可将第三寄存器数据恢复机制可被看作组合第一寄存器数据恢复机制和第二寄存器数据恢复机制的技术特征。
图10为第三寄存器数据恢复机制的示例示意图。假设寄存器REG0-REGn可包括图3中所示的64位通用目的寄存器X0-X30。因此,该保存的寄存器数据集合DATAREG中包括的寄存器数据D0_P1-D14_P1可仅被恢复至部分通用目的寄存器X0-X14的下半部分。相较于传统模式切换处理方法的恢复所有通用目的寄存器X0-X30的全部寄存器数据,本发明提出的仅恢复部分通用目的寄存器X0-X14的部分寄存器数据的模式切换处理方法对存储装置106需要更少的数据存取。应注意,仅通用目的寄存器X0-X14的下半部分可在第一模式(例如用户模式)中进行存取。
当采用其中一种前述的寄存器数据保存机制和其中一种前述的寄存器数据恢复机制时,可避免部分或全部的寄存器存取从而减少将寄存器数据写入至存储装置106和从存储装置106读取寄存器数据所需的时间。图11和图12为将本发明提出的模式切换处理方法运用至基于ARM计算机系统的示例示意图。64位基于ARM处理器可支持四个异常级别(exception level)EL0、EL1、EL2及EL3,其中,异常级别EL3可为具有最多异常特权的最高异常级别。例如,用户模式可归类在异常级别EL0中,且监视模式可归类在异常级别EL1中。当操作系统模式切换操作在32位用户模式和64位内核模式之间发生时,使用上述的第三示例寄存器数据保存机制和第三示例寄存器数据恢复机制可跳过64位寄存器的上半部分且跳过冗余的64位寄存器,从而仅保存和恢复64位基于ARM处理器的寄存器的必要寄存器数据。通过此方式,可实现基于ARM计算机系统的快速模式切换。
图13为根据本发明一个实施例的模式切换处理方法的流程图。该模式切换处理方法可由图1中所示的处理系统100所采用。多个步骤并不要求以图13中所示的确切顺序执行。此外,一或多个步骤可从图13中所示流程省略或添加进图13中所示流程。该模式切换处理方法可简略概况如下。
步骤1302:是否操作系统模式从第一模式(例如使用M位寄存器长度的用户模式)切换至第二模式(例如使用N位寄存器长度的内核模式,其中N>M)?如果是,进行步骤1304;否则,进行步骤1302以等待操作系统模式从短位模式切换至长位模式。
步骤1304:将存储在寄存器中的寄存器数据的仅一部分保存至存储装置中,以使保存的寄存器数据在该存储装置中为可用的。
步骤1306:是否操作系统模式从第二模式(例如使用N位寄存器长度的内核模式)切换至第一模式(例如使用M位寄存器长度的内核模式,其中M<N)?如果是,进行步骤1308;否则,进行步骤1306以等待操作系统模式从长位模式切换至短位模式。
步骤1308:将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分。
在阅读上述段落后,本领域技术人员可理解图13中所示的每个步骤的细节,为简洁,更详细描述在此省略。
在上述实施例中,处理器102可为64位处理器(例如64位基于ARM处理器),第一模式可为M位操作系统模式(例如32位用户模式),且第二模式可为N位操作系统模式(例如64位内核模式)。然而,此仅用于说明目的,并非意在限制本发明。实际上,本发明提出的模式切换处理方法可运用至短位模式和高位模式之间的任意模式切换以避免模式切换的保存阶段和恢复阶段期间存储装置中的一些或全部不必要数据存取。
本领域技术人员在保存本发明精神的前提下可对装置及方法做若干修改和变更。相应地,上述揭露应只以后附权利要求的范围和限定为准。
Claims (24)
1.一种模式切换处理方法,包括:
当操作系统模式从第一模式切换至第二模式时,将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中;
其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
2.如权利要求1所述的模式切换处理方法,其特征在于,M小于N。
3.如权利要求1所述的模式切换处理方法,其特征在于,该将存储在该多个寄存器中的该寄存器数据的仅该部分保存至该存储装置中的步骤包括:
将存储在该寄存器中的该多个寄存器数据的该部分保存至该存储装置中,其中,存储在该多个寄存器中的该寄存器数据的剩余部分不保存在该存储装置中。
4.如权利要求3所述的模式切换处理方法,其特征在于,该寄存器数据的该部分存储在该多个寄存器的下半部分,该寄存器数据的该剩余部分存储在该多个寄存器的上半部分,该多个寄存器的该下半部分允许用于该第一模式和该第二模式的每个之中,且该多个寄存器的该上半部分允许用于该第二模式中,但不允许用于该第一模式中。
5.如权利要求1所述的模式切换处理方法,其特征在于,该将存储在该多个寄存器中的该寄存器数据的仅该部分保存至该存储装置中的步骤包括:
将存储在该多个寄存器的一部分寄存器中的寄存器数据保存至该存储装置中,其中,存储在该多个寄存器的剩余部分中的多个寄存器数据不保存至该存储装置中。
6.如权利要求5所述的模式切换处理方法,其特征在于,该多个寄存器的该部分寄存器允许用于该第一模式和该第二模式的每个中,且该多个寄存器的该剩余部分寄存器允许用于该第二模式中,但不允许用于该第一模式中。
7.一种模式切换处理方法,包括:
当操作系统模式从第二模式切换至第一模式时,将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分;
其中,M位寄存器长度用于第一模式,N位寄存器长度用于第二模式,且M和N为不同整数。
8.如权利要求7所述的模式切换处理方法,其特征在于,M小于N。
9.如权利要求7所述的模式切换处理方法,其特征在于,该将该存储装置中的该保存的寄存器数据集合恢复至该多个寄存器的该存储空间的仅一部分的步骤包括:
将该保存的寄存器数据集合中包括的寄存器数据恢复至寄存器的一部分,其中,不将该保存的寄存器数据集合中包括的该寄存器数据恢复至该寄存器的剩余部分。
10.如权利要求9所述的模式切换处理方法,其特征在于,该寄存器的该部分为该寄存器的下半部分,该寄存器的该剩余部分为该寄存器的上半部分,该寄存器的该下半部分允许用于该第一模式和该第二模式的每个之中,且该寄存器的该上半部分允许用于该第二模式中,但不允许用于该第一模式中。
11.如权利要求7所述的模式切换处理方法,其特征在于,该将该存储装置中的该保存的寄存器数据集合恢复至该多个寄存器的该存储空间的仅一部分的步骤包括:
将该保存的寄存器数据集合中包括的寄存器数据恢复至该多个寄存器的一部分,其中,不将该保存的寄存器数据集合中包括的该寄存器数据恢复至该多个寄存器的剩余部分中。
12.如权利要求11所述的模式切换处理方法,其特征在于,该多个寄存器的该部分允许用于该第一模式和该第二模式的每个中,且该多个寄存器的该剩余部分允许用于该第二模式中,但不允许用于该第一模式中。
13.一种非临时机器可读介质,包括存储于其中的程序代码,其中当处理器执行该程序代码时,该程序代码使该处理器执行下列步骤:
当操作系统模式从第一模式切换至第二模式时,将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中;
其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
14.如权利要求13所述的非临时机器可读介质,其特征在于,M小于N。
15.如权利要求13所述的非临时机器可读介质,其特征在于,该将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中包括:
将存储在该多个寄存器中的该寄存器数据的该部分保存至该存储装置中,其中,存储在该多个寄存器中的该寄存器数据的剩余部分不保存在该存储装置中。
16.如权利要求15所述的非临时机器可读介质,其特征在于,该寄存器数据的该部分存储在该多个寄存器的下半部分,该寄存器数据的该剩余部分存储在该多个寄存器的上半部分,该多个寄存器的该下半部分允许用于该第一模式和该第二模式的每个之中,且该多个寄存器的该上半部分允许用于该第二模式中,但不允许用于该第一模式中。
17.如权利要求13所述的非临时机器可读介质,其特征在于,该将存储在多个寄存器中的寄存器数据的仅一部分保存至存储装置中包括:
将存储在该多个寄存器的一部分寄存器中的寄存器数据保存至该存储装置中,其中,存储在该多个寄存器的剩余部分寄存器中的寄存器数据不保存至该存储装置中。
18.如权利要求17所述的非临时机器可读介质,其特征在于,该多个寄存器的该部分寄存器允许用于该第一模式和该第二模式的每个中,且该多个寄存器的该剩余部分寄存器允许用于该第二模式中,但不允许用于该第一模式中。
19.一种非临时机器可读介质,包括存储于其中的程序代码,其中当处理器执行该程序代码时,该程序代码使该处理器执行下列步骤:
当操作系统模式从第二模式切换至第一模式时,将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分;
其中,在该第一模式中使用M位寄存器长度,在该第二模式中使用N位寄存器长度,且M和N为不同整数。
20.如权利要求19所述的非临时机器可读介质,其特征在于,M小于N。
21.如权利要求19所述的非临时机器可读介质,其特征在于,该将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分包括:
将该保存的寄存器数据集合中包括的寄存器数据恢复至寄存器的一部分,其中,不将该保存的寄存器数据集合中包括的寄存器数据恢复至该寄存器的剩余部分。
22.如权利要求21所述的非临时机器可读介质,其特征在于,该寄存器的该部分为该寄存器的下半部分,该寄存器的该剩余部分为该寄存器的上半部分,该寄存器的该下半部分允许用于该第一模式和该第二模式的每个之中,且该寄存器的该上半部分允许用于该第二模式中,但不允许用于该第一模式中。
23.如权利要求19所述的非临时机器可读介质,其特征在于,该将存储装置中的保存的寄存器数据集合恢复至多个寄存器的存储空间的仅一部分包括:
将该保存的寄存器数据集合中包括的寄存器数据恢复至该多个寄存器中的一部分寄存器,其中,不将该保存的寄存器数据集合中包括的该寄存器数据恢复至该多个寄存器的剩余部分中。
24.如权利要求23所述的非临时机器可读介质,其特征在于,该多个寄存器的该部分允许用于该第一模式和该第二模式的每个中,且该多个寄存器的该剩余部分允许用于该第二模式中,但不允许用于该第一模式中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462045082P | 2014-09-03 | 2014-09-03 | |
US62/045,082 | 2014-09-03 | ||
PCT/CN2015/088549 WO2016034087A1 (en) | 2014-09-03 | 2015-08-31 | Method for handling mode switching with less unnecessary register data access and related non-transitory machine readable medium |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106663027A true CN106663027A (zh) | 2017-05-10 |
Family
ID=55439133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580047377.5A Pending CN106663027A (zh) | 2014-09-03 | 2015-08-31 | 具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160246619A1 (zh) |
CN (1) | CN106663027A (zh) |
WO (1) | WO2016034087A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263008B2 (en) | 2017-03-20 | 2022-03-01 | Intel Corporation | Systems, methods, and apparatuses for tile broadcast |
US11275588B2 (en) * | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430864A (en) * | 1990-12-21 | 1995-07-04 | Sun Microsystems, Inc. | Extending computer architecture from 32-bits to 64-bits by using the most significant bit of the stack pointer register to indicate word size |
US20040139306A1 (en) * | 2003-01-09 | 2004-07-15 | Sony Corporation | Partial and start-over threads in embedded real-time kernel |
CN102314333A (zh) * | 2010-06-22 | 2012-01-11 | 国际商业机器公司 | 用于扩展可用于指令的通用寄存器的数目的方法和系统 |
CN103098019A (zh) * | 2010-12-23 | 2013-05-08 | 英特尔公司 | 用于保存处理器状态以在处理器功率状态之间高效转换的方法、装置和系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
US5906002A (en) * | 1997-02-10 | 1999-05-18 | International Business Machines Corporation | Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers |
US5987258A (en) * | 1997-06-27 | 1999-11-16 | Lsi Logic Corporation | Register reservation method for fast context switching in microprocessors |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US20060149940A1 (en) * | 2004-12-27 | 2006-07-06 | Intel Corporation | Implementation to save and restore processor registers on a context switch |
US7529916B2 (en) * | 2006-08-16 | 2009-05-05 | Arm Limited | Data processing apparatus and method for controlling access to registers |
CN101256546A (zh) * | 2007-03-01 | 2008-09-03 | 黄新亚 | 32位微处理器 |
US8407715B2 (en) * | 2007-04-30 | 2013-03-26 | National Tsing Hua University | Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks |
US8762692B2 (en) * | 2007-09-27 | 2014-06-24 | Intel Corporation | Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode |
-
2015
- 2015-08-31 WO PCT/CN2015/088549 patent/WO2016034087A1/en active Application Filing
- 2015-08-31 CN CN201580047377.5A patent/CN106663027A/zh active Pending
- 2015-08-31 US US15/024,852 patent/US20160246619A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430864A (en) * | 1990-12-21 | 1995-07-04 | Sun Microsystems, Inc. | Extending computer architecture from 32-bits to 64-bits by using the most significant bit of the stack pointer register to indicate word size |
US20040139306A1 (en) * | 2003-01-09 | 2004-07-15 | Sony Corporation | Partial and start-over threads in embedded real-time kernel |
CN102314333A (zh) * | 2010-06-22 | 2012-01-11 | 国际商业机器公司 | 用于扩展可用于指令的通用寄存器的数目的方法和系统 |
CN103098019A (zh) * | 2010-12-23 | 2013-05-08 | 英特尔公司 | 用于保存处理器状态以在处理器功率状态之间高效转换的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2016034087A1 (en) | 2016-03-10 |
US20160246619A1 (en) | 2016-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101110017B (zh) | 一种组合指令的技术 | |
KR101791811B1 (ko) | 가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법 | |
JP4795025B2 (ja) | ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
US20210357213A1 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
JP2018525749A (ja) | 命令実行挙動を制御するための装置および方法 | |
US20120236010A1 (en) | Page Fault Handling Mechanism | |
CN106663471B (zh) | 用于反向存储器备份的方法和装置 | |
TW201201018A (en) | Memory banking system and method to increase memory bandwidth via parallel read and write operations | |
US8583890B2 (en) | Disposition instructions for extended access commands | |
KR20130098303A (ko) | 정렬 제어 | |
CN102597972B (zh) | 虚拟计算机系统、区域管理方法 | |
CN103778099A (zh) | 信息处理设备 | |
JP5359601B2 (ja) | ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法 | |
KR102152735B1 (ko) | 그래픽 처리 장치 및 이의 동작 방법 | |
CN106663027A (zh) | 具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质 | |
US20080229054A1 (en) | Method for performing jump and translation state change at the same time | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
KR20200123799A (ko) | 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법 | |
EP1220088B1 (en) | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions | |
WO2007057831A1 (en) | Data processing method and apparatus | |
US7353343B2 (en) | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory | |
CN104239001A (zh) | 至少一个处理流水线中的操作数生成 | |
US20230315456A1 (en) | Processing apparatus | |
WO2018125031A1 (en) | Cross-component health monitoring and improved repair for self-healing platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170510 |